diff --git a/packages/shared-ui/src/navigation/ManaLogoIcon.svelte b/packages/shared-ui/src/navigation/ManaLogoIcon.svelte new file mode 100644 index 000000000..925f5d7b8 --- /dev/null +++ b/packages/shared-ui/src/navigation/ManaLogoIcon.svelte @@ -0,0 +1,21 @@ + + + diff --git a/packages/shared-ui/src/navigation/Pill.svelte b/packages/shared-ui/src/navigation/Pill.svelte index 4455be31b..e26d4d2ca 100644 --- a/packages/shared-ui/src/navigation/Pill.svelte +++ b/packages/shared-ui/src/navigation/Pill.svelte @@ -11,6 +11,8 @@ label?: string; /** Hide label (label is still used for aria-label/title). */ iconOnly?: boolean; + /** Height preset. 'sm' = 36px (PillNav), 'md' = 44px (bar pills). */ + size?: 'sm' | 'md'; /** Active/selected state */ active?: boolean; /** Primary accent (e.g. "Erstellen") */ @@ -38,6 +40,7 @@ href, label, iconOnly = false, + size = 'md', active = false, primary = false, danger = false, @@ -51,6 +54,7 @@ }: Props = $props(); const IconComp = $derived(icon ? phosphorIcons[icon] : null); + const iconPx = $derived(size === 'sm' ? 18 : 20); const ariaLabel = $derived(iconOnly ? label : undefined); const effectiveTitle = $derived(title ?? (iconOnly ? label : undefined)); @@ -58,7 +62,7 @@ {#snippet body()} {#if leading}{@render leading()}{/if} {#if IconComp} - + {/if} {#if label && !iconOnly} {label} @@ -69,7 +73,15 @@ {#if href} {:else if isNavItem(element)} - - {#if element.icon} - {#if phosphorIcons[element.icon]} - {@const IconComponent = phosphorIcons[element.icon]} - - {/if} - {/if} - {element.label} - + {/if} {/each} {#each items as item} - {#if item.onClick} - - {:else} - - {#if item.icon} - {#if item.icon === 'mana'} - - - - {:else if item.iconSvg} - {@html item.iconSvg} - {:else if phosphorIcons[item.icon]} - {@const IconComponent = phosphorIcons[item.icon]} - - {/if} - {/if} - {#if !item.iconOnly} - {item.label} - {/if} - - {/if} + {/snippet} + {/each} @@ -757,15 +720,13 @@ direction={dropdownDirection} /> {:else if isNavItem(element)} - - {#if element.icon} - {#if phosphorIcons[element.icon]} - {@const IconComponent = phosphorIcons[element.icon]} - - {/if} - {/if} - {element.label} - + {/if} {/each} @@ -944,11 +905,6 @@ min-height: 44px; justify-content: center; } - - .pill-icon { - width: 1.5rem; - height: 1.5rem; - } } /* Base pill styles */ @@ -1037,12 +993,6 @@ border-color: rgba(220, 38, 38, 0.3); } - .pill-icon { - width: 1.25rem; - height: 1.25rem; - flex-shrink: 0; - } - .pill-label { display: inline; } diff --git a/packages/shared-ui/src/navigation/index.ts b/packages/shared-ui/src/navigation/index.ts index 968f7f56f..a3231b7cb 100644 --- a/packages/shared-ui/src/navigation/index.ts +++ b/packages/shared-ui/src/navigation/index.ts @@ -3,6 +3,7 @@ export { default as Navbar } from './Navbar.svelte'; export { default as Sidebar } from './Sidebar.svelte'; export { default as SidebarSection } from './SidebarSection.svelte'; export { default as Pill } from './Pill.svelte'; +export { default as ManaLogoIcon } from './ManaLogoIcon.svelte'; export { default as PillNavigation } from './PillNavigation.svelte'; export { default as PillDropdown } from './PillDropdown.svelte'; export { default as PillDropdownBar } from './PillDropdownBar.svelte';