From 049a332eba809597f61b0379acd54d348c65ce99 Mon Sep 17 00:00:00 2001 From: Freddie Date: Mon, 16 Mar 2026 17:07:01 -0700 Subject: [PATCH 1/6] Rework how iconify icons are used --- .../rename-requests/RenameRequests.svelte | 10 ++-- .../components/results/Selected.svelte | 4 +- .../achievements/Achievement.svelte | 4 +- .../appearances/AppearancesItem.svelte | 44 ++++++++--------- .../auctions/AuctionsExtraPets.svelte | 6 +-- .../auctions/AuctionsMissing.svelte | 4 +- .../auctions/AuctionsMissingBigResults.svelte | 21 +++++---- .../auctions/commodities/Table.svelte | 6 +-- .../character-table/head/BagSpace.svelte | 4 +- .../character-table/head/MovementSpeed.svelte | 4 +- ...cterProfessionsProfessionSkillRanks.svelte | 4 +- ...CharacterProfessionsProfessionTable.svelte | 6 +-- ...haractersShadowlandsPathOfAscension.svelte | 10 ++-- .../CharactersShadowlandsSoulbind.svelte | 6 +-- .../components/common/ProgressBar.svelte | 4 +- .../common/SidebarCollectingSettings.svelte | 4 +- .../components/common/TableSortedBy.svelte | 4 +- .../components/explore/ExploreIcons.svelte | 4 +- .../components/explore/ExploreTransmog.svelte | 4 +- .../home/table/HomeTableGroupHead.svelte | 14 +++--- .../home/table/head/HomeTableHeadTasks.svelte | 9 +--- .../table/row/HomeTableRowProgress.svelte | 4 +- .../table/row/HomeTableRowSettings.svelte | 6 +-- .../home/table/row/HomeTableRowTask.svelte | 8 ++-- .../table/row/HomeTableRowTaskChore.svelte | 8 ++-- .../home/view-switcher/ViewSwitcher.svelte | 4 +- .../components/items/ItemsItem.svelte | 4 +- .../items/convertible/CharacterItems.svelte | 14 +++--- .../items/convertible/ClassTable.svelte | 6 +-- .../items/convertible/DifficultyTable.svelte | 18 ++++--- .../convertible/DifficultyTooltip.svelte | 14 +++--- .../components/items/tokens/TokenItem.svelte | 4 +- .../components/journal/JournalItem.svelte | 8 ++-- .../components/journal/JournalOptions.svelte | 4 +- .../components/journal/Lockouts.svelte | 6 +-- .../lockouts/LockoutsTableRowLockout.svelte | 10 ++-- .../professions/equipment/TableRow.svelte | 4 +- .../professions/recipes/View.svelte | 4 +- .../progress/ProgressTableBodyRaidSkip.svelte | 6 +-- .../TooltipAuctionAlreadyHave.svelte | 7 ++- .../character-best-item-level/Tooltip.svelte | 4 +- .../tooltips/dailies/TooltipDailies.svelte | 6 +-- .../tooltips/progress/TooltipProgress.svelte | 1 + .../TooltipReputationHeaderEntry.svelte | 4 +- .../tooltips/task/TooltipTaskRow.svelte | 37 +++++++-------- .../tooltips/tier-set/TooltipTierSet.svelte | 6 +-- .../tooltips/vault-raid/Rewards.svelte | 4 +- .../tooltips/vault-world/Rewards.svelte | 4 +- .../zone-maps/TooltipZoneMapsThing.svelte | 8 ++-- apps/frontend/components/vendors/Thing.svelte | 11 ++--- .../components/vendors/VendorsOptions.svelte | 4 +- .../components/zone-maps/ZoneMapsLoot.svelte | 6 +-- .../components/zone-maps/ZoneMapsMap.svelte | 6 +-- .../components/zone-maps/ZoneMapsThing.svelte | 6 +-- apps/frontend/data/icons.ts | 7 ++- apps/frontend/data/quests.ts | 8 ++++ apps/frontend/data/region.ts | 4 +- .../data/tasks/10-the-war-within/delves.ts | 6 +-- .../collected-icon/CollectedIcon.svelte | 4 +- .../components/forms/CheckboxInput.svelte | 4 +- .../forms/GroupedCheckboxInput.svelte | 4 +- .../shared/components/forms/RadioGroup.svelte | 4 +- .../shared/components/forms/TextInput.svelte | 4 +- .../components/icons/QuestStatusIcon.svelte | 34 ++++++++++++++ .../shared/components/icons/YesNoIcon.svelte | 30 ++++++------ .../components/images/IconifyIcon.svelte | 38 --------------- .../components/images/IconifyWrapper.svelte | 47 ++++++++++++++++--- .../components/paginate/PaginateBar.svelte | 10 ++-- .../components/parsed-text/ParsedText.svelte | 4 +- .../sub-sidebar/SubSidebarEntry.svelte | 6 ++- .../shared/components/sub-sidebar/types.ts | 4 +- apps/frontend/shared/icons/components.ts | 15 ------ apps/frontend/shared/icons/index.ts | 7 +-- apps/frontend/shared/icons/library.ts | 11 +++++ .../shared/icons/mappings/armor-type.ts | 31 ++++-------- .../shared/icons/mappings/farm-type.ts | 5 +- .../shared/icons/mappings/inventory-slot.ts | 5 +- .../shared/icons/mappings/inventory-type.ts | 5 +- .../shared/icons/mappings/item-location.ts | 5 +- .../shared/icons/mappings/lookup-type.ts | 5 +- .../shared/icons/mappings/profession.ts | 4 +- .../shared/icons/mappings/reward-type.ts | 5 +- .../shared/icons/mappings/weapon-subclass.ts | 7 ++- apps/frontend/types/icons.ts | 6 +++ apps/frontend/types/tasks.ts | 6 +-- .../frontend/user-home/CharacterFilter.svelte | 4 +- apps/frontend/user-home/NewNav.svelte | 4 +- apps/frontend/user-home/Sidebar.svelte | 4 +- .../collections/decor/DecorObject.svelte | 6 +-- .../collections/recipes/Ability.svelte | 6 +-- .../components/everything/LookupThing.svelte | 9 ++-- .../components/settings/MagicList.svelte | 4 +- .../settings/sections/SettingsLayout.svelte | 4 +- .../settings/sections/SettingsTags.svelte | 14 +++--- .../settings/sections/SettingsTasks.svelte | 25 ++++------ .../settings/sections/views/Views.svelte | 22 ++++----- .../transmog-sets/TableCategory.svelte | 8 ++-- .../components/world-quests/WorldQuest.svelte | 6 +-- .../frontend/utils/zone-maps/get-drop-icon.ts | 7 ++- .../frontend/utils/zone-maps/get-farm-icon.ts | 9 ++-- 100 files changed, 448 insertions(+), 441 deletions(-) create mode 100644 apps/frontend/shared/components/icons/QuestStatusIcon.svelte delete mode 100644 apps/frontend/shared/components/images/IconifyIcon.svelte delete mode 100644 apps/frontend/shared/icons/components.ts create mode 100644 apps/frontend/types/icons.ts diff --git a/apps/frontend/admin/components/rename-requests/RenameRequests.svelte b/apps/frontend/admin/components/rename-requests/RenameRequests.svelte index 4dbdf7bad..eb6f16aad 100644 --- a/apps/frontend/admin/components/rename-requests/RenameRequests.svelte +++ b/apps/frontend/admin/components/rename-requests/RenameRequests.svelte @@ -5,7 +5,7 @@ import { iconLibrary } from '@/shared/icons'; import type { RenameRequest } from './types'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; let renameRequests: RenameRequest[]; @@ -74,18 +74,18 @@ > {#if !renameRequest.inUse} - await approveRequest(renameRequest.id)} + onclick={async () => await approveRequest(renameRequest.id)} /> {/if} - await declineRequest(renameRequest.id)} + onclick={async () => await declineRequest(renameRequest.id)} /> diff --git a/apps/frontend/auctions/components/results/Selected.svelte b/apps/frontend/auctions/components/results/Selected.svelte index 0199747e1..a8a1bb0c1 100644 --- a/apps/frontend/auctions/components/results/Selected.svelte +++ b/apps/frontend/auctions/components/results/Selected.svelte @@ -6,7 +6,7 @@ import { wowthingData } from '@/shared/stores/data'; import { leftPad } from '@/utils/formatting'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; export let selected: string; @@ -79,7 +79,7 @@ {#if realm.region === Region.EU && euLocales[realm.locale]} {@const { icon: countryIcon, name: countryName } = euLocales[realm.locale]} - - + {/if} diff --git a/apps/frontend/components/appearances/AppearancesItem.svelte b/apps/frontend/components/appearances/AppearancesItem.svelte index 8585f9306..b2b7c68cb 100644 --- a/apps/frontend/components/appearances/AppearancesItem.svelte +++ b/apps/frontend/components/appearances/AppearancesItem.svelte @@ -1,5 +1,3 @@ - -
- +
diff --git a/apps/frontend/components/explore/ExploreIcons.svelte b/apps/frontend/components/explore/ExploreIcons.svelte index 8481a3dd8..530dd18f9 100644 --- a/apps/frontend/components/explore/ExploreIcons.svelte +++ b/apps/frontend/components/explore/ExploreIcons.svelte @@ -3,7 +3,7 @@ import { iconLibrary } from '@/shared/icons'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; const icons = sortBy(Object.entries(iconLibrary), ([name]) => name); @@ -25,7 +25,7 @@
{#each icons as [name, icon] (name)}
- + {name}
{/each} diff --git a/apps/frontend/components/explore/ExploreTransmog.svelte b/apps/frontend/components/explore/ExploreTransmog.svelte index 9b75134fe..19a81dc25 100644 --- a/apps/frontend/components/explore/ExploreTransmog.svelte +++ b/apps/frontend/components/explore/ExploreTransmog.svelte @@ -16,7 +16,7 @@ import ParsedText from '@/shared/components/parsed-text/ParsedText.svelte'; import WowheadLink from '@/shared/components/links/WowheadLink.svelte'; import WowthingImage from '@/shared/components/images/sources/WowthingImage.svelte'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import { iconLibrary } from '@/shared/icons'; const slotOrder = bestTypeOrder.concat(weaponSubclassOrder.map((sub) => sub + 100)); @@ -168,7 +168,7 @@ {#if isPrimary} - + {/if}
diff --git a/apps/frontend/components/home/table/HomeTableGroupHead.svelte b/apps/frontend/components/home/table/HomeTableGroupHead.svelte index 522a2f25e..50cd4036b 100644 --- a/apps/frontend/components/home/table/HomeTableGroupHead.svelte +++ b/apps/frontend/components/home/table/HomeTableGroupHead.svelte @@ -20,7 +20,7 @@ import HeadMovementSpeed from '@/components/character-table/head/MovementSpeed.svelte'; import HeadProgress from './head/HomeTableHeadProgress.svelte'; import HeadTasks from './head/HomeTableHeadTasks.svelte'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import RowGold from './row/HomeTableRowGold.svelte'; import RowPlayedTime from './row/HomeTableRowPlayedTime.svelte'; import SpacerRow from '@/components/character-table/CharacterTableSpacerRow.svelte'; @@ -142,7 +142,7 @@ > {:else if field === 'callings'} - SL + SL {:else if field === 'covenant'} @@ -152,11 +152,11 @@ {:else if field === 'emissariesBfa'} - BfA + BfA {:else if field === 'emissariesLegion'} - Legion + Legion {:else if field === 'gear'} Gear @@ -244,15 +244,15 @@ {:else if field === 'vaultMythicPlus'} setSortState()} - >Dungeon Dungeon {:else if field === 'vaultRaid'} setSortState()} - >Raid Raid {:else if field === 'vaultWorld'} setSortState()} - >World World {:else}   diff --git a/apps/frontend/components/home/table/head/HomeTableHeadTasks.svelte b/apps/frontend/components/home/table/head/HomeTableHeadTasks.svelte index 6e637e567..00ce731d0 100644 --- a/apps/frontend/components/home/table/head/HomeTableHeadTasks.svelte +++ b/apps/frontend/components/home/table/head/HomeTableHeadTasks.svelte @@ -7,10 +7,9 @@ import { userState } from '@/user-home/state/user'; import type { SortableProps } from '@/types/props'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import ParsedText from '@/shared/components/parsed-text/ParsedText.svelte'; import Tooltip from '@/components/tooltips/task/TooltipTaskHead.svelte'; - import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; let { getSortState, setSortState }: SortableProps = $props(); @@ -61,11 +60,7 @@ > {#if chore} {#if chore.icon} - {#if 'body' in chore.icon} - - {:else} - - {/if} + {/if} {:else} diff --git a/apps/frontend/components/home/table/row/HomeTableRowProgress.svelte b/apps/frontend/components/home/table/row/HomeTableRowProgress.svelte index f86a8ff43..c056a926e 100644 --- a/apps/frontend/components/home/table/row/HomeTableRowProgress.svelte +++ b/apps/frontend/components/home/table/row/HomeTableRowProgress.svelte @@ -6,7 +6,7 @@ import getProgress from '@/utils/get-progress'; import type { CharacterProps } from '@/types/props'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import TooltipProgress from '@/components/tooltips/progress/TooltipProgress.svelte'; let { character }: CharacterProps = $props(); @@ -42,7 +42,7 @@ }} > {#if data.have > 0 && data.have === data.total} - + {:else} {data.have} / {data.total} {/if} diff --git a/apps/frontend/components/home/table/row/HomeTableRowSettings.svelte b/apps/frontend/components/home/table/row/HomeTableRowSettings.svelte index 716e48ffb..4c5a045f7 100644 --- a/apps/frontend/components/home/table/row/HomeTableRowSettings.svelte +++ b/apps/frontend/components/home/table/row/HomeTableRowSettings.svelte @@ -6,7 +6,7 @@ import type { Character } from '@/types/character'; import CheckboxInput from '@/shared/components/forms/CheckboxInput.svelte'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; export let character: Character; @@ -65,10 +65,10 @@
- {#if $characterSettingsStore === character.id} diff --git a/apps/frontend/components/home/table/row/HomeTableRowTask.svelte b/apps/frontend/components/home/table/row/HomeTableRowTask.svelte index 0addcedc2..be5d5c2e3 100644 --- a/apps/frontend/components/home/table/row/HomeTableRowTask.svelte +++ b/apps/frontend/components/home/table/row/HomeTableRowTask.svelte @@ -6,7 +6,7 @@ import { userState } from '@/user-home/state/user'; import type { CharacterProps } from '@/types/props'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; type Props = CharacterProps & { fullTaskName: string; @@ -52,11 +52,11 @@ > {#if Object.values(charTask.chores).filter((chore) => !chore.skipped).length === 1} {#if charTask.status === QuestStatus.Completed} - + {:else if charTask.countCompleted === charTask.countTotal} - + {:else if !inProgress} - + {:else} {charTask.countCompleted} / {charTask.countTotal} {/if} diff --git a/apps/frontend/components/home/table/row/HomeTableRowTaskChore.svelte b/apps/frontend/components/home/table/row/HomeTableRowTaskChore.svelte index d665d2222..045db17a9 100644 --- a/apps/frontend/components/home/table/row/HomeTableRowTaskChore.svelte +++ b/apps/frontend/components/home/table/row/HomeTableRowTaskChore.svelte @@ -5,7 +5,7 @@ import { toNiceNumber } from '@/utils/formatting/to-nice-number'; import type { CharacterProps } from '@/types/props'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; type Props = CharacterProps & { choreName: string; @@ -38,9 +38,9 @@ data-full-task-name={fullTaskName} > {#if charChore?.status === QuestStatus.Completed} - + + --> {:else if charChore?.status === QuestStatus.InProgress} {toNiceNumber(charChore.progressCurrent, 0)} / {toNiceNumber( @@ -49,6 +49,6 @@ )} {:else if charChore?.status === QuestStatus.NotStarted} - + {/if} diff --git a/apps/frontend/components/home/view-switcher/ViewSwitcher.svelte b/apps/frontend/components/home/view-switcher/ViewSwitcher.svelte index c3d626f8c..41f899ad9 100644 --- a/apps/frontend/components/home/view-switcher/ViewSwitcher.svelte +++ b/apps/frontend/components/home/view-switcher/ViewSwitcher.svelte @@ -8,7 +8,7 @@ import { userState } from '@/user-home/state/user'; import Holidays from './Holidays.svelte'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import ParagonQuests from '../table/paragon/ParagonQuests.svelte'; import ParsedText from '@/shared/components/parsed-text/ParsedText.svelte'; @@ -93,7 +93,7 @@ data-tooltip="Settings" use:link > - + {/if}
diff --git a/apps/frontend/components/items/ItemsItem.svelte b/apps/frontend/components/items/ItemsItem.svelte index 9bfc8f7b5..9e3b41c9f 100644 --- a/apps/frontend/components/items/ItemsItem.svelte +++ b/apps/frontend/components/items/ItemsItem.svelte @@ -12,7 +12,7 @@ import type { Character, CharacterGear } from '@/types'; import CraftedQualityIcon from '@/shared/components/images/CraftedQualityIcon.svelte'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import WowthingImage from '@/shared/components/images/sources/WowthingImage.svelte'; import type { ConvertibleCategoryUpgrade } from './convertible/types'; import WowheadLink from '@/shared/components/links/WowheadLink.svelte'; @@ -226,7 +226,7 @@ {#if iconName} {:else} - + {/if} {/if} diff --git a/apps/frontend/components/items/convertible/CharacterItems.svelte b/apps/frontend/components/items/convertible/CharacterItems.svelte index 57f03ffdc..4d3517565 100644 --- a/apps/frontend/components/items/convertible/CharacterItems.svelte +++ b/apps/frontend/components/items/convertible/CharacterItems.svelte @@ -6,7 +6,7 @@ import { getItemUrl } from '@/utils/get-item-url'; import type { LazyConvertibleCharacterItem } from '@/user-home/state/lazy/convertible.svelte'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import WowthingImage from '@/shared/components/images/sources/WowthingImage.svelte'; let { data }: { data: LazyConvertibleCharacterItem[] } = $props(); @@ -75,8 +75,8 @@
{#if slotData.isPurchased} - {#if slotData.isConvertible} - {#if data[inventoryType].modifiers[modifier].userHas} - + {:else} {#if data[inventoryType].modifiers[modifier].userHas} - + {:else} --- {/if} diff --git a/apps/frontend/components/items/convertible/DifficultyTable.svelte b/apps/frontend/components/items/convertible/DifficultyTable.svelte index e9e17af30..4da62816b 100644 --- a/apps/frontend/components/items/convertible/DifficultyTable.svelte +++ b/apps/frontend/components/items/convertible/DifficultyTable.svelte @@ -13,7 +13,7 @@ import { convertibleTypes } from './data'; import type { ConvertibleCategory } from './types'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import Tooltip from './DifficultyTooltip.svelte'; type Props = { @@ -113,21 +113,19 @@ }} > {#if data?.userHas} - + {:else if data?.anyIsConvertible || data?.anyIsPurchaseable || data?.anyIsUpgradeable} {#if data.anyIsPurchaseable} - {/if} {#if data.anyIsUpgradeable} - {character.realm.name} {#if isPurchased} - @@ -96,8 +96,8 @@ {#if isUpgradeable} - {:else} @@ -106,8 +106,8 @@ {#if isConvertible} - diff --git a/apps/frontend/components/items/tokens/TokenItem.svelte b/apps/frontend/components/items/tokens/TokenItem.svelte index 659b2131b..031e6731e 100644 --- a/apps/frontend/components/items/tokens/TokenItem.svelte +++ b/apps/frontend/components/items/tokens/TokenItem.svelte @@ -21,7 +21,7 @@ import CollectibleCount from '@/components/collectible/CollectibleCount.svelte'; import CollectedIcon from '@/shared/components/collected-icon/CollectedIcon.svelte'; import FactionIcon from '@/shared/components/images/FactionIcon.svelte'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import SpecializationIcon from '@/shared/components/images/SpecializationIcon.svelte'; import TooltipAlreadyHave from '@/components/tooltips/auction-already-have/TooltipAuctionAlreadyHave.svelte'; import WowheadLink from '@/shared/components/links/WowheadLink.svelte'; @@ -230,7 +230,7 @@ {#if intersected} - - +
{/if} @@ -207,7 +207,7 @@ class="overlay buyable iconify-icon drop-shadow" class:status-success={appearance.userHas} > - + {:else if appearance.userHas} @@ -223,7 +223,7 @@ {#if hardModeItemIds.has(dataItem.id)}
- +
{/if} diff --git a/apps/frontend/components/journal/JournalOptions.svelte b/apps/frontend/components/journal/JournalOptions.svelte index 7d8f5abb5..8334deed0 100644 --- a/apps/frontend/components/journal/JournalOptions.svelte +++ b/apps/frontend/components/journal/JournalOptions.svelte @@ -3,7 +3,7 @@ import { browserState } from '@/shared/state/browser.svelte'; import CheckboxInput from '@/shared/components/forms/CheckboxInput.svelte'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; let filterText = $derived.by(() => { const state = browserState.current.journal; @@ -121,7 +121,7 @@ > Filters: {filterText} - ({ character, instanceId: instance.id, lockout }), }} > - / {maxBosses} {:else if lockout?.defeatedBosses >= maxBosses} - + {:else if lockout?.defeatedBosses > 0} - + {:else if settingsState.value.layout.showEmptyLockouts} - + {/if} {:else} @@ -86,7 +86,7 @@ }} > {#if settingsState.value.layout.showEmptyLockouts} - + {/if} {/if} diff --git a/apps/frontend/components/professions/equipment/TableRow.svelte b/apps/frontend/components/professions/equipment/TableRow.svelte index b38a03369..a5d07e946 100644 --- a/apps/frontend/components/professions/equipment/TableRow.svelte +++ b/apps/frontend/components/professions/equipment/TableRow.svelte @@ -15,7 +15,7 @@ import CurrenciesCell from '@/user-home/components/currencies/TableRow.svelte'; import Empty from '../../items/ItemsEmpty.svelte'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import Item from '../../items/ItemsItem.svelte'; import WowthingImage from '@/shared/components/images/sources/WowthingImage.svelte'; @@ -122,7 +122,7 @@ tooltip={getNameForFaction(profession.name, character.faction)} /> {:else} - + {/if} diff --git a/apps/frontend/components/professions/recipes/View.svelte b/apps/frontend/components/professions/recipes/View.svelte index e83036720..1c1006b3c 100644 --- a/apps/frontend/components/professions/recipes/View.svelte +++ b/apps/frontend/components/professions/recipes/View.svelte @@ -20,7 +20,7 @@ import Checkbox from '@/shared/components/forms/CheckboxInput.svelte'; import ClassIcon from '@/shared/components/images/ClassIcon.svelte'; import FactionIcon from '@/shared/components/images/FactionIcon.svelte'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import ProfessionIcon from '@/shared/components/images/ProfessionIcon.svelte'; import WowheadLink from '@/shared/components/links/WowheadLink.svelte'; import WowthingImage from '@/shared/components/images/sources/WowthingImage.svelte'; @@ -251,7 +251,7 @@ target="_blank" data-tooltip="Find auctions" > - + {/if} diff --git a/apps/frontend/components/progress/ProgressTableBodyRaidSkip.svelte b/apps/frontend/components/progress/ProgressTableBodyRaidSkip.svelte index 8569f6179..fa779f339 100644 --- a/apps/frontend/components/progress/ProgressTableBodyRaidSkip.svelte +++ b/apps/frontend/components/progress/ProgressTableBodyRaidSkip.svelte @@ -6,7 +6,7 @@ import type { UserQuestDataCharacterProgress } from '@/types/data'; import type { ManualDataProgressGroup } from '@/types/data/manual'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import Tooltip from '@/components/tooltips/progress-raid-skip/TooltipProgressRaidSkip.svelte'; export let character: Character; @@ -95,9 +95,9 @@ {#each progresses as progress}
{#if progress.completed} - + {:else if progress.progressQuest === undefined} - + {:else} {progress.progressQuest.objectives?.[0]?.have ?? 0} / diff --git a/apps/frontend/components/tooltips/auction-already-have/TooltipAuctionAlreadyHave.svelte b/apps/frontend/components/tooltips/auction-already-have/TooltipAuctionAlreadyHave.svelte index b3b1d4772..a70e72057 100644 --- a/apps/frontend/components/tooltips/auction-already-have/TooltipAuctionAlreadyHave.svelte +++ b/apps/frontend/components/tooltips/auction-already-have/TooltipAuctionAlreadyHave.svelte @@ -6,7 +6,7 @@ import { ItemLocation } from '@/enums/item-location'; import type { HasNameAndRealm, UserItem } from '@/types/shared'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; type Props = { groupItems?: boolean; @@ -92,7 +92,10 @@ {#each items as item} - + {item.containerName} Slot {item.slot} diff --git a/apps/frontend/components/tooltips/character-best-item-level/Tooltip.svelte b/apps/frontend/components/tooltips/character-best-item-level/Tooltip.svelte index ee11bec9d..fb115de8e 100644 --- a/apps/frontend/components/tooltips/character-best-item-level/Tooltip.svelte +++ b/apps/frontend/components/tooltips/character-best-item-level/Tooltip.svelte @@ -6,7 +6,7 @@ import getItemLevelQuality from '@/utils/get-item-level-quality'; import type { CharacterProps } from '@/types/props'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import SpecializationIcon from '@/shared/components/images/SpecializationIcon.svelte'; type Props = CharacterProps & { @@ -63,7 +63,7 @@ {#each missingSlots as missingSlot (missingSlot)} - + {/each} diff --git a/apps/frontend/components/tooltips/dailies/TooltipDailies.svelte b/apps/frontend/components/tooltips/dailies/TooltipDailies.svelte index f033bc3e9..542c9d35d 100644 --- a/apps/frontend/components/tooltips/dailies/TooltipDailies.svelte +++ b/apps/frontend/components/tooltips/dailies/TooltipDailies.svelte @@ -8,7 +8,7 @@ import type { Character, DailyQuestsReward } from '@/types'; import type { GlobalDailyQuest } from '@/types/data'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import WowthingImage from '@/shared/components/images/sources/WowthingImage.svelte'; export let callings: [DailyQuestsReward, GlobalDailyQuest, boolean][]; @@ -63,8 +63,8 @@ {#each callings as [rewards, daily, status], callingIndex} - diff --git a/apps/frontend/components/tooltips/progress/TooltipProgress.svelte b/apps/frontend/components/tooltips/progress/TooltipProgress.svelte index 8bd96501c..6a015ad09 100644 --- a/apps/frontend/components/tooltips/progress/TooltipProgress.svelte +++ b/apps/frontend/components/tooltips/progress/TooltipProgress.svelte @@ -120,6 +120,7 @@ .name { padding-right: 1rem; text-align: left; + width: 100%; :global(.description-short) { color: #00ccff; diff --git a/apps/frontend/components/tooltips/reputation-header/TooltipReputationHeaderEntry.svelte b/apps/frontend/components/tooltips/reputation-header/TooltipReputationHeaderEntry.svelte index d372f5bbd..10876af9c 100644 --- a/apps/frontend/components/tooltips/reputation-header/TooltipReputationHeaderEntry.svelte +++ b/apps/frontend/components/tooltips/reputation-header/TooltipReputationHeaderEntry.svelte @@ -10,7 +10,7 @@ ManualDataReputationSet, } from '@/types/data/manual'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import WowthingImage from '@/shared/components/images/sources/WowthingImage.svelte'; import { userState } from '@/user-home/state/user'; @@ -103,7 +103,7 @@ {#each rewards as reward} - + {reward.name} diff --git a/apps/frontend/components/tooltips/task/TooltipTaskRow.svelte b/apps/frontend/components/tooltips/task/TooltipTaskRow.svelte index ef424ab0f..388eae2f8 100644 --- a/apps/frontend/components/tooltips/task/TooltipTaskRow.svelte +++ b/apps/frontend/components/tooltips/task/TooltipTaskRow.svelte @@ -1,20 +1,14 @@ + + diff --git a/apps/frontend/shared/components/icons/YesNoIcon.svelte b/apps/frontend/shared/components/icons/YesNoIcon.svelte index f2a6bd9bf..19ebcd984 100644 --- a/apps/frontend/shared/components/icons/YesNoIcon.svelte +++ b/apps/frontend/shared/components/icons/YesNoIcon.svelte @@ -1,22 +1,20 @@ - + diff --git a/apps/frontend/shared/components/images/IconifyIcon.svelte b/apps/frontend/shared/components/images/IconifyIcon.svelte deleted file mode 100644 index d864307f4..000000000 --- a/apps/frontend/shared/components/images/IconifyIcon.svelte +++ /dev/null @@ -1,38 +0,0 @@ - - - - - diff --git a/apps/frontend/shared/components/images/IconifyWrapper.svelte b/apps/frontend/shared/components/images/IconifyWrapper.svelte index 2cb50e743..63c37dcda 100644 --- a/apps/frontend/shared/components/images/IconifyWrapper.svelte +++ b/apps/frontend/shared/components/images/IconifyWrapper.svelte @@ -1,13 +1,18 @@ - - - +{#if 'props' in icon} + {@const Icon = icon as ComponentIcon} + + + +{:else} + {@const actualIcon = (icon || iconLibrary.mdiImageBrokenVariant) as IconifyIcon} + +{/if} diff --git a/apps/frontend/shared/components/paginate/PaginateBar.svelte b/apps/frontend/shared/components/paginate/PaginateBar.svelte index e36e69f27..dc4750f71 100644 --- a/apps/frontend/shared/components/paginate/PaginateBar.svelte +++ b/apps/frontend/shared/components/paginate/PaginateBar.svelte @@ -1,7 +1,7 @@ @@ -110,7 +110,7 @@ bind:value={settingsState.value.layout.showEmptyLockouts} name="layout_showEmptyLockouts" > - Show a + Show a for empty lockouts.
diff --git a/apps/frontend/user-home/components/settings/sections/SettingsTags.svelte b/apps/frontend/user-home/components/settings/sections/SettingsTags.svelte index f1a64cc4e..baaf92dd1 100644 --- a/apps/frontend/user-home/components/settings/sections/SettingsTags.svelte +++ b/apps/frontend/user-home/components/settings/sections/SettingsTags.svelte @@ -5,7 +5,7 @@ import { getNumberKeyedEntries } from '@/utils/get-number-keyed-entries'; import type { SettingsTag } from '@/shared/stores/settings/types/tag'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import TextInput from '@/shared/components/forms/TextInput.svelte'; let deleting = $state(0); @@ -106,21 +106,21 @@ - (deleting = deleting === tag.id ? 0 : tag.id)} + onclick={() => (deleting = deleting === tag.id ? 0 : tag.id)} /> {#if deleting === tag.id} Permanently delete? - deleteConfirmClick(tag.id)} + onclick={() => deleteConfirmClick(tag.id)} /> {/if} diff --git a/apps/frontend/user-home/components/settings/sections/SettingsTasks.svelte b/apps/frontend/user-home/components/settings/sections/SettingsTasks.svelte index 325818789..f804791c6 100644 --- a/apps/frontend/user-home/components/settings/sections/SettingsTasks.svelte +++ b/apps/frontend/user-home/components/settings/sections/SettingsTasks.svelte @@ -2,18 +2,13 @@ import xor from 'lodash/xor'; import { Constants, MAX_TASKS } from '@/data/constants'; - import { - MynauiLetterASquare, - MynauiLetterDSquare, - MynauiLetterWSquare, - } from '@/shared/icons/components'; + import { iconLibrary } from '@/shared/icons'; import { uiIcons } from '@/shared/icons/ui'; import { settingsState } from '@/shared/state/settings.svelte'; import { DbResetType } from '@/shared/stores/db/enums'; import type { SettingsTask } from '@/shared/stores/settings/types/task'; import CheckboxInput from '@/shared/components/forms/CheckboxInput.svelte'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import NumberInput from '@/shared/components/forms/NumberInput.svelte'; import ParsedText from '@/shared/components/parsed-text/ParsedText.svelte'; @@ -115,7 +110,7 @@ name="tasks_show_account_icon" bind:value={settingsState.value.tasks.showAccountIcon} > - + Show account icon @@ -123,7 +118,7 @@ name="tasks_show_daily_icon" bind:value={settingsState.value.tasks.showDailyIcon} > - + Show daily icon @@ -131,7 +126,7 @@ name="tasks_show_weekly_icon" bind:value={settingsState.value.tasks.showWeeklyIcon} > - + Show weekly icon @@ -209,21 +204,21 @@ /> - (deleting = deleting === task.key ? null : task.key)} + onclick={() => (deleting = deleting === task.key ? null : task.key)} /> {#if deleting === task.key} Permanently delete? - deleteConfirmClick(task.key)} + onclick={() => deleteConfirmClick(task.key)} /> {/if} diff --git a/apps/frontend/user-home/components/settings/sections/views/Views.svelte b/apps/frontend/user-home/components/settings/sections/views/Views.svelte index a26f76e77..3270a10e5 100644 --- a/apps/frontend/user-home/components/settings/sections/views/Views.svelte +++ b/apps/frontend/user-home/components/settings/sections/views/Views.svelte @@ -4,7 +4,7 @@ import { settingsState } from '@/shared/state/settings.svelte'; import type { SettingsView } from '@/shared/stores/settings/types'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; let deleting = $state(null); @@ -115,42 +115,42 @@ {#if viewIndex > 0} - moveUpClick(viewIndex)} + onclick={() => moveUpClick(viewIndex)} /> {/if} {#if viewIndex < settingsState.value.views.length - 1} - moveDownClick(viewIndex)} + onclick={() => moveDownClick(viewIndex)} /> {/if} {#if viewIndex > 0} - (deleting = deleting === view.id ? null : view.id)} + onclick={() => (deleting = deleting === view.id ? null : view.id)} /> {/if} {#if deleting === view.id} Permanently delete? - deleteConfirmClick(view.id)} + onclick={() => deleteConfirmClick(view.id)} /> {/if} diff --git a/apps/frontend/user-home/components/transmog-sets/TableCategory.svelte b/apps/frontend/user-home/components/transmog-sets/TableCategory.svelte index 68a3cb6c5..e369f8de4 100644 --- a/apps/frontend/user-home/components/transmog-sets/TableCategory.svelte +++ b/apps/frontend/user-home/components/transmog-sets/TableCategory.svelte @@ -17,7 +17,7 @@ import ClassIcon from '@/shared/components/images/ClassIcon.svelte'; import CovenantIcon from '@/shared/components/images/CovenantIcon.svelte'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import ParsedText from '@/shared/components/parsed-text/ParsedText.svelte'; import TableSet from './TableSet.svelte'; import WowthingImage from '@/shared/components/images/sources/WowthingImage.svelte'; @@ -345,9 +345,9 @@ {/if} - ($transmogSetsState.collapsedCategories[groupKey] = isExpanded)} + onclick={() => ($transmogSetsState.collapsedCategories[groupKey] = isExpanded)} tooltip={isExpanded ? 'Collapse this group' : 'Expand this group'} /> @@ -384,7 +384,7 @@ class="has-transmog-set-id" data-tooltip="Uses a Blizzard transmog set" > - + {/if} diff --git a/apps/frontend/user-home/components/world-quests/WorldQuest.svelte b/apps/frontend/user-home/components/world-quests/WorldQuest.svelte index bfb9bb2d9..34be6833f 100644 --- a/apps/frontend/user-home/components/world-quests/WorldQuest.svelte +++ b/apps/frontend/user-home/components/world-quests/WorldQuest.svelte @@ -12,7 +12,7 @@ import type { ApiWorldQuest } from './types'; import FactionIcon from '@/shared/components/images/FactionIcon.svelte'; - import IconifyIcon from '@/shared/components/images/IconifyIcon.svelte'; + import IconifyWrapper from '@/shared/components/images/IconifyWrapper.svelte'; import Tooltip from './Tooltip.svelte'; import WowheadLink from '@/shared/components/links/WowheadLink.svelte'; import WowthingImage from '@/shared/components/images/sources/WowthingImage.svelte'; @@ -194,12 +194,12 @@ {#if questInfoIcon[questInfo?.type]}
- +
{:else if questInfo?.type === QuestInfoType.Normal || questInfo?.type === QuestInfoType.WorldBoss} {#if (questInfo.flags & QuestInfoFlags.Elite) > 0}
- +
{/if} {/if} diff --git a/apps/frontend/utils/zone-maps/get-drop-icon.ts b/apps/frontend/utils/zone-maps/get-drop-icon.ts index d44ef12d5..b02c86d33 100644 --- a/apps/frontend/utils/zone-maps/get-drop-icon.ts +++ b/apps/frontend/utils/zone-maps/get-drop-icon.ts @@ -1,5 +1,3 @@ -import type { IconifyIcon } from '@iconify/types'; - import { iconStrings } from '@/data/icons'; import { ArmorType } from '@/enums/armor-type'; import { RewardType } from '@/enums/reward-type'; @@ -14,11 +12,12 @@ import { } from '@/shared/icons/mappings'; import { wowthingData } from '@/shared/stores/data'; import type { ManualDataZoneMapDrop } from '@/types/data/manual'; +import type { Icon } from '@/types/icons'; -export function getDropIcon(drop: ManualDataZoneMapDrop, isCriteria: boolean): IconifyIcon { +export function getDropIcon(drop: ManualDataZoneMapDrop, isCriteria: boolean): Icon { const manualData = wowthingData.manual; - let icon: IconifyIcon; + let icon: Icon; if (isCriteria) { icon = iconStrings['list']; } else if (drop.type === RewardType.Armor) { diff --git a/apps/frontend/utils/zone-maps/get-farm-icon.ts b/apps/frontend/utils/zone-maps/get-farm-icon.ts index 5898e3e76..9fd9dac05 100644 --- a/apps/frontend/utils/zone-maps/get-farm-icon.ts +++ b/apps/frontend/utils/zone-maps/get-farm-icon.ts @@ -1,11 +1,10 @@ -import type { IconifyIcon } from '@iconify/types'; - import { FarmType } from '@/enums/farm-type'; import { iconLibrary } from '@/shared/icons'; import { farmTypeIcons, professionSlugIcons } from '@/shared/icons/mappings'; import type { ManualDataZoneMapFarm } from '@/types/data/manual'; +import type { Icon } from '@/types/icons'; -export function getFarmIcon(farm: ManualDataZoneMapFarm): [IconifyIcon, string] { +export function getFarmIcon(farm: ManualDataZoneMapFarm): [Icon, string] { const professionLimits: Record = {}; for (const drop of farm.drops || []) { if (drop.limit?.[0] === 'profession') { @@ -14,7 +13,7 @@ export function getFarmIcon(farm: ManualDataZoneMapFarm): [IconifyIcon, string] } const keys = Object.keys(professionLimits); - let icon: IconifyIcon; + let icon: Icon; if (farm.drops?.length === 1 && keys.length === 1 && farm.type !== FarmType.Kill) { icon = professionSlugIcons[keys[0]]; } else if (farm.isPhased) { @@ -26,7 +25,7 @@ export function getFarmIcon(farm: ManualDataZoneMapFarm): [IconifyIcon, string] return [icon, getIconScaling(icon) || '0.8']; } -function getIconScaling(icon: IconifyIcon) { +function getIconScaling(icon: Icon) { switch (icon) { case iconLibrary.gamePresent: return '0.9'; From 2e81d4956713c415b253952c30e0a2c636476318 Mon Sep 17 00:00:00 2001 From: Freddie Date: Tue, 17 Mar 2026 17:23:05 -0700 Subject: [PATCH 2/6] Rename Expansion to ExpansionData - add Expansion enum - limit Midnight skinning cooldowns to sub-profession --- .../character-table/row/VaultWorld.svelte | 1 + .../CharacterProfessionsProfession.svelte | 4 +- .../CharacterProfessionsTraits.svelte | 4 +- .../HomeTableRowProfessionCooldowns.svelte | 4 +- .../professions/recipes/View.svelte | 4 +- apps/frontend/data/expansion.ts | 34 +++++------ apps/frontend/data/professions/cooldowns.ts | 7 +++ apps/frontend/data/professions/professions.ts | 1 + apps/frontend/data/professions/skinning.ts | 4 +- apps/frontend/data/sub-professions.ts | 21 +++++++ .../frontend/data/tasks/11-midnight/12-0-0.ts | 1 + apps/frontend/enums/expansion.ts | 14 +++++ apps/frontend/shared/state/settings.svelte.ts | 4 +- .../shared/stores/data/static/types.ts | 2 + .../shared/stores/static/types/reputation.ts | 6 ++ apps/frontend/stores/lazy/character.ts | 6 +- .../types/character/character.svelte.ts | 61 ++++++++++++++++--- apps/frontend/types/character/currency.ts | 17 +++++- apps/frontend/types/expansion.ts | 4 +- apps/frontend/types/profession-cooldown.ts | 2 + .../utils/characters/get-currency-data.ts | 17 +----- apps/frontend/utils/home/home-sort.ts | 17 +++--- apps/tool/Models/Reputations/DumpCovenant.cs | 14 +++++ .../Models/Reputations/DumpRenownReward.cs | 24 ++++++++ .../Models/Reputations/ManualRenownReward.cs | 13 ++++ apps/tool/Models/Static/RedisStaticData.cs | 2 + apps/tool/Tools/DumpsTool.cs | 28 +++------ apps/tool/Tools/StaticTool.cs | 40 ++++++++++++ 28 files changed, 277 insertions(+), 79 deletions(-) create mode 100644 apps/frontend/data/sub-professions.ts create mode 100644 apps/frontend/enums/expansion.ts create mode 100644 apps/tool/Models/Reputations/DumpCovenant.cs create mode 100644 apps/tool/Models/Reputations/DumpRenownReward.cs create mode 100644 apps/tool/Models/Reputations/ManualRenownReward.cs diff --git a/apps/frontend/components/character-table/row/VaultWorld.svelte b/apps/frontend/components/character-table/row/VaultWorld.svelte index bb56c5c97..d1960cf5f 100644 --- a/apps/frontend/components/character-table/row/VaultWorld.svelte +++ b/apps/frontend/components/character-table/row/VaultWorld.svelte @@ -10,6 +10,7 @@ let { character }: CharacterProps = $props(); let worldVault = $derived(character.isMaxLevel ? character.weekly?.vault?.worldProgress : []); + // tier 5 could be hard prey function qualityFunc(prog: CharacterWeeklyProgress): number { return getWorldTier(prog.level)[1]; diff --git a/apps/frontend/components/characters/professions/CharacterProfessionsProfession.svelte b/apps/frontend/components/characters/professions/CharacterProfessionsProfession.svelte index 46feb9b88..2fc6f2889 100644 --- a/apps/frontend/components/characters/professions/CharacterProfessionsProfession.svelte +++ b/apps/frontend/components/characters/professions/CharacterProfessionsProfession.svelte @@ -11,7 +11,7 @@ import type { Character, CharacterSubProfession, - Expansion, + ExpansionData, MultiSlugParams, UserCount, } from '@/types'; @@ -25,7 +25,7 @@ export let staticProfession: StaticDataProfession; let charSubProfession: CharacterSubProfession; - let expansion: Expansion; + let expansion: ExpansionData; let filteredCategories: Record; let hasFirstCraft: boolean; let knownRecipes: Set; diff --git a/apps/frontend/components/characters/professions/CharacterProfessionsTraits.svelte b/apps/frontend/components/characters/professions/CharacterProfessionsTraits.svelte index b88d66602..f28cc6f9a 100644 --- a/apps/frontend/components/characters/professions/CharacterProfessionsTraits.svelte +++ b/apps/frontend/components/characters/professions/CharacterProfessionsTraits.svelte @@ -1,6 +1,6 @@