-
{#if showSuccess}
{:else}
{/if}
-
+
{appName}
diff --git a/packages/shared-ui/src/navigation/PillNavigation.svelte b/packages/shared-ui/src/navigation/PillNavigation.svelte
index 997f4a057..9ba26b61c 100644
--- a/packages/shared-ui/src/navigation/PillNavigation.svelte
+++ b/packages/shared-ui/src/navigation/PillNavigation.svelte
@@ -1,7 +1,8 @@
+
+
+ {#if sectionLabel && isSidebarMode}
+
{sectionLabel}
+ {/if}
+
+ {#each options as option, index}
+ {#if index > 0}
+
+ {/if}
+
+ {/each}
+
+
+
+
diff --git a/packages/shared-ui/src/navigation/index.ts b/packages/shared-ui/src/navigation/index.ts
index 49f71ac2b..13502b13e 100644
--- a/packages/shared-ui/src/navigation/index.ts
+++ b/packages/shared-ui/src/navigation/index.ts
@@ -4,6 +4,7 @@ export { default as Sidebar } from './Sidebar.svelte';
export { default as SidebarSection } from './SidebarSection.svelte';
export { default as PillNavigation } from './PillNavigation.svelte';
export { default as PillDropdown } from './PillDropdown.svelte';
+export { default as PillTabGroup } from './PillTabGroup.svelte';
export type {
NavItem,
NavbarProps,
@@ -13,4 +14,8 @@ export type {
PillNavItem,
PillDropdownItem,
PillNavigationProps,
+ PillTabOption,
+ PillTabGroupConfig,
+ PillDivider,
+ PillNavElement,
} from './types';
diff --git a/packages/shared-ui/src/navigation/types.ts b/packages/shared-ui/src/navigation/types.ts
index e97d32051..e17d9dba7 100644
--- a/packages/shared-ui/src/navigation/types.ts
+++ b/packages/shared-ui/src/navigation/types.ts
@@ -39,6 +39,44 @@ export interface PillDropdownItem {
active?: boolean;
}
+// ============ Pill Tab Group Types ============
+
+export interface PillTabOption {
+ /** Unique identifier for the tab */
+ id: string;
+ /** Icon name (predefined) */
+ icon?: string;
+ /** Custom SVG icon HTML */
+ iconSvg?: string;
+ /** Optional label (shown in sidebar mode) */
+ label?: string;
+ /** Tooltip text */
+ title?: string;
+ /** Whether this option is disabled */
+ disabled?: boolean;
+}
+
+export interface PillTabGroupConfig {
+ /** Discriminator for type checking */
+ type: 'tabs';
+ /** Tab options */
+ options: PillTabOption[];
+ /** Currently selected tab id */
+ value: string;
+ /** Called when selection changes */
+ onChange: (id: string) => void;
+ /** Optional section label (shown above in sidebar mode) */
+ sectionLabel?: string;
+}
+
+export interface PillDivider {
+ /** Discriminator for type checking */
+ type: 'divider';
+}
+
+/** Union type for all elements that can appear in PillNavigation */
+export type PillNavElement = PillNavItem | PillTabGroupConfig | PillDivider;
+
export interface PillNavigationProps {
/** Navigation items */
items: PillNavItem[];