achery-ui 0.9.1 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/context/AppBarSearchContext.tsx","../src/theme/ThemeProvider.tsx","../src/theme/vars.css.ts","../src/glyphs/Glyph.css.ts","../src/glyphs/Glyph.tsx","../src/glyphs/glyphMeta.ts","../src/components/GlyphPicker/GlyphPicker.css.ts","../src/components/GlyphPicker/GlyphPicker.tsx","../src/components/Typography/Typography.css.ts","../src/components/Typography/Typography.tsx","../src/components/Eyebrow/Eyebrow.css.ts","../src/components/Eyebrow/Eyebrow.tsx","../src/components/Badge/Badge.css.ts","../src/components/Badge/Badge.tsx","../src/components/Button/Button.css.ts","../src/components/Button/Button.tsx","../src/components/Modal/Modal.css.ts","../src/components/Modal/Modal.tsx","../src/components/ConfirmDialog/ConfirmDialog.tsx","../src/components/Toggle/Toggle.css.ts","../src/components/Toggle/Toggle.tsx","../src/components/Marginalia/Marginalia.css.ts","../src/components/Marginalia/Marginalia.tsx","../src/components/Input/Input.css.ts","../src/components/Input/Input.tsx","../src/components/Card/Card.css.ts","../src/components/Card/Card.tsx","../src/components/Tabs/Tabs.css.ts","../src/components/Tabs/Tabs.tsx","../src/components/Tooltip/Tooltip.css.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Sidebar/Sidebar.css.ts","../src/components/Sidebar/Sidebar.tsx","../src/components/Skeleton/Skeleton.css.ts","../src/components/Skeleton/Skeleton.tsx","../src/components/ProgressBar/ProgressBar.css.ts","../src/components/ProgressBar/ProgressBar.tsx","../src/components/Avatar/Avatar.css.ts","../src/components/Avatar/Avatar.tsx","../src/components/AppBar/AppBar.css.ts","../src/components/AppBar/AppBar.tsx","../src/components/Table/Table.css.ts","../src/components/Table/Table.tsx","../src/components/Toast/Toast.css.ts","../src/components/Toast/Toast.tsx","../src/components/Checkbox/Checkbox.css.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/Menu/Menu.css.ts","../src/components/Menu/Menu.tsx","../src/components/DatePicker/DatePicker.css.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/Combobox/Combobox.css.ts","../src/components/Combobox/Combobox.tsx","../src/components/LetterStamp/LetterStamp.css.ts","../src/components/LetterStamp/LetterStamp.tsx","../src/components/EntityPill/EntityPill.css.ts","../src/components/EntityPill/EntityPill.tsx","../src/components/Sparkline/Sparkline.css.ts","../src/components/Sparkline/Sparkline.tsx","../src/components/KpiTile/KpiTile.css.ts","../src/components/KpiTile/KpiTile.tsx","../src/components/StatePill/StatePill.tsx","../src/components/TypeTag/TypeTag.css.ts","../src/components/TypeTag/TypeTag.tsx","../src/components/MaterialCard/MaterialCard.tsx"],"names":["createContext","useState","jsx","useContext","useEffect","useCallback","lazy","title","Suspense","label","value","useRef","PopoverPrimitive","jsxs","count","_7a468","dot","glyph","Fragment","body","description","footer","trigger","RadixDialog","opts","RadixToggle","searchInput","hint","header","marginalia","RadixTabs","item","RadixTooltip","group","content","block","track","initials","display","brandName","brandSub","searchKbd","actions","accentColorNames","accentColors","emptyState","window","toolbar","useMemo","toast","createPortal","statusIndicator","statusIndicatorVariants","wrapper","RadixCheckbox","RadixDropdownMenu","statusIcon","statusIconVariants","input","useId","letter","root","inner"],"mappings":"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","file":"index.cjs","sourcesContent":["import { createContext, useContext, useState, type ReactNode } from 'react'\n\n/** The search configuration published by {@link AppBar} for consumption by {@link Sidebar}. */\nexport interface AppBarSearchConfig {\n placeholder: string\n kbd?: string\n onSearch?: (query: string) => void\n onSearchFocus?: () => void\n}\n\ninterface AppBarSearchContextValue {\n searchConfig: AppBarSearchConfig | null\n setSearchConfig: (config: AppBarSearchConfig | null) => void\n}\n\nexport const AppBarSearchContext = createContext<AppBarSearchContextValue | null>(null)\n\n/** Internal provider — rendered by {@link AcheryProvider}. Do not mount independently. */\nexport const AppBarSearchProvider = ({ children }: { children: ReactNode }) => {\n const [searchConfig, setSearchConfig] = useState<AppBarSearchConfig | null>(null)\n return (\n <AppBarSearchContext.Provider value={{ searchConfig, setSearchConfig }}>\n {children}\n </AppBarSearchContext.Provider>\n )\n}\n\n/** Returns the search context, or null if no AppBar with showSearch is mounted. */\nexport const useAppBarSearch = () => useContext(AppBarSearchContext)\n","import { createContext, useContext, useState, useEffect, useCallback, type ReactNode } from 'react'\nimport type { ThemeContextValue, ThemeMode, ResolvedTheme, AccentColor, AccentDial, MaterialSignature } from '../types/theme'\nimport { AppBarSearchProvider } from '../context/AppBarSearchContext'\n\nimport './light.css'\nimport './dark.css'\nimport './accents.css'\nimport './dial.css'\nimport './material.css'\nimport './global.css'\n\nconst STORAGE_KEY = 'achery-theme-mode'\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null)\n\nfunction getSystemTheme(): ResolvedTheme {\n if (typeof window === 'undefined') return 'light'\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n}\n\nfunction resolveTheme(mode: ThemeMode | string): ResolvedTheme {\n if (mode === 'light' || mode === 'dark') return mode\n return getSystemTheme()\n}\n\nfunction readStoredMode(fallback: ThemeMode): ThemeMode {\n try {\n const stored = localStorage.getItem(STORAGE_KEY)\n if (stored === 'light' || stored === 'dark' || stored === 'system') return stored\n } catch {}\n return fallback\n}\n\n/** Props for the {@link AcheryProvider} component. */\nexport interface AcheryProviderProps {\n children: ReactNode\n /**\n * Initial colour-mode preference. Overridden by any persisted localStorage\n * value from a previous session.\n * @default 'system'\n */\n defaultTheme?: ThemeMode\n /**\n * Initial accent colour.\n * @default 'terracotta'\n */\n defaultAccent?: AccentColor\n /**\n * How loudly the accent runs across the working UI.\n * - `'underline'` — accent on links, focus, and active-tab underline only\n * - `'chrome'` — accent threads the wiring: tabs, ticks, eyebrows, outlines\n * - `'surface'` — one `.signature-surface` panel floods with accent (default for storefront/game products)\n * @default 'chrome'\n */\n defaultDial?: AccentDial\n /**\n * Hero material signature for contained, occasional objects (modals, dialogs, featured cards).\n * - `'none'` — no material; objects use plain paper/ink\n * - `'leather'` — cordovan + gilt\n * - `'wood'` — walnut + pewter\n * - `'copper'` — oxidised copper + patina\n * @default 'none'\n */\n defaultMaterial?: MaterialSignature\n /** className applied to the root `[data-achery-root]` div. */\n className?: string\n /** Inline styles applied to the root `[data-achery-root]` div. */\n style?: React.CSSProperties\n}\n\n/**\n * Root provider for the Achery design system. Must wrap any part of the tree\n * that uses Achery components.\n *\n * Responsibilities:\n * - Injects theme CSS (light, dark, accents, global reset) as side-effect imports\n * - Persists the colour-mode preference in `localStorage` under `'achery-theme-mode'`\n * - Supports `'system'` mode — resolves to light/dark based on `prefers-color-scheme`\n * and updates live when the OS setting changes\n * - Renders a `[data-achery-root][data-theme][data-accent]` div that scopes all\n * CSS custom properties\n * - Mirrors those attributes onto `<html>` so portaled content (Modal, Tooltip,\n * Toast) inherits the same CSS vars outside the root div\n * - Provides {@link ThemeContext} for {@link useTheme}\n *\n * @example\n * ```tsx\n * import { AcheryProvider } from 'achery-ui'\n *\n * export default function App() {\n * return (\n * <AcheryProvider defaultTheme=\"system\" defaultAccent=\"terracotta\">\n * <YourApp />\n * </AcheryProvider>\n * )\n * }\n * ```\n */\nexport function AcheryProvider({\n children,\n defaultTheme = 'system',\n defaultAccent = 'terracotta',\n defaultDial = 'chrome',\n defaultMaterial = 'none',\n className,\n style,\n}: AcheryProviderProps) {\n const [mode, setModeState] = useState<ThemeMode>(() => readStoredMode(defaultTheme))\n const [accent, setAccentState] = useState<AccentColor>(defaultAccent)\n const [dial, setDialState] = useState<AccentDial>(defaultDial)\n const [material, setMaterialState] = useState<MaterialSignature>(defaultMaterial)\n const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>(() => resolveTheme(readStoredMode(defaultTheme)))\n\n // Sync explicit light/dark prop changes (e.g. Storybook toolbar) into state.\n // 'system' is intentionally excluded — it should not override a user's stored preference.\n useEffect(() => {\n setModeState(defaultTheme)\n setResolvedTheme(resolveTheme(defaultTheme))\n }, [defaultTheme])\n\n useEffect(() => { setAccentState(defaultAccent) }, [defaultAccent])\n useEffect(() => { setDialState(defaultDial) }, [defaultDial])\n useEffect(() => { setMaterialState(defaultMaterial) }, [defaultMaterial])\n\n const setTheme = useCallback((next: ThemeMode) => {\n setModeState(next)\n setResolvedTheme(resolveTheme(next))\n try { localStorage.setItem(STORAGE_KEY, next) } catch {}\n }, [])\n\n const toggleTheme = useCallback(() => {\n setTheme(resolvedTheme === 'light' ? 'dark' : 'light')\n }, [resolvedTheme, setTheme])\n\n const setAccent = useCallback((next: AccentColor) => setAccentState(next), [])\n const setDial = useCallback((next: AccentDial) => setDialState(next), [])\n const setMaterial = useCallback((next: MaterialSignature) => setMaterialState(next), [])\n\n // When mode is 'system', subscribe to OS preference changes\n useEffect(() => {\n if (mode !== 'system') return\n const mq = window.matchMedia('(prefers-color-scheme: dark)')\n const handler = (e: MediaQueryListEvent) => {\n setResolvedTheme(e.matches ? 'dark' : 'light')\n }\n mq.addEventListener('change', handler)\n // Sync immediately in case OS changed since mount\n setResolvedTheme(mq.matches ? 'dark' : 'light')\n return () => mq.removeEventListener('change', handler)\n }, [mode])\n\n // Mirror theme attrs onto <html> so portaled content (Modal, Tooltip, Toast)\n // inherits CSS vars even though they render outside [data-achery-root].\n useEffect(() => {\n const html = document.documentElement\n html.dataset['theme'] = resolvedTheme\n html.dataset['accent'] = accent\n html.dataset['dial'] = dial\n if (material !== 'none') html.dataset['material'] = material\n else delete html.dataset['material']\n html.dataset['acheryRoot'] = ''\n return () => {\n delete html.dataset['theme']\n delete html.dataset['accent']\n delete html.dataset['dial']\n delete html.dataset['material']\n delete html.dataset['acheryRoot']\n }\n }, [resolvedTheme, accent, dial, material])\n\n return (\n <ThemeContext.Provider value={{ mode, theme: resolvedTheme, setTheme, toggleTheme, accent, setAccent, dial, setDial, material, setMaterial }}>\n <AppBarSearchProvider>\n <div\n data-achery-root=\"\"\n data-theme={resolvedTheme}\n data-accent={accent}\n data-dial={dial}\n {...(material !== 'none' ? { 'data-material': material } : {})}\n className={className}\n style={style}\n >\n {children}\n </div>\n </AppBarSearchProvider>\n </ThemeContext.Provider>\n )\n}\n\n/**\n * Hook that returns the current theme state and setters from the nearest\n * {@link AcheryProvider}.\n *\n * @throws If called outside an `<AcheryProvider>`.\n *\n * @example\n * ```tsx\n * function ThemeToggle() {\n * const { mode, setTheme } = useTheme()\n * return (\n * <div style={{ display: 'flex', gap: 8 }}>\n * {(['light', 'system', 'dark'] as const).map(m => (\n * <Button key={m} variant={mode === m ? 'accent' : 'secondary'} onClick={() => setTheme(m)}>\n * {m}\n * </Button>\n * ))}\n * </div>\n * )\n * }\n * ```\n */\nexport function useTheme(): ThemeContextValue {\n const ctx = useContext(ThemeContext)\n if (!ctx) throw new Error('useTheme must be used within <AcheryProvider>')\n return ctx\n}\n\n/** Raw React context — use {@link useTheme} in components instead. */\nexport { ThemeContext }\n","export var vars = {color:{bg:'var(--color-bg__1acibxb0)',bg2:'var(--color-bg2__1acibxb1)',bgSunken:'var(--color-bgSunken__1acibxb2)',surface:'var(--color-surface__1acibxb3)',surface2:'var(--color-surface2__1acibxb4)',fg:'var(--color-fg__1acibxb5)',fg2:'var(--color-fg2__1acibxb6)',fg3:'var(--color-fg3__1acibxb7)',fgMute:'var(--color-fgMute__1acibxb8)',border:'var(--color-border__1acibxb9)',border2:'var(--color-border2__1acibxba)',borderMute:'var(--color-borderMute__1acibxbb)',rule:'var(--color-rule__1acibxbc)',accent:'var(--color-accent__1acibxbd)',accentFg:'var(--color-accentFg__1acibxbe)',accent2:'var(--color-accent2__1acibxbf)',accent3:'var(--color-accent3__1acibxbg)',success:'var(--color-success__1acibxbh)',warn:'var(--color-warn__1acibxbi)',danger:'var(--color-danger__1acibxbj)',info:'var(--color-info__1acibxbk)',selectionBg:'var(--color-selectionBg__1acibxbl)',selectionFg:'var(--color-selectionFg__1acibxbm)',material:'var(--color-material__1acibxbn)',materialFg:'var(--color-materialFg__1acibxbo)',materialBtnFg:'var(--color-materialBtnFg__1acibxbp)',metal:'var(--color-metal__1acibxbq)',metalDeep:'var(--color-metalDeep__1acibxbr)'},font:{display:'var(--font-display__1acibxbs)',body:'var(--font-body__1acibxbt)',mono:'var(--font-mono__1acibxbu)'},space:{sp1:'var(--space-sp1__1acibxbv)',sp2:'var(--space-sp2__1acibxbw)',sp3:'var(--space-sp3__1acibxbx)',sp4:'var(--space-sp4__1acibxby)',sp5:'var(--space-sp5__1acibxbz)',sp6:'var(--space-sp6__1acibxb10)',sp7:'var(--space-sp7__1acibxb11)',sp8:'var(--space-sp8__1acibxb12)',sp9:'var(--space-sp9__1acibxb13)',sp10:'var(--space-sp10__1acibxb14)',sp11:'var(--space-sp11__1acibxb15)',sp12:'var(--space-sp12__1acibxb16)'},radius:{none:'var(--radius-none__1acibxb17)',hairline:'var(--radius-hairline__1acibxb18)',sm:'var(--radius-sm__1acibxb19)',pill:'var(--radius-pill__1acibxb1a)'},shadow:{stamp:'var(--shadow-stamp__1acibxb1b)',stampLg:'var(--shadow-stampLg__1acibxb1c)',press:'var(--shadow-press__1acibxb1d)',soft:'var(--shadow-soft__1acibxb1e)'},duration:{fast:'var(--duration-fast__1acibxb1f)',base:'var(--duration-base__1acibxb1g)',slow:'var(--duration-slow__1acibxb1h)'},ease:{out:'var(--ease-out__1acibxb1i)',snap:'var(--ease-snap__1acibxb1j)'}};","import 'src/glyphs/Glyph.css.ts.vanilla.css?source=LkdseXBoX2dseXBoX19rYnZ2NDIwIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGZsZXgtc2hyaW5rOiAwOwp9';\nexport var glyph = 'Glyph_glyph__kbvv420';","import { lazy, Suspense } from 'react'\nimport type { SVGProps } from 'react'\nimport type { GlyphName } from '../types/components'\nimport * as styles from './Glyph.css'\n\nconst toComponentName = (name: GlyphName): string =>\n name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join('')\n\n// Cache lazy components so re-renders don't create new lazy() calls\nconst lazyCache = new Map<string, React.LazyExoticComponent<React.FC<SVGProps<SVGSVGElement>>>>()\n\nconst getLazy = (name: GlyphName) => {\n const compName = toComponentName(name)\n if (!lazyCache.has(compName)) {\n lazyCache.set(\n compName,\n lazy(() =>\n import(`./svg-components/${compName}.tsx`).then(m => ({ default: m.default }))\n ),\n )\n }\n return lazyCache.get(compName)!\n}\n\n/** Props for the {@link Glyph} component. */\nexport interface GlyphProps extends SVGProps<SVGSVGElement> {\n /**\n * Name of the glyph to render. One of the 394 icons + 3 brand marks in the Achery glyph set.\n * Use `searchGlyphs()` to find glyphs by keyword, or browse categories via `GlyphCategories`.\n *\n * **Brand:** `mark`, `wordmark`, `sigil`\n */\n name: GlyphName\n /**\n * Size in pixels — applied to both `width` and `height`.\n * @default 16\n */\n size?: number\n /**\n * Accessible label for the glyph. When provided, sets `aria-label` and\n * removes `aria-hidden`. Omit for decorative use.\n */\n title?: string\n className?: string\n}\n\nconst Placeholder = ({ size, className, style }: { size: number; className?: string | undefined; style?: React.CSSProperties | undefined }) => (\n <span\n className={[styles.glyph, className].filter(Boolean).join(' ')}\n style={{ width: size, height: size, display: 'inline-block', ...style }}\n aria-hidden=\"true\"\n />\n)\n\n/**\n * Renders a single SVG glyph from the Achery icon set. Each glyph is loaded\n * lazily via dynamic import — only the requested glyph's module is fetched,\n * keeping the initial bundle small. Inherits `currentColor`.\n *\n * For decorative use, omit `title` (the glyph is `aria-hidden` by default).\n * For semantic use (icon-only button labels etc.), provide a `title`.\n */\nexport const Glyph = ({ name, size = 16, title, className, style, ...props }: GlyphProps) => {\n const SvgComponent = getLazy(name)\n\n return (\n <Suspense fallback={<Placeholder size={size} className={className} style={style} />}>\n <SvgComponent\n width={size}\n height={size}\n aria-hidden={title ? undefined : true}\n aria-label={title}\n className={[styles.glyph, className].filter(Boolean).join(' ')}\n style={style}\n {...props}\n />\n </Suspense>\n )\n}\n","import type { GlyphName } from '../types/components'\n\nexport const GlyphCategories: Record<string, readonly GlyphName[]> = {\n 'Original & alchemical': [\n 'mercury', 'sulfur', 'salt', 'sun', 'moon', 'star', 'sigil', 'flask', 'key',\n 'leaf', 'sprig', 'fern', 'compass', 'eye', 'hand', 'feather', 'book', 'scroll',\n 'asterism', 'flourish',\n ],\n 'Geometric': [\n 'triangle', 'triangle-down', 'square', 'circle', 'hex', 'cross', 'tick', 'plus', 'minus',\n ],\n 'Navigation': [\n 'arrow-up', 'arrow-right', 'arrow-left', 'arrow-down', 'arrow-up-right', 'arrow-down-right',\n 'chevron-left', 'chevron-right', 'chevron-up', 'chevron-down', 'chevrons-left', 'chevrons-right',\n 'caret-down', 'caret-up', 'caret-left', 'caret-right',\n 'menu', 'close', 'expand', 'collapse', 'external-link',\n 'grid', 'list', 'columns', 'sidebar', 'more', 'more-vertical',\n 'filter', 'sort', 'refresh', 'undo', 'redo', 'home', 'maximize', 'drag', 'search',\n ],\n 'Controls & status': [\n 'edit', 'pencil', 'eraser', 'trash', 'save', 'copy', 'clipboard',\n 'download', 'upload', 'share', 'link', 'unlink', 'lock', 'unlock',\n 'pin', 'thumbtack', 'bookmark', 'flag', 'tag',\n 'check-circle', 'x-circle', 'plus-circle', 'minus-circle',\n 'info', 'help', 'warning', 'ban',\n 'sliders', 'toggle-on', 'toggle-off', 'eye-off', 'settings',\n ],\n 'Communication': [\n 'mail', 'mail-open', 'send', 'chat', 'chat-dots', 'comments',\n 'phone', 'at-sign', 'inbox', 'megaphone', 'rss', 'bell', 'bell-off', 'paperclip',\n ],\n 'Media & devices': [\n 'play', 'pause', 'stop', 'skip-forward', 'skip-back', 'play-circle',\n 'volume', 'volume-off', 'mic', 'mic-off',\n 'camera', 'video', 'image', 'music-note', 'headphones', 'film',\n 'monitor', 'smartphone', 'laptop', 'keyboard', 'printer',\n 'battery', 'wifi', 'plug', 'cpu', 'database', 'server', 'hard-drive', 'tv', 'router',\n ],\n 'Time': [\n 'clock', 'calendar', 'calendar-check', 'timer', 'hourglass', 'history', 'alarm', 'sunrise',\n ],\n 'Weather & nature': [\n 'cloud', 'cloud-rain', 'cloud-sun', 'snowflake', 'bolt', 'wind', 'droplet', 'waves', 'fire',\n 'mountain', 'tree', 'flower', 'sprout', 'umbrella', 'paw', 'bug', 'bird', 'fish',\n 'acorn', 'rainbow', 'palm-tree', 'cactus', 'mushroom', 'campfire', 'snowman',\n ],\n 'Transport & travel': [\n 'car', 'bus', 'train', 'plane', 'ship', 'bike', 'scooter', 'truck', 'taxi',\n 'fuel', 'parking', 'traffic-light', 'luggage', 'passport', 'anchor', 'road',\n ],\n 'Tools & workshop': [\n 'hammer', 'wrench', 'screwdriver', 'scissors', 'ruler', 'brush', 'palette',\n 'gear', 'anvil', 'axe', 'pickaxe', 'shovel', 'saw', 'drafting-compass',\n 'magnet', 'needle', 'toolbox', 'nut-bolt', 'gavel',\n ],\n 'Shopping & apparel': [\n 'shirt', 'dress', 'shoe', 'hat', 'watch', 'ring', 'glasses', 'sunglasses',\n 'perfume', 'lipstick', 'hanger', 'basket', 'barcode', 'gem', 'backpack',\n ],\n 'Commerce & data': [\n 'cart', 'bag', 'wallet', 'credit-card', 'coin', 'receipt', 'gift',\n 'chart-bar', 'chart-line', 'chart-pie', 'trending-up', 'trending-down',\n 'scale', 'target', 'percent', 'box', 'archive',\n ],\n 'Finance & money': [\n 'bank', 'piggy-bank', 'dollar', 'euro', 'pound', 'yen', 'bitcoin', 'atm',\n 'vault', 'calculator', 'money-bill', 'coins', 'hand-coin', 'exchange',\n ],\n 'Home & utilities': [\n 'couch', 'bed', 'lamp', 'door', 'broom', 'washer', 'thermometer', 'thermostat',\n 'fire-extinguisher', 'key-round',\n ],\n 'Health & fitness': [\n 'dumbbell', 'heart-pulse', 'pill', 'syringe', 'stethoscope', 'tooth', 'bandage',\n 'first-aid', 'lotus', 'running', 'weight-scale', 'wheelchair', 'mask', 'brain',\n ],\n 'Food & drink': [\n 'coffee', 'cup', 'wine', 'bottle', 'cocktail', 'cake', 'restaurant', 'utensils',\n 'apple', 'ice-cream', 'bread', 'burger', 'pizza', 'noodles', 'sushi', 'taco',\n 'salad', 'egg', 'donut', 'cookie', 'candy', 'popcorn', 'beer', 'soda', 'milk', 'croissant',\n ],\n 'People & places': [\n 'person', 'people', 'person-add', 'user-circle', 'building', 'store',\n 'map', 'navigation', 'globe', 'school', 'briefcase', 'factory', 'hospital', 'tent', 'ticket',\n ],\n 'Family & pets': [\n 'dog', 'cat', 'bone', 'stroller', 'baby-bottle', 'teddy', 'blocks',\n ],\n 'Leisure': [\n 'gamepad', 'dice', 'theater-masks', 'guitar', 'piano', 'chess', 'clapperboard', 'balloon',\n ],\n 'Alchemical & esoteric': [\n 'venus', 'mars', 'element-fire', 'element-water', 'element-air', 'element-earth',\n 'quintessence', 'ankh', 'crystal', 'candle', 'mortar-pestle', 'planet', 'comet',\n 'skull', 'potion', 'scales', 'hexagram',\n ],\n 'Objects & misc': [\n 'heart', 'heart-filled', 'star-filled', 'thumbs-up', 'thumbs-down', 'award', 'trophy',\n 'rocket', 'crown', 'shield', 'shield-check', 'lightbulb', 'puzzle', 'layers',\n 'folder', 'folder-open', 'file', 'file-plus', 'note', 'shield-key',\n 'crosshair', 'qr', 'fingerprint', 'fish-hook',\n ],\n 'Sigils': [\n 'sigil-blade', 'sigil-cardinal', 'sigil-eye', 'sigil-feather', 'sigil-flame', 'sigil-flask',\n 'sigil-heptagram', 'sigil-hexnested', 'sigil-key', 'sigil-leaf', 'sigil-moon', 'sigil-octagram',\n 'sigil-pentagram', 'sigil-solomon', 'sigil-spiralsquare', 'sigil-triquetra', 'sigil-vesica', 'sigil-wheel',\n ],\n}\n\nexport type GlyphCategory = keyof typeof GlyphCategories\n\nexport const GlyphAliases: Partial<Record<GlyphName, readonly string[]>> = {\n 'mercury': ['quicksilver', 'hydrargyrum', 'planet', 'metal', 'element'],\n 'sulfur': ['brimstone', 'alchemy', 'element', 'sulphur'],\n 'salt': ['alchemy', 'element', 'mineral'],\n 'sun': ['solar', 'day', 'daylight', 'light', 'sunny', 'gold'],\n 'moon': ['lunar', 'night', 'crescent', 'silver', 'phase'],\n 'star': ['favorite', 'favourite', 'rating', 'night', 'sparkle', 'asterisk'],\n 'sigil': ['seal', 'rune', 'mark', 'symbol', 'glyph', 'occult'],\n 'flask': ['lab', 'laboratory', 'potion', 'chemistry', 'science', 'beaker', 'alchemy'],\n 'key': ['unlock', 'password', 'access', 'login', 'secret'],\n 'leaf': ['nature', 'plant', 'foliage', 'eco', 'autumn', 'herb'],\n 'sprig': ['herb', 'plant', 'twig', 'botanical', 'garnish'],\n 'fern': ['plant', 'frond', 'botanical', 'forest'],\n 'compass': ['navigate', 'direction', 'explore', 'orient', 'map'],\n 'eye': ['view', 'see', 'watch', 'visible', 'look', 'vision', 'preview'],\n 'hand': ['palm', 'wave', 'touch', 'gesture'],\n 'feather': ['quill', 'write', 'light', 'bird', 'plume'],\n 'book': ['read', 'library', 'journal', 'notebook', 'manual', 'docs', 'guide'],\n 'scroll': ['document', 'parchment', 'manuscript', 'certificate', 'deed'],\n 'asterism': ['divider', 'ornament', 'marginalia', 'dots', 'three'],\n 'flourish': ['divider', 'ornament', 'marginalia', 'decoration'],\n 'triangle': ['up', 'play', 'warning', 'delta', 'shape'],\n 'triangle-down': ['down', 'caret', 'delta', 'shape'],\n 'square': ['stop', 'box', 'shape', 'checkbox'],\n 'circle': ['dot', 'round', 'shape', 'ring'],\n 'hex': ['hexagon', 'shape', 'honeycomb'],\n 'cross': ['x', 'close', 'multiply', 'plus'],\n 'tick': ['check', 'done', 'yes', 'correct', 'confirm', 'ok'],\n 'plus': ['add', 'new', 'create', 'more', 'increment'],\n 'minus': ['subtract', 'remove', 'decrement', 'less', 'dash'],\n 'arrow-up': ['north', 'up', 'top', 'increase'],\n 'arrow-right': ['next', 'forward', 'east', 'go'],\n 'arrow-left': ['back', 'previous', 'prev', 'west', 'return'],\n 'arrow-down': ['south', 'down', 'bottom', 'decrease'],\n 'arrow-up-right': ['northeast', 'external', 'outbound', 'diagonal'],\n 'arrow-down-right': ['southeast', 'inbound', 'diagonal'],\n 'chevron-left': ['back', 'previous', 'prev', 'collapse'],\n 'chevron-right': ['next', 'forward', 'expand', 'more'],\n 'chevron-up': ['collapse', 'up', 'less'],\n 'chevron-down': ['expand', 'down', 'dropdown', 'more'],\n 'chevrons-left': ['first', 'rewind', 'skip', 'start'],\n 'chevrons-right': ['last', 'fast', 'skip', 'end'],\n 'caret-down': ['dropdown', 'expand', 'select', 'triangle'],\n 'caret-up': ['collapse', 'triangle'],\n 'caret-left': ['previous', 'triangle'],\n 'caret-right': ['next', 'play', 'triangle'],\n 'menu': ['hamburger', 'nav', 'list', 'bars', 'options'],\n 'close': ['x', 'cancel', 'dismiss', 'remove', 'exit'],\n 'expand': ['fullscreen', 'enlarge', 'grow', 'maximize'],\n 'collapse': ['minimize', 'shrink', 'reduce'],\n 'external-link': ['open', 'outbound', 'new tab', 'launch', 'visit'],\n 'grid': ['layout', 'tiles', 'gallery', 'apps', 'dashboard'],\n 'list': ['rows', 'lines', 'agenda', 'bullets', 'menu'],\n 'columns': ['layout', 'split', 'board', 'kanban'],\n 'sidebar': ['panel', 'drawer', 'layout', 'nav'],\n 'more': ['ellipsis', 'options', 'overflow', 'menu', 'dots'],\n 'more-vertical': ['ellipsis', 'options', 'overflow', 'kebab', 'dots'],\n 'filter': ['funnel', 'refine', 'sort', 'sift'],\n 'sort': ['order', 'arrange', 'rank', 'sequence'],\n 'refresh': ['reload', 'sync', 'update', 'renew', 'retry'],\n 'undo': ['back', 'revert', 'history'],\n 'redo': ['forward', 'repeat', 'again'],\n 'home': ['house', 'main', 'start', 'dashboard'],\n 'maximize': ['fullscreen', 'expand', 'enlarge'],\n 'drag': ['move', 'reorder', 'handle', 'grip', 'dots'],\n 'search': ['find', 'magnifier', 'lookup', 'zoom', 'explore', 'look'],\n 'edit': ['pencil', 'write', 'modify', 'change', 'compose'],\n 'pencil': ['edit', 'write', 'draw', 'compose'],\n 'eraser': ['delete', 'remove', 'rubber', 'clear'],\n 'trash': ['delete', 'bin', 'remove', 'garbage', 'discard'],\n 'save': ['disk', 'floppy', 'store', 'keep'],\n 'copy': ['duplicate', 'clone', 'clipboard'],\n 'clipboard': ['paste', 'copy', 'board', 'tasks'],\n 'download': ['save', 'import', 'get', 'arrow'],\n 'upload': ['export', 'send', 'arrow', 'publish'],\n 'share': ['network', 'send', 'social', 'distribute'],\n 'link': ['chain', 'url', 'connect', 'attach', 'hyperlink'],\n 'unlink': ['break', 'disconnect', 'detach'],\n 'lock': ['secure', 'private', 'locked', 'password', 'closed'],\n 'unlock': ['open', 'access', 'unsecure'],\n 'pin': ['location', 'marker', 'place', 'map', 'tack'],\n 'thumbtack': ['pin', 'attach', 'board', 'tack'],\n 'bookmark': ['save', 'favorite', 'favourite', 'ribbon', 'later'],\n 'flag': ['report', 'milestone', 'country', 'mark'],\n 'tag': ['label', 'price', 'category', 'badge'],\n 'check-circle': ['done', 'success', 'complete', 'verified', 'ok', 'approve'],\n 'x-circle': ['error', 'cancel', 'fail', 'remove', 'close'],\n 'plus-circle': ['add', 'new', 'create', 'include'],\n 'minus-circle': ['remove', 'subtract', 'exclude'],\n 'info': ['information', 'about', 'details', 'help', 'tooltip'],\n 'help': ['question', 'support', 'faq', 'ask'],\n 'warning': ['caution', 'alert', 'danger', 'attention'],\n 'ban': ['block', 'forbidden', 'no', 'prohibited', 'denied'],\n 'sliders': ['settings', 'controls', 'adjust', 'filters', 'mixer', 'tune'],\n 'toggle-on': ['switch', 'enabled', 'active', 'on'],\n 'toggle-off': ['switch', 'disabled', 'inactive', 'off'],\n 'eye-off': ['hide', 'hidden', 'invisible', 'private', 'conceal'],\n 'settings': ['gear', 'cog', 'preferences', 'options', 'config'],\n 'mail': ['email', 'envelope', 'message', 'inbox', 'letter', 'contact'],\n 'mail-open': ['email', 'read', 'opened', 'envelope'],\n 'send': ['paper plane', 'submit', 'message', 'deliver'],\n 'chat': ['message', 'talk', 'bubble', 'comment', 'sms'],\n 'chat-dots': ['message', 'typing', 'talk', 'bubble'],\n 'comments': ['discussion', 'replies', 'thread', 'talk'],\n 'phone': ['call', 'telephone', 'contact', 'mobile', 'ring'],\n 'at-sign': ['email', 'mention', 'handle', 'username'],\n 'inbox': ['mail', 'messages', 'receive', 'tray'],\n 'megaphone': ['announce', 'broadcast', 'marketing', 'promote', 'loud', 'bullhorn'],\n 'rss': ['feed', 'subscribe', 'news', 'syndicate'],\n 'bell': ['notification', 'alert', 'reminder', 'ring', 'alarm'],\n 'bell-off': ['mute', 'silent', 'do not disturb', 'notification'],\n 'paperclip': ['attach', 'attachment', 'clip', 'file'],\n 'play': ['start', 'video', 'media', 'run', 'begin'],\n 'pause': ['stop', 'hold', 'break', 'media'],\n 'stop': ['end', 'square', 'halt', 'media'],\n 'skip-forward': ['next', 'fast', 'forward', 'media'],\n 'skip-back': ['previous', 'rewind', 'back', 'media'],\n 'play-circle': ['start', 'video', 'watch', 'media'],\n 'volume': ['sound', 'speaker', 'audio', 'loud'],\n 'volume-off': ['mute', 'silent', 'sound', 'quiet'],\n 'mic': ['microphone', 'record', 'audio', 'voice', 'speak'],\n 'mic-off': ['mute', 'microphone', 'silent', 'muted'],\n 'camera': ['photo', 'picture', 'capture', 'snapshot'],\n 'video': ['camera', 'film', 'record', 'movie', 'recording'],\n 'image': ['photo', 'picture', 'gallery', 'media', 'pic'],\n 'music-note': ['song', 'audio', 'melody', 'tune', 'sound'],\n 'headphones': ['audio', 'music', 'sound', 'listen', 'headset'],\n 'film': ['movie', 'video', 'cinema', 'reel', 'media'],\n 'monitor': ['screen', 'display', 'desktop', 'computer', 'tv'],\n 'smartphone': ['phone', 'mobile', 'cell', 'device'],\n 'laptop': ['computer', 'notebook', 'device', 'macbook'],\n 'keyboard': ['type', 'keys', 'input', 'typing'],\n 'printer': ['print', 'document', 'paper', 'office'],\n 'battery': ['power', 'charge', 'energy', 'level'],\n 'wifi': ['wireless', 'internet', 'network', 'signal', 'connection'],\n 'plug': ['power', 'charge', 'connect', 'outlet', 'electric'],\n 'cpu': ['processor', 'chip', 'compute', 'hardware'],\n 'database': ['storage', 'data', 'server', 'db', 'records'],\n 'server': ['hosting', 'rack', 'data', 'backend', 'cloud'],\n 'hard-drive': ['storage', 'disk', 'hdd', 'data', 'memory'],\n 'tv': ['television', 'screen', 'monitor', 'watch', 'display'],\n 'router': ['wifi', 'network', 'modem', 'internet', 'wireless'],\n 'clock': ['time', 'schedule', 'watch', 'hour', 'wait'],\n 'calendar': ['date', 'schedule', 'event', 'month', 'planner'],\n 'calendar-check': ['scheduled', 'appointment', 'booked', 'done', 'event'],\n 'timer': ['stopwatch', 'countdown', 'time', 'duration'],\n 'hourglass': ['time', 'wait', 'loading', 'sand', 'timer'],\n 'history': ['recent', 'past', 'log', 'undo', 'clock', 'activity'],\n 'alarm': ['clock', 'wake', 'reminder', 'time'],\n 'sunrise': ['morning', 'dawn', 'sun', 'sunset', 'horizon'],\n 'cloud': ['weather', 'cloudy', 'sky', 'overcast', 'storage'],\n 'cloud-rain': ['weather', 'rainy', 'storm', 'precipitation', 'wet'],\n 'cloud-sun': ['weather', 'partly cloudy', 'forecast', 'day'],\n 'snowflake': ['snow', 'winter', 'cold', 'freeze', 'ice', 'frost'],\n 'bolt': ['lightning', 'thunder', 'flash', 'electric', 'power', 'storm', 'energy'],\n 'wind': ['breeze', 'air', 'windy', 'weather', 'gust'],\n 'droplet': ['water', 'drop', 'liquid', 'rain', 'moisture', 'wet'],\n 'waves': ['water', 'sea', 'ocean', 'tide', 'ripple'],\n 'fire': ['flame', 'heat', 'hot', 'burn', 'campfire', 'warm', 'spicy'],\n 'mountain': ['hill', 'peak', 'summit', 'outdoor', 'hike', 'nature'],\n 'tree': ['nature', 'forest', 'plant', 'wood', 'park', 'pine'],\n 'flower': ['bloom', 'blossom', 'plant', 'garden', 'floral', 'nature'],\n 'sprout': ['seedling', 'plant', 'grow', 'eco', 'germinate', 'garden'],\n 'umbrella': ['rain', 'weather', 'parasol', 'protection', 'insurance'],\n 'paw': ['pet', 'animal', 'dog', 'cat', 'print', 'track'],\n 'bug': ['insect', 'beetle', 'error', 'pest', 'debug'],\n 'bird': ['animal', 'tweet', 'sparrow', 'fly', 'nature'],\n 'fish': ['animal', 'sea', 'seafood', 'aquarium', 'swim'],\n 'acorn': ['nut', 'oak', 'autumn', 'seed', 'fall', 'squirrel'],\n 'rainbow': ['weather', 'pride', 'colors', 'arc', 'spectrum'],\n 'palm-tree': ['tropical', 'beach', 'vacation', 'holiday', 'coconut', 'island'],\n 'cactus': ['desert', 'plant', 'succulent', 'southwest', 'spike'],\n 'mushroom': ['fungus', 'toadstool', 'forage', 'plant', 'fungi'],\n 'campfire': ['fire', 'camp', 'bonfire', 'outdoor', 'flame'],\n 'snowman': ['winter', 'snow', 'christmas', 'cold', 'frosty'],\n 'car': ['auto', 'vehicle', 'drive', 'automobile', 'sedan', 'transport'],\n 'bus': ['transit', 'coach', 'transport', 'public', 'shuttle'],\n 'train': ['rail', 'metro', 'subway', 'transit', 'locomotive', 'transport'],\n 'plane': ['airplane', 'flight', 'fly', 'airport', 'travel', 'aircraft', 'aviation'],\n 'ship': ['boat', 'sail', 'cruise', 'ferry', 'vessel', 'sea', 'maritime'],\n 'bike': ['bicycle', 'cycle', 'cycling', 'ride', 'pedal'],\n 'scooter': ['moped', 'vespa', 'ride', 'kick'],\n 'truck': ['lorry', 'delivery', 'freight', 'cargo', 'shipping', 'haul'],\n 'taxi': ['cab', 'uber', 'ride', 'hail', 'transport'],\n 'fuel': ['gas', 'petrol', 'station', 'gasoline', 'pump', 'energy'],\n 'parking': ['park', 'garage', 'lot', 'car'],\n 'traffic-light': ['signal', 'stoplight', 'traffic', 'intersection'],\n 'luggage': ['suitcase', 'baggage', 'travel', 'trip', 'bag'],\n 'passport': ['travel', 'id', 'visa', 'identity', 'document', 'border'],\n 'anchor': ['boat', 'ship', 'nautical', 'marine', 'sea', 'harbor'],\n 'road': ['street', 'highway', 'route', 'path', 'drive', 'journey'],\n 'hammer': ['tool', 'build', 'construct', 'nail', 'repair', 'hardware'],\n 'wrench': ['tool', 'spanner', 'fix', 'repair', 'mechanic', 'settings'],\n 'screwdriver': ['tool', 'screw', 'fix', 'repair', 'assemble'],\n 'scissors': ['cut', 'trim', 'snip', 'shears', 'clip'],\n 'ruler': ['measure', 'scale', 'length', 'straight', 'dimensions'],\n 'brush': ['paint', 'art', 'stroke', 'design', 'clean'],\n 'palette': ['color', 'paint', 'art', 'swatch', 'design', 'theme'],\n 'gear': ['settings', 'cog', 'mechanism', 'config', 'machine'],\n 'anvil': ['forge', 'blacksmith', 'metal', 'smith', 'workshop'],\n 'axe': ['chop', 'wood', 'hatchet', 'lumber', 'cut'],\n 'pickaxe': ['mine', 'dig', 'mining', 'pick', 'quarry'],\n 'shovel': ['dig', 'spade', 'garden', 'excavate', 'dirt'],\n 'saw': ['cut', 'wood', 'carpentry', 'blade', 'lumber'],\n 'drafting-compass': ['draw', 'geometry', 'circle', 'technical', 'architect'],\n 'magnet': ['magnetic', 'attract', 'field', 'physics', 'pull'],\n 'needle': ['sew', 'thread', 'stitch', 'sharp', 'tailor'],\n 'toolbox': ['tools', 'kit', 'repair', 'hardware', 'equipment'],\n 'nut-bolt': ['hardware', 'fastener', 'screw', 'mechanic', 'assembly'],\n 'gavel': ['judge', 'law', 'court', 'auction', 'legal', 'justice', 'hammer'],\n 'shirt': ['clothes', 'apparel', 'tshirt', 'top', 'tee', 'fashion', 'clothing'],\n 'dress': ['clothes', 'apparel', 'fashion', 'gown', 'women', 'clothing'],\n 'shoe': ['footwear', 'sneaker', 'boot', 'fashion', 'clothing'],\n 'hat': ['cap', 'clothing', 'fashion', 'headwear', 'accessory'],\n 'watch': ['time', 'clock', 'wrist', 'accessory', 'wearable'],\n 'ring': ['jewelry', 'wedding', 'engagement', 'band', 'diamond'],\n 'glasses': ['spectacles', 'eyewear', 'vision', 'reading', 'optical'],\n 'sunglasses': ['shades', 'eyewear', 'sun', 'summer', 'cool'],\n 'perfume': ['fragrance', 'cologne', 'scent', 'beauty', 'cosmetics'],\n 'lipstick': ['makeup', 'cosmetics', 'beauty', 'lips'],\n 'hanger': ['clothes', 'closet', 'wardrobe', 'hang', 'laundry'],\n 'basket': ['shopping', 'grocery', 'cart', 'market', 'buy'],\n 'barcode': ['scan', 'product', 'sku', 'price', 'upc'],\n 'gem': ['jewel', 'diamond', 'gemstone', 'precious', 'crystal', 'luxury'],\n 'backpack': ['bag', 'rucksack', 'school', 'travel', 'hike'],\n 'cart': ['shopping', 'buy', 'checkout', 'basket', 'ecommerce', 'trolley'],\n 'bag': ['shopping', 'purchase', 'tote', 'buy', 'handbag'],\n 'wallet': ['money', 'payment', 'cash', 'billfold', 'finance'],\n 'credit-card': ['payment', 'debit', 'card', 'pay', 'bank', 'checkout'],\n 'coin': ['money', 'cash', 'currency', 'token', 'payment'],\n 'receipt': ['invoice', 'bill', 'purchase', 'transaction', 'order'],\n 'gift': ['present', 'reward', 'box', 'birthday', 'bonus'],\n 'chart-bar': ['graph', 'analytics', 'statistics', 'data', 'bars', 'report'],\n 'chart-line': ['graph', 'analytics', 'trend', 'data', 'line', 'report'],\n 'chart-pie': ['graph', 'analytics', 'statistics', 'data', 'pie', 'breakdown'],\n 'trending-up': ['growth', 'increase', 'rise', 'up', 'gain', 'profit'],\n 'trending-down': ['decline', 'decrease', 'drop', 'down', 'loss', 'fall'],\n 'scale': ['balance', 'justice', 'weigh', 'compare', 'law'],\n 'target': ['goal', 'aim', 'bullseye', 'objective', 'focus', 'accuracy'],\n 'percent': ['discount', 'sale', 'rate', 'percentage', 'off'],\n 'box': ['package', 'parcel', 'shipping', 'cube', 'product', '3d'],\n 'archive': ['store', 'box', 'backup', 'old', 'file', 'storage'],\n 'bank': ['finance', 'money', 'institution', 'building', 'account', 'savings'],\n 'piggy-bank': ['savings', 'save', 'money', 'deposit', 'budget', 'funds'],\n 'dollar': ['money', 'usd', 'currency', 'cash', 'price', 'payment'],\n 'euro': ['money', 'eur', 'currency', 'europe', 'cash'],\n 'pound': ['money', 'gbp', 'currency', 'sterling', 'britain', 'cash'],\n 'yen': ['money', 'jpy', 'currency', 'japan', 'yuan', 'cash'],\n 'bitcoin': ['crypto', 'btc', 'currency', 'blockchain', 'digital', 'money'],\n 'atm': ['cash', 'machine', 'withdraw', 'bank', 'money'],\n 'vault': ['safe', 'secure', 'bank', 'storage', 'money', 'deposit'],\n 'calculator': ['math', 'compute', 'accounting', 'numbers', 'sum'],\n 'money-bill': ['cash', 'dollar', 'note', 'currency', 'payment'],\n 'coins': ['money', 'cash', 'change', 'currency', 'savings', 'stack'],\n 'hand-coin': ['payment', 'give', 'donate', 'tip', 'salary', 'income', 'pay'],\n 'exchange': ['transfer', 'swap', 'convert', 'trade', 'currency'],\n 'couch': ['sofa', 'furniture', 'living room', 'seat', 'lounge'],\n 'bed': ['sleep', 'bedroom', 'furniture', 'rest', 'hotel'],\n 'lamp': ['light', 'desk', 'furniture', 'lighting', 'bulb'],\n 'door': ['entrance', 'exit', 'room', 'open', 'enter'],\n 'broom': ['clean', 'sweep', 'chores', 'housekeeping', 'tidy'],\n 'washer': ['laundry', 'washing machine', 'clean', 'appliance'],\n 'thermometer': ['temperature', 'fever', 'heat', 'weather', 'health'],\n 'thermostat': ['temperature', 'heating', 'climate', 'nest', 'hvac'],\n 'fire-extinguisher': ['safety', 'fire', 'emergency', 'protect'],\n 'key-round': ['unlock', 'password', 'access', 'login', 'key', 'security'],\n 'dumbbell': ['gym', 'workout', 'weights', 'exercise', 'fitness', 'lift', 'muscle'],\n 'heart-pulse': ['health', 'heartbeat', 'cardio', 'medical', 'vitals', 'ecg'],\n 'pill': ['medicine', 'drug', 'pharmacy', 'medication', 'tablet', 'health'],\n 'syringe': ['injection', 'vaccine', 'needle', 'medical', 'shot', 'health'],\n 'stethoscope': ['doctor', 'medical', 'health', 'checkup', 'clinic'],\n 'tooth': ['dental', 'dentist', 'teeth', 'oral', 'health'],\n 'bandage': ['plaster', 'injury', 'first aid', 'wound', 'medical', 'heal'],\n 'first-aid': ['medical', 'emergency', 'kit', 'health', 'help', 'aid'],\n 'lotus': ['yoga', 'meditation', 'zen', 'wellness', 'flower', 'spa', 'calm'],\n 'running': ['run', 'jog', 'exercise', 'fitness', 'marathon', 'sprint', 'cardio'],\n 'weight-scale': ['weigh', 'bathroom scale', 'fitness', 'health', 'measure'],\n 'wheelchair': ['accessible', 'disability', 'accessibility', 'handicap', 'mobility'],\n 'mask': ['face mask', 'medical', 'covid', 'protection', 'health'],\n 'brain': ['mind', 'think', 'memory', 'neuroscience', 'intelligence', 'mental'],\n 'coffee': ['cafe', 'drink', 'espresso', 'latte', 'mug', 'caffeine', 'tea'],\n 'cup': ['drink', 'mug', 'beverage', 'tea', 'glass'],\n 'wine': ['drink', 'alcohol', 'glass', 'bar', 'vineyard', 'merlot'],\n 'bottle': ['drink', 'water', 'container', 'beverage'],\n 'cocktail': ['drink', 'bar', 'alcohol', 'martini', 'mixer', 'party'],\n 'cake': ['dessert', 'birthday', 'bakery', 'sweet', 'celebration', 'pastry'],\n 'restaurant': ['food', 'dining', 'eat', 'fork', 'knife', 'meal', 'cutlery'],\n 'utensils': ['fork', 'spoon', 'cutlery', 'eat', 'dining', 'silverware'],\n 'apple': ['fruit', 'food', 'healthy', 'snack', 'orchard'],\n 'ice-cream': ['dessert', 'sweet', 'cone', 'gelato', 'summer', 'frozen'],\n 'bread': ['bakery', 'loaf', 'food', 'toast', 'carbs'],\n 'burger': ['food', 'fast food', 'hamburger', 'sandwich', 'beef', 'meal'],\n 'pizza': ['food', 'italian', 'slice', 'fast food', 'pepperoni', 'meal'],\n 'noodles': ['food', 'ramen', 'pasta', 'asian', 'soup', 'bowl'],\n 'sushi': ['food', 'japanese', 'seafood', 'roll', 'asian'],\n 'taco': ['food', 'mexican', 'burrito', 'wrap', 'fast food'],\n 'salad': ['food', 'healthy', 'vegetables', 'greens', 'vegan', 'bowl'],\n 'egg': ['food', 'breakfast', 'protein', 'omelette', 'easter'],\n 'donut': ['doughnut', 'dessert', 'sweet', 'pastry', 'bakery', 'snack'],\n 'cookie': ['biscuit', 'dessert', 'sweet', 'snack', 'bakery', 'treat'],\n 'candy': ['sweet', 'sugar', 'treat', 'confectionery', 'dessert'],\n 'popcorn': ['snack', 'cinema', 'movie', 'corn', 'treat'],\n 'beer': ['drink', 'alcohol', 'pub', 'bar', 'pint', 'ale', 'lager'],\n 'soda': ['drink', 'cola', 'pop', 'fizzy', 'soft drink', 'beverage'],\n 'milk': ['drink', 'dairy', 'carton', 'beverage', 'breakfast'],\n 'croissant': ['pastry', 'bakery', 'breakfast', 'french', 'food'],\n 'person': ['user', 'profile', 'account', 'people', 'human', 'individual', 'avatar'],\n 'people': ['users', 'group', 'team', 'community', 'persons', 'crowd'],\n 'person-add': ['add user', 'invite', 'signup', 'register', 'follow', 'new contact'],\n 'user-circle': ['profile', 'account', 'avatar', 'user', 'contact'],\n 'building': ['office', 'company', 'business', 'city', 'apartment', 'tower'],\n 'store': ['shop', 'retail', 'market', 'business', 'storefront', 'merchant'],\n 'map': ['location', 'navigation', 'directions', 'travel', 'geography'],\n 'navigation': ['compass', 'direction', 'gps', 'arrow', 'navigate', 'locate'],\n 'globe': ['world', 'earth', 'international', 'web', 'global', 'language'],\n 'school': ['education', 'university', 'college', 'learn', 'academy', 'student'],\n 'briefcase': ['work', 'business', 'job', 'office', 'portfolio', 'career'],\n 'factory': ['industry', 'manufacturing', 'plant', 'production', 'industrial'],\n 'hospital': ['medical', 'health', 'clinic', 'emergency', 'care'],\n 'tent': ['camp', 'camping', 'outdoor', 'festival', 'shelter'],\n 'ticket': ['event', 'admission', 'pass', 'voucher', 'coupon', 'entry'],\n 'dog': ['pet', 'animal', 'puppy', 'canine', 'hound'],\n 'cat': ['pet', 'animal', 'kitten', 'feline', 'kitty'],\n 'bone': ['dog', 'pet', 'treat', 'skeleton', 'chew'],\n 'stroller': ['baby', 'pram', 'child', 'infant', 'buggy', 'parenting'],\n 'baby-bottle': ['baby', 'infant', 'milk', 'feed', 'child', 'nursery'],\n 'teddy': ['toy', 'bear', 'child', 'plush', 'kids'],\n 'blocks': ['toy', 'kids', 'building', 'child', 'play', 'lego'],\n 'gamepad': ['game', 'controller', 'gaming', 'console', 'play', 'joystick'],\n 'dice': ['game', 'random', 'chance', 'board game', 'luck', 'roll'],\n 'theater-masks': ['drama', 'comedy', 'tragedy', 'acting', 'performance', 'arts'],\n 'guitar': ['music', 'instrument', 'band', 'rock', 'strings'],\n 'piano': ['music', 'instrument', 'keys', 'keyboard', 'classical'],\n 'chess': ['game', 'strategy', 'board game', 'pawn', 'play'],\n 'clapperboard': ['movie', 'film', 'video', 'director', 'production', 'cinema'],\n 'balloon': ['party', 'celebration', 'birthday', 'festive', 'float'],\n 'venus': ['female', 'woman', 'feminine', 'copper', 'planet', 'gender'],\n 'mars': ['male', 'man', 'masculine', 'iron', 'planet', 'gender'],\n 'element-fire': ['alchemy', 'triangle', 'classical element', 'hot'],\n 'element-water': ['alchemy', 'triangle', 'classical element', 'liquid'],\n 'element-air': ['alchemy', 'triangle', 'classical element', 'wind'],\n 'element-earth': ['alchemy', 'triangle', 'classical element', 'ground'],\n 'quintessence': ['aether', 'fifth element', 'spirit', 'essence', 'occult'],\n 'ankh': ['egyptian', 'life', 'cross', 'eternal', 'symbol'],\n 'crystal': ['gem', 'quartz', 'mineral', 'esoteric', 'healing'],\n 'candle': ['flame', 'light', 'wax', 'wick', 'vigil', 'fire'],\n 'mortar-pestle': ['grind', 'apothecary', 'pharmacy', 'herbs', 'potion', 'alchemy'],\n 'planet': ['saturn', 'space', 'astronomy', 'ringed', 'cosmos'],\n 'comet': ['space', 'astronomy', 'meteor', 'shooting star', 'cosmos'],\n 'skull': ['death', 'danger', 'poison', 'bone', 'pirate', 'dead'],\n 'potion': ['flask', 'elixir', 'magic', 'brew', 'alchemy', 'vial'],\n 'scales': ['balance', 'justice', 'libra', 'weigh', 'law', 'fairness'],\n 'hexagram': ['star of david', 'six point', 'occult', 'seal', 'symbol'],\n 'heart': ['love', 'like', 'favorite', 'favourite', 'health', 'romance'],\n 'heart-filled': ['love', 'like', 'favorite', 'favourite', 'liked', 'solid'],\n 'star-filled': ['favorite', 'favourite', 'rating', 'rated', 'solid', 'bookmark'],\n 'thumbs-up': ['like', 'approve', 'good', 'yes', 'upvote', 'positive'],\n 'thumbs-down': ['dislike', 'disapprove', 'bad', 'no', 'downvote', 'negative'],\n 'award': ['medal', 'prize', 'achievement', 'badge', 'winner', 'honor'],\n 'trophy': ['win', 'champion', 'prize', 'award', 'first', 'victory'],\n 'rocket': ['launch', 'startup', 'space', 'boost', 'fast', 'ship'],\n 'crown': ['king', 'queen', 'royal', 'premium', 'vip', 'best'],\n 'shield': ['security', 'protect', 'safety', 'guard', 'defense', 'privacy'],\n 'shield-check': ['secure', 'verified', 'protected', 'safe', 'trusted'],\n 'lightbulb': ['idea', 'tip', 'innovation', 'bright', 'insight', 'hint'],\n 'puzzle': ['piece', 'plugin', 'extension', 'solve', 'jigsaw', 'integration'],\n 'layers': ['stack', 'levels', 'overlap', 'z-index', 'design'],\n 'folder': ['directory', 'files', 'storage', 'organize'],\n 'folder-open': ['directory', 'files', 'open', 'browse'],\n 'file': ['document', 'page', 'paper', 'doc'],\n 'file-plus': ['new document', 'add file', 'create', 'new'],\n 'note': ['memo', 'sticky', 'reminder', 'annotation', 'post-it'],\n 'shield-key': ['security', 'access', 'protected', 'permission', 'vault'],\n 'crosshair': ['target', 'aim', 'precision', 'focus', 'locate'],\n 'qr': ['qr code', 'scan', 'barcode', 'code', 'square'],\n 'fingerprint': ['biometric', 'identity', 'touch id', 'secure', 'scan', 'print'],\n 'fish-hook': ['fishing', 'catch', 'angle', 'bait', 'hook'],\n}\n\n/** Human label: 'chart-bar' → 'Chart Bar'. */\nexport const glyphLabel = (name: GlyphName): string =>\n name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ')\n\n/** Category a glyph belongs to (first match), or undefined. */\nexport const glyphCategory = (name: GlyphName): GlyphCategory | undefined =>\n (Object.keys(GlyphCategories) as GlyphCategory[]).find(c =>\n (GlyphCategories[c] as readonly string[]).includes(name)\n )\n\nexport interface GlyphSearchResult {\n name: GlyphName\n score: number\n}\n\n/**\n * Search glyphs by free text, ranked by relevance (higher = better).\n *\n * Multi-word queries use AND semantics — every token must hit something.\n * Returns matches sorted by score desc, then alphabetically, capped by `limit`.\n */\nexport const searchGlyphs = (\n query: string,\n allNames: readonly GlyphName[],\n limit = Infinity,\n): GlyphSearchResult[] => {\n const q = query.trim().toLowerCase()\n if (!q) return allNames.map(name => ({ name, score: 0 }))\n const tokens = q.split(/\\s+/).filter(Boolean)\n\n const scoreToken = (name: GlyphName, token: string): number => {\n const label = glyphLabel(name).toLowerCase()\n const words = name.split('-')\n const al = (GlyphAliases[name] as string[]) ?? []\n let best = 0\n\n if (name === token || label === token) best = Math.max(best, 100)\n if (name.startsWith(token) || label.startsWith(token)) best = Math.max(best, 70)\n if (words.some(w => w.startsWith(token))) best = Math.max(best, 55)\n if (name.includes(token) || label.includes(token)) best = Math.max(best, 40)\n\n for (let i = 0; i < al.length; i++) {\n const a = al[i]\n if (!a) continue\n const rank = Math.min(i, 9)\n if (a === token) best = Math.max(best, 100 - 2 - rank * 2)\n else if (a.startsWith(token)) best = Math.max(best, 50 - rank * 2)\n else if (a.includes(token)) best = Math.max(best, 30 - rank * 1.5)\n }\n return best\n }\n\n const results: GlyphSearchResult[] = []\n for (const name of allNames) {\n let total = 0\n let missed = false\n for (const token of tokens) {\n const s = scoreToken(name, token)\n if (s === 0) missed = true\n total += s\n }\n if (total > 0 && !(tokens.length > 1 && missed)) {\n results.push({ name, score: total })\n }\n }\n\n results.sort((a, b) => b.score - a.score || a.name.localeCompare(b.name))\n return Number.isFinite(limit) ? results.slice(0, limit) : results\n}\n","import 'src/components/GlyphPicker/GlyphPicker.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8VWTW_jNhC951cQAQqsgWUg2U6acLGHtkC3PRRYtIceisKgyZHERiKJIZXYKfrfC1Em5e_YidGebIrkzJuvx3fzpV7a6qsSj4Azj6osAX9HbmezEicP_jkjf18RIpWzNV8yonStNNCihsWnK0J4rUpNlYfGMSJAe8Duc8ktI08cP1DqLBdAnR3PZjkXar6YP48-Xf1zdbPHb_SZv8XnX63zqlhSYbQH7c-CQ4jlUipdHju2tTVJW4tgoVGaPivpK0YmdzYgrUCVlR_Wc4MSkJH85tYuiDO1kiujwtQGab-f7D6MhksUuVSti_j6Fa24wi436Up-39_h4rFE02rJNhy4FgsuhuOTcFq06AwyYo2KGSuM9rTgjaqX0UL4NDdymW77UTrq1Aswkk_6OIOzTc9Fma7dhmseuXbKK6NZDDGcXN2SLfJukxbc-SG8IlYBuANq2rUt9Xpbsco8AYbmWne5iZSLrnGSXfm62T8k95w6zz18vjYW9PWfl_LxteYCKlPLwd042N6b4l9aP9T2fqc64746J9d2C5I1tkvfD_18RTiTPtSzGu7ic-CaoQ_i6QV1FZfmOY10WHVlauxweh5Ox7mdZn2KGr6gcXin8WPio0hE3S-VCkH0bSxM3Ta623mhSktYMJJnWbfu8lbUHZZKSQl6J7cOOIrqV_Mc0zoNaT3AStvUs0rN3HhvGkbyI0ndaJE--BCGq1DpR0ayA9B-1rZNNb8N4FZJy7Psm8sw6P9Oj_OBpLLRf0ODpvUdQka00ZAaV72ETKa6Lk6qCiuMaN27qWevaWYHJjqDgLZNCzR1_R0Cj5bvgrE4H3TJCG-9iW3JSH6ktTb7Z8uV4B5Kg8ufgHd3o79vg7_1YmXHWbEx2iQ_bahZDd4DBhgBVXaTQxPeNFh4Gh62wmDDSGstoOAODnbDHsY-IViSnSOuDmWCFQqdp6JStVxnG-qN3UcEZff_CyoZLdxvyrQSlQxqC5WkHhpbcw-0J0XHCIIF7j_cfyR5gaMDsixPgTz1oopjqXRitjOiDmi_9zqCfdgE-3YxGd-K8ZbGG29pvERhoSEsR9D-EoQViWKPatvbYkOW7naFV7L7Dtn1kVxcuO0Ub125HZcaQ7jT0Wkk_JrvlbyDGoQH-fnaYwtR4R3Asodk9yLpz_044IH1N-1N7A2N9cvfOi0aA-DHpMTdUIds-32epr3lKNFbGJj1eXiPwnzjMyJq4LhWovmFZ3ucbc52XMfZTm_1aWOZUp-d8w68Ist2crA2Iif0_L-3byzS9w8AAA';\nexport var categoryHeading = 'GlyphPicker_categoryHeading__gr39tw7';\nexport var clearBtn = 'GlyphPicker_clearBtn__gr39twb';\nexport var emptyState = 'GlyphPicker_emptyState__gr39twa';\nexport var glyphBtn = 'GlyphPicker_glyphBtn__gr39tw9';\nexport var glyphGrid = 'GlyphPicker_glyphGrid__gr39tw8';\nexport var popoverContent = 'GlyphPicker_popoverContent__gr39tw3';\nexport var scrollArea = 'GlyphPicker_scrollArea__gr39tw6';\nexport var searchInput = 'GlyphPicker_searchInput__gr39tw5';\nexport var searchRow = 'GlyphPicker_searchRow__gr39tw4';\nexport var trigger = 'GlyphPicker_trigger__gr39tw1';\nexport var triggerPlaceholder = 'GlyphPicker_triggerPlaceholder__gr39tw2';\nexport var triggerWrap = 'GlyphPicker_triggerWrap__gr39tw0';","import { useState, useRef, useEffect, useCallback } from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport type { GlyphName } from '../../types/components'\nimport { Glyph } from '../../glyphs/Glyph'\nimport { GlyphCategories, GlyphAliases, searchGlyphs, glyphLabel } from '../../glyphs/glyphMeta'\nimport * as styles from './GlyphPicker.css'\n\nconst ALL_NAMES = Object.values(GlyphCategories).flat() as GlyphName[]\n\nexport interface GlyphPickerProps {\n /** Currently selected glyph, or undefined for none. */\n value?: GlyphName\n /** Called when a glyph is selected or cleared. */\n onChange?: (name: GlyphName | undefined) => void\n /** Placeholder shown when no glyph is selected. */\n placeholder?: string\n /** Disable the picker. */\n disabled?: boolean\n /** Show a clear button in the trigger when a value is selected. */\n clearable?: boolean\n className?: string\n}\n\nexport const GlyphPicker = ({\n value,\n onChange,\n placeholder = 'Pick a glyph…',\n disabled = false,\n clearable = true,\n className,\n}: GlyphPickerProps) => {\n const [open, setOpen] = useState(false)\n const [query, setQuery] = useState('')\n const inputRef = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if (open) {\n setQuery('')\n setTimeout(() => inputRef.current?.focus(), 50)\n }\n }, [open])\n\n const handleSelect = useCallback((name: GlyphName) => {\n onChange?.(name === value ? undefined : name)\n setOpen(false)\n }, [onChange, value])\n\n const handleClear = useCallback((e: React.MouseEvent) => {\n e.stopPropagation()\n onChange?.(undefined)\n }, [onChange])\n\n const q = query.trim()\n const isSearching = q.length > 0\n\n const searchResults = isSearching\n ? searchGlyphs(q, ALL_NAMES)\n : null\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={disabled ? () => {} : setOpen} modal={false}>\n <div className={[styles.triggerWrap, className].filter(Boolean).join(' ')}>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={styles.trigger}\n disabled={disabled}\n aria-label={value ? `Selected glyph: ${glyphLabel(value)}` : placeholder}\n >\n {value ? (\n <Glyph name={value} size={16} />\n ) : (\n <span className={styles.triggerPlaceholder}>{placeholder}</span>\n )}\n </button>\n </PopoverPrimitive.Trigger>\n {clearable && value && (\n <button\n type=\"button\"\n className={styles.clearBtn}\n onClick={handleClear}\n aria-label=\"Clear glyph\"\n >\n <Glyph name=\"close\" size={12} />\n </button>\n )}\n </div>\n\n <PopoverPrimitive.Content\n className={styles.popoverContent}\n sideOffset={4}\n align=\"start\"\n onOpenAutoFocus={e => e.preventDefault()}\n >\n <div className={styles.searchRow}>\n <input\n ref={inputRef}\n type=\"text\"\n className={styles.searchInput}\n placeholder=\"Search glyphs…\"\n value={query}\n onChange={e => setQuery(e.target.value)}\n autoComplete=\"off\"\n spellCheck={false}\n />\n </div>\n\n <div className={styles.scrollArea}>\n {isSearching ? (\n searchResults && searchResults.length > 0 ? (\n <div className={styles.glyphGrid}>\n {searchResults.map(({ name }) => (\n <GlyphButton\n key={name}\n name={name}\n selected={name === value}\n onSelect={handleSelect}\n />\n ))}\n </div>\n ) : (\n <div className={styles.emptyState}>No glyphs match \"{query}\"</div>\n )\n ) : (\n Object.entries(GlyphCategories).map(([category, names]) => (\n <div key={category}>\n <div className={styles.categoryHeading}>{category}</div>\n <div className={styles.glyphGrid}>\n {(names as readonly GlyphName[]).map(name => (\n <GlyphButton\n key={name}\n name={name}\n selected={name === value}\n onSelect={handleSelect}\n />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Root>\n )\n}\n\ninterface GlyphButtonProps {\n name: GlyphName\n selected: boolean\n onSelect: (name: GlyphName) => void\n}\n\nconst GlyphButton = ({ name, selected, onSelect }: GlyphButtonProps) => (\n <button\n type=\"button\"\n className={styles.glyphBtn}\n data-selected={selected}\n onClick={() => onSelect(name)}\n title={glyphLabel(name)}\n aria-label={glyphLabel(name)}\n aria-pressed={selected}\n >\n <Glyph name={name} size={16} />\n </button>\n)\n","import 'src/components/Typography/Typography.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WSz3KCMBCH7z5Fju0hTPgrxlforb07CwbITEiYEFTa6bt3RI1VHJ02cuTHzu73bdb76BtVamiqfrXmbSOgX638TSS2pSboa4ZQoaTBBdRc9BRtQL9gPETnash5tsva1-Wpest4WRmKFoTYrOWfjKI0bXb7SHDJcHUsI94iHkJmDNO4bSDnsqQIE48ErN7_ypVQ-jR--MBFaUfHw-gadMklRWQ5-555v7wq3yr5rkrzkVKU3FDyPZJOqhRYpeD5SmH0RyX_GUqhVQpdleKRUnD7lQJ37MhiRxNgk6mwY4sd38XO1PrMbMbMyYjZP13P1aEQj6SHOzFsZ7DRINtC6ZqirmmYzqFlzlpH2oNY8i-xK4nLxUfxUxDfGKwt5twF8_ZZ38EMbLPkMed7DUJY0NQFNJgMtFZSWcbFXcZj6aFtN2IMHd986LUBzUEaLLuaaZ5TZCDrBOh90D4Uudw4uNj4rhv_u84PpQqDTU4IAAA';\nexport var body = 'Typography_body__1v4lwgr6';\nexport var bodyLead = 'Typography_bodyLead__1v4lwgr7';\nexport var bodySmall = 'Typography_bodySmall__1v4lwgr8';\nexport var display = 'Typography_display__1v4lwgr0';\nexport var h1 = 'Typography_h1__1v4lwgr1';\nexport var h2 = 'Typography_h2__1v4lwgr2';\nexport var h3 = 'Typography_h3__1v4lwgr3';\nexport var h4 = 'Typography_h4__1v4lwgr4';\nexport var h5 = 'Typography_h5__1v4lwgr5';\nexport var mono = 'Typography_mono__1v4lwgr9';\nexport var monoSmall = 'Typography_monoSmall__1v4lwgra';","import type { ReactNode, ElementType, HTMLAttributes } from 'react'\nimport * as styles from './Typography.css'\n\ntype PolymorphicProps<E extends ElementType> = HTMLAttributes<HTMLElement> & {\n as?: E\n children?: ReactNode\n className?: string\n}\n\n/**\n * Large decorative text set in the display (serif) typeface. Polymorphic — renders\n * as any HTML element via the `as` prop; defaults to `<p>`.\n *\n * Use for hero headings, pull quotes, or editorial callouts where the display\n * face should carry the visual weight.\n *\n * @example\n * ```tsx\n * <Display as=\"h1\">The Alchemist's Field Guide</Display>\n * <Display as=\"blockquote\">Patience is a precipitate.</Display>\n * ```\n */\nexport function Display({ as: Tag = 'p', className, children, ...props }: PolymorphicProps<ElementType>) {\n return (\n <Tag className={[styles.display, className].filter(Boolean).join(' ')} {...props}>\n {children}\n </Tag>\n )\n}\n\n/** Props for the {@link Heading} component. */\nexport interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {\n /**\n * Heading level — renders the corresponding `<h1>`–`<h5>` element and\n * applies the matching size/weight from the type scale.\n * @default 1\n */\n level?: 1 | 2 | 3 | 4 | 5\n children?: ReactNode\n className?: string\n}\n\nconst headingStyles = {\n 1: styles.h1,\n 2: styles.h2,\n 3: styles.h3,\n 4: styles.h4,\n 5: styles.h5,\n} as const\n\n/**\n * Section heading set in the body (sans-serif) typeface at appropriate scale.\n * Uses the correct semantic HTML element (`h1`–`h5`) based on `level`.\n *\n * @example\n * ```tsx\n * <Heading level={1}>Recipes</Heading>\n * <Heading level={3}>Mordants & Fixatives</Heading>\n * ```\n */\nexport function Heading({ level = 1, className, children, ...props }: HeadingProps) {\n const Tag = `h${level}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5'\n const style = headingStyles[level]\n return (\n <Tag className={[style, className].filter(Boolean).join(' ')} {...props}>\n {children}\n </Tag>\n )\n}\n\n/** Props for the {@link Body} component. */\nexport interface BodyProps extends HTMLAttributes<HTMLParagraphElement> {\n /**\n * Size variant.\n * - `base` — 14px, standard reading text (default)\n * - `lead` — 16px, introductory or summary paragraphs\n * - `small` — 12px, captions, helper text, footnotes\n * @default 'base'\n */\n variant?: 'base' | 'lead' | 'small'\n children?: ReactNode\n className?: string\n}\n\nconst bodyStyles = {\n base: styles.body,\n lead: styles.bodyLead,\n small: styles.bodySmall,\n} as const\n\n/**\n * Body text rendered as a `<p>` element. Three size variants map to the\n * base reading scale.\n *\n * @example\n * ```tsx\n * <Body>Combine oak gall with iron sulphate in a ratio of 2:1.</Body>\n * <Body variant=\"lead\">An introduction to the chapter.</Body>\n * <Body variant=\"small\">Last updated 3 days ago.</Body>\n * ```\n */\nexport function Body({ variant = 'base', className, children, ...props }: BodyProps) {\n return (\n <p className={[bodyStyles[variant], className].filter(Boolean).join(' ')} {...props}>\n {children}\n </p>\n )\n}\n\n/** Props for the {@link Mono} component. */\nexport interface MonoProps extends HTMLAttributes<HTMLElement> {\n /**\n * Size variant.\n * - `base` — 13px monospace (default)\n * - `small` — 11px monospace; use for inline code in dense layouts\n * @default 'base'\n */\n variant?: 'base' | 'small'\n /** Element to render as. @default 'span' */\n as?: ElementType\n children?: ReactNode\n className?: string\n}\n\n/**\n * Monospace text for code, measurements, IDs, and numeric values. Polymorphic\n * via `as`; defaults to `<span>` for inline use.\n *\n * @example\n * ```tsx\n * <Mono>Fe₂(SO₄)₃</Mono>\n * <Mono as=\"code\" variant=\"small\">recipe-042</Mono>\n * ```\n */\nexport function Mono({ variant = 'base', as: Tag = 'span', className, children, ...props }: MonoProps) {\n const s = variant === 'small' ? styles.monoSmall : styles.mono\n return (\n <Tag className={[s, className].filter(Boolean).join(' ')} {...props}>\n {children}\n </Tag>\n )\n}\n","import 'src/components/Eyebrow/Eyebrow.css.ts.vanilla.css?source=LkV5ZWJyb3dfZXllYnJvd19fYjhybHIzMCB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IHZhcigtLXNwYWNlLXNwM19fMWFjaWJ4YngpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHlfXzFhY2lieGJ0KTsKICBmb250LXNpemU6IDExcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBsZXR0ZXItc3BhY2luZzogMC4xOGVtOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgY29sb3I6IHZhcigtLWNvbG9yLWZnMl9fMWFjaWJ4YjYpOwp9Ci5FeWVicm93X2NvdW50X19iOHJscjMxIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9fXzFhY2lieGJ1KTsKICBmb250LXNpemU6IDEwcHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBsZXR0ZXItc3BhY2luZzogMDsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICBjb2xvcjogdmFyKC0tY29sb3ItZmczX18xYWNpYnhiNyk7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmcyX18xYWNpYnhiMSk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyTXV0ZV9fMWFjaWJ4YmIpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1waWxsX18xYWNpYnhiMWEpOwogIG1pbi13aWR0aDogMThweDsKICBoZWlnaHQ6IDE2cHg7CiAgcGFkZGluZzogMCA1cHg7CiAgbGluZS1oZWlnaHQ6IDE7Cn0';\nexport var count = 'Eyebrow_count__b8rlr31';\nexport var eyebrow = 'Eyebrow_eyebrow__b8rlr30';","import type { ReactNode, HTMLAttributes } from 'react'\nimport * as styles from './Eyebrow.css'\n\n/** Props for the {@link Eyebrow} component. */\nexport interface EyebrowProps extends HTMLAttributes<HTMLSpanElement> {\n children: ReactNode\n /**\n * Numeric count shown as a small badge after the label — useful for\n * section totals, unread counts, etc.\n */\n count?: number\n /** Arbitrary content appended after the label and optional count. */\n after?: ReactNode\n className?: string\n}\n\n/**\n * Compact uppercase label used to categorise sections, label groups of\n * controls, or introduce content blocks. Rendered in small-caps with\n * tracked letter-spacing.\n *\n * Pair with a numeric `count` to show totals inline, or use `after` for\n * actions or secondary content alongside the label.\n *\n * @example\n * ```tsx\n * <Eyebrow>Ingredients</Eyebrow>\n * <Eyebrow count={12}>Recipes</Eyebrow>\n * <Eyebrow after={<Button size=\"sm\" variant=\"ghost\">Add</Button>}>Steps</Eyebrow>\n * ```\n */\nexport function Eyebrow({ children, count, after, className, ...props }: EyebrowProps) {\n return (\n <span className={[styles.eyebrow, className].filter(Boolean).join(' ')} {...props}>\n {children}\n {count !== undefined && <span className={styles.count}>{count}</span>}\n {after}\n </span>\n )\n}\n","import 'src/components/Badge/Badge.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8WW0Y6bMBBF3_MVlqpKzQMRhkCyzlv7IdGAHeKG2K4xCdlq_73CCfZmWVeVQOpLJDzm-HKdO5rVd6AV2xf2d4-5zm9tEqPfC4Qob1QNN4K4qLlg0aFm3W6BENS8EhE37NwQVDJhmO6XK1AEZcpuOUhhogOceX0j6AL6WxTZpULS236PoeRFV5il29rwV0YQjt-9fWW8OhqC8jju12pmDNNRo6DkoiIoXuGcnfuKYZ2JjAbRHKQ-E9QqxXQJDeuLCii1-1PVoe0dX0hNmY40UN42g7z7UySkYE4g3liF9uOPDzm4X7keuWFWCyNIyKsGtVu8LVbvvbyA5iDMXramBzhvwXpbQHmqtGwFJchqV6CZMEFKI2tOHaOwjFLWUg_67UNUVE58vAzCFK9rxyrvev7iyWP7wxOwnvyr_lKeVb9rH7sD6XvxX9aQQZr4ayEIqw7Zz_XFEBQ7KBu5Oo2cOPJhPrmpg1ZP0GL7kqwhAB2KIejaQY9jDyaRM0fm88nNHfTnE3QLKSQhY4diCLpx0NPYg0nkrSPX88l9cdDzEzSja8hDxg7FYBZ8wsTYhGlonzM5o2CfMRXqZ4cqcZ0nX35-0FP_s1X_DoyboD_fx_HXyLApIj7uDwrw0dX_xQAf8ObpWvMC4pQGrnUoBqk-4Wb8P5yG9jlvZxTsM36Zr89hH_LrzH058Unv5hOc-JDf5mt1iQ_568ytOfH5xfGMin0qMX7CbiBj25C9QzGI9WHDydiJaWwfOZxOkEyl8aC1BV05NUeC8vvkPAzB-aeDdBZ__Tgalq3ux8IfvRw72desi5qj5uJEULxbvP0B0MV14X8MAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var badge = _7a468({defaultClassName:'Badge_badge__1ir6yu20',variantClassNames:{tone:{saved:'Badge_badge_tone_saved__1ir6yu21',drafting:'Badge_badge_tone_drafting__1ir6yu22',stopped:'Badge_badge_tone_stopped__1ir6yu23',archived:'Badge_badge_tone_archived__1ir6yu24',neutral:'Badge_badge_tone_neutral__1ir6yu25',success:'Badge_badge_tone_success__1ir6yu26',warn:'Badge_badge_tone_warn__1ir6yu27',danger:'Badge_badge_tone_danger__1ir6yu28',info:'Badge_badge_tone_info__1ir6yu29'},variant:{outline:'Badge_badge_variant_outline__1ir6yu2a',solid:'Badge_badge_variant_solid__1ir6yu2b',pill:'Badge_badge_variant_pill__1ir6yu2c'}},defaultVariants:{tone:'neutral',variant:'outline'},compoundVariants:[[{tone:'saved',variant:'outline'},'Badge_badge_compound_0__1ir6yu2d'],[{tone:'saved',variant:'solid'},'Badge_badge_compound_1__1ir6yu2e'],[{tone:'saved',variant:'pill'},'Badge_badge_compound_2__1ir6yu2f'],[{tone:'drafting',variant:'outline'},'Badge_badge_compound_3__1ir6yu2g'],[{tone:'drafting',variant:'solid'},'Badge_badge_compound_4__1ir6yu2h'],[{tone:'drafting',variant:'pill'},'Badge_badge_compound_5__1ir6yu2i'],[{tone:'stopped',variant:'outline'},'Badge_badge_compound_6__1ir6yu2j'],[{tone:'stopped',variant:'solid'},'Badge_badge_compound_7__1ir6yu2k'],[{tone:'stopped',variant:'pill'},'Badge_badge_compound_8__1ir6yu2l'],[{tone:'archived',variant:'outline'},'Badge_badge_compound_9__1ir6yu2m'],[{tone:'archived',variant:'solid'},'Badge_badge_compound_10__1ir6yu2n'],[{tone:'archived',variant:'pill'},'Badge_badge_compound_11__1ir6yu2o'],[{tone:'neutral',variant:'outline'},'Badge_badge_compound_12__1ir6yu2p'],[{tone:'neutral',variant:'solid'},'Badge_badge_compound_13__1ir6yu2q'],[{tone:'neutral',variant:'pill'},'Badge_badge_compound_14__1ir6yu2r'],[{tone:'success',variant:'outline'},'Badge_badge_compound_15__1ir6yu2s'],[{tone:'success',variant:'solid'},'Badge_badge_compound_16__1ir6yu2t'],[{tone:'success',variant:'pill'},'Badge_badge_compound_17__1ir6yu2u'],[{tone:'warn',variant:'outline'},'Badge_badge_compound_18__1ir6yu2v'],[{tone:'warn',variant:'solid'},'Badge_badge_compound_19__1ir6yu2w'],[{tone:'warn',variant:'pill'},'Badge_badge_compound_20__1ir6yu2x'],[{tone:'danger',variant:'outline'},'Badge_badge_compound_21__1ir6yu2y'],[{tone:'danger',variant:'solid'},'Badge_badge_compound_22__1ir6yu2z'],[{tone:'danger',variant:'pill'},'Badge_badge_compound_23__1ir6yu210'],[{tone:'info',variant:'outline'},'Badge_badge_compound_24__1ir6yu211'],[{tone:'info',variant:'solid'},'Badge_badge_compound_25__1ir6yu212'],[{tone:'info',variant:'pill'},'Badge_badge_compound_26__1ir6yu213']]});\nexport var dot = 'Badge_dot__1ir6yu214';","import type { HTMLAttributes, ReactNode } from 'react'\nimport type { RecipeVariants } from '@vanilla-extract/recipes'\nimport * as styles from './Badge.css'\n\ntype BadgeVariants = NonNullable<RecipeVariants<typeof styles.badge>>\n\n/** Props for the {@link Badge} component. */\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n /**\n * Semantic colour tone.\n * - `saved` — green; completed or published state\n * - `drafting` — amber; in-progress or pending state\n * - `stopped` — red; error, blocked, or inactive state\n * - `archived` — muted; historical or soft-deleted state\n * - `neutral` — default; informational, no semantic weight\n * @default 'neutral'\n */\n tone?: BadgeVariants['tone']\n /**\n * Visual style.\n * - `outline` — border + tinted background (default); lighter weight\n * - `solid` — filled background; higher visual weight\n * @default 'outline'\n */\n variant?: BadgeVariants['variant']\n /** Show a small filled dot before the label — useful for status indicators. */\n dot?: boolean\n children: ReactNode\n className?: string\n}\n\n/**\n * Compact inline label for status, category, or metadata. Combines a semantic\n * `tone` (colour) with an `outline` or `solid` style.\n *\n * @example\n * ```tsx\n * <Badge tone=\"saved\">Published</Badge>\n * <Badge tone=\"drafting\" dot>In progress</Badge>\n * <Badge tone=\"stopped\" variant=\"solid\">Blocked</Badge>\n * ```\n */\nexport function Badge({\n tone = 'neutral',\n variant = 'outline',\n dot = false,\n children,\n className,\n ...props\n}: BadgeProps) {\n return (\n <span\n className={[styles.badge({ tone, variant }), className].filter(Boolean).join(' ')}\n {...props}\n >\n {dot && <span className={styles.dot} aria-hidden=\"true\" />}\n {children}\n </span>\n )\n}\n","import 'src/components/Button/Button.css.ts.vanilla.css?source=#H4sIAAAAAAAAA71X227jNhB9z1cQ-xQD4UKyc9loUaDYBYq-9AuKwqDIkcyNRLLkyJZb7L8XpCxKcSTFwW764IvI4ZwzM2co8tcnOBaW1eDIlwZRq60zUm23KWpr_-YJ-feKkMLqOvwhBC1TrtC2zojVyBCuEwHl6vMVId-vCEE9a7e5H1l-v_o4glNgI2IaHAjpTMWOGZGqkgpoUUHrVzIla4ZSq2yGbuqIX8AskaqQSiJ8HoHl3U9vvl7GqmSpqESoXUY4KATrh781DmVxpFwrBIXjqZKZjOyZvabUGcaBOnO73aaMy7zNjyH0QiukBatldexNw1CuxTGa4mB6AFnuMCP3SeLHKkAEG7xLVWYk-ZgmUPsZhBbpKOuNMWA5c-Anc20F2IykpiVOV1KcoLmutKXdbER_XA1LqGVCNq6n2j1RpRVE8_Qh2PPGOm0zYrTs0xHYyK5akdnJk2hsqCMtmMPBV7E6zQNzQHUzmpKrG5LrlrodE_rwY24YfyqtbpT4ATc-Qt2gl0xGfEZiFQRwbU8q7ScOO4nQqcIPHiwzfrhxvppQAcfedl6tWaF54-heOplXELQbCawnK8u4F2dkLcakqS4KBxiWLqIK6VhegbghcyZ_MisZ7e1--YC2gQ9_dQS9UvHolXo7lonSSFlV6QMIP3xSDYU9KHSzqdh7IIVbY2XN7DEy2ASsoazZsywUZczAXadVP_zcJh9skpP-e6nFlg5P1CGrzSCEfPUWntlO78FmSuN1zOsqkB-1bvhb-T2Tpqa9If77BaeNacMnIclSsG-gxjjKPVzMbe2prSeYvVI7B1wrMYa-Xayea2zB-LDfbOZKeGnkEwTmyzLHKi_XgwbGG-ZBCtzNNdUShfn0z0rRWHBuoCGWoo5bQYd3txjd5L4xkfLO7rch8TBOxeyCM8c_pdXO43v_TpuI5XJ2_1OzlTvtBtj7F0UPCIZZUDjbVYPQ71-pbjfzR4NDty7W7IzdfMle7_bXaT0731xM6Z27UjBVjg6_D4tdGY07z9_e8C6bS82ky5_Sj-eRvX8_TsRyObt37kcn_4GtqyPgp-5e5U_4fiojaWrCpcMwIcLJ_s60JE26wYl7xSbG2U7FGfBqEfEeX-Ctz_AePN7ZW-spF7_L0bbFBi8TV5haKx1ZNcMVpgN87PBeXmCSu-kLTH9yHp0gH_xzzWwpFa2gwPOkDDvVYaT78bWHN9bvdV-9YJ6F701uO4pLN58dk9Yfnocm-OTT_x_lLY3fRg8AAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var button = _7a468({defaultClassName:'Button_button__1torrqc2',variantClassNames:{variant:{primary:'Button_button_variant_primary__1torrqc3',secondary:'Button_button_variant_secondary__1torrqc4',accent:'Button_button_variant_accent__1torrqc5',ghost:'Button_button_variant_ghost__1torrqc6',danger:'Button_button_variant_danger__1torrqc7'},size:{sm:'Button_button_size_sm__1torrqc8',md:'Button_button_size_md__1torrqc9'}},defaultVariants:{variant:'secondary',size:'md'},compoundVariants:[]});\nexport var kbdHint = 'Button_kbdHint__1torrqca';\nexport var spinner = 'Button_spinner__1torrqc1';","import type { ButtonHTMLAttributes, ReactNode } from 'react'\nimport type { RecipeVariants } from '@vanilla-extract/recipes'\nimport { Glyph } from '../../glyphs/Glyph'\nimport type { GlyphName } from '../../types/components'\nimport * as styles from './Button.css'\n\ntype ButtonVariants = NonNullable<RecipeVariants<typeof styles.button>>\n\n/** Props for the {@link Button} component. */\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * Visual style of the button.\n * - `primary` — high-emphasis, filled in foreground ink with stamp shadow\n * - `secondary` — medium-emphasis, surface fill (default)\n * - `accent` — accent-colour fill; use for the single primary CTA per view\n * - `ghost` — minimal, border only; use for toolbar/icon actions\n * - `danger` — destructive actions; uses danger semantic colour\n * @default 'secondary'\n */\n variant?: ButtonVariants['variant']\n /**\n * Size of the button.\n * - `sm` — 11px text, compact padding; use in toolbars, table rows\n * - `md` — 12px text, standard padding (default)\n * - `lg` — 13px text, generous padding; use for primary CTAs\n * @default 'md'\n */\n size?: ButtonVariants['size']\n /** Name of a {@link Glyph} to render alongside the label. */\n glyph?: GlyphName\n /**\n * Which side the glyph appears on.\n * @default 'start'\n */\n glyphPosition?: 'start' | 'end'\n /**\n * Keyboard shortcut hint rendered as a subtle badge at the button's trailing edge.\n * Display only — does not wire up any keyboard listener.\n * @example kbd=\"⌘K\"\n */\n kbd?: string\n /**\n * When true, replaces the button content with a spinning `spinner` glyph and an optional\n * `loadingLabel`, and sets `disabled` to prevent double-submission. The button keeps\n * its current dimensions so the layout does not shift.\n */\n loading?: boolean\n /**\n * Label shown alongside the spinner when `loading` is true.\n * @default 'Loading…'\n */\n loadingLabel?: string\n children?: ReactNode\n className?: string\n}\n\n/**\n * The primary interactive element. Supports five variants, three sizes, optional\n * glyphs, and keyboard shortcut hints.\n *\n * @example\n * ```tsx\n * <Button variant=\"accent\" glyph=\"plus\">New entry</Button>\n * <Button variant=\"ghost\" size=\"sm\" glyph=\"cross\" aria-label=\"Close\" />\n * <Button variant=\"primary\" kbd=\"⌘S\">Save</Button>\n * ```\n */\nexport function Button({\n variant = 'secondary',\n size = 'md',\n glyph,\n glyphPosition = 'start',\n kbd,\n loading = false,\n loadingLabel = 'Loading…',\n children,\n className,\n ...props\n}: ButtonProps) {\n const glyphSize = size === 'sm' ? 12 : 14\n\n return (\n <button\n className={[styles.button({ variant, size }), className].filter(Boolean).join(' ')}\n disabled={loading || props.disabled}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading ? (\n <>\n <span className={styles.spinner} aria-hidden=\"true\">\n <Glyph name=\"spinner\" size={glyphSize} />\n </span>\n {loadingLabel}\n </>\n ) : (\n <>\n {glyph && glyphPosition === 'start' && (\n <Glyph name={glyph} size={glyphSize} aria-hidden=\"true\" />\n )}\n {children}\n {glyph && glyphPosition === 'end' && (\n <Glyph name={glyph} size={glyphSize} aria-hidden=\"true\" />\n )}\n {kbd && <span className={styles.kbdHint}>{kbd}</span>}\n </>\n )}\n </button>\n )\n}\n","import 'src/components/Modal/Modal.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-1Wy27bOhDd5yu4KRChYSA5lu2om-LuLnC7Kro2KD4k3lCkQFK2nKL_XpCUKUV2bGfdbgRJ8zozc2bIry_0wDRqqAHfFEFiyxCh_8rtNnvBZW54Cn7eAcC0avwLAKpFmNtDAdIvdwD8ugPAqrkoC6Jfd1_n3o3ghP5oo_vssnsArEbSMKWbIrwKZOk9zNNPDwAjgf0r-Aw2bZ8kVwBddOaeyRH2YwCrdlQLdIhgF95tqwy3XMkCMN5T4my4NNQOkEuEXyqtOkkKoKsS3S_Sh-z5Icsf0sc8T44qRKsWMi4s1QUoRafvF23vpa-QS0L7AmSpd4gkb1AI-E6HdkjfQ0g67dVgiQzdbjOEedmXWZUMcooMhaqzo4gnX8ZksZKWShvdPr2XrFVtAfL0k3sXlNn4cUt1p9UJsLASSkPTaYbwCPspaCtNXH2ytgdGCU7e2ARpNHkeTHpoakTU_hggfEFjUdP-V43ZY6_fIkK4rKJyizCFpt2Meovkksz5aFAP95zYugD5Jm1792_49hzN0nS3BxAsN0OLnUFNeVXbiUY91XDUY8IlgTqrZrTIxtpAjQjvzBF--IJSyQkD1slZGp2O4oxHRqj96KW-kUc1RaErwevS04hw0wp0KAAT1JcHCV5JyC1tTPjp-qOtE_3fGcvZAQ6ELECoe0ntnlIZyqcrLmGprFXNvHN5xPU6hWW5FTSiysPaUdJChhouDkcv_teANjoyvoBetB-6tg6z6f8Z_koLsFiFxgsuaWxu9piFMbGWag_Rcw2mj2mW08bJPJffDgMbWZonY8LzTJ-iVp-ANGyfCRU3bipj_oQarHnrGhursLpYhVKRsQQ2maWbLUO6Z-Evot1qgh_6zfF-DtNlJJSh_3TWTtCuPdrpAvFbpkWaSnvrtvjW2XEySg8Od9q4FFrFpaX6wlIY09onN-d-mfqYHmOe0H4UhfmoNZcvx0Pmg8PvKzUs8sHW452PPENmMtfs1qPjXLeK2u2w0LNJxOL6Cr8-EVciM4U7A3fc8FJQj0B11s1lARZnuYEwDkdfCEHCCg42UDHmT_eFI3yMPExHCLnxQd5n-WosXDqFz5Syk135fH5XnjDD84FKfxpX6CTaMkY7XJm-k5NsIP4NOcSuetUPjdz8yvGdv1ISi4D-3jtuvXf8sXeMN8Rx59HWNDFGOQxjPAiXafpmdE-tm5F-eG6dr65Ziypak7n1embt1sZ3rJUQqJzcR4YtNTQEHsaWTNu4Tnf15YGeL5rf8Im3r94NAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var body = 'Modal_body__1kcb5si8';\nexport var bodyScrollable = 'Modal_bodyScrollable__1kcb5sie';\nexport var closeButton = 'Modal_closeButton__1kcb5si7';\nexport var content = 'Modal_content__1kcb5si3';\nexport var contentSized = _7a468({defaultClassName:'Modal_contentSized__1kcb5sia',variantClassNames:{size:{sm:'Modal_contentSized_size_sm__1kcb5sib',md:'Modal_contentSized_size_md__1kcb5sic',lg:'Modal_contentSized_size_lg__1kcb5sid'}},defaultVariants:{size:'sm'},compoundVariants:[]});\nexport var description = 'Modal_description__1kcb5si6';\nexport var footer = 'Modal_footer__1kcb5si9';\nexport var header = 'Modal_header__1kcb5si4';\nexport var overlay = 'Modal_overlay__1kcb5si2';\nexport var title = 'Modal_title__1kcb5si5';","import * as RadixDialog from '@radix-ui/react-dialog'\nimport type { ReactNode } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport * as styles from './Modal.css'\n\n/** Props for the {@link Modal} component. */\nexport interface ModalProps {\n /**\n * Controlled open state. When provided alongside `onOpenChange`, the\n * component is fully controlled. Omit for uncontrolled usage with\n * `defaultOpen` and a `trigger`.\n */\n open?: boolean\n /** Initial open state for uncontrolled usage. */\n defaultOpen?: boolean\n /** Called when the open state changes — required for controlled usage. */\n onOpenChange?: (open: boolean) => void\n /** Dialog title rendered in display typeface above the description. */\n title?: ReactNode\n /** Secondary description line rendered below the title. */\n description?: ReactNode\n /** Main body content of the dialog — typically a form or informational layout. */\n children?: ReactNode\n /**\n * Footer slot rendered below the body with a top border. Typically holds\n * confirm/cancel {@link Button} elements aligned to the trailing edge.\n */\n footer?: ReactNode\n /**\n * Element that opens the dialog when clicked. Rendered as a Radix\n * `asChild` trigger — pass any single React element (e.g. a {@link Button}).\n * Omit when controlling `open` externally.\n */\n trigger?: ReactNode\n /**\n * Dialog width preset.\n * - `sm` — 400px (default)\n * - `md` — 560px\n * - `lg` — 760px\n * @default 'sm'\n */\n size?: 'sm' | 'md' | 'lg'\n /**\n * When true, the body area becomes scrollable with `max-height: 70vh`.\n * Use for modals with variable-length content.\n * @default false\n */\n scrollable?: boolean\n className?: string\n}\n\n/**\n * Accessible dialog built on Radix Dialog. Renders into a portal at\n * `document.body`, so it appears above all other content regardless of\n * stacking context. Includes focus trapping, `Escape` to close, and\n * backdrop click to dismiss.\n *\n * Theme CSS vars are inherited via `data-achery-root` on `<html>`, so\n * the modal matches the active theme and accent even though it is portaled.\n *\n * @example\n * ```tsx\n * // Uncontrolled with trigger\n * <Modal\n * trigger={<Button variant=\"accent\" glyph=\"plus\">New recipe</Button>}\n * title=\"New recipe\"\n * size=\"md\"\n * footer={<><Button variant=\"ghost\">Cancel</Button><Button variant=\"primary\">Save</Button></>}\n * >\n * <Field label=\"Name\"><Input autoFocus /></Field>\n * </Modal>\n *\n * // Controlled + scrollable\n * <Modal open={isOpen} onOpenChange={setIsOpen} title=\"Confirm\" scrollable>…</Modal>\n * ```\n */\nexport function Modal({\n open,\n defaultOpen,\n onOpenChange,\n title,\n description,\n children,\n footer,\n trigger,\n size = 'sm',\n scrollable = false,\n className,\n}: ModalProps) {\n return (\n <RadixDialog.Root\n {...(open !== undefined ? { open } : {})}\n {...(defaultOpen !== undefined ? { defaultOpen } : {})}\n {...(onOpenChange !== undefined ? { onOpenChange } : {})}\n >\n {trigger && <RadixDialog.Trigger asChild>{trigger}</RadixDialog.Trigger>}\n <RadixDialog.Portal>\n <RadixDialog.Overlay className={styles.overlay} />\n <RadixDialog.Content\n className={[styles.contentSized({ size }), className].filter(Boolean).join(' ')}\n aria-describedby={description ? 'modal-description' : undefined}\n >\n <div className={styles.header}>\n <div>\n {title && (\n <RadixDialog.Title className={styles.title}>{title}</RadixDialog.Title>\n )}\n {description && (\n <RadixDialog.Description id=\"modal-description\" className={styles.description}>\n {description}\n </RadixDialog.Description>\n )}\n </div>\n <RadixDialog.Close className={styles.closeButton} aria-label=\"Close\">\n <Glyph name=\"cross\" size={14} aria-hidden=\"true\" />\n </RadixDialog.Close>\n </div>\n <div className={scrollable ? styles.bodyScrollable : styles.body}>{children}</div>\n {footer && <div className={styles.footer}>{footer}</div>}\n </RadixDialog.Content>\n </RadixDialog.Portal>\n </RadixDialog.Root>\n )\n}\n","import { createContext, useCallback, useContext, useRef, useState, type ReactNode } from 'react'\nimport { Modal } from '../Modal/Modal'\nimport { Button } from '../Button/Button'\nimport { Body } from '../Typography/Typography'\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface ConfirmOptions {\n /** Modal title. */\n title?: ReactNode\n /** Body message. */\n message: ReactNode\n /** Label for the confirm button. @default 'Confirm' */\n confirmLabel?: string\n /** Variant for the confirm button. @default 'accent' */\n confirmVariant?: 'accent' | 'secondary' | 'ghost'\n /** Label for the cancel button. @default 'Cancel' */\n cancelLabel?: string\n /**\n * When true, the confirm button is rendered in a destructive style\n * (terracotta-deep background, matching the existing danger idiom).\n * @default false\n */\n destructive?: boolean\n}\n\ntype ConfirmFn = (opts: ConfirmOptions) => Promise<boolean>\n\n// ─── Context ──────────────────────────────────────────────────────────────────\n\nconst ConfirmContext = createContext<ConfirmFn | null>(null)\n\n// ─── Provider ─────────────────────────────────────────────────────────────────\n\ninterface State {\n open: boolean\n opts: ConfirmOptions\n resolve: (value: boolean) => void\n}\n\nconst EMPTY_OPTS: ConfirmOptions = { message: '' }\nconst NOOP_RESOLVE = (_: boolean) => {}\n\n/** Renders a single in-theme confirm dialog. Mount once at your app root. */\nexport const ConfirmDialogProvider = ({ children }: { children: ReactNode }) => {\n const [state, setState] = useState<State>({\n open: false,\n opts: EMPTY_OPTS,\n resolve: NOOP_RESOLVE,\n })\n\n const confirm = useCallback<ConfirmFn>((opts) => {\n return new Promise<boolean>((resolve) => {\n setState({ open: true, opts, resolve })\n })\n }, [])\n\n const settle = (value: boolean) => {\n state.resolve(value)\n setState((s) => ({ ...s, open: false }))\n }\n\n const { open, opts } = state\n const confirmLabel = opts.confirmLabel ?? 'Confirm'\n const cancelLabel = opts.cancelLabel ?? 'Cancel'\n\n return (\n <ConfirmContext.Provider value={confirm}>\n {children}\n <Modal\n open={open}\n onOpenChange={(o) => { if (!o) settle(false) }}\n title={opts.title}\n size=\"sm\"\n footer={\n <div style={{ display: 'flex', gap: 8, justifyContent: 'flex-end', width: '100%' }}>\n <Button variant=\"ghost\" size=\"sm\" onClick={() => settle(false)}>\n {cancelLabel}\n </Button>\n <Button\n variant={opts.confirmVariant ?? 'accent'}\n size=\"sm\"\n onClick={() => settle(true)}\n style={opts.destructive ? {\n background: 'var(--achery-color-rust, #8a3a22)',\n borderColor: 'var(--achery-color-rust, #8a3a22)',\n } : undefined}\n >\n {confirmLabel}\n </Button>\n </div>\n }\n >\n {typeof opts.message === 'string'\n ? <Body variant=\"small\">{opts.message}</Body>\n : opts.message}\n </Modal>\n </ConfirmContext.Provider>\n )\n}\n\n// ─── Hook ─────────────────────────────────────────────────────────────────────\n\n/**\n * Returns an async `confirm(opts)` function that resolves `true` if the user\n * clicks confirm, `false` if they cancel or close the dialog.\n *\n * Requires `<ConfirmDialogProvider>` to be mounted above the calling component.\n *\n * @example\n * ```tsx\n * const confirm = useConfirm()\n *\n * async function handleDelete() {\n * const ok = await confirm({\n * title: 'Delete task',\n * message: 'This cannot be undone.',\n * confirmLabel: 'Delete',\n * destructive: true,\n * })\n * if (!ok) return\n * await deleteTask(id)\n * }\n * ```\n */\nexport const useConfirm = (): ConfirmFn => {\n const fn = useContext(ConfirmContext)\n if (!fn) throw new Error('useConfirm must be used within a ConfirmDialogProvider')\n return fn\n}\n","import 'src/components/Toggle/Toggle.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6VV24rbMBB9z1eIhcIGqiVOspdqKfSp0PdSCqWEsTV2ppElIcm5tOy_F8uXONk4he2bpbmcmTln5E8bPOQOSvTsqykKhStvSa9Wwdlyl83YnwljuTNl_GAsONA-N64UzJkAAW9nEovp84SxlwljwYz6LR4Gni-TuxYtOMg2HVwSoyV5q-AgGGlFGnmucF-HgaJCcwpYesEy1AFdfb0jGdaCLWc2eq2RinUQbD5vzqlxEh13IKnygm3B3fL2xC0ptVolkFG6TxOYHv0FS-yeeaNItiGZUcbxxtrHfGhCINsUzlRaihNnX7kcMuy9F9E7q5w3TjBrqGvBgpSkC8HamuP0KJDRYpC8zS0rB7WJ5-DDsfp82toRPHJTDUw0fd-NIRb2H4nq6mo-uF870hvBZs-jZP6QEID7mv2PN0bf_Izsjg0LsprSHksOyGg8_uk-VofITVZ5viVPqcJYhKlCLa048AssX6yljeEmzz2GlqtRTEkeUoWygbOQUTgINrtbDiWgTeCglNmhPEm1rsq0SzWPGVqRJw-nIu_OZyK_n727psu86Fu7n57rrd_cc5Wk4I9STooTlXgN9mj7Fcl4Tf-V_gbvRfxUEPD7bfJk91c3rCHq87EfPNHBzoG19bo2UIu3PC8F2A7TW8iQe7vs4Q4ncApSVB3Ysnk6jQ48h5LUocsSr1IjD32W0KxVfe_pNwqWLBpaL-j-FXeVR8c9KsxCLSiNw4rq6Vf-i5aUQTD9IO7fMojxtT9D-QaOQAe_8rAlXXSgDxH0YkuLvqfH2BNoKqGR48WfUuJZXTE4RjonTeFa08NyUHZJHsequfqwjKVG547TfRpLLUEXg59HXJO_lQ_rGoAHAAA';\nexport var label = 'Toggle_label__trpmwc4';\nexport var statusIndicator = 'Toggle_statusIndicator__trpmwc5';\nexport var statusIndicatorVariants = {saving:'Toggle_statusIndicatorVariants_saving__trpmwc6',saved:'Toggle_statusIndicatorVariants_saved__trpmwc7',error:'Toggle_statusIndicatorVariants_error__trpmwc8'};\nexport var thumb = 'Toggle_thumb__trpmwc2';\nexport var track = 'Toggle_track__trpmwc1';\nexport var wrapper = 'Toggle_wrapper__trpmwc3';","import * as RadixToggle from '@radix-ui/react-toggle'\nimport type { ReactNode } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport type { InputStatus } from '../Input/Input'\nimport * as styles from './Toggle.css'\n\n/** Props for the {@link Toggle} component. */\nexport interface ToggleProps {\n /**\n * Controlled pressed state. When provided, the component becomes controlled\n * and `onPressedChange` must be handled externally.\n */\n pressed?: boolean\n /** Initial pressed state for uncontrolled usage. */\n defaultPressed?: boolean\n /** Called when the pressed state changes. */\n onPressedChange?: (pressed: boolean) => void\n disabled?: boolean\n /** Optional text label rendered beside the toggle track. */\n label?: ReactNode\n /** Auto-save feedback state. When set to anything other than `'idle'`, a small icon appears after the label. */\n status?: InputStatus\n className?: string\n /** Accessible label when no visible text label is present. */\n 'aria-label'?: string\n}\n\n/**\n * Binary on/off switch built on Radix Toggle. Supports both controlled and\n * uncontrolled usage via `pressed`/`defaultPressed`.\n *\n * Always provide either a visible `label` or an `aria-label` so the control\n * is accessible to screen readers.\n *\n * @example\n * ```tsx\n * // Uncontrolled\n * <Toggle defaultPressed label=\"Dark mode\" />\n *\n * // Controlled\n * <Toggle pressed={isDark} onPressedChange={setIsDark} label=\"Dark mode\" />\n *\n * // Icon-only (needs aria-label)\n * <Toggle aria-label=\"Enable notifications\" />\n * ```\n */\nexport function Toggle({\n pressed,\n defaultPressed,\n onPressedChange,\n disabled,\n label,\n status,\n className,\n 'aria-label': ariaLabel,\n}: ToggleProps) {\n return (\n <span className={[styles.wrapper, className].filter(Boolean).join(' ')}>\n <RadixToggle.Root\n {...(pressed !== undefined ? { pressed } : {})}\n {...(defaultPressed !== undefined ? { defaultPressed } : {})}\n {...(onPressedChange !== undefined ? { onPressedChange } : {})}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(ariaLabel !== undefined ? { 'aria-label': ariaLabel } : {})}\n className={styles.track}\n >\n <span className={styles.thumb} />\n </RadixToggle.Root>\n {label && <span className={styles.label}>{label}</span>}\n {status && status !== 'idle' && (\n <span className={[styles.statusIndicator, styles.statusIndicatorVariants[status]].join(' ')} aria-hidden=\"true\">\n <Glyph name={status === 'saving' ? 'spinner' : status === 'saved' ? 'tick' : 'cross'} size={12} />\n </span>\n )}\n </span>\n )\n}\n","import 'src/components/Marginalia/Marginalia.css.ts.vanilla.css?source=Lk1hcmdpbmFsaWFfbWFyZ2luYWxpYV9fZWxjMjl6MCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogdmFyKC0tc3BhY2Utc3AzX18xYWNpYnhieCk7CiAgcmlnaHQ6IHZhcigtLXNwYWNlLXNwM19fMWFjaWJ4YngpOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwogIGNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQyX18xYWNpYnhiZik7Cn0';\nexport var marginalia = 'Marginalia_marginalia__elc29z0';","import type { GlyphName } from '../../types/components'\nimport { Glyph } from '../../glyphs/Glyph'\nimport * as styles from './Marginalia.css'\n\n/** Props for the {@link Marginalia} component. */\nexport interface MarginaliaProps {\n /**\n * Glyph to display. Any of the 33 named glyphs from the Achery icon set.\n * @default 'fern'\n */\n glyph?: GlyphName\n /**\n * Size in pixels (applied to both width and height).\n * @default 120\n */\n size?: number\n /**\n * Opacity of the glyph, 0–1. Keep low (0.25–0.5) so the decorative\n * element doesn't compete with content.\n * @default 0.4\n */\n opacity?: number\n /** When true, renders the glyph in the current accent colour. */\n accent?: boolean\n className?: string\n style?: React.CSSProperties\n}\n\n/**\n * Decorative botanical/alchemical glyph for use as corner or edge ornamentation.\n * Renders `aria-hidden` — purely presentational.\n *\n * Position it absolutely within a relatively-positioned container (e.g. a {@link Card})\n * to achieve the characteristic manuscript-margin effect.\n *\n * @example\n * ```tsx\n * // Inside a Card — Card handles positioning via its `marginalia` prop shorthand\n * <Card marginalia=\"fern\">…</Card>\n *\n * // Manual placement\n * <div style={{ position: 'relative' }}>\n * <Marginalia glyph=\"asterism\" size={160} opacity={0.25} />\n * <p>Content</p>\n * </div>\n * ```\n */\nexport function Marginalia({\n glyph = 'fern',\n size = 120,\n opacity = 0.4,\n className,\n style,\n}: MarginaliaProps) {\n return (\n <Glyph\n name={glyph}\n size={size}\n className={[styles.marginalia, className].filter(Boolean).join(' ')}\n style={{ opacity, ...style }}\n aria-hidden=\"true\"\n />\n )\n}\n","import 'src/components/Input/Input.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7VWwW7bOBC95yuIAoYStEpky1EcFQYWDXLooZfdYos9GWNxJDOhSIKkbGWL_vuCpCXLju0Eu9iLTc1w3jwO35D87RlfSg01GvJVqMYujGJiscg2qWWYkJ8XhJRa1n5AiNUgTCl1nRMtLVi8TChWV58vCPl1QYiVJ-el2WDmr4vrkKxkyOnvUtou49gDUGYUh5eclBxbF-L-Y8o0FpZJkZNC8qYWzlOByska9GUcGwUFxkZNFosxFGzZLjdXn3e5OCyRd3kmYWVS2LiEmvGXDsSblpK-9CDWk_Z2w_7GnIwT1famDbJqZXOSJYmzcbQWtafCRJWT5Ho8w9p5LLY2HtSlUQp1AQads5Bc6o6C_4jLareObLiOFRN9udKzy6ilkD1Gc2oZR3OnfdzdMDdqLfV3bHsC0_-HAAVRoe5Dn4YcmPv9AgY7Drf_ZS_TM0Xow2592BKK50rLRtD9iabRJRTYz07DbKkp6pyMVUuM5IzuxQRvH3I_CIk1UNaYLkf4ioUUuwzjOz9fAaVeZXeq7au5YdSuXHGTkfuUjeVMYE4cgNehkyALbbRN6Clt09FGg3PGJRi7S1hebf0IBmPZDFzs_ObkueJQ4Epyitrv1NFaf2vsbn2zNyBLWTTGYw1XsA8JRYFiR5MOK7yt0SRUrC9jplpy72znclNmYMmR-vTS9bl9cX1-62XUaOOICGlj4FxukB6iPboW6uCyT-S0713LPNcp7sgBjdAh3nksjUH6a9SWFcAd75qJeLU9yWbJXgkMcixsGG9xZh4HlELQIIqBuLaljHWAmsxChXedE7MaKsxJo_nlBwoWcm-4MevqY1vzT6P0wawr0tZcmHm0slblNzebzeZ6k15LXd1MkiRxk6Og83k0nkQkMA_jNcPNF9nOo4QkZDIlk2lESsb5PHIcI2Ksls84j4pGaxT2wRWxs8Yd5vW0N7nmKUDNI09_z_wkmejso_RxlD4osCtC59G3jNzzjGQki7PoJvgc61H6-OHgKIk1KgTrSrgdHviV7LrVF5XMVEucslEPBackC6Z9sf3Qbpd6Sd37jRsgIgfL1vjq3DhAYXb1hwXbmA4IAtCx3X4zdCDrQ4C7PYBOvq8xlu9Ifyb63QyC9l8jFMdip_v5jY_4Wsj-NUUPqg9LI3ljffW3GPehX6xUObkNB_jgyeCHHCz-dRnfJqNwB4SNj3GNwppdJ756QgFnlYiZxdrkvYCOsP1-cGigZ-0ZdVfMgFJIdwTmT9AMhDULA2smqg6tPH0D7D85CAHBagiVOvYyHRvimhA0YaJkgtm3eSDtwqtTNI7cGudAcXhgr06BnjujDYIuVgd9yk726UHcUF5PZ-TFsfxX6nrXRh2X4CHT4QXyvNc_gVwarp1_AIUEqUSQDAAA';\nexport var errorText = 'Input_errorText__6w3tie4';\nexport var fieldRoot = 'Input_fieldRoot__6w3tie1';\nexport var hint = 'Input_hint__6w3tie3';\nexport var inputBase = 'Input_inputBase__6w3tie5';\nexport var inputError = 'Input_inputError__6w3tie6';\nexport var inputWithStatus = 'Input_inputWithStatus__6w3tiea Input_inputBase__6w3tie5';\nexport var inputWrapper = 'Input_inputWrapper__6w3tie9';\nexport var label = 'Input_label__6w3tie2';\nexport var searchIcon = 'Input_searchIcon__6w3tiej';\nexport var searchInput = 'Input_searchInput__6w3tiek Input_inputBase__6w3tie5';\nexport var searchWrapper = 'Input_searchWrapper__6w3tiei';\nexport var selectInput = 'Input_selectInput__6w3tie8 Input_inputBase__6w3tie5';\nexport var selectWithStatus = 'Input_selectWithStatus__6w3tiec';\nexport var statusIcon = 'Input_statusIcon__6w3tied';\nexport var statusIconTextarea = 'Input_statusIconTextarea__6w3tiee Input_statusIcon__6w3tied';\nexport var statusIconVariants = {saving:'Input_statusIconVariants_saving__6w3tief',saved:'Input_statusIconVariants_saved__6w3tieg',error:'Input_statusIconVariants_error__6w3tieh'};\nexport var textarea = 'Input_textarea__6w3tie7 Input_inputBase__6w3tie5';\nexport var textareaWithStatus = 'Input_textareaWithStatus__6w3tieb';","import type {\n InputHTMLAttributes,\n TextareaHTMLAttributes,\n SelectHTMLAttributes,\n ReactNode,\n} from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport * as styles from './Input.css'\n\n/** Props for the {@link Field} wrapper component. */\nexport interface FieldProps {\n /** Visible label rendered above the input. */\n label?: string\n /** Helper text shown below the input when there is no error. */\n hint?: string\n /**\n * Error message. When present, replaces the hint and applies error styling\n * to the field. Pass to {@link Input}, {@link Textarea}, or {@link Select}\n * via their `error` boolean prop to also colour the input itself.\n */\n error?: string\n children: ReactNode\n className?: string\n}\n\n/**\n * Layout wrapper that pairs a label, input control, and hint/error text.\n * Compose with {@link Input}, {@link Textarea}, or {@link Select} as `children`.\n *\n * @example\n * ```tsx\n * <Field label=\"Name\" hint=\"As it appears on the specimen jar\">\n * <Input placeholder=\"Iron-gall ink\" />\n * </Field>\n *\n * <Field label=\"Notes\" error=\"Required\">\n * <Textarea error rows={4} />\n * </Field>\n * ```\n */\nexport function Field({ label, hint, error, children, className }: FieldProps) {\n return (\n <div className={[styles.fieldRoot, className].filter(Boolean).join(' ')}>\n {label && <label className={styles.label}>{label}</label>}\n {children}\n {error && <span className={styles.errorText}>{error}</span>}\n {!error && hint && <span className={styles.hint}>{hint}</span>}\n </div>\n )\n}\n\n/**\n * Auto-save feedback state for inputs.\n * - `'saving'` — spinning indicator; prevents confusing \"done\" flash before round-trip completes\n * - `'saved'` — accent-coloured tick; shown briefly after a successful save\n * - `'error'` — danger-coloured cross; save failed\n */\nexport type InputStatus = 'idle' | 'saving' | 'saved' | 'error'\n\n/** Props for the {@link Input} component. */\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n /** When true, applies error border colouring. Pair with {@link Field} `error` prop. */\n error?: boolean\n /**\n * Auto-save feedback state. When set to anything other than `'idle'`, a small\n * icon appears at the trailing edge of the input.\n */\n status?: InputStatus\n className?: string\n}\n\n/**\n * Single-line text input. Forwards all native `<input>` attributes.\n * Wrap in {@link Field} to add a label and hint/error text.\n *\n * @example\n * ```tsx\n * <Input placeholder=\"Search recipes…\" type=\"search\" />\n * <Input error value={value} onChange={handleChange} />\n * <Input status=\"saving\" value={value} onChange={handleChange} />\n * ```\n */\nexport function Input({ error, status, className, ...props }: InputProps) {\n const hasStatus = status && status !== 'idle'\n if (!hasStatus) {\n return (\n <input\n className={[styles.inputBase, error && styles.inputError, className].filter(Boolean).join(' ')}\n {...props}\n />\n )\n }\n return (\n <div className={[styles.inputWrapper, className].filter(Boolean).join(' ')}>\n <input\n className={[styles.inputBase, styles.inputWithStatus, error && styles.inputError].filter(Boolean).join(' ')}\n {...props}\n />\n <span className={[styles.statusIcon, styles.statusIconVariants[status]].join(' ')} aria-hidden=\"true\">\n <Glyph name={status === 'saving' ? 'spinner' : status === 'saved' ? 'tick' : 'cross'} size={12} />\n </span>\n </div>\n )\n}\n\n/** Props for the {@link Textarea} component. */\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n /** When true, applies error border colouring. Pair with {@link Field} `error` prop. */\n error?: boolean\n /** Auto-save feedback state. When set to anything other than `'idle'`, a small icon appears at the top-right. */\n status?: InputStatus\n className?: string\n}\n\n/**\n * Multi-line text input. Forwards all native `<textarea>` attributes.\n * Wrap in {@link Field} to add a label and hint/error text.\n *\n * @example\n * ```tsx\n * <Field label=\"Process notes\">\n * <Textarea rows={5} placeholder=\"Describe proportions and method…\" />\n * </Field>\n * ```\n */\nexport function Textarea({ error, status, className, ...props }: TextareaProps) {\n const hasStatus = status && status !== 'idle'\n if (!hasStatus) {\n return (\n <textarea\n className={[styles.textarea, error && styles.inputError, className].filter(Boolean).join(' ')}\n {...props}\n />\n )\n }\n return (\n <div className={[styles.inputWrapper, className].filter(Boolean).join(' ')}>\n <textarea\n className={[styles.textarea, styles.textareaWithStatus, error && styles.inputError].filter(Boolean).join(' ')}\n {...props}\n />\n <span className={[styles.statusIconTextarea, styles.statusIconVariants[status]].join(' ')} aria-hidden=\"true\">\n <Glyph name={status === 'saving' ? 'spinner' : status === 'saved' ? 'tick' : 'cross'} size={12} />\n </span>\n </div>\n )\n}\n\n/** Props for the {@link Select} component. */\nexport interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {\n /** When true, applies error border colouring. Pair with {@link Field} `error` prop. */\n error?: boolean\n /** Auto-save feedback state. When set to anything other than `'idle'`, a small icon appears at the trailing edge (beside the native chevron). */\n status?: InputStatus\n children: ReactNode\n className?: string\n}\n\n/**\n * Native `<select>` dropdown with Achery styling. For complex requirements\n * (searchable, multi-select, grouped options) the Radix Select primitive is\n * available via `TabsPrimitive` export — but for most form use-cases the\n * native select is sufficient and more accessible.\n *\n * @example\n * ```tsx\n * <Field label=\"Chapter\">\n * <Select>\n * <option value=\"\">Select a chapter…</option>\n * <option value=\"ink\">Ink</option>\n * <option value=\"pigment\">Pigment</option>\n * </Select>\n * </Field>\n * ```\n */\nexport function Select({ error, status, children, className, ...props }: SelectProps) {\n const hasStatus = status && status !== 'idle'\n if (!hasStatus) {\n return (\n <select\n className={[styles.selectInput, error && styles.inputError, className].filter(Boolean).join(' ')}\n {...props}\n >\n {children}\n </select>\n )\n }\n return (\n <div className={[styles.inputWrapper, className].filter(Boolean).join(' ')}>\n <select\n className={[styles.selectInput, styles.selectWithStatus, error && styles.inputError].filter(Boolean).join(' ')}\n {...props}\n >\n {children}\n </select>\n <span className={[styles.statusIcon, styles.statusIconVariants[status]].join(' ')} aria-hidden=\"true\" style={{ right: '28px' }}>\n <Glyph name={status === 'saving' ? 'spinner' : status === 'saved' ? 'tick' : 'cross'} size={12} />\n </span>\n </div>\n )\n}\n\n/** Props for the {@link SearchInput} component. */\nexport interface SearchInputProps extends InputHTMLAttributes<HTMLInputElement> {\n className?: string\n}\n\n/**\n * Search input with a built-in compass glyph icon and `type=\"search\"`.\n * Use in headers, toolbars, or filter panels.\n *\n * @example\n * ```tsx\n * <SearchInput placeholder=\"Search recipes…\" value={q} onChange={e => setQ(e.target.value)} />\n * ```\n */\nexport function SearchInput({ className, ...props }: SearchInputProps) {\n return (\n <div className={[styles.searchWrapper, className].filter(Boolean).join(' ')}>\n <Glyph name=\"compass\" size={12} className={styles.searchIcon} aria-hidden=\"true\" />\n <input\n type=\"search\"\n className={styles.searchInput}\n {...props}\n />\n </div>\n )\n}\n","import 'src/components/Card/Card.css.ts.vanilla.css?source=LkNhcmRfY2FyZF9fMXVwcmdycjAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlX18xYWNpYnhiMyk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyX18xYWNpYnhiOSk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW5vbmVfXzFhY2lieGIxNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouQ2FyZF9jYXJkX3ZhcmlhbnRfc3RhbXBfXzF1cHJncnIyIHsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc3RhbXBfXzFhY2lieGIxYik7Cn0KLkNhcmRfY2FyZF92YXJpYW50X3N0YW1wTGdfXzF1cHJncnIzIHsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc3RhbXBMZ19fMWFjaWJ4YjFjKTsKfQouQ2FyZF9jYXJkX3BhZGRpbmdfbm9uZV9fMXVwcmdycjQgewogIHBhZGRpbmc6IDA7Cn0KLkNhcmRfY2FyZF9wYWRkaW5nX3NtX18xdXByZ3JyNSB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2Utc3A1X18xYWNpYnhieik7Cn0KLkNhcmRfY2FyZF9wYWRkaW5nX21kX18xdXByZ3JyNiB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2Utc3A2X18xYWNpYnhiMTApOwp9Ci5DYXJkX2NhcmRfcGFkZGluZ19sZ19fMXVwcmdycjcgewogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXNwOF9fMWFjaWJ4YjEyKTsKfQouQ2FyZF9jYXJkSGVhZGVyX18xdXByZ3JyOCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyX18xYWNpYnhiOSk7CiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLXNwM19fMWFjaWJ4YngpOwogIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLXNwNF9fMWFjaWJ4YnkpOwp9';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var card = _7a468({defaultClassName:'Card_card__1uprgrr0',variantClassNames:{variant:{flat:'Card_card_variant_flat__1uprgrr1',stamp:'Card_card_variant_stamp__1uprgrr2',stampLg:'Card_card_variant_stampLg__1uprgrr3'},padding:{none:'Card_card_padding_none__1uprgrr4',sm:'Card_card_padding_sm__1uprgrr5',md:'Card_card_padding_md__1uprgrr6',lg:'Card_card_padding_lg__1uprgrr7'}},defaultVariants:{variant:'flat',padding:'md'},compoundVariants:[]});\nexport var cardHeader = 'Card_cardHeader__1uprgrr8';","import type { HTMLAttributes, ReactNode } from 'react'\nimport type { RecipeVariants } from '@vanilla-extract/recipes'\nimport { Marginalia } from '../Marginalia/Marginalia'\nimport type { GlyphName } from '../../types/components'\nimport * as styles from './Card.css'\n\ntype CardVariants = NonNullable<RecipeVariants<typeof styles.card>>\n\n/** Props for the {@link Card} component. */\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Visual style.\n * - `flat` — surface background, hairline border (default)\n * - `stamp` — adds the characteristic hard-offset stamp shadow\n * @default 'flat'\n */\n variant?: CardVariants['variant']\n /**\n * Internal padding.\n * - `none` — no padding; manage internally\n * - `sm` — compact (12px)\n * - `md` — standard (24px, default)\n * - `lg` — generous (32px)\n * @default 'md'\n */\n padding?: CardVariants['padding']\n /**\n * Optional header slot — rendered above the body with a border-bottom rule.\n * Use for {@link Eyebrow} labels, titles, or action rows.\n */\n header?: ReactNode\n /**\n * Name of a {@link Glyph} to render as a decorative {@link Marginalia}\n * element in the card's bottom-right corner.\n */\n marginalia?: GlyphName\n /**\n * Size of the marginalia glyph in pixels.\n * @default 80\n */\n marginaliaSize?: number\n children?: ReactNode\n className?: string\n}\n\n/**\n * Container surface for grouping related content. Two variants — `flat` for\n * standard surfaces and `stamp` for the elevated hard-shadow look.\n *\n * Use the `header` slot for section labels and the `marginalia` prop for\n * decorative botanical ornamentation in the corner.\n *\n * @example\n * ```tsx\n * <Card variant=\"stamp\" header={<Eyebrow>Field notes</Eyebrow>} marginalia=\"fern\">\n * <Body>Mix oak gall and vitriol…</Body>\n * </Card>\n * ```\n */\nexport function Card({\n variant = 'flat',\n padding = 'md',\n header,\n marginalia,\n marginaliaSize = 80,\n children,\n className,\n ...props\n}: CardProps) {\n return (\n <div\n className={[styles.card({ variant, padding }), className].filter(Boolean).join(' ')}\n {...props}\n >\n {header && <div className={styles.cardHeader}>{header}</div>}\n {children}\n {marginalia && (\n <Marginalia glyph={marginalia} size={marginaliaSize} />\n )}\n </div>\n )\n}\n","import 'src/components/Tabs/Tabs.css.ts.vanilla.css?source=LlRhYnNfdGFiTGlzdF9fMWIweGo5djAgewogIGRpc3BsYXk6IGZsZXg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcl9fMWFjaWJ4YjkpOwp9Ci5UYWJzX3RhYl9fMWIweGo5djEgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHlfXzFhY2lieGJ0KTsKICBmb250LXNpemU6IDEwcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBsZXR0ZXItc3BhY2luZzogMC4xNmVtOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgcGFkZGluZzogdmFyKC0tc3BhY2Utc3A0X18xYWNpYnhieSkgdmFyKC0tc3BhY2Utc3A1X18xYWNpYnhieik7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiBub25lOwogIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCB0cmFuc3BhcmVudDsKICBtYXJnaW4tYm90dG9tOiAtMXB4OwogIGNvbG9yOiB2YXIoLS1jb2xvci1mZzJfXzFhY2lieGI2KTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tZHVyYXRpb24tZmFzdF9fMWFjaWJ4YjFmKSB2YXIoLS1lYXNlLW91dF9fMWFjaWJ4YjFpKTsKICBvdXRsaW5lOiBub25lOwp9Ci5UYWJzX3RhYl9fMWIweGo5djFbZGF0YS1zdGF0ZT0iYWN0aXZlIl0gewogIGNvbG9yOiB2YXIoLS1jb2xvci1mZ19fMWFjaWJ4YjUpOwogIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudF9fMWFjaWJ4YmQpOwp9Ci5UYWJzX3RhYl9fMWIweGo5djE6aG92ZXI6bm90KFtkYXRhLXN0YXRlPSJhY3RpdmUiXSkgewogIGNvbG9yOiB2YXIoLS1jb2xvci1mZ19fMWFjaWJ4YjUpOwp9Ci5UYWJzX3RhYl9fMWIweGo5djE6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLWFjY2VudF9fMWFjaWJ4YmQpOwogIG91dGxpbmUtb2Zmc2V0OiAtMnB4Owp9Ci5UYWJzX3RhYlBhbmVsX18xYjB4ajl2MiB7CiAgb3V0bGluZTogbm9uZTsKfQ';\nexport var tab = 'Tabs_tab__1b0xj9v1';\nexport var tabList = 'Tabs_tabList__1b0xj9v0';\nexport var tabPanel = 'Tabs_tabPanel__1b0xj9v2';","import * as RadixTabs from '@radix-ui/react-tabs'\nimport type { ReactNode } from 'react'\nimport * as styles from './Tabs.css'\n\n/** A single tab definition passed to {@link Tabs}. */\nexport interface TabItem {\n /** Unique string identifier — used as the controlled/uncontrolled value. */\n value: string\n /** Content rendered in the tab trigger button. Usually a short text label. */\n label: ReactNode\n /** Content rendered in the tab panel when this tab is active. */\n content: ReactNode\n /** When true, the tab is visible but not selectable. */\n disabled?: boolean\n}\n\n/** Props for the {@link Tabs} component. */\nexport interface TabsProps {\n /** Ordered list of tab definitions. */\n items: TabItem[]\n /**\n * Controlled active tab value. When provided alongside `onValueChange`,\n * the component is fully controlled.\n */\n value?: string\n /**\n * Initial active tab value for uncontrolled usage. Defaults to the\n * `value` of the first item if not specified.\n */\n defaultValue?: string\n /** Called when the active tab changes. */\n onValueChange?: (value: string) => void\n className?: string\n}\n\n/**\n * Accessible tab navigation built on Radix Tabs. Handles roving `tabindex`,\n * arrow-key navigation, and ARIA roles automatically.\n *\n * Supports both controlled (`value` + `onValueChange`) and uncontrolled\n * (`defaultValue`) usage. When neither is provided, the first tab is active\n * by default.\n *\n * @example\n * ```tsx\n * <Tabs\n * items={[\n * { value: 'details', label: 'Details', content: <DetailsPanel /> },\n * { value: 'history', label: 'History', content: <HistoryPanel /> },\n * { value: 'notes', label: 'Notes', content: <NotesPanel />, disabled: true },\n * ]}\n * />\n * ```\n */\nexport function Tabs({ items, value, defaultValue, onValueChange, className }: TabsProps) {\n const resolvedDefault = defaultValue ?? items[0]?.value\n\n return (\n <RadixTabs.Root\n {...(value !== undefined ? { value } : {})}\n {...(resolvedDefault != null ? { defaultValue: resolvedDefault } : {})}\n {...(onValueChange !== undefined ? { onValueChange } : {})}\n {...(className !== undefined ? { className } : {})}\n >\n <RadixTabs.List className={styles.tabList}>\n {items.map(item => (\n <RadixTabs.Trigger\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n className={styles.tab}\n >\n {item.label}\n </RadixTabs.Trigger>\n ))}\n </RadixTabs.List>\n {items.map(item => (\n <RadixTabs.Content\n key={item.value}\n value={item.value}\n className={styles.tabPanel}\n >\n {item.content}\n </RadixTabs.Content>\n ))}\n </RadixTabs.Root>\n )\n}\n\n/** Direct access to Radix Tabs primitives for advanced composition. */\nexport { RadixTabs as TabsPrimitive }\n","import 'src/components/Tooltip/Tooltip.css.ts.vanilla.css?source=QGtleWZyYW1lcyBUb29sdGlwX2ZhZGVJbl9fbzM0d29xMCB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgfQogIHRvIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQp9Ci5Ub29sdGlwX2NvbnRlbnRfX28zNHdvcTEgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHlfXzFhY2lieGJ0KTsKICBmb250LXNpemU6IDExcHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBsaW5lLWhlaWdodDogMS40OwogIGNvbG9yOiB2YXIoLS1jb2xvci1iZ19fMWFjaWJ4YjApOwogIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWZnX18xYWNpYnhiNSk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZmdfXzFhY2lieGI1KTsKICBwYWRkaW5nOiA0cHggOHB4OwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1ub25lX18xYWNpYnhiMTcpOwogIG1heC13aWR0aDogMjQwcHg7CiAgei1pbmRleDogMjAwOwogIGFuaW1hdGlvbjogVG9vbHRpcF9mYWRlSW5fX28zNHdvcTAgdmFyKC0tZHVyYXRpb24tZmFzdF9fMWFjaWJ4YjFmKSB2YXIoLS1lYXNlLW91dF9fMWFjaWJ4YjFpKTsKfQouVG9vbHRpcF9jb250ZW50X19vMzR3b3ExW2RhdGEtc3RhdGU9ImRlbGF5ZWQtb3BlbiJdIHsKICBhbmltYXRpb24tbmFtZTogVG9vbHRpcF9mYWRlSW5fX28zNHdvcTA7Cn0';\nexport var content = 'Tooltip_content__o34woq1';","import * as RadixTooltip from '@radix-ui/react-tooltip'\nimport type { ReactNode } from 'react'\nimport * as styles from './Tooltip.css'\n\n/** Props for the {@link Tooltip} component. */\nexport interface TooltipProps {\n /** Content rendered inside the tooltip bubble. */\n content: ReactNode\n /**\n * The element that triggers the tooltip on hover/focus. Must be a single\n * focusable element — wrapped with Radix `asChild`.\n */\n children: ReactNode\n /**\n * Preferred side of the trigger to display the tooltip.\n * Flips automatically when there is insufficient space.\n * @default 'top'\n */\n side?: 'top' | 'right' | 'bottom' | 'left'\n /**\n * Milliseconds before the tooltip opens after the pointer enters.\n * Set to `0` for instant display.\n * @default 400\n */\n delayDuration?: number\n /**\n * Controlled open state. When provided alongside `onOpenChange`, the\n * tooltip is fully controlled.\n */\n open?: boolean\n /** Initial open state for uncontrolled usage. */\n defaultOpen?: boolean\n /** Called when the open state changes. */\n onOpenChange?: (open: boolean) => void\n}\n\n/**\n * Contextual label that appears on hover or focus, built on Radix Tooltip.\n * Renders into a portal so it is never clipped by overflow:hidden ancestors.\n *\n * Theme CSS vars are inherited via `data-achery-root` on `<html>`, ensuring\n * the tooltip matches the active theme even though it is portaled.\n *\n * Always use for supplementary information — never to convey information\n * required to complete a task (that belongs in visible UI).\n *\n * @example\n * ```tsx\n * <Tooltip content=\"Steeping time: three minutes\" side=\"top\">\n * <Button variant=\"ghost\" glyph=\"info\" aria-label=\"More info\" />\n * </Tooltip>\n *\n * <Tooltip content=\"⌘K\" delayDuration={0}>\n * <Button variant=\"ghost\">Search</Button>\n * </Tooltip>\n * ```\n */\nexport function Tooltip({\n content: tooltipContent,\n children,\n side = 'top',\n delayDuration = 400,\n open,\n defaultOpen,\n onOpenChange,\n}: TooltipProps) {\n return (\n <RadixTooltip.Provider delayDuration={delayDuration}>\n <RadixTooltip.Root\n {...(open !== undefined ? { open } : {})}\n {...(defaultOpen !== undefined ? { defaultOpen } : {})}\n {...(onOpenChange !== undefined ? { onOpenChange } : {})}\n >\n <RadixTooltip.Trigger asChild>{children}</RadixTooltip.Trigger>\n <RadixTooltip.Portal>\n <RadixTooltip.Content\n side={side}\n sideOffset={6}\n className={styles.content}\n >\n {tooltipContent}\n </RadixTooltip.Content>\n </RadixTooltip.Portal>\n </RadixTooltip.Root>\n </RadixTooltip.Provider>\n )\n}\n","import 'src/components/Sidebar/Sidebar.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7VY32vjOBB-z18hFg4aqIqdNmnj5eCOg4OF26fe27IU2Ro7upUlIcmt06P_-2HJln8kTtLdvadgeTSa-fTNN-PcPDIKKdFPpv19ikVU13kWoX8XCFFmFCf7BOUc6o8L5H4xZRoyy6RIUCZ5VYrmzQujdpeg1SpSzjKVmoLGmhU7m6BY1chIzih6JvoK40xyqbG3eXqKScbSOt0u3UaSfSu0rARNxsbFKljGzlIRSpkoOjOjSAbYqE1vFi1RhKLGdgdtIFH0S_Msn0HnXL4kiFRWNitWE2GYT8sl07qllSbNKk6Jgd51sWzfAzGAZWX7V2z5cfG2uJmF9gslljRZcaIM0F8_WF3Bh68O8RbG9apB8dDJZ5kyDsFV7PYo2cWdsxqoS0aqxCfOIbcJwuFepkBM7-0VM0GhTtAqiqawNL5-MirThDw2pVvFUoEYoeOTiUaOGr5QLVXwsZoDhQkDtoVlyDJdpORqFV3H2-t4fR3d3K2XIyTi7bZ5JoKVxLsUUsAoiO4y_5ZFMUjn9ngVEc4KgZmF0iQoA2FBN8v_VMayfI8zKSwIO3w1DNfdiCIahO0LrYsJoazSRuoEKcm63aFQIhRNiuUuXNDeJe1qbVx4eXEbjO6XA850FBpSxG2ZciQnZkCE_GKOzKGa7JryddgejTc4XI_9NQj2PLnzPOmxGSOzDl5el6cUZiB2qbRWll7tKDE7OCZ3nyvbF0zqtpdEF0yE7fNxnMom4cRYnO0Ypy6xSUwdPSZnRYcu_yIp8OB3PaZwymX2zXUCKSzOScn4vovYLaWS7kPEdhlMDXuFBG29yLiVl1aJNlErVNaCdmn7-7hZRVA6fkFtsSNZLnWZoEop0BkxcDFhTwI8LoEBGoI8f7JQBig2YygKzZysNL_YQqk4sYB9RzQJiu9UjeJchwYzU_UFUdOI-vDrcaNbq_pM_U5K8x260TVsQllluoj8E25ses57TN2tuJx8Y_h-UsS3nhXna_moug3lp8_3hzQIIVlZzgT08Lh0KWRST3qA71gk24HeYy2l_YrOMGjG1TvF7MD3QBXnZ6jgLVq-O_h3ye4JxOZP6MKx7BlGjX8uoUN-HAb2Y0nPhnT-pO-CIMllVhn8zAxLObiTAhdXR6dokjViEk6mQ_5imedu6MHtQDk3e56h7AmNOzO5BO16UPWk27RH_SErF74_796dNyckpRQyZFodCEk7w8qmh9h900M26wErmNiBZnYURC6lhX44fxgPBadacZBMN2yf-sI5aPnD8dX1pEcuewi2Loa2ZznnvoUMdvkB-RGIznZhHxn3pwOuDTd9EqrqT0w96NxNu0ebw3wf-f81f6LFl2WUJIqTDHaS01OaNbqah-n4WQn7e1dd3m_2E-g5J2ZHC_lI1N7uzx4mGE8JDRXX46_wy5r62-K3Eigj6KokNW5HifvNvaqXLu1L6Hfkc2d29Dk6_EwnmkFim4PxZ1qRXdmccnrWRUf-d_xpcXHLReht8fYfZONPU3YRAAA';\nexport var backdrop = 'Sidebar_backdrop__1n0xxfc2';\nexport var bottomSlot = 'Sidebar_bottomSlot__1n0xxfc9';\nexport var collapseToggle = 'Sidebar_collapseToggle__1n0xxfc3';\nexport var countAccent = 'Sidebar_countAccent__1n0xxfcc';\nexport var footer = 'Sidebar_footer__1n0xxfc8';\nexport var group = 'Sidebar_group__1n0xxfc4';\nexport var groupLabel = 'Sidebar_groupLabel__1n0xxfc5';\nexport var mobileSearch = 'Sidebar_mobileSearch__1n0xxfca';\nexport var mobileSearchInput = 'Sidebar_mobileSearchInput__1n0xxfcb';\nexport var navItem = 'Sidebar_navItem__1n0xxfc6';\nexport var navItemCount = 'Sidebar_navItemCount__1n0xxfc7';\nexport var sidebar = 'Sidebar_sidebar__1n0xxfc0';\nexport var sidebarMobile = 'Sidebar_sidebarMobile__1n0xxfc1';","import type { ComponentType, ReactNode } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport type { GlyphName } from '../../types/components'\nimport { useAppBarSearch } from '../../context/AppBarSearchContext'\nimport * as styles from './Sidebar.css'\n\n/** Props passed to the custom link renderer supplied via {@link SidebarProps.renderLink}. */\nexport interface SidebarLinkProps {\n href: string\n className?: string\n 'data-active'?: boolean\n 'aria-current'?: 'page' | undefined\n title?: string\n children: ReactNode\n}\n\n/** A single navigation item within a {@link NavGroupDef}. */\nexport interface NavItemDef {\n /** Unique identifier used for active state tracking and `onItemClick` callbacks. */\n id: string\n /** Visible label. */\n label: string\n /** Optional {@link Glyph} shown to the left of the label. */\n glyph?: GlyphName\n /** Numeric badge shown at the trailing edge — useful for unread counts. */\n count?: number\n /** Colour tone for the count badge. @default 'neutral' */\n countTone?: 'accent' | 'neutral'\n /**\n * When provided, the item renders as a link instead of a `<button>`.\n * Use for top-level routes; omit for in-page actions.\n */\n href?: string\n}\n\n/** A labelled group of {@link NavItemDef} items within a {@link Sidebar}. */\nexport interface NavGroupDef {\n /** Optional group heading rendered in eyebrow style above the items. */\n label?: string\n items: NavItemDef[]\n}\n\n/** Props for the {@link Sidebar} component. */\nexport interface SidebarProps {\n /** Ordered list of navigation groups. Groups without a label are unlabelled. */\n groups: NavGroupDef[]\n /** `id` of the currently active navigation item — highlights it with accent colouring. */\n activeId?: string\n /**\n * Called when a navigation item (button variant) is clicked.\n * Receives the `id` of the clicked item.\n */\n onItemClick?: (id: string) => void\n /**\n * Optional custom link component used to render items that have an `href`.\n * Pass your router's `<Link>` here to enable client-side navigation.\n * Falls back to a plain `<a>` tag if omitted.\n *\n * @example\n * ```tsx\n * import { Link } from '@tanstack/react-router'\n * <Sidebar renderLink={Link} … />\n * ```\n */\n renderLink?: ComponentType<SidebarLinkProps>\n /**\n * Content rendered at the bottom of the sidebar — typically user account\n * info, a settings link, or version text.\n *\n * **Responsive action pattern:** `AppBar` hides its `actions` slot on mobile\n * via CSS (below 768 px). If those actions must remain accessible on mobile,\n * pass the same node here so it appears at the foot of the mobile overlay.\n *\n * @example\n * ```tsx\n * // Month selector: visible in AppBar on desktop, in Sidebar footer on mobile\n * const isMobile = useIsMobile()\n * const monthPicker = <MonthSelect value={month} onChange={setMonth} />\n *\n * <Sidebar footer={isMobile ? monthPicker : undefined} … />\n * <AppBar actions={monthPicker} … />\n * ```\n */\n footer?: ReactNode\n /**\n * When `true`, the sidebar collapses to icon-only mode (52px wide).\n * Labels, counts, and group headings are hidden; glyphs remain.\n */\n collapsed?: boolean\n /** Called when the user clicks the collapse toggle button. */\n onCollapsedChange?: (collapsed: boolean) => void\n /**\n * Controlled mobile overlay open state. When true, sidebar slides in from\n * the left as a fixed overlay below `mobileBreakpoint`.\n */\n mobileOpen?: boolean\n /** Called when the backdrop is clicked or the sidebar should close on mobile. */\n onMobileOpenChange?: (open: boolean) => void\n /** Viewport width (px) below which mobile overlay mode activates. @default 768 */\n mobileBreakpoint?: number\n className?: string\n}\n\n/**\n * Vertical navigation sidebar. Renders one or more labelled groups of nav items,\n * each of which can be a link (`href`) or a button (`onItemClick`).\n *\n * Active state is driven by `activeId` matching an item's `id`. The active item\n * receives a filled accent-coloured background.\n *\n * @example\n * ```tsx\n * <Sidebar\n * activeId={currentPage}\n * onItemClick={navigate}\n * groups={[\n * {\n * label: 'Workshop',\n * items: [\n * { id: 'recipes', label: 'Recipes', glyph: 'book', count: 12 },\n * { id: 'ingredients', label: 'Ingredients', glyph: 'flask' },\n * ],\n * },\n * {\n * items: [{ id: 'settings', label: 'Settings', glyph: 'key' }],\n * },\n * ]}\n * footer={<Body variant=\"small\">v0.1.0</Body>}\n * />\n * ```\n */\nexport function Sidebar({\n groups,\n activeId,\n onItemClick,\n renderLink,\n footer,\n collapsed,\n onCollapsedChange,\n mobileOpen,\n onMobileOpenChange,\n className,\n}: SidebarProps) {\n const isMobileMode = mobileOpen !== undefined\n const searchCtx = useAppBarSearch()\n const searchConfig = searchCtx?.searchConfig ?? null\n\n const nav = (\n <nav\n className={[\n styles.sidebar,\n isMobileMode ? styles.sidebarMobile : undefined,\n className,\n ].filter(Boolean).join(' ')}\n data-collapsed={collapsed ?? false}\n data-mobile-open={isMobileMode ? String(mobileOpen) : undefined}\n >\n <button\n className={styles.collapseToggle}\n onClick={() => onCollapsedChange?.(!collapsed)}\n aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n title={collapsed ? 'Expand' : 'Collapse'}\n >\n {collapsed ? '›' : '‹'}\n </button>\n {groups.map((group, i) => (\n <NavGroup\n key={i}\n label={group.label}\n items={group.items}\n activeId={activeId}\n onItemClick={onItemClick}\n renderLink={renderLink}\n collapsed={collapsed ?? false}\n />\n ))}\n <div className={styles.bottomSlot}>\n {searchConfig && (\n <div className={styles.mobileSearch}>\n <Glyph name=\"compass\" size={12} aria-hidden=\"true\" />\n <input\n type=\"search\"\n placeholder={searchConfig.placeholder}\n className={styles.mobileSearchInput}\n aria-label=\"Search\"\n onFocus={() => searchConfig.onSearchFocus?.()}\n onKeyDown={(e) => {\n if (e.key === 'Enter') searchConfig.onSearch?.((e.target as HTMLInputElement).value)\n }}\n />\n {searchConfig.kbd && <span>{searchConfig.kbd}</span>}\n </div>\n )}\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n </nav>\n )\n\n if (isMobileMode) {\n return (\n <>\n {mobileOpen && (\n <div\n className={styles.backdrop}\n onClick={() => onMobileOpenChange?.(false)}\n aria-hidden=\"true\"\n />\n )}\n {nav}\n </>\n )\n }\n\n return nav\n}\n\ninterface NavGroupProps {\n label: string | undefined\n items: NavItemDef[]\n activeId: string | undefined\n onItemClick: ((id: string) => void) | undefined\n renderLink: ComponentType<SidebarLinkProps> | undefined\n collapsed: boolean\n}\n\nfunction NavGroup({ label, items, activeId, onItemClick, renderLink, collapsed }: NavGroupProps) {\n return (\n <div className={styles.group}>\n {label && !collapsed && <span className={styles.groupLabel}>{label}</span>}\n {items.map(item => (\n <NavItem\n key={item.id}\n item={item}\n active={item.id === activeId}\n onClick={() => onItemClick?.(item.id)}\n renderLink={renderLink}\n collapsed={collapsed}\n />\n ))}\n </div>\n )\n}\n\ninterface NavItemProps {\n item: NavItemDef\n active: boolean\n onClick: () => void\n renderLink: ComponentType<SidebarLinkProps> | undefined\n collapsed: boolean\n}\n\nfunction NavItem({ item, active, onClick, renderLink, collapsed }: NavItemProps) {\n const content = (\n <>\n {item.glyph\n ? <Glyph name={item.glyph} size={14} aria-hidden=\"true\" />\n : <span />}\n {!collapsed && <span>{item.label}</span>}\n {!collapsed && item.count !== undefined && (\n <span className={item.countTone === 'accent' ? styles.countAccent : styles.navItemCount}>\n {item.count}\n </span>\n )}\n </>\n )\n\n const titleProp = collapsed ? { title: item.label } : {}\n\n if (item.href) {\n const LinkComponent = renderLink ?? 'a'\n return (\n <LinkComponent\n href={item.href}\n className={styles.navItem}\n data-active={active}\n aria-current={active ? 'page' : undefined}\n {...titleProp}\n >\n {content}\n </LinkComponent>\n )\n }\n\n return (\n <button\n className={styles.navItem}\n data-active={active}\n onClick={onClick}\n aria-current={active ? 'page' : undefined}\n {...titleProp}\n >\n {content}\n </button>\n )\n}\n","import 'src/components/Skeleton/Skeleton.css.ts.vanilla.css?source=QGtleWZyYW1lcyBTa2VsZXRvbl9zaGltbWVyX18xMTJsYWl3MCB7CiAgMCUgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwMCUgMDsKICB9CiAgMTAwJSB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMDAlIDA7CiAgfQp9Ci5Ta2VsZXRvbl9za2VsZXRvbl9fMTEybGFpdzEgewogIGRpc3BsYXk6IGJsb2NrOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbV9fMWFjaWJ4YjE5KTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlX18xYWNpYnhiMyk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KAogIDkwZGVnLAogIHZhcigtLWNvbG9yLXN1cmZhY2VfXzFhY2lieGIzKSAwJSwKICB2YXIoLS1jb2xvci1zdXJmYWNlMl9fMWFjaWJ4YjQpIDUwJSwKICB2YXIoLS1jb2xvci1zdXJmYWNlX18xYWNpYnhiMykgMTAwJQopOwogIGJhY2tncm91bmQtc2l6ZTogMjAwJSAxMDAlOwogIGFuaW1hdGlvbjogU2tlbGV0b25fc2hpbW1lcl9fMTEybGFpdzAgMS40cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKfQouU2tlbGV0b25fbGluZV9fMTEybGFpdzIgewogIGhlaWdodDogMTJweDsKICB3aWR0aDogMTAwJTsKfQouU2tlbGV0b25fYmxvY2tfXzExMmxhaXczIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDgwcHg7Cn0';\nexport var block = 'Skeleton_block__112laiw3 Skeleton_skeleton__112laiw1';\nexport var line = 'Skeleton_line__112laiw2 Skeleton_skeleton__112laiw1';\nexport var skeleton = 'Skeleton_skeleton__112laiw1';","import type { CSSProperties } from 'react'\nimport * as styles from './Skeleton.css'\n\nexport interface SkeletonProps {\n /**\n * Number of lines to render, stacked with a small gap between them.\n * @default 1\n */\n lines?: number\n /**\n * CSS width of each line (e.g. `'60%'`, `'120px'`). Accepts a single value applied\n * to all lines, or an array mapping a width to each line positionally — useful for\n * creating a natural-looking paragraph with a short last line.\n * @default '100%'\n */\n width?: string | string[]\n /**\n * When true, renders a tall rectangular block instead of line(s) — useful for\n * placeholder cards, images, or chart areas.\n * @default false\n */\n block?: boolean\n /**\n * Overrides the height of a block skeleton (e.g. `'120px'`). Has no effect when\n * `block` is false.\n */\n height?: string | undefined\n /** Inline style escape hatch — useful for shape overrides (e.g. `borderRadius: '50%'` for a circular avatar). */\n style?: CSSProperties | undefined\n className?: string | undefined\n}\n\n/**\n * Skeleton placeholder that communicates loading state without layout shift.\n *\n * @example\n * // Single line\n * <Skeleton />\n *\n * // Paragraph — three lines, last one shorter\n * <Skeleton lines={3} width={['100%', '100%', '60%']} />\n *\n * // Tall block (e.g. chart placeholder)\n * <Skeleton block height=\"200px\" />\n */\nexport const Skeleton = ({ lines = 1, width = '100%', block = false, height, style, className }: SkeletonProps) => {\n if (block) {\n return (\n <span\n className={[styles.block, className].filter(Boolean).join(' ')}\n style={height ? { height, ...style } : style}\n aria-hidden=\"true\"\n />\n )\n }\n\n const widths = Array.isArray(width) ? width : Array.from({ length: lines }, () => width as string)\n\n if (lines === 1) {\n return (\n <span\n className={[styles.line, className].filter(Boolean).join(' ')}\n style={widths[0] !== '100%' ? { width: widths[0], ...style } : style}\n aria-hidden=\"true\"\n />\n )\n }\n\n return (\n <span\n style={{ display: 'flex', flexDirection: 'column', gap: '6px', width: '100%' }}\n aria-hidden=\"true\"\n >\n {Array.from({ length: lines }, (_, i) => (\n <span\n key={i}\n className={styles.line}\n style={widths[i] !== '100%' ? { width: widths[i] } : undefined}\n />\n ))}\n </span>\n )\n}\n","import 'src/components/ProgressBar/ProgressBar.css.ts.vanilla.css?source=LlByb2dyZXNzQmFyX3RyYWNrX18xNjg2aTFrMCB7CiAgd2lkdGg6IDEwMCU7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYm9yZGVyTXV0ZV9fMWFjaWJ4YmIpOwogIG92ZXJmbG93OiBoaWRkZW47CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW5vbmVfXzFhY2lieGIxNyk7Cn0KLlByb2dyZXNzQmFyX3RyYWNrU2l6ZV9zbV9fMTY4NmkxazEgewogIGhlaWdodDogNHB4Owp9Ci5Qcm9ncmVzc0Jhcl90cmFja1NpemVfbWRfXzE2ODZpMWsyIHsKICBoZWlnaHQ6IDhweDsKfQouUHJvZ3Jlc3NCYXJfZmlsbF9fMTY4NmkxazMgewogIGhlaWdodDogMTAwJTsKICB0cmFuc2l0aW9uOiB3aWR0aCAwLjJzIGVhc2U7CiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKfQouUHJvZ3Jlc3NCYXJfZmlsbFRvbmVfbmV1dHJhbF9fMTY4NmkxazQgewogIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWZnX18xYWNpYnhiNSk7Cn0KLlByb2dyZXNzQmFyX2ZpbGxUb25lX2FjY2VudF9fMTY4NmkxazUgewogIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFjY2VudF9fMWFjaWJ4YmQpOwp9';\nexport var fill = 'ProgressBar_fill__1686i1k3';\nexport var fillTone = {neutral:'ProgressBar_fillTone_neutral__1686i1k4',accent:'ProgressBar_fillTone_accent__1686i1k5'};\nexport var track = 'ProgressBar_track__1686i1k0';\nexport var trackSize = {sm:'ProgressBar_trackSize_sm__1686i1k1',md:'ProgressBar_trackSize_md__1686i1k2'};","import { Skeleton } from '../Skeleton/Skeleton'\nimport * as styles from './ProgressBar.css'\n\nexport interface ProgressBarProps {\n /** 0–100 */\n value: number\n size?: 'sm' | 'md'\n tone?: 'neutral' | 'accent'\n /** When true, renders a skeleton placeholder at the same height as the track. */\n loading?: boolean\n className?: string\n}\n\nconst trackHeightPx: Record<'sm' | 'md', string> = { sm: '4px', md: '8px' }\n\nexport function ProgressBar({ value, size = 'md', tone = 'neutral', loading = false, className }: ProgressBarProps) {\n if (loading) {\n return (\n <Skeleton\n block\n height={trackHeightPx[size]}\n className={className}\n style={{ borderRadius: 0 }}\n />\n )\n }\n const pct = Math.min(100, Math.max(0, value))\n return (\n <div\n className={[styles.track, styles.trackSize[size], className].filter(Boolean).join(' ')}\n role=\"progressbar\"\n aria-valuenow={pct}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n className={[styles.fill, styles.fillTone[tone]].join(' ')}\n style={{ width: `${pct}%` }}\n />\n </div>\n )\n}\n","import 'src/components/Avatar/Avatar.css.ts.vanilla.css?source=LkF2YXRhcl9hdmF0YXJfXzE2ZjZxbGYwIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1waWxsX18xYWNpYnhiMWEpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWRpc3BsYXlfXzFhY2lieGJzKTsKICBmb250LXdlaWdodDogOTAwOwogIGxpbmUtaGVpZ2h0OiAxOwogIHVzZXItc2VsZWN0OiBub25lOwogIGZsZXgtc2hyaW5rOiAwOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcl9fMWFjaWJ4YjkpOwp9Ci5BdmF0YXJfYXZhdGFyX3NpemVfc21fXzE2ZjZxbGYxIHsKICB3aWR0aDogMjRweDsKICBoZWlnaHQ6IDI0cHg7CiAgZm9udC1zaXplOiAxMXB4Owp9Ci5BdmF0YXJfYXZhdGFyX3NpemVfbWRfXzE2ZjZxbGYyIHsKICB3aWR0aDogMzJweDsKICBoZWlnaHQ6IDMycHg7CiAgZm9udC1zaXplOiAxNHB4Owp9Ci5BdmF0YXJfYXZhdGFyX3NpemVfbGdfXzE2ZjZxbGYzIHsKICB3aWR0aDogNDBweDsKICBoZWlnaHQ6IDQwcHg7CiAgZm9udC1zaXplOiAxOHB4Owp9Ci5BdmF0YXJfYXZhdGFyX3RvbmVfbW9zc19fMTZmNnFsZjQgewogIGJhY2tncm91bmQ6ICM0YTVhMzI7CiAgY29sb3I6IHZhcigtLWNvbG9yLWJnX18xYWNpYnhiMCk7Cn0KLkF2YXRhcl9hdmF0YXJfdG9uZV9uZXV0cmFsX18xNmY2cWxmNSB7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmcyX18xYWNpYnhiMSk7CiAgY29sb3I6IHZhcigtLWNvbG9yLWZnX18xYWNpYnhiNSk7Cn0KLkF2YXRhcl9pbml0aWFsc19fMTZmNnFsZjYgewogIGRpc3BsYXk6IGJsb2NrOwogIGxpbmUtaGVpZ2h0OiAxOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwLjA4ZW0pOwp9';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var avatar = _7a468({defaultClassName:'Avatar_avatar__16f6qlf0',variantClassNames:{size:{sm:'Avatar_avatar_size_sm__16f6qlf1',md:'Avatar_avatar_size_md__16f6qlf2',lg:'Avatar_avatar_size_lg__16f6qlf3'},tone:{moss:'Avatar_avatar_tone_moss__16f6qlf4',neutral:'Avatar_avatar_tone_neutral__16f6qlf5'}},defaultVariants:{size:'md',tone:'neutral'},compoundVariants:[]});\nexport var initials = 'Avatar_initials__16f6qlf6';","import { Skeleton } from '../Skeleton/Skeleton'\nimport * as styles from './Avatar.css'\n\nexport type AvatarTone = 'moss' | 'neutral'\nexport type AvatarSize = 'sm' | 'md' | 'lg'\n\n/** Props for the {@link Avatar} component. */\nexport interface AvatarProps {\n /** Up to 2 characters, uppercased automatically. */\n initials: string\n /** Size variant — 24/32/40 px. @default 'md' */\n size?: AvatarSize\n /** Tone. @default 'neutral' */\n tone?: AvatarTone\n /** When true, renders a circular skeleton placeholder instead of the initials. */\n loading?: boolean\n className?: string\n}\n\n/**\n * Circular avatar displaying up to two initials.\n *\n * @example\n * ```tsx\n * <Avatar initials=\"FW\" size=\"md\" tone=\"moss\" />\n * ```\n */\nconst avatarPx: Record<AvatarSize, string> = { sm: '24px', md: '32px', lg: '40px' }\n\nexport function Avatar({ initials, size = 'md', tone = 'neutral', loading = false, className }: AvatarProps) {\n if (loading) {\n const px = avatarPx[size]\n return (\n <Skeleton\n block\n height={px}\n className={className}\n style={{ width: px, borderRadius: '50%', flexShrink: 0 }}\n />\n )\n }\n const display = initials.slice(0, 2).toUpperCase()\n return (\n <span\n className={[styles.avatar({ size, tone }), className].filter(Boolean).join(' ')}\n aria-label={`User: ${display}`}\n >\n <span className={styles.initials}>{display}</span>\n </span>\n )\n}\n","import 'src/components/AppBar/AppBar.css.ts.vanilla.css?source=#H4sIAAAAAAAAA71WS4-bMBC-51dYPW0ORJBsXqwqdateVlWrSnusqsiYIbgB27VNHlvtf68MGMIjj26jnhDgmW--bx6e0aMQH7Fc4eKxyn5t6HLpot8DhEKqRIIPPooS2D8MEMIJXTOHakiVjwgwDdJ8joGuY-2j6UzkxwQOQ8rWPnLRFss7x1ECE3CUmK1WHiY02AeeOzQnAy5DkE7AteapjzyxR4onNCztCE-4-WsOVabLwhKTzVryjIV-47DKZIQJVKcn-ek1Fv6lWAxJR8WSso2P3IfB62BUahNIzEIrjfdX0vQA31fAh2twv-IULPY4x444006EU5ocrO_8UxlT5V4V7s2vXZmhpetW3xR9AR95iyJnuXpNKaN15Wqau0pAa5A5kTy9jjtyPUg7IX-iW5pnrIh6kke9o6GO8xQfl4xXlsypdBa5_5LpOqPBsAP4nAUW7P6sRAEPa330sK1FGVxDslkhWZu7O_IWhjpCGvba0RIzFXGZ-igTAiTBCk7KOqlCmDe4KMCSxM-mTirxpgWfBPY-8ozHlDKn1NLtGj9KwNZ01ja9YdEWeblJxwZ1mRWNWI2Pmdi3wphWR1-Gl8V4YiLTVo15Ww1LgXEG7fjydAosgemHt5fT5PrW4plOKAMbzXkmvi8STCDmSQgyp9UL0eiaRU-lfQ6qqbY42zYpZ7zylHV4umd4Nmv9usLptPtRTRi7aYG3i6mGojSMbjuJxTFHTDTlTFmGy_83t0vkJ8bqPsa3hT8GM2bfKNnUYMG_go0rsF0P2PMOaxJbMNIY77MT8_1taS_3A4lDmikbZPHmmE6p7_CiukgmlalBwalldy5NPWS-h1hjx2RwC-_faZnBux85wapDx70UTnW0w6NIgS4vvgvgfsRJppwtVTRI4BrYwk0FHfZCj1vQW6zrVS88Tt940UyffT81uzuse2ZAZ76_4e64tpR_ZkrT6OAQzjQwffzrtluT3RRaxYVQpsyWAAkQXQ_zDymEFKO7FO_tdTWfzcV-mGt_eXc6EsDeVq9tw84OdMHo1L5wwez0bOs1fP0DDDsV1GAMAAA';\nexport var accentPicker = 'AppBar_accentPicker__uqki99b';\nexport var accentSwatch = 'AppBar_accentSwatch__uqki99c';\nexport var actions = 'AppBar_actions__uqki999';\nexport var actionsInner = 'AppBar_actionsInner__uqki99a';\nexport var appBar = 'AppBar_appBar__uqki990';\nexport var avatar = 'AppBar_avatar__uqki99d';\nexport var brand = 'AppBar_brand__uqki991';\nexport var brandDivider = 'AppBar_brandDivider__uqki993';\nexport var brandName = 'AppBar_brandName__uqki992';\nexport var brandSub = 'AppBar_brandSub__uqki994';\nexport var searchArea = 'AppBar_searchArea__uqki996';\nexport var searchInput = 'AppBar_searchInput__uqki997';\nexport var searchKbd = 'AppBar_searchKbd__uqki998';\nexport var searchSpacer = 'AppBar_searchSpacer__uqki995';","import { useEffect, type ReactNode } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport { Button } from '../Button/Button'\nimport { Avatar } from '../Avatar/Avatar'\nimport { accentColors, accentColorNames } from '../../tokens/accents'\nimport type { AccentColor } from '../../types/theme'\nimport { useAppBarSearch } from '../../context/AppBarSearchContext'\nimport * as styles from './AppBar.css'\n\n/** Props for the {@link AppBar} component. */\nexport interface AppBarProps {\n /**\n * Primary brand name shown beside the hex mark.\n * @default 'Achery'\n */\n brandName?: string\n /** Secondary brand descriptor shown after a divider — e.g. a workspace or project name. */\n brandSub?: string\n /**\n * Show the central search field.\n * @default true\n */\n showSearch?: boolean\n /** Placeholder text for the search field. @default 'Search…' */\n searchPlaceholder?: string\n /** Keyboard shortcut hint displayed inside the search field (display only). */\n searchKbd?: string\n /**\n * Arbitrary content inserted after the built-in controls (theme toggle, accent\n * picker, new button) and before the avatar. Use for custom action buttons.\n *\n * **Mobile note:** the `actions` slot (along with search and `brandSub`) is\n * hidden via CSS below 768 px. If an action must remain reachable on mobile,\n * also pass it as `footer` to the accompanying `<Sidebar>` so it appears in\n * the mobile overlay. See {@link SidebarProps.footer} for a usage example.\n */\n actions?: ReactNode\n /** Currently active accent colour — drives the accent picker selection indicator. */\n accent?: AccentColor\n /**\n * Called when the user selects a new accent colour via the built-in picker.\n * When omitted, the accent picker is hidden.\n */\n onAccentChange?: (accent: AccentColor) => void\n /**\n * Called when the theme toggle button is clicked.\n * When omitted, the theme toggle is hidden.\n */\n onToggleTheme?: () => void\n /** Pass `true` when the dark theme is active to show the correct toggle icon. */\n isDark?: boolean\n /**\n * When provided, renders a hamburger menu button at the leading edge of the bar.\n * Use to toggle the mobile sidebar overlay.\n */\n onMenuClick?: () => void\n /** Called when the user presses Enter in the search field. */\n onSearch?: (query: string) => void\n /** Called when the search input gains focus. */\n onSearchFocus?: () => void\n /** Up to two initials rendered in the avatar circle at the trailing edge. */\n avatarInitials?: string\n /**\n * Called when the \"New\" button is clicked.\n * When omitted, the new button is hidden.\n */\n onNewClick?: () => void\n className?: string\n}\n\n/**\n * Top-of-page application bar. Contains brand identity, search, theme and\n * accent controls, and a slot for custom actions.\n *\n * Each built-in slot is opt-in — only provide the callback/prop to show it:\n * - `onAccentChange` → renders accent colour picker swatches\n * - `onToggleTheme` → renders sun/moon theme toggle button\n * - `onNewClick` → renders accent \"New\" button\n * - `avatarInitials` → renders user avatar circle\n *\n * @example\n * ```tsx\n * const { theme, toggleTheme, accent, setAccent } = useTheme()\n *\n * <AppBar\n * brandName=\"Achery\"\n * brandSub=\"Field Guide\"\n * isDark={theme === 'dark'}\n * onToggleTheme={toggleTheme}\n * accent={accent}\n * onAccentChange={setAccent}\n * onNewClick={() => setModalOpen(true)}\n * avatarInitials=\"FW\"\n * />\n * ```\n */\nexport function AppBar({\n brandName = 'Achery',\n brandSub,\n showSearch = true,\n searchPlaceholder = 'Search…',\n searchKbd,\n actions,\n accent = 'terracotta',\n onAccentChange,\n onToggleTheme,\n isDark,\n avatarInitials,\n onNewClick,\n onMenuClick,\n onSearch,\n onSearchFocus,\n className,\n}: AppBarProps) {\n const searchCtx = useAppBarSearch()\n\n // Publish search config into context so Sidebar can render it in mobile overlay\n useEffect(() => {\n if (!searchCtx || !showSearch) return\n searchCtx.setSearchConfig({\n placeholder: searchPlaceholder,\n ...(searchKbd !== undefined && { kbd: searchKbd }),\n ...(onSearch !== undefined && { onSearch }),\n ...(onSearchFocus !== undefined && { onSearchFocus }),\n })\n return () => searchCtx.setSearchConfig(null)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showSearch, searchPlaceholder, searchKbd, onSearch, onSearchFocus])\n\n return (\n <header className={[styles.appBar, className].filter(Boolean).join(' ')}>\n {onMenuClick && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n glyph=\"menu\"\n onClick={onMenuClick}\n aria-label=\"Open navigation menu\"\n />\n )}\n <div className={styles.brand}>\n <Glyph name=\"hex\" size={20} aria-hidden=\"true\" />\n <span className={styles.brandName}>{brandName}</span>\n {brandSub && (\n <>\n <span className={styles.brandDivider} />\n <span className={styles.brandSub}>{brandSub}</span>\n </>\n )}\n </div>\n\n <div className={showSearch ? styles.searchArea : styles.searchSpacer}>\n {showSearch && (\n <>\n <Glyph name=\"compass\" size={12} aria-hidden=\"true\" />\n <input\n type=\"search\"\n placeholder={searchPlaceholder}\n className={styles.searchInput}\n aria-label=\"Search\"\n onFocus={() => onSearchFocus?.()}\n onKeyDown={(e) => {\n if (e.key === 'Enter') onSearch?.((e.target as HTMLInputElement).value)\n }}\n />\n {searchKbd && <span className={styles.searchKbd}>{searchKbd}</span>}\n </>\n )}\n </div>\n\n <div className={styles.actions}>\n <div className={styles.actionsInner}>\n {onAccentChange && (\n <div className={styles.accentPicker} role=\"group\" aria-label=\"Brand colour\">\n {accentColorNames.map(name => (\n <button\n key={name}\n className={styles.accentSwatch}\n data-active={name === accent}\n onClick={() => onAccentChange(name)}\n aria-label={name}\n aria-pressed={name === accent}\n style={{ background: accentColors[name].main }}\n />\n ))}\n </div>\n )}\n\n {onToggleTheme && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n glyph={isDark ? 'sun' : 'moon'}\n onClick={onToggleTheme}\n aria-label={isDark ? 'Switch to light mode' : 'Switch to dark mode'}\n />\n )}\n\n {onNewClick && (\n <Button variant=\"accent\" size=\"sm\" glyph=\"plus\" onClick={onNewClick}>\n New\n </Button>\n )}\n\n {actions}\n </div>\n\n {avatarInitials && (\n <Avatar initials={avatarInitials} size=\"sm\" tone=\"neutral\" />\n )}\n </div>\n </header>\n )\n}\n","import 'src/components/Table/Table.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8VXTY_bNhC9768gAhSIDlz4Y3ezyyCHtuihh_TiAj0ExYISRzYbihTIkS1v0f9ekJJJydHa62yCXAybHzPz3rwZjq__5LmCR_Sff1le12AfH-d8gfnezci_V4TspMANI_PZ7Kf3V4TkxgqwjMzrljijpCBbbt9SWhhlLO12vYVC5m3-kL2_-u_qeuBjVVijVHQxDy7MFmypzI62jPAGTfJDc4NoqtPuPjYI0WX-hcvobPE8Hm9P8doBI4dvfrM0GumWW8k1Ut1UYGXBCPK8Udz6BTd0tgEuorNlcJbz4vPamkYLNg58vYgRz7ML8Y7oJaQ2TqI0mhGHsvi892toakZm_tsTlVpAy8h8FGqM8ybEGYCWvJJqfwg0LOVG7KM7zCInTj6B57Bu49IO5HqDjNzNgl8FiGCpq3kh9ZqR2fX8BqoQG7RI0XLtSmMrRhovuoJ3jAecY67KAVd3HWIuRDD6ULf9Ue8HqKvvEq2zLHrjSq41IwpK9Gu7jUTorjCizc7y2i83zgcMCgr0yxpGjK2MHcvpNjBXNNb5iGsjNYI9c4VtvNa7i1NIY_S3Qxk7Y_F3LWTB0aTyvAtmhHS14ntGpFZSAy0VhJxU3K6lph4yO-Io0bkLFBmfI9z7HN3631uwKAuuDrRVUgg1IiMF8a6T-SuKlZCghV7CqWD6u6Kx3G_RkjtMyS2zfh-4A2qawZbMngl1QP5L63LajuIOabGRSkyhP1bO4OYnwZH3EgPx4Q3aBt78fXGnaKnbcGF2PukOkCzrlszIbHSPFwXoxIoYgUlt6v415b_syv-8kgcl63vGuZo9L0Dx0WgTQTycBFH1R4OH5gsQ8xMgxo0nuTdG5TzllQf_EeIY3U20sc_OAf_6RyC2gUP9B-qoRKgcI14KvjcRsub1qQAHIKGqcb9Cjql95QHnsKMmw8-gn88Sxptj_Pdpb5Hy8m11uIz33g3R1XwtdWgsEV0x7qdniPyncSjLPS2MRtDISAcqB9wB6Geovo3BPGUnSPsKyYQH_8K--yPY_tVotEa5yLq4iPUJTo9fM28hTDsTOToYGgYGvzSIAxnA9-qIx1PMsON3b0aarse_qeVCNo6R3nyUzaJuyV3v8ngOIaSSmvbT7uK-OzVdu2Fw2PTz2_wMPd0ryrTBt0xI58-J7OQT5hpb8iKpb5m97NU4HcbBd_cPIo0wyyEbAkreKDyy9QffHpkrU9L7TPa0TnB4ofD7yH8uUG5TK11_G8YmXvmpcXyiEH9TStZOpkLcvEb3ixdTc6Te_uKp0dtzuJJPsArbMV75veI9VafjySweHLbii57tF9T3uNslMttssuzP0jacguN_37OC_h_0xYczKBAAAA';\nexport var emptyState = 'Table_emptyState__1a2tbysb';\nexport var pageButton = 'Table_pageButton__1a2tbyse';\nexport var pageButtonActive = 'Table_pageButtonActive__1a2tbysg Table_pageButton__1a2tbyse';\nexport var pageNavButton = 'Table_pageNavButton__1a2tbysf Table_pageButton__1a2tbyse';\nexport var pageSizeSelect = 'Table_pageSizeSelect__1a2tbysi';\nexport var pagination = 'Table_pagination__1a2tbysc';\nexport var paginationControls = 'Table_paginationControls__1a2tbysd';\nexport var paginationEllipsis = 'Table_paginationEllipsis__1a2tbysh';\nexport var sortIndicator = 'Table_sortIndicator__1a2tbys6';\nexport var table = 'Table_table__1a2tbys2';\nexport var tableScroll = 'Table_tableScroll__1a2tbys1';\nexport var tableWrapper = 'Table_tableWrapper__1a2tbys0';\nexport var td = 'Table_td__1a2tbys8';\nexport var tdMono = 'Table_tdMono__1a2tbys9 Table_td__1a2tbys8';\nexport var th = 'Table_th__1a2tbys4';\nexport var thSortable = 'Table_thSortable__1a2tbys5 Table_th__1a2tbys4';\nexport var thead = 'Table_thead__1a2tbys3';\nexport var toolbar = 'Table_toolbar__1a2tbysa';\nexport var tr = 'Table_tr__1a2tbys7';","import { useState, useMemo } from 'react'\nimport type { ReactNode } from 'react'\nimport type { SortDirection } from '../../types/components'\nimport { Glyph } from '../../glyphs/Glyph'\nimport { Skeleton } from '../Skeleton/Skeleton'\nimport * as styles from './Table.css'\n\n/** Column definition for the {@link Table} component. */\nexport interface ColumnDef<T> {\n /** Field key on the row object — used for sorting and as the default cell value. */\n key: string\n /** Column header label. */\n label: string\n /** When true, the column header is clickable and cycles asc → desc → unsorted. */\n sortable?: boolean\n /** Render cell content in monospace — useful for IDs, codes, and measurements. */\n mono?: boolean\n /**\n * Custom cell renderer. Receives the full row object; return any React node.\n * When omitted, falls back to `String(row[key])`.\n */\n render?: (row: T) => ReactNode\n /** CSS width value applied to the column (e.g. `'120px'`, `'20%'`). */\n width?: string\n}\n\n/** Props for the {@link Table} component. */\nexport interface TableProps<T extends { [K in string]: unknown }> {\n /** Column configuration array — order determines display order. */\n columns: ColumnDef<T>[]\n /** Array of row data objects. */\n data: T[]\n /** Returns a stable unique string key for a row — used as the React key and for selection. */\n rowKey: (row: T) => string\n /**\n * Set of row keys that are currently selected. Selected rows receive a\n * left accent-coloured rule.\n */\n selectedKeys?: string[]\n /**\n * Called when a row is clicked. Receives the row's key and the full row object.\n * When provided, rows become clickable (pointer cursor).\n */\n onRowClick?: (key: string, row: T) => void\n /**\n * Controlled sort column key. Provide alongside `sortDir` and `onSortChange`\n * for fully controlled sort state.\n */\n sortKey?: string\n /** Controlled sort direction. Use with `sortKey`. */\n sortDir?: SortDirection\n /** Initial sort column key for uncontrolled usage. */\n defaultSortKey?: string\n /**\n * Initial sort direction for uncontrolled usage.\n * @default null\n */\n defaultSortDir?: SortDirection\n /**\n * Called when the sort state changes. Receives the column key and new direction.\n * For controlled mode, apply these values to `sortKey`/`sortDir`.\n * For uncontrolled mode, use this for side-effects (analytics, persistence) only.\n */\n onSortChange?: (key: string, dir: SortDirection) => void\n /** Current page index (0-based). Provide with `pageSize` for pagination. */\n pageIndex?: number\n /** Number of rows per page. Enables the pagination row below the table. */\n pageSize?: number\n /** Total row count across all pages — used to compute total page count. */\n totalRows?: number\n /** Called when the user navigates to a new page. */\n onPageChange?: (page: number) => void\n /**\n * Called when the user selects a new page size. Provide alongside `pageSizeOptions`.\n * Caller is responsible for resetting `pageIndex` to 0.\n */\n onPageSizeChange?: (size: number) => void\n /**\n * List of page size options rendered in a selector next to the pagination controls.\n * When omitted, no size selector is shown.\n * @example [25, 50, 100]\n */\n pageSizeOptions?: number[]\n /**\n * Number of page buttons to show either side of the current page.\n * @default 2\n */\n paginationWindow?: number\n /**\n * Fixed height for the table wrapper (e.g. `'600px'`, `'80vh'`). When set, the table\n * wrapper becomes a fixed-height flex column: the header and pagination stay in place\n * and only the body scrolls. When omitted, the table grows with its content.\n */\n height?: string\n /** Content rendered above the table in a toolbar strip. */\n toolbar?: ReactNode\n /** Rendered when `data` is empty, in place of the table body. @default \"No data.\" */\n emptyState?: ReactNode\n /**\n * When true, the table body renders skeleton placeholder rows instead of data.\n * The header, toolbar, and pagination controls remain visible so the layout\n * doesn't jump when data arrives. Row count defaults to `pageSize` (or 10).\n */\n loading?: boolean\n className?: string\n}\n\nconst skeletonWidths = ['75%', '90%', '65%', '85%', '70%', '95%', '60%', '80%']\n\n/** Builds the page number window: always includes 0 and last, current ± window, with nulls for gaps. */\nfunction buildPageWindow(current: number, total: number, window: number): (number | null)[] {\n const pages = new Set<number>()\n pages.add(0)\n pages.add(total - 1)\n for (let i = Math.max(0, current - window); i <= Math.min(total - 1, current + window); i++) {\n pages.add(i)\n }\n const sorted = Array.from(pages).sort((a, b) => a - b)\n const result: (number | null)[] = []\n for (let i = 0; i < sorted.length; i++) {\n const page = sorted[i]!\n if (i > 0 && page - sorted[i - 1]! > 1) result.push(null)\n result.push(page)\n }\n return result\n}\n\n/**\n * Data table with sortable columns, row selection, and hybrid controlled/uncontrolled\n * sort state.\n *\n * **Sort modes:**\n * - Uncontrolled: provide `defaultSortKey`/`defaultSortDir`; table manages state internally.\n * - Controlled: provide `sortKey` + `sortDir` + `onSortChange`; caller owns state.\n *\n * Sorting cycles through asc → desc → unsorted on repeated clicks of the same column.\n * Sort is performed client-side via `String.localeCompare` with `numeric: true`.\n *\n * @example\n * ```tsx\n * <Table\n * columns={[\n * { key: 'name', label: 'Name', sortable: true },\n * { key: 'status', label: 'Status', render: r => <Badge tone={r.tone}>{r.status}</Badge> },\n * { key: 'id', label: 'ID', mono: true, width: '100px' },\n * ]}\n * data={recipes}\n * rowKey={r => r.id}\n * defaultSortKey=\"name\"\n * onRowClick={(key, row) => navigate(`/recipes/${key}`)}\n * />\n * ```\n */\nexport function Table<T extends { [K in string]: unknown }>({\n columns,\n data,\n rowKey,\n selectedKeys,\n onRowClick,\n sortKey: controlledSortKey,\n sortDir: controlledSortDir,\n defaultSortKey,\n defaultSortDir = null,\n onSortChange,\n pageIndex = 0,\n pageSize,\n totalRows,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions,\n paginationWindow = 2,\n height,\n toolbar,\n emptyState,\n loading = false,\n className,\n}: TableProps<T>) {\n const [internalSortKey, setInternalSortKey] = useState<string | null>(defaultSortKey ?? null)\n const [internalSortDir, setInternalSortDir] = useState<SortDirection>(defaultSortDir)\n\n const isControlled = controlledSortKey !== undefined\n const activeSortKey = isControlled ? (controlledSortKey ?? null) : internalSortKey\n const activeSortDir = isControlled ? (controlledSortDir ?? null) : internalSortDir\n\n const handleSort = (key: string) => {\n let nextDir: SortDirection\n if (activeSortKey === key) {\n nextDir = activeSortDir === 'asc' ? 'desc' : activeSortDir === 'desc' ? null : 'asc'\n } else {\n nextDir = 'asc'\n }\n const nextKey = nextDir === null ? null : key\n\n if (!isControlled) {\n setInternalSortKey(nextKey)\n setInternalSortDir(nextDir)\n }\n onSortChange?.(key, nextDir)\n }\n\n const sortedData = useMemo(() => {\n if (!activeSortKey || !activeSortDir) return data\n return [...data].sort((a, b) => {\n const av = a[activeSortKey]\n const bv = b[activeSortKey]\n const cmp = String(av ?? '').localeCompare(String(bv ?? ''), undefined, { numeric: true })\n return activeSortDir === 'asc' ? cmp : -cmp\n })\n }, [data, activeSortKey, activeSortDir])\n\n const totalPages = pageSize && totalRows ? Math.ceil(totalRows / pageSize) : null\n const isFirstPage = pageIndex === 0\n const isLastPage = totalPages !== null ? pageIndex >= totalPages - 1 : true\n\n return (\n <div\n className={[styles.tableWrapper, className].filter(Boolean).join(' ')}\n style={height ? { height, display: 'flex', flexDirection: 'column' } : undefined}\n >\n {toolbar && <div className={styles.toolbar}>{toolbar}</div>}\n <div\n className={styles.tableScroll}\n style={height ? { flex: 1, overflowY: 'auto', minHeight: 0 } : pageSize ? { minHeight: 37 + pageSize * 38 } : undefined}\n >\n <table className={styles.table}>\n <thead className={styles.thead}>\n <tr>\n {columns.map(col => (\n <th\n key={col.key}\n className={col.sortable ? styles.thSortable : styles.th}\n style={col.width ? { width: col.width } : undefined}\n onClick={col.sortable ? () => handleSort(col.key) : undefined}\n aria-sort={\n activeSortKey === col.key\n ? activeSortDir === 'asc' ? 'ascending' : 'descending'\n : undefined\n }\n >\n {col.label}\n {col.sortable && activeSortKey === col.key && activeSortDir && (\n <span className={styles.sortIndicator} aria-hidden=\"true\">\n <Glyph name={activeSortDir === 'asc' ? 'arrow-up' : 'arrow-right'} size={10} />\n </span>\n )}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {loading ? (\n Array.from({ length: pageSize ?? 10 }, (_, i) => (\n <tr key={i} className={styles.tr} aria-hidden=\"true\">\n {columns.map(col => (\n <td key={col.key} className={col.mono ? styles.tdMono : styles.td}>\n <Skeleton width={col.width ? '80%' : skeletonWidths[i % skeletonWidths.length]!} />\n </td>\n ))}\n </tr>\n ))\n ) : data.length === 0 ? (\n <tr>\n <td colSpan={columns.length}>\n <div className={styles.emptyState}>\n {emptyState ?? 'No data.'}\n </div>\n </td>\n </tr>\n ) : (\n sortedData.map(row => {\n const key = rowKey(row)\n const isSelected = selectedKeys?.includes(key) ?? false\n return (\n <tr\n key={key}\n className={styles.tr}\n data-selected={isSelected}\n onClick={onRowClick ? (e) => {\n const target = e.target as HTMLElement\n if (target.closest('a, button, input, select, textarea, [role=\"checkbox\"], [role=\"button\"]')) return\n onRowClick(key, row)\n } : undefined}\n style={onRowClick ? { cursor: 'pointer' } : undefined}\n >\n {columns.map(col => (\n <td key={col.key} className={col.mono ? styles.tdMono : styles.td}>\n {col.render ? col.render(row) : String(row[col.key] ?? '')}\n </td>\n ))}\n </tr>\n )\n })\n )}\n </tbody>\n </table>\n </div>\n {pageSize && totalPages !== null && (\n <div className={styles.pagination}>\n {pageSizeOptions && (\n <select\n className={styles.pageSizeSelect}\n value={pageSize}\n onChange={e => onPageSizeChange?.(Number(e.target.value))}\n aria-label=\"Rows per page\"\n >\n {pageSizeOptions.map(n => (\n <option key={n} value={n}>{n} / page</option>\n ))}\n </select>\n )}\n <div className={styles.paginationControls}>\n <button className={styles.pageNavButton} onClick={() => onPageChange?.(0)} disabled={isFirstPage} aria-label=\"First page\">«</button>\n <button className={styles.pageNavButton} onClick={() => onPageChange?.(pageIndex - 1)} disabled={isFirstPage} aria-label=\"Previous page\">‹</button>\n {buildPageWindow(pageIndex, totalPages, paginationWindow).map((entry, i) =>\n entry === null\n ? <span key={`ellipsis-${i}`} className={styles.paginationEllipsis}>…</span>\n : <button\n key={entry}\n className={entry === pageIndex ? styles.pageButtonActive : styles.pageButton}\n onClick={() => onPageChange?.(entry)}\n aria-label={`Page ${entry + 1}`}\n aria-current={entry === pageIndex ? 'page' : undefined}\n >\n {entry + 1}\n </button>\n )}\n <button className={styles.pageNavButton} onClick={() => onPageChange?.(pageIndex + 1)} disabled={isLastPage} aria-label=\"Next page\">›</button>\n <button className={styles.pageNavButton} onClick={() => onPageChange?.(totalPages - 1)} disabled={isLastPage} aria-label=\"Last page\">»</button>\n </div>\n </div>\n )}\n </div>\n )\n}\n","import 'src/components/Toast/Toast.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61VPW_bMBDd_SuITPHAQvJXUhUFUrRLpy5ZiqIwKPIos5FIgjzZUor890KUTEeO7aRoF0s68t69e_fhuwdopWMVeHJvmMe1L5WAr3q9TnPEJN0m5PeEEOlMFV4IMZZxhW1Gkg_hGx3TXhpXZf1ryRC-X9_aZtqdP00IQXPsml5yTQbHp8ndSXLfaozs0rPs3hTiFLeLaS1iWk-Tdz2nrYKdNe7AaRYQrfEKldEZkaoB0TnlBtFUGdkyd02pt4wD9fZ2vU4ZV3mTp7OA7VSxwVdvCeVtydqMyBKaztA9qVAOeB-Wm7KudHdSMHsMt4hwbUB7pEoLaDIyS0L-OyVwk5H5KrEBvGINHWyclfw6TZLtjlCy2Ne5VB6px7aEjGijobNZJoTSxSBpxVyhdPiI2mH43Qs3D8LljD8UztRa7ElzUxpHfe0k4xCJz6e9pk6Ay0hqG-JNqcTIpz-NLu8Hl4b6DRNmF1UJX9Qjq-xB53w6SmIs4DLee5weHa0OEMm4VIVToRG6J0WobNdUtC-Uz0gqHWE1mjfWjJWq0FQhVD4jHpnDYNWqYn0HnBvoHlbULtyjOfMHVdNinw4wD9SEWRuO1PR86X4IhqxTEOHjFS-NB3H1M9TzNKHxEB8xkj30EFb-DaN7hSVE5EW_HoxGKlmlynavaTDlRrQRC4Omwe7VI2QknfetH0w76Idy1Y9H6K5xe8oiQi2nh36np4c-jZe3L1L4Ap47ZTslYiLLf0lk1idykvQs-q2GOdZAN0O26bvlMbnPXWkjrdWLiQ270jIHGp-P534l8Nr5joQ1SiO4s7TmkdbNpSkcy3hiKY5mhMM-5q_ao5It5UYjaHx-FNao3zilH4bFFVJScaka9x_b9UjObGO24IKor7fYZSRpeO3pVnmVlxAQTY1ddTMyO7krGe9EiBFEEHTwoUZKDxhcjwN_4qNOvQmxhuZH82KLHSrb_XE8_QGriaP3gAgAAA';\nexport var toast = 'Toast_toast__1btt01v3';\nexport var toastAction = 'Toast_toastAction__1btt01v7';\nexport var toastClose = 'Toast_toastClose__1btt01v6';\nexport var toastDescription = 'Toast_toastDescription__1btt01v5';\nexport var toastTitle = 'Toast_toastTitle__1btt01v4';\nexport var viewport = 'Toast_viewport__1btt01v2';","import { useState, useCallback, createContext, useContext } from 'react'\nimport type { ReactNode } from 'react'\nimport { createPortal } from 'react-dom'\nimport { Glyph } from '../../glyphs/Glyph'\nimport * as styles from './Toast.css'\n\n/** Shape of a single toast notification. */\nexport interface ToastData {\n /** Auto-generated unique ID — do not set manually; provided by {@link useToast}. */\n id: string\n /** Primary message. Keep short — one clause. */\n title: string\n /** Secondary detail line. Optional. */\n description?: string\n /**\n * How long (ms) before the toast auto-dismisses.\n * Pass `0` to keep it on screen until manually dismissed.\n * @default 4000\n */\n duration?: number\n /** Optional action element (e.g. an undo {@link Button}) rendered below the description. */\n action?: ReactNode\n}\n\ninterface ToastContextValue {\n toast: (data: Omit<ToastData, 'id'>) => void\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null)\n\n/**\n * Hook that returns the `toast()` imperative function for firing notifications.\n * Must be called within a component tree wrapped by {@link ToastProvider}.\n *\n * @throws If called outside a `<ToastProvider>`.\n *\n * @example\n * ```tsx\n * function SaveButton() {\n * const { toast } = useToast()\n * return (\n * <Button onClick={() => toast({ title: 'Saved.', description: 'Changes committed.' })}>\n * Save\n * </Button>\n * )\n * }\n * ```\n */\nexport function useToast() {\n const ctx = useContext(ToastContext)\n if (!ctx) throw new Error('useToast must be used within <ToastProvider>')\n return ctx\n}\n\n/** Props for the {@link ToastProvider} component. */\nexport interface ToastProviderProps {\n children: ReactNode\n}\n\n/**\n * Context provider that manages the toast queue and renders the notification\n * stack into a portal at `document.body`. Place once near the root of your app,\n * inside `<AcheryProvider>`.\n *\n * Use the {@link useToast} hook anywhere in the subtree to fire toasts\n * imperatively.\n *\n * @example\n * ```tsx\n * // app root\n * <AcheryProvider>\n * <ToastProvider>\n * <App />\n * </ToastProvider>\n * </AcheryProvider>\n *\n * // anywhere inside\n * const { toast } = useToast()\n * toast({ title: 'Entry deleted.', duration: 0, action: <Button size=\"sm\">Undo</Button> })\n * ```\n */\nexport function ToastProvider({ children }: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastData[]>([])\n\n const toast = useCallback((data: Omit<ToastData, 'id'>) => {\n const id = String(Date.now())\n setToasts(prev => [...prev, { ...data, id }])\n const duration = data.duration ?? 4000\n if (duration > 0) {\n setTimeout(() => {\n setToasts(prev => prev.filter(t => t.id !== id))\n }, duration)\n }\n }, [])\n\n const dismiss = (id: string) => setToasts(prev => prev.filter(t => t.id !== id))\n\n return (\n <ToastContext.Provider value={{ toast }}>\n {children}\n {typeof document !== 'undefined' && createPortal(\n <ol className={styles.viewport} aria-live=\"polite\" aria-label=\"Notifications\">\n {toasts.map(t => (\n <li key={t.id} className={styles.toast} role=\"status\">\n <div>\n <div className={styles.toastTitle}>{t.title}</div>\n {t.description && (\n <div className={styles.toastDescription}>{t.description}</div>\n )}\n {t.action && <div className={styles.toastAction}>{t.action}</div>}\n </div>\n <button\n className={styles.toastClose}\n onClick={() => dismiss(t.id)}\n aria-label=\"Dismiss\"\n >\n <Glyph name=\"cross\" size={12} aria-hidden=\"true\" />\n </button>\n </li>\n ))}\n </ol>,\n document.body,\n )}\n </ToastContext.Provider>\n )\n}\n","import 'src/components/Checkbox/Checkbox.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8VV227bMAx9z1cIfWqAqYib3qZhwIABA_YDexmGgJYoh40seZLcJhv674Pl-NI2TotuwN5skTw8PKSoTxvcaQ8lBvZ5jXKTu-0qVGRXK2vLnfy5YL9njGnvyvTBWPRgg3a-FMy7CBFPFwqL-YcZYw8zxqKb9FtejTwfZmd9vnsPVYW-S5klBEWhMrATjKwhi1wb3DahYKiwnCKWQTCJNqJvjguoBLsDf8p5qEAiD9VytcpAUr7NtymprH1wXrDKURt1jMN3BRG4ogC5QfUjUXIVSIo7wRZnF2NA6yIHY9w9qseg3rnYIZ4niHtScS1YdlWlYtZIxToO_7nzCr1g2dlltWXBGVL7oqQzzvPW3tf1fj4EcQ-K6tCJ0P7xNZBv5OtDsps2BuSm8K62SjxKEGqvQQ7uy-Td9-KFJtzWIZLecelsRBvHpiaSh7UnuxFscbAd-5mhSM6KEcM9QVV7aExcQ4hDPXq-tyME5K4emWj-rhMnVfcXQEf62k5KaEb844lsXFCdtAMzpTLIRpgeX43bmDxedH8dG7IKI_qSLET8f5yEdrIO_I4C5Qbbq1THZiwFOz845wfJ7GO40zpgTKHHknZ3921Xl6wiCdH1G2GZcCaV-FL0bPFf3ZlUbb8iHvMzkKPpuF20S9rZyDWUZHYdw3SUO7XrycVELp0H-oWCZct29RyoTA81XaawOqDnAQ3K2Ehn8TnLRt4xz2YS6_D1qZqXb9nxT3fIkTzfwBPYGFYB7sgWXdqrqSbqYngtrlOtYKmEdhVNPIxZSLWDZ2Q1WYr4akqoOpjr42M1ecGmwNH7QeWbKXAFthi9I7cN-B_YdEBYCggAAA';\nexport var indicator = 'Checkbox_indicator__nnmycq3';\nexport var label = 'Checkbox_label__nnmycq4';\nexport var root = 'Checkbox_root__nnmycq2';\nexport var statusIndicator = 'Checkbox_statusIndicator__nnmycq5';\nexport var statusIndicatorVariants = {saving:'Checkbox_statusIndicatorVariants_saving__nnmycq6',saved:'Checkbox_statusIndicatorVariants_saved__nnmycq7',error:'Checkbox_statusIndicatorVariants_error__nnmycq8'};\nexport var wrapper = 'Checkbox_wrapper__nnmycq1';","import * as RadixCheckbox from '@radix-ui/react-checkbox'\nimport type { ReactNode } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport type { InputStatus } from '../Input/Input'\nimport * as styles from './Checkbox.css'\n\n/** Props for the {@link Checkbox} component. */\nexport interface CheckboxProps {\n /** Controlled checked state. `true` = checked, `false` = unchecked, `'indeterminate'` = partial. */\n checked?: boolean | 'indeterminate'\n /** Initial checked state for uncontrolled usage. */\n defaultChecked?: boolean | 'indeterminate'\n /** Called when the checked state changes. */\n onChange?: (checked: boolean | 'indeterminate') => void\n disabled?: boolean\n /** Optional label rendered beside the checkbox. */\n label?: ReactNode\n /** Accessible label when no visible label is present. */\n 'aria-label'?: string\n id?: string\n /**\n * Auto-save feedback state. When set to anything other than `'idle'`, a small\n * icon appears after the label (or after the checkbox if there is no label).\n */\n status?: InputStatus\n className?: string\n}\n\n/**\n * Accessible checkbox built on Radix Checkbox. Supports checked, unchecked,\n * and indeterminate states. Controlled via `checked`/`onChange` or uncontrolled\n * via `defaultChecked`.\n *\n * @example\n * ```tsx\n * // Uncontrolled\n * <Checkbox defaultChecked label=\"Accept terms\" />\n *\n * // Controlled\n * <Checkbox checked={done} onChange={setDone} label=\"Mark done\" />\n *\n * // Indeterminate (e.g. select-all with partial selection)\n * <Checkbox checked=\"indeterminate\" onChange={handleSelectAll} />\n * ```\n */\nexport function Checkbox({\n checked,\n defaultChecked,\n onChange,\n disabled,\n label,\n id,\n status,\n className,\n 'aria-label': ariaLabel,\n}: CheckboxProps) {\n const resolvedId = id ?? (label ? `checkbox-${Math.random().toString(36).slice(2, 7)}` : undefined)\n\n return (\n <span className={[styles.wrapper, className].filter(Boolean).join(' ')} data-disabled={disabled || undefined}>\n <RadixCheckbox.Root\n {...(checked !== undefined ? { checked } : {})}\n {...(defaultChecked !== undefined ? { defaultChecked } : {})}\n {...(onChange !== undefined ? { onCheckedChange: onChange } : {})}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(ariaLabel !== undefined ? { 'aria-label': ariaLabel } : {})}\n {...(resolvedId !== undefined ? { id: resolvedId } : {})}\n className={styles.root}\n >\n <RadixCheckbox.Indicator className={styles.indicator}>\n {checked === 'indeterminate' ? (\n <svg width=\"10\" height=\"2\" viewBox=\"0 0 10 2\" fill=\"currentColor\">\n <rect width=\"10\" height=\"2\" rx=\"1\" />\n </svg>\n ) : (\n <svg width=\"10\" height=\"8\" viewBox=\"0 0 10 8\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"1,4 4,7 9,1\" />\n </svg>\n )}\n </RadixCheckbox.Indicator>\n </RadixCheckbox.Root>\n {label && (\n <label htmlFor={resolvedId} className={styles.label} style={{ cursor: disabled ? 'not-allowed' : 'pointer' }}>\n {label}\n </label>\n )}\n {status && status !== 'idle' && (\n <span className={[styles.statusIndicator, styles.statusIndicatorVariants[status]].join(' ')} aria-hidden=\"true\">\n <Glyph name={status === 'saving' ? 'spinner' : status === 'saved' ? 'tick' : 'cross'} size={12} />\n </span>\n )}\n </span>\n )\n}\n","import 'src/components/Menu/Menu.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5VUwY6bMBC98xU-NgdHYUmq1rlW7alfUFXRgAeYrrEt2yyQav-9wqxJUqW72xsz88Zv3rOH7XfU_akyOqAOp9Pgz7Zodux3xlhHmg8kQytY_mlnx2PGWAnVY-NMr6VgT-A-cF4ZZRz3vauhwtMph4rKsSw2EW2cRCdYvj3YkXmjSN50LfW16fNVE3cgqfeJZYm471ZwntAj9y1IMyToEnEfoLMXdBnRFqQk3axQCxVybx9W3LBhuxl45qQljoIdYgiaOghkNJe9ix_piBTzGny40NWbY_acbaO5FLBLzubRWUneKpgEqxVGW0FRo_kM9IJVqAO6Od2A_XvUYuUY363otrRfS1M8oTY6cE9nFCwvlluOqRo6UlM6OKZKI6e1O8TueJG3b6FuVsxhwfTOzyBrKCkzfVCkUTBtNM6J3qPjHhVWISXv-vdDQgDeUtMqatqA8md09I13ebFj_86pXyGX5KFUidlYqChMgu22-2ux2gQOSpkBZbynRTvHJ9TB35P4BXQzL8PC9fCfQuVL94uEX_-SCdX8vL5exOKVWI8WHASzTlFEzhbnCQTLX_8H3N3mDlxD-q2Fu_bhm5psmwbYxwHmNeG-daQfxbKfV65_PGbPfwB9Vq22xgQAAA';\nexport var content = 'Menu_content__wszp3g0';\nexport var item = 'Menu_item__wszp3g1';\nexport var itemDanger = 'Menu_itemDanger__wszp3g2';\nexport var itemGlyph = 'Menu_itemGlyph__wszp3g4';\nexport var separator = 'Menu_separator__wszp3g3';","import * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport type { ReactNode } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport type { GlyphName } from '../../glyphs/index'\nimport * as styles from './Menu.css'\n\n/** A single item in a {@link Menu}. */\nexport interface MenuItemDef {\n /** Unique key for this item. */\n id: string\n /** Display label. */\n label: ReactNode\n /** Optional glyph shown before the label. */\n glyph?: GlyphName\n /** Called when the item is selected. */\n onSelect: () => void\n /** When true, the item is visible but not selectable. */\n disabled?: boolean\n /** Renders the item with danger (destructive action) styling. */\n danger?: boolean\n}\n\n/** Renders a horizontal rule between groups of items. */\nexport interface MenuSeparator {\n type: 'separator'\n id: string\n}\n\n/** Props for the {@link Menu} component. */\nexport interface MenuProps {\n /**\n * Element that opens the menu when clicked. Rendered as a Radix `asChild`\n * trigger — pass any single React element (e.g. a {@link Button}).\n */\n trigger: ReactNode\n /**\n * Ordered list of items and separators to render in the dropdown.\n */\n items: (MenuItemDef | MenuSeparator)[]\n /** Preferred side to open the menu relative to the trigger. */\n side?: 'top' | 'bottom' | 'left' | 'right'\n /** Alignment of the menu relative to the trigger. */\n align?: 'start' | 'center' | 'end'\n className?: string\n}\n\n/**\n * Dropdown menu built on Radix DropdownMenu. Renders into a portal so it\n * appears above all content regardless of overflow constraints.\n *\n * @example\n * ```tsx\n * <Menu\n * trigger={<Button variant=\"ghost\" size=\"sm\">Actions</Button>}\n * items={[\n * { id: 'edit', label: 'Edit', glyph: 'key', onSelect: () => setEditing(true) },\n * { type: 'separator', id: 'sep1' },\n * { id: 'delete', label: 'Delete', danger: true, onSelect: handleDelete },\n * ]}\n * />\n * ```\n */\nexport function Menu({ trigger, items, side = 'bottom', align = 'end', className }: MenuProps) {\n return (\n <RadixDropdownMenu.Root>\n <RadixDropdownMenu.Trigger asChild>\n {trigger as React.ReactElement}\n </RadixDropdownMenu.Trigger>\n\n <RadixDropdownMenu.Portal>\n <RadixDropdownMenu.Content\n side={side}\n align={align}\n sideOffset={6}\n className={[styles.content, className].filter(Boolean).join(' ')}\n >\n {items.map((item) => {\n if ('type' in item && item.type === 'separator') {\n return <RadixDropdownMenu.Separator key={item.id} className={styles.separator} />\n }\n const def = item as MenuItemDef\n return (\n <RadixDropdownMenu.Item\n key={def.id}\n {...(def.disabled !== undefined ? { disabled: def.disabled } : {})}\n onSelect={def.onSelect}\n className={[styles.item, def.danger ? styles.itemDanger : ''].filter(Boolean).join(' ')}\n >\n {def.glyph && <Glyph name={def.glyph} size={14} className={styles.itemGlyph} />}\n {def.label}\n </RadixDropdownMenu.Item>\n )\n })}\n </RadixDropdownMenu.Content>\n </RadixDropdownMenu.Portal>\n </RadixDropdownMenu.Root>\n )\n}\n","import 'src/components/DatePicker/DatePicker.css.ts.vanilla.css?source=#H4sIAAAAAAAAA41UTW_bMAy951cIBQq0BwVx0_TDxYAddtltpwHDMASMRTtcZcmg6Hxs6H8fLCWO0yXLbpJIvvcoPunjK25LhhqD-gSCX6h4RZ6Hhtx8nqEYXj9O1O-RUiX7Oi6UEgYXSs91rtgLCN5MDFa3LyOl3kZKiT-bN30YZL6NxgNKck0rPWeWOL0TXUJNdpurFfCN1vGo9s7P5xkUtNgs2ggXzwP9wlxl02bTHRXeet7XxY0uq75sFssWULxW7FtnjhNDyyUU2GdPU7Zng5yrbDxrNip4S-aoKsX7oudBkWYw1IY9S9rpJRBbcgee7CnWNGAMuWqfHRooUIfmrs9b374LTfvQJiKsycgyV9lkcp1EbLrbiZg7QQsfbykOiYS86yOxmR2-aRm6oC4hyEFmuedHCKh9OwjR7cu_R5uXvmhDHLBvpWs_V847HFzWidFBUaA70JiLLIYCLCyaRNRAQbLN1WR8H73RcugYnBcN1vo1mgt43w0IaGT2_OFKuMWrHxH5vGIDrhq44eclxYlhCUEHAWnDEc3OEZqpWkqu7p46jx_DrRmaJhImwLtU6PfTZbQgtMK_7HEMk8g_F_7wA0zfIcEieNtKRNoJek5vTnyTq1ny3OD5x6UFwW83eja5Th735ARZ4wqdhIMFDIXGwjZXpcWICZYqp0mwDrnqTIB8XvNXYAInYR5gRa7qW7iPLZz8Eg5P5zEKA0c1pEbPf4lZUJ1zgRW5khx1l_E_mtD0ILNzki5a_QR0NGYP_XAO-pQn_wC1E09CAwYAAA';\nexport var input = 'DatePicker_input__1etdrw71';\nexport var statusIcon = 'DatePicker_statusIcon__1etdrw73';\nexport var statusIconVariants = {saving:'DatePicker_statusIconVariants_saving__1etdrw74',saved:'DatePicker_statusIconVariants_saved__1etdrw75',error:'DatePicker_statusIconVariants_error__1etdrw76'};\nexport var wrapper = 'DatePicker_wrapper__1etdrw72';","import type { InputHTMLAttributes } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport type { InputStatus } from '../Input/Input'\nimport * as styles from './DatePicker.css'\n\n/** Props for the {@link DatePicker} component. */\nexport interface DatePickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /**\n * Input type.\n * - `date` — ISO date string `YYYY-MM-DD` (default)\n * - `datetime-local` — ISO datetime string `YYYY-MM-DDTHH:mm`\n * @default 'date'\n */\n type?: 'date' | 'datetime-local'\n /** ISO date or datetime string value. */\n value?: string\n /** Called when the date changes — receives the new ISO string (or empty string when cleared). */\n onChange?: InputHTMLAttributes<HTMLInputElement>['onChange']\n /** Minimum selectable date/datetime. */\n min?: string\n /** Maximum selectable date/datetime. */\n max?: string\n disabled?: boolean\n /** When true, applies error border styling. */\n error?: boolean\n /** Auto-save feedback state. When set to anything other than `'idle'`, a small trailing icon appears. */\n status?: InputStatus\n placeholder?: string\n className?: string\n}\n\n/**\n * Date (or datetime-local) input component. Styled to match the achery-ui design\n * system — no calendar popover; relies on the browser's native date picker UX.\n *\n * Values are ISO strings. Pass `value` and `onChange` for controlled usage.\n *\n * @example\n * ```tsx\n * // Date-only\n * <DatePicker value={date} onChange={(e) => setDate(e.target.value)} />\n *\n * // Datetime-local\n * <DatePicker type=\"datetime-local\" value={datetime} onChange={(e) => setDatetime(e.target.value)} />\n * ```\n */\nexport function DatePicker({\n type = 'date',\n value,\n onChange,\n min,\n max,\n disabled,\n error,\n status,\n placeholder,\n className,\n ...rest\n}: DatePickerProps) {\n const hasStatus = status && status !== 'idle'\n const input = (\n <input\n type={type}\n value={value}\n onChange={onChange}\n min={min}\n max={max}\n disabled={disabled}\n placeholder={placeholder}\n data-error={error || undefined}\n data-has-status={hasStatus || undefined}\n className={[styles.input, !hasStatus && className].filter(Boolean).join(' ')}\n {...rest}\n />\n )\n if (!hasStatus) return input\n return (\n <div className={[styles.wrapper, className].filter(Boolean).join(' ')}>\n {input}\n <span className={[styles.statusIcon, styles.statusIconVariants[status]].join(' ')} aria-hidden=\"true\">\n <Glyph name={status === 'saving' ? 'spinner' : status === 'saved' ? 'tick' : 'cross'} size={12} />\n </span>\n </div>\n )\n}\n","import 'src/components/Combobox/Combobox.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7VWS2_bOBC-51cQBQo0aGlIfmRTFXvqeS97LQqDEkcSG4lDkJQtd9H_XpCUaNnKw86mlzjiPPnNNzNcfMU2xxz77V4zpUBvt6nQpd5gQv67IUShEVagzIiGhlmxgy83hOwFt3VG0iR5_-Xm180iOrFaVNXESeqdcGFUww4ZKRvonb37pS5gRtxfd8QaUUkqLLQmIwVIC9odV05nx_QHSo1iBVCjltttygqR9_n-1qm0QtIaRFXbjKzuVD9LkBDFOBeyes7TmWgVRb0PkqPmoDOSLjaqJwYbwQeLAhvUNMij0eeJEdWMi86MwcMXrZnQjZAQTdL7YMOKh0pjJ3l2EsB0umTFUX3ltYtOG9QZsdDbELGnRvz0dx2i5-gRsZrJsZSDxDsegvBOMyekJTP2mFM54gLMAMVuIhK3L5T-G2eWUVQg_35ndQfvvnsyTIOfXpEVru4xAr8sAGiN-sIInMlqUqUfZxGKWqjofnlKXSFdtejI4NfTNXJxqfoXVF_gwlF9fcrRP8vQEqV1JIOMpGloN39UslY0h9GJP2pRYjTvvHUD1oL2V_YoJItkDa2XOHzHRk4X6zgoTK2FfMhIMq_Wv9DiDmLNVq-p2Y_OWFEeaIHSgrRT0ThG1uGaMbnhewRcooTzeo1nY4cqFKPXyIDEK8xpWlbH0t551NDBZQ8Orrs5Vi_jktW4A-3Ria7OzIRUvr2DxdrrOuS8YpiyAxz3yeXXx866XI8HT1ElR36Il7Yzoq1CyEfBimab2zm8c1ZNL60aVkCNDZ_MlU24-tvn-U9nj80UemlgBYUdSGtGlE4yROVKF7O7O1vLLDfYdNZja1FlpGBN8cEtPvKRrFU_NF1pBzx0QML__5MKyV2FN8n1q-fNN6Jpj5Nm1HbNzzju41D1X9RY1qqjdh7eAayPhV4uB4467MoG9_SQEdZZPAUXlQMxYvvX46-VS-dGGOM52D2AfN2zYx1Fh6eodQUxL-mW2Xx6Dp8wRj6RpzXCTmaFeymeLuVrdtlzOYQIBhooLPCTGNe_KYLzrzUUDzHC_RW-_t82nGYCrbKHmMPn0OWP82f6Nr2CP8u34c9siv36DWsCMvJEDAAA';\nexport var chip = 'Combobox_chip__1irfr5o2';\nexport var chipRemove = 'Combobox_chipRemove__1irfr5o3';\nexport var empty = 'Combobox_empty__1irfr5o9';\nexport var input = 'Combobox_input__1irfr5o4';\nexport var option = 'Combobox_option__1irfr5o7';\nexport var optionCheck = 'Combobox_optionCheck__1irfr5o8';\nexport var placeholder = 'Combobox_placeholder__1irfr5o5';\nexport var popover = 'Combobox_popover__1irfr5o6';\nexport var trigger = 'Combobox_trigger__1irfr5o1';\nexport var wrapper = 'Combobox_wrapper__1irfr5o0';","import { useState, useRef, useId, type KeyboardEvent } from 'react'\nimport * as styles from './Combobox.css'\n\n/** Props for the {@link Combobox} component. */\nexport interface ComboboxProps {\n /** Currently selected values. */\n value: string[]\n /** Called when the selection changes. */\n onChange: (value: string[]) => void\n /**\n * Suggested options shown in the dropdown. Strings are used as both label\n * and value. When `allowCustom` is true, the user can also type values not\n * in this list.\n */\n options?: string[]\n /**\n * When true, the user can enter any value — not just options from the list.\n * The typed value is added on Enter or comma.\n * @default false\n */\n allowCustom?: boolean\n placeholder?: string\n disabled?: boolean\n /** When true, applies error border styling. */\n error?: boolean\n className?: string\n}\n\n/**\n * Multi-select free-text combobox. Selected values appear as removable chips.\n * Dropdown suggests from `options`; when `allowCustom` is true the user can\n * type any value and confirm with Enter or comma.\n *\n * @example\n * ```tsx\n * // Fixed options only\n * <Combobox\n * value={tags}\n * onChange={setTags}\n * options={['computer', 'outside', 'quick-win']}\n * placeholder=\"Add tags…\"\n * />\n *\n * // Free-text + suggestions\n * <Combobox\n * value={contextTags}\n * onChange={setContextTags}\n * options={allKnownTags}\n * allowCustom\n * placeholder=\"Add context tags…\"\n * />\n * ```\n */\nexport function Combobox({\n value,\n onChange,\n options = [],\n allowCustom = false,\n placeholder,\n disabled,\n error,\n className,\n}: ComboboxProps) {\n const [inputValue, setInputValue] = useState('')\n const [open, setOpen] = useState(false)\n const [activeIndex, setActiveIndex] = useState(-1)\n const inputRef = useRef<HTMLInputElement>(null)\n const id = useId()\n\n const filteredOptions = options.filter((opt) => {\n const lower = inputValue.toLowerCase()\n return opt.toLowerCase().includes(lower) && !value.includes(opt)\n })\n\n const customOption =\n allowCustom &&\n inputValue.trim() &&\n !options.includes(inputValue.trim()) &&\n !value.includes(inputValue.trim())\n ? inputValue.trim()\n : null\n\n const visibleOptions = [...filteredOptions, ...(customOption ? [customOption] : [])]\n const showDropdown = open && visibleOptions.length > 0\n\n function addValue(v: string) {\n const trimmed = v.trim()\n if (trimmed && !value.includes(trimmed)) {\n onChange([...value, trimmed])\n }\n setInputValue('')\n setActiveIndex(-1)\n }\n\n function removeValue(v: string) {\n onChange(value.filter((x) => x !== v))\n }\n\n function handleKeyDown(e: KeyboardEvent<HTMLInputElement>) {\n if ((e.key === 'Enter' || e.key === ',') && inputValue.trim()) {\n e.preventDefault()\n const active = activeIndex >= 0 ? visibleOptions[activeIndex] : undefined\n if (active) {\n addValue(active)\n } else if (allowCustom) {\n addValue(inputValue)\n } else if (filteredOptions[0]) {\n addValue(filteredOptions[0])\n }\n return\n }\n if (e.key === 'Backspace' && !inputValue && value.length > 0) {\n const last = value[value.length - 1]\n if (last) removeValue(last)\n return\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n setActiveIndex((i) => Math.min(i + 1, visibleOptions.length - 1))\n return\n }\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n setActiveIndex((i) => Math.max(i - 1, -1))\n return\n }\n if (e.key === 'Escape') {\n setOpen(false)\n setActiveIndex(-1)\n }\n }\n\n return (\n <div\n className={[styles.wrapper, className].filter(Boolean).join(' ')}\n onClick={() => { if (!disabled) inputRef.current?.focus() }}\n >\n <div\n className={styles.trigger}\n data-open={showDropdown || undefined}\n data-error={error || undefined}\n >\n {value.map((v) => (\n <span key={v} className={styles.chip}>\n {v}\n {!disabled && (\n <button\n type=\"button\"\n className={styles.chipRemove}\n onClick={(e) => { e.stopPropagation(); removeValue(v) }}\n aria-label={`Remove ${v}`}\n >\n ×\n </button>\n )}\n </span>\n ))}\n <input\n ref={inputRef}\n id={id}\n className={styles.input}\n value={inputValue}\n disabled={disabled}\n placeholder={value.length === 0 ? placeholder : undefined}\n autoComplete=\"off\"\n onChange={(e) => {\n setInputValue(e.target.value)\n setOpen(true)\n setActiveIndex(-1)\n }}\n onFocus={() => setOpen(true)}\n onBlur={() => {\n // short delay so mouseDown on an option fires before blur closes the list\n setTimeout(() => setOpen(false), 150)\n }}\n onKeyDown={handleKeyDown}\n aria-autocomplete=\"list\"\n aria-expanded={showDropdown}\n aria-controls={showDropdown ? `${id}-list` : undefined}\n aria-activedescendant={activeIndex >= 0 ? `${id}-opt-${activeIndex}` : undefined}\n />\n </div>\n\n {showDropdown && (\n <div id={`${id}-list`} role=\"listbox\" className={styles.popover}>\n {visibleOptions.map((opt, i) => {\n const isSelected = value.includes(opt)\n const isCustom = opt === customOption\n return (\n <div\n key={opt}\n id={`${id}-opt-${i}`}\n role=\"option\"\n aria-selected={isSelected}\n className={styles.option}\n data-active={activeIndex === i || undefined}\n data-selected={isSelected || undefined}\n onMouseDown={(e) => { e.preventDefault(); addValue(opt) }}\n onMouseEnter={() => setActiveIndex(i)}\n >\n <span>{isCustom ? `Add \"${opt}\"` : opt}</span>\n {isSelected && <span className={styles.optionCheck}>✓</span>}\n </div>\n )\n })}\n </div>\n )}\n </div>\n )\n}\n\n/** Props for the {@link SingleCombobox} component. */\nexport interface SingleComboboxProps {\n /** Currently selected value, or null for no selection. */\n value: string | null\n /** Called when the selection changes. */\n onChange: (value: string | null) => void\n /** Suggested options. */\n options?: string[]\n /**\n * When true, typed text not in options is accepted on Enter.\n * @default false\n */\n allowCustom?: boolean\n placeholder?: string\n disabled?: boolean\n /** When true, applies error border styling. */\n error?: boolean\n className?: string\n}\n\n/**\n * Single-select combobox. Selected value is shown in the input directly (no chips).\n * Backspace/Delete when input is empty clears the current value.\n *\n * @example\n * ```tsx\n * <SingleCombobox value={category} onChange={setCategory} options={categories} />\n * ```\n */\nexport function SingleCombobox({\n value,\n onChange,\n options = [],\n allowCustom = false,\n placeholder,\n disabled,\n error,\n className,\n}: SingleComboboxProps) {\n const [inputValue, setInputValue] = useState(value ?? '')\n const [open, setOpen] = useState(false)\n const [activeIndex, setActiveIndex] = useState(-1)\n const inputRef = useRef<HTMLInputElement>(null)\n const id = useId()\n\n const filteredOptions = options.filter((opt) =>\n opt.toLowerCase().includes(inputValue.toLowerCase())\n )\n\n const customOption =\n allowCustom &&\n inputValue.trim() &&\n !options.includes(inputValue.trim())\n ? inputValue.trim()\n : null\n\n const visibleOptions = [...filteredOptions, ...(customOption ? [customOption] : [])]\n const showDropdown = open && visibleOptions.length > 0\n\n function selectValue(v: string) {\n onChange(v)\n setInputValue(v)\n setOpen(false)\n setActiveIndex(-1)\n }\n\n function handleKeyDown(e: KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'Enter') {\n e.preventDefault()\n const active = activeIndex >= 0 ? visibleOptions[activeIndex] : undefined\n if (active) {\n selectValue(active)\n } else if (allowCustom && inputValue.trim()) {\n selectValue(inputValue.trim())\n } else if (filteredOptions[0]) {\n selectValue(filteredOptions[0])\n }\n return\n }\n if ((e.key === 'Backspace' || e.key === 'Delete') && !inputValue) {\n onChange(null)\n return\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n setActiveIndex((i) => Math.min(i + 1, visibleOptions.length - 1))\n return\n }\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n setActiveIndex((i) => Math.max(i - 1, -1))\n return\n }\n if (e.key === 'Escape') {\n setOpen(false)\n setActiveIndex(-1)\n }\n }\n\n return (\n <div\n className={[styles.wrapper, className].filter(Boolean).join(' ')}\n onClick={() => { if (!disabled) inputRef.current?.focus() }}\n >\n <div\n className={styles.trigger}\n data-open={showDropdown || undefined}\n data-error={error || undefined}\n >\n <input\n ref={inputRef}\n id={id}\n className={styles.input}\n value={inputValue}\n disabled={disabled}\n placeholder={placeholder}\n autoComplete=\"off\"\n onChange={(e) => {\n setInputValue(e.target.value)\n onChange(null)\n setOpen(true)\n setActiveIndex(-1)\n }}\n onFocus={() => setOpen(true)}\n onBlur={() => {\n setTimeout(() => {\n setOpen(false)\n // Restore display to selected value if user typed something invalid\n setInputValue(value ?? '')\n }, 150)\n }}\n onKeyDown={handleKeyDown}\n aria-autocomplete=\"list\"\n aria-expanded={showDropdown}\n aria-controls={showDropdown ? `${id}-list` : undefined}\n aria-activedescendant={activeIndex >= 0 ? `${id}-opt-${activeIndex}` : undefined}\n />\n </div>\n\n {showDropdown && (\n <div id={`${id}-list`} role=\"listbox\" className={styles.popover}>\n {visibleOptions.map((opt, i) => {\n const isSelected = value === opt\n const isCustom = opt === customOption\n return (\n <div\n key={opt}\n id={`${id}-opt-${i}`}\n role=\"option\"\n aria-selected={isSelected}\n className={styles.option}\n data-active={activeIndex === i || undefined}\n data-selected={isSelected || undefined}\n onMouseDown={(e) => { e.preventDefault(); selectValue(opt) }}\n onMouseEnter={() => setActiveIndex(i)}\n >\n <span>{isCustom ? `Add \"${opt}\"` : opt}</span>\n {isSelected && <span className={styles.optionCheck}>✓</span>}\n </div>\n )\n })}\n </div>\n )}\n </div>\n )\n}\n","import 'src/components/LetterStamp/LetterStamp.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6WUzY6bMBCA73kKS71sDo74MQlhX6G3nnpCgxmCG2Mj23Q3rfruFU7MwrLJJRfkGcz3zchmdt_ROTQ_HHR9af2zrC95OmQR-bshpBa2l3ApiFBSKKSNxPfXDSEgxUlR4bCzBeGoHJox_WuwTjQXyrVyqNz8VaVNjYYaqMVgC_IbzAu9RVRphWUZAxfVexUftuP-0URta4Q6FyQaM4NFQy1K5K4g4yevm3-b3boBN9I6bW1oJfatVMDPJ6MHVRfkG4MM0mSkci21CfX4gFanqZho-0hiBuuCJFlLckgheVqieWswWNK1pcqPCYNnLb0cuiBha0lWM9g_LeG679EETfZVLweWPK1RODgDMnj2K8-Smnxcve0ddfOhzu6prfiDZcyC9eCtb6J2bUFi1vvfpkVxal2I72OSKGDyOSaJlphr_ACTB8xxgck_YfLHmHQfMDDHpPsl5hrfx7CpmmqOYZ-qYV9VI_06fM-Xs6mSmp_9zNDK0QY6IS_h_HzqtnM6Q7uddr_drMfIzxg_5KZTmt0GoVo0wo0ZZ0DZRpuuuC4lOPz5Eu2iHLvxcvwHHLl-fVQFAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var letter = 'LetterStamp_letter__dy83u5c';\nexport var stamp = _7a468({defaultClassName:'LetterStamp_stamp__dy83u50',variantClassNames:{tone:{moss:'LetterStamp_stamp_tone_moss__dy83u51',rust:'LetterStamp_stamp_tone_rust__dy83u52',ochre:'LetterStamp_stamp_tone_ochre__dy83u53',plum:'LetterStamp_stamp_tone_plum__dy83u54',copper:'LetterStamp_stamp_tone_copper__dy83u55',neutral:'LetterStamp_stamp_tone_neutral__dy83u56'},size:{'14':'LetterStamp_stamp_size_14__dy83u57','20':'LetterStamp_stamp_size_20__dy83u58','28':'LetterStamp_stamp_size_28__dy83u59','36':'LetterStamp_stamp_size_36__dy83u5a','48':'LetterStamp_stamp_size_48__dy83u5b'}},defaultVariants:{tone:'neutral',size:28},compoundVariants:[]});","import type { CSSProperties } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport type { GlyphName } from '../../types/components'\nimport * as styles from './LetterStamp.css'\n\nexport type LetterStampTone = 'moss' | 'rust' | 'ochre' | 'plum' | 'copper' | 'neutral'\nexport type LetterStampSize = 14 | 20 | 28 | 36 | 48\n\n/** Props for the {@link LetterStamp} component. */\nexport interface LetterStampProps {\n /** Single character displayed in the display font. Mutually exclusive with `glyph`. */\n letter?: string\n /** Glyph rendered centred inside the stamp. Mutually exclusive with `letter`. */\n glyph?: GlyphName\n /** Stamp size in px. @default 28 */\n size?: LetterStampSize\n /** Tone (fill colour). @default 'neutral' */\n tone?: LetterStampTone\n /** Raw hex colour override — overrides `tone` background. */\n colour?: string\n className?: string\n}\n\n/**\n * Hard-edged square stamp displaying a single letter or glyph.\n * Tone variants provide semantically-coloured fill pairs.\n *\n * @example\n * ```tsx\n * <LetterStamp letter=\"A\" tone=\"moss\" size={28} />\n * <LetterStamp glyph=\"flask\" tone=\"rust\" size={36} />\n * ```\n */\nexport function LetterStamp({\n letter,\n glyph,\n size = 28,\n tone = 'neutral',\n colour,\n className,\n}: LetterStampProps) {\n const style: CSSProperties = colour ? { background: colour } : {}\n\n return (\n <span\n className={[styles.stamp({ tone, size }), className].filter(Boolean).join(' ')}\n style={style}\n aria-hidden=\"true\"\n >\n {glyph ? (\n <Glyph name={glyph} size={Math.round(size * 0.55)} />\n ) : letter ? (\n <span className={styles.letter} style={{ fontSize: `${Math.round(size / 2)}px` }}>\n {letter.slice(0, 1).toUpperCase()}\n </span>\n ) : null}\n </span>\n )\n}\n","import 'src/components/EntityPill/EntityPill.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WUy47bMAxF9_MVArppFhrEzttdd1mgwHyAQVu0zY4iGXqkSYv-eyE5ViZTO8VsDFjiPaR4RT1_VY7c5TtJWfbhU24OP_YOl-z3E2OCbC_hUjBSkhTyRuL5yxNjIKlVnBwebcFqVA5NWG6hL9i2jyGVNgINNyDI24KdwHzm1z-utMKyzKCm6lxlu0WMh_q1NdorMQbXWmrDqzZFLhc3cMGy_sysliTuw-NukhyipAchSLUFW7J9f2ZLtgyr-oSmkfpnwToSAlVYa7RyvIEjyctYRlyqtLgkqIvQmO--1uZW6ybGODw7LrDWBhxpVbBw8ij2xga1wAa8dDHWgLI0hN2aceULPxB4A9bdWtcsrvsIFrn2b7YoFqC9C8aNif88Pb_32wUvjtra0fksOn-173rIT2vYwCqfBxgfyhoA-RRgDyvIHwB03RkcCaspQrU_5GuYJ_TSH0fAegqwEWvYPgDUuu_D1RkQm-kaduv8AUKhdwbSEG0nGP-5rBNkS7-wtOlsuwjtkNrOFSzPw7jNqY5iVO3vVfsZFYVRhtrRCUtnfHLkEOXjre01DSP_EULRhYEbOjI76y9evaJKHcmnOzKfo9G1t_xEliqJMVeagHzyvYA6PF8poXg7NVw3jUUXn5r3dUioMPlcxUwffztIdWgoTn_MN9qTTWZ7SVegvuULNhcsm6vwW7oA4h_NKmr-AglFjlcBBgAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var label = 'EntityPill_label__59j8teb';\nexport var labelMd = 'EntityPill_labelMd__59j8ted EntityPill_label__59j8teb';\nexport var labelSm = 'EntityPill_labelSm__59j8tec EntityPill_label__59j8teb';\nexport var pill = _7a468({defaultClassName:'EntityPill_pill__59j8te0',variantClassNames:{tone:{moss:'EntityPill_pill_tone_moss__59j8te1',rust:'EntityPill_pill_tone_rust__59j8te2',ochre:'EntityPill_pill_tone_ochre__59j8te3',plum:'EntityPill_pill_tone_plum__59j8te4',copper:'EntityPill_pill_tone_copper__59j8te5',neutral:'EntityPill_pill_tone_neutral__59j8te6'},size:{sm:'EntityPill_pill_size_sm__59j8te7',md:'EntityPill_pill_size_md__59j8te8'},interactive:{true:'EntityPill_pill_interactive_true__59j8te9',false:'EntityPill_pill_interactive_false__59j8tea'}},defaultVariants:{tone:'neutral',size:'md',interactive:false},compoundVariants:[]});","import type { CSSProperties } from 'react'\nimport type { GlyphName } from '../../types/components'\nimport { LetterStamp } from '../LetterStamp/LetterStamp'\nimport type { LetterStampTone } from '../LetterStamp/LetterStamp'\nimport * as styles from './EntityPill.css'\n\n/** Props for the {@link EntityPill} component. */\nexport interface EntityPillProps {\n /** Visible label text. */\n label: string\n /** Single character displayed in the stamp. Mutually exclusive with `glyph`. */\n letter?: string\n /** Glyph in the stamp. Mutually exclusive with `letter`. */\n glyph?: GlyphName\n /** Tone applied to both stamp fill and border. @default 'neutral' */\n tone?: LetterStampTone\n /**\n * Raw hex colour — sets the stamp fill AND the pill border.\n * Takes precedence over `tone` for both.\n */\n colour?: string\n /** Size variant. @default 'md' */\n size?: 'sm' | 'md'\n /** Makes the pill a `<button>` with click handler. */\n onClick?: () => void\n /** Makes the pill an `<a>` link. */\n href?: string\n className?: string\n style?: CSSProperties\n}\n\n/**\n * Compact entity identifier pill — combines a {@link LetterStamp} with a text label.\n * Renders as `<button>` when `onClick`, `<a>` when `href`, or `<span>` otherwise.\n *\n * @example\n * ```tsx\n * <EntityPill label=\"Acme Corp\" letter=\"A\" tone=\"moss\" />\n * <EntityPill label=\"Subscriptions\" glyph=\"flask\" tone=\"rust\" onClick={handleClick} />\n * ```\n */\nexport function EntityPill({\n label,\n letter,\n glyph,\n tone = 'neutral',\n colour,\n size = 'md',\n onClick,\n href,\n className,\n style,\n}: EntityPillProps) {\n const stampSize = size === 'sm' ? 20 : 28\n const isInteractive = Boolean(onClick || href)\n\n const pillClass = [\n styles.pill({ tone, size, interactive: isInteractive }),\n className,\n ].filter(Boolean).join(' ')\n\n const pillStyle: CSSProperties = {\n ...(colour ? { borderColor: colour } : {}),\n ...style,\n }\n\n const labelClass = size === 'sm' ? styles.labelSm : styles.labelMd\n\n const content = (\n <>\n <LetterStamp\n {...(letter !== undefined ? { letter } : {})}\n {...(glyph !== undefined ? { glyph } : {})}\n {...(colour !== undefined ? { colour } : {})}\n tone={tone}\n size={stampSize}\n />\n <span className={labelClass}>{label}</span>\n </>\n )\n\n if (href) {\n return (\n <a href={href} className={pillClass} style={pillStyle}>\n {content}\n </a>\n )\n }\n\n if (onClick) {\n return (\n <button type=\"button\" onClick={onClick} className={pillClass} style={pillStyle}>\n {content}\n </button>\n )\n }\n\n return <span className={pillClass} style={pillStyle}>{content}</span>\n}\n","import 'src/components/Sparkline/Sparkline.css.ts.vanilla.css?source=LlNwYXJrbGluZV9yb290X18zaTM1MjQwIHsKICBkaXNwbGF5OiBibG9jazsKICBvdmVyZmxvdzogdmlzaWJsZTsKfQ';\nexport var root = 'Sparkline_root__3i35240';","import * as styles from './Sparkline.css'\n\nexport type SparklineTone = 'positive' | 'negative' | 'neutral'\n\n/** Props for the {@link Sparkline} component. */\nexport interface SparklineProps {\n /** Array of numeric data points. Fewer than 2 renders an empty SVG. */\n data: number[]\n /** SVG width in px. @default 80 */\n width?: number\n /** SVG height in px. @default 28 */\n height?: number\n /** Colour tone. @default 'neutral' */\n tone?: SparklineTone\n className?: string\n}\n\n// CSS custom properties are not accessible in pure SVG attr without vars.\n// Use hardcoded design-system colour references that match the token values.\nconst TONE_COLORS: Record<SparklineTone, string> = {\n positive: 'var(--achery-color-success, #6ba03d)',\n negative: 'var(--achery-color-danger, #8a3a22)',\n neutral: 'var(--achery-color-accent, #c46a3a)',\n}\n\n/**\n * Minimal inline sparkline chart. Pure SVG, no dependencies, SSR-safe.\n *\n * @example\n * ```tsx\n * <Sparkline data={[1,3,2,5,4,6]} tone=\"positive\" width={80} height={28} />\n * ```\n */\nexport function Sparkline({\n data,\n width = 80,\n height = 28,\n tone = 'neutral',\n className,\n}: SparklineProps) {\n const PADDING = 2\n\n if (data.length < 2) {\n return (\n <svg\n viewBox={`0 0 ${width} ${height}`}\n width={width}\n height={height}\n className={[styles.root, className].filter(Boolean).join(' ')}\n aria-hidden=\"true\"\n />\n )\n }\n\n const min = Math.min(...data)\n const max = Math.max(...data)\n const range = max - min || 1\n\n const xStep = (width - PADDING * 2) / (data.length - 1)\n const yScale = (height - PADDING * 2) / range\n\n const points = data\n .map((v, i) => {\n const x = PADDING + i * xStep\n const y = height - PADDING - (v - min) * yScale\n return `${x.toFixed(2)},${y.toFixed(2)}`\n })\n .join(' ')\n\n return (\n <svg\n viewBox={`0 0 ${width} ${height}`}\n width={width}\n height={height}\n className={[styles.root, className].filter(Boolean).join(' ')}\n aria-hidden=\"true\"\n >\n <polyline\n points={points}\n fill=\"none\"\n stroke={TONE_COLORS[tone]}\n strokeWidth={1.4}\n strokeLinejoin=\"round\"\n strokeLinecap=\"round\"\n />\n </svg>\n )\n}\n","import 'src/components/KpiTile/KpiTile.css.ts.vanilla.css?source=LktwaVRpbGVfd3JhcHBlcl9fMXlpOThjNjAgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogbm9uZTsKICBwYWRkaW5nOiAwOwogIGN1cnNvcjogcG9pbnRlcjsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci5LcGlUaWxlX3dyYXBwZXJfXzF5aTk4YzYwOmZvY3VzLXZpc2libGUgewogIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1hY2NlbnRfXzFhY2lieGJkKTsKICBvdXRsaW5lLW9mZnNldDogMnB4Owp9Ci5LcGlUaWxlX3dyYXBwZXJfXzF5aTk4YzYwOmhvdmVyID4gKiB7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmdTdW5rZW5fXzFhY2lieGIyKTsKfQouS3BpVGlsZV9pbm5lcl9fMXlpOThjNjEgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IHZhcigtLXNwYWNlLXNwM19fMWFjaWJ4YngpOwogIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24tZmFzdF9fMWFjaWJ4YjFmKSB2YXIoLS1lYXNlLW91dF9fMWFjaWJ4YjFpKTsKfQouS3BpVGlsZV92YWx1ZV9fMXlpOThjNjIgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWRpc3BsYXlfXzFhY2lieGJzKTsKICBmb250LXdlaWdodDogOTAwOwogIGZvbnQtc2l6ZTogMjhweDsKICBsaW5lLWhlaWdodDogMS4xOwogIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtOwogIGNvbG9yOiB2YXIoLS1jb2xvci1mZ19fMWFjaWJ4YjUpOwp9';\nexport var inner = 'KpiTile_inner__1yi98c61';\nexport var value = 'KpiTile_value__1yi98c62';\nexport var wrapper = 'KpiTile_wrapper__1yi98c60';","import type { ReactNode } from 'react'\nimport { Card } from '../Card/Card'\nimport { Eyebrow } from '../Eyebrow/Eyebrow'\nimport { Badge } from '../Badge/Badge'\nimport { Skeleton } from '../Skeleton/Skeleton'\nimport { Sparkline } from '../Sparkline/Sparkline'\nimport type { SparklineTone } from '../Sparkline/Sparkline'\nimport type { BadgeTone } from '../../types'\nimport * as styles from './KpiTile.css'\n\nconst deltaToneToBadge: Record<SparklineTone, BadgeTone> = {\n positive: 'saved',\n negative: 'stopped',\n neutral: 'neutral',\n}\n\n/** Props for the {@link KpiTile} component. */\nexport interface KpiTileProps {\n /** Eyebrow label above the value (e.g. \"Total Income\"). */\n label: string\n /** Pre-formatted value string (e.g. \"$4,200\"). */\n value: string\n /** Delta label (e.g. \"+$340 vs last month\"). */\n delta?: string\n /** Tone for the delta badge and sparkline. @default 'neutral' */\n deltaTone?: SparklineTone\n /** Data points passed to the internal Sparkline. */\n sparkData?: number[]\n /** Makes the tile a clickable button. */\n onClick?: () => void\n /**\n * When true, renders skeleton placeholders in place of the value and delta.\n * The card shell stays in place so the layout doesn't shift when data arrives.\n */\n loading?: boolean\n className?: string\n}\n\n/**\n * KPI summary tile with eyebrow label, large value, optional delta badge,\n * and optional sparkline.\n *\n * @example\n * ```tsx\n * <KpiTile\n * label=\"Total Income\"\n * value=\"$4,200\"\n * delta=\"+$340 vs last month\"\n * deltaTone=\"positive\"\n * sparkData={[3200, 3500, 3800, 4200]}\n * onClick={() => navigate('/income')}\n * />\n * ```\n */\nexport function KpiTile({\n label,\n value,\n delta,\n deltaTone = 'neutral',\n sparkData,\n onClick,\n loading = false,\n className,\n}: KpiTileProps) {\n const inner: ReactNode = (\n <Card variant=\"stamp\" padding=\"md\" {...(className !== undefined ? { className } : {})}>\n <div className={styles.inner}>\n <Eyebrow>{label}</Eyebrow>\n {loading ? (\n <>\n <Skeleton width=\"55%\" />\n <Skeleton width=\"70%\" />\n </>\n ) : (\n <>\n <span className={styles.value}>{value}</span>\n {delta && (\n <Badge tone={deltaToneToBadge[deltaTone]} dot>\n {delta}\n </Badge>\n )}\n {sparkData && sparkData.length >= 2 && (\n <Sparkline data={sparkData} tone={deltaTone} width={80} height={24} />\n )}\n </>\n )}\n </div>\n </Card>\n )\n\n if (onClick) {\n return (\n <button type=\"button\" onClick={onClick} className={styles.wrapper}>\n {inner}\n </button>\n )\n }\n\n return inner\n}\n","import { Badge } from '../Badge/Badge'\nimport type { BadgeTone } from '../../types'\n\nexport type SubscriptionState = 'stable' | 'drift-up' | 'drift-down' | 'new-price' | 'renewing'\n\n/** Props for the {@link StatePill} component. */\nexport interface StatePillProps {\n /** Subscription lifecycle state. */\n state: SubscriptionState\n className?: string\n}\n\nconst stateMap: Record<SubscriptionState, { tone: BadgeTone; label: string }> = {\n 'stable': { tone: 'neutral', label: 'Stable' },\n 'drift-up': { tone: 'stopped', label: 'Drift up' },\n 'drift-down': { tone: 'saved', label: 'Drift down' },\n 'new-price': { tone: 'drafting', label: 'New price' },\n 'renewing': { tone: 'drafting', label: 'Renewing soon' },\n}\n\n/**\n * Subscription state indicator pill. Wraps {@link Badge} with predefined\n * tone and label for each subscription lifecycle state.\n *\n * @example\n * ```tsx\n * <StatePill state=\"drift-up\" />\n * <StatePill state=\"stable\" />\n * ```\n */\nexport function StatePill({ state, className }: StatePillProps) {\n const { tone, label } = stateMap[state]\n return (\n <Badge tone={tone} dot {...(className !== undefined ? { className } : {})}>\n {label}\n </Badge>\n )\n}\n","import 'src/components/TypeTag/TypeTag.css.ts.vanilla.css?source=LlR5cGVUYWdfdGFnX18xbmYyemhiMCB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vX18xYWNpYnhidSk7CiAgZm9udC1zaXplOiAxMXB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlck11dGVfXzFhY2lieGJiKTsKICBwYWRkaW5nOiAxcHggNXB4OwogIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbm9uZV9fMWFjaWJ4YjE3KTsKfQouVHlwZVRhZ190YWdfdHlwZV9iYXNpY19fMW5mMnpoYjEgewogIGNvbG9yOiB2YXIoLS1jb2xvci1mZzNfXzFhY2lieGI3KTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQouVHlwZVRhZ190YWdfdHlwZV9pbnRlcm5hbF9fMW5mMnpoYjIgewogIGNvbG9yOiB2YXIoLS1jb2xvci1mZzNfXzFhY2lieGI3KTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQouVHlwZVRhZ190YWdfdHlwZV9leGNlcHRpb25hbF9fMW5mMnpoYjMgewogIGNvbG9yOiB2YXIoLS1jb2xvci1kYW5nZXJfXzFhY2lieGJqKTsKICBiYWNrZ3JvdW5kOiByZ2JhKDEzOCw1OCwzNCwwLjA4KTsKICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWRhbmdlcl9fMWFjaWJ4YmopOwp9Ci5UeXBlVGFnX3RhZ190eXBlX2ZlZV9fMW5mMnpoYjQgewogIGNvbG9yOiB2YXIoLS1jb2xvci13YXJuX18xYWNpYnhiaSk7CiAgYmFja2dyb3VuZDogcmdiYSgxODQsMTQ2LDc0LDAuMDgpOwogIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3Itd2Fybl9fMWFjaWJ4YmkpOwp9';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var tag = _7a468({defaultClassName:'TypeTag_tag__1nf2zhb0',variantClassNames:{type:{basic:'TypeTag_tag_type_basic__1nf2zhb1',internal:'TypeTag_tag_type_internal__1nf2zhb2',exceptional:'TypeTag_tag_type_exceptional__1nf2zhb3',fee:'TypeTag_tag_type_fee__1nf2zhb4'}},defaultVariants:{type:'basic'},compoundVariants:[]});","import * as styles from './TypeTag.css'\n\nexport type TransactionType = 'basic' | 'internal' | 'exceptional' | 'fee'\n\n/** Props for the {@link TypeTag} component. */\nexport interface TypeTagProps {\n /** Transaction type — determines colour and label. */\n type: TransactionType\n className?: string\n}\n\nconst labels: Record<TransactionType, string> = {\n basic: 'basic',\n internal: 'internal',\n exceptional: 'exceptional',\n fee: 'fee',\n}\n\n/**\n * Monospace type tag for transaction classification.\n * Colour-coded by type with a muted border.\n *\n * @example\n * ```tsx\n * <TypeTag type=\"exceptional\" />\n * <TypeTag type=\"fee\" />\n * ```\n */\nexport function TypeTag({ type, className }: TypeTagProps) {\n return (\n <span className={[styles.tag({ type }), className].filter(Boolean).join(' ')}>\n {labels[type]}\n </span>\n )\n}\n","import type { HTMLAttributes, ReactNode } from 'react'\nimport type { MaterialIntensity } from '../../types/theme'\n\nimport '../../theme/material.css'\n\n/** Props for the {@link MaterialCard} component. */\nexport interface MaterialCardProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * How much of the material surfaces on this object.\n * - `'chrome'` — material as spine + metal trim only; paper body (default)\n * - `'surface'` — material header band over a paper body\n * - `'full'` — the whole object in material; reserve for rare, celebratory moments\n * @default 'chrome'\n */\n intensity?: MaterialIntensity\n /**\n * Header slot — rendered as `.material__bar`. Receives material background\n * at `surface` and `full` intensities. Pass a string for the title or a\n * ReactNode for a custom bar layout.\n */\n header?: ReactNode\n /**\n * Footer slot — rendered as `.material__foot` with a top border rule.\n * Ideal for action buttons.\n */\n footer?: ReactNode\n children?: ReactNode\n className?: string\n}\n\n/**\n * A contained, bounded surface that wears the project's material signature.\n * Use for modals, dialogs, featured cards, receipts — objects that *arrive*\n * and demand a moment of attention.\n *\n * The working page stays plain paper/ink. The material is the occasion.\n *\n * The parent `<AcheryProvider defaultMaterial=\"leather\">` (or `wood` / `copper`)\n * sets which signature is used; the `intensity` prop controls how loudly it\n * surfaces on this object.\n *\n * @example\n * ```tsx\n * <MaterialCard intensity=\"surface\" header=\"Close the month\" footer={<Button>Bind & archive</Button>}>\n * <Eyebrow>November · ready to bind</Eyebrow>\n * <Body>Seal the ledger and file it to the archive.</Body>\n * </MaterialCard>\n * ```\n */\nexport function MaterialCard({\n intensity = 'chrome',\n header,\n footer,\n children,\n className,\n ...props\n}: MaterialCardProps) {\n const classes = ['material', `m-${intensity}`, className].filter(Boolean).join(' ')\n\n return (\n <div className={classes} {...props}>\n {header !== undefined && (\n <div className=\"material__bar\">\n <span className=\"material__mark\" aria-hidden />\n {typeof header === 'string' ? (\n <span className=\"material__title\">{header}</span>\n ) : (\n header\n )}\n </div>\n )}\n <div className=\"material__body\">\n {children}\n </div>\n {footer !== undefined && (\n <div className=\"material__foot\">\n {footer}\n </div>\n )}\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/context/AppBarSearchContext.tsx","../src/theme/ThemeProvider.tsx","../src/theme/vars.css.ts","../src/glyphs/Glyph.css.ts","../src/glyphs/Glyph.tsx","../src/glyphs/glyphMeta.ts","../src/components/GlyphPicker/GlyphPicker.css.ts","../src/components/GlyphPicker/GlyphPicker.tsx","../src/components/Typography/Typography.css.ts","../src/components/Typography/Typography.tsx","../src/components/Eyebrow/Eyebrow.css.ts","../src/components/Eyebrow/Eyebrow.tsx","../src/components/Badge/Badge.css.ts","../src/components/Badge/Badge.tsx","../src/components/Button/Button.css.ts","../src/components/Button/Button.tsx","../src/components/Modal/Modal.css.ts","../src/components/Modal/Modal.tsx","../src/components/ConfirmDialog/ConfirmDialog.tsx","../src/components/Toggle/Toggle.css.ts","../src/components/Toggle/Toggle.tsx","../src/components/Marginalia/Marginalia.css.ts","../src/components/Marginalia/Marginalia.tsx","../src/components/Input/Input.css.ts","../src/components/Input/Input.tsx","../src/components/Card/Card.css.ts","../src/components/Card/Card.tsx","../src/components/Tabs/Tabs.css.ts","../src/components/Tabs/Tabs.tsx","../src/components/Tooltip/Tooltip.css.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Sidebar/Sidebar.css.ts","../src/components/Sidebar/Sidebar.tsx","../src/components/Skeleton/Skeleton.css.ts","../src/components/Skeleton/Skeleton.tsx","../src/components/ProgressBar/ProgressBar.css.ts","../src/components/ProgressBar/ProgressBar.tsx","../src/components/Avatar/Avatar.css.ts","../src/components/Avatar/Avatar.tsx","../src/components/AppBar/AppBar.css.ts","../src/components/AppBar/AppBar.tsx","../src/components/Table/Table.css.ts","../src/components/Table/Table.tsx","../src/components/Toast/Toast.css.ts","../src/components/Toast/Toast.tsx","../src/components/Checkbox/Checkbox.css.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/Menu/Menu.css.ts","../src/components/Menu/Menu.tsx","../src/components/DatePicker/DatePicker.css.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/Combobox/Combobox.css.ts","../src/components/Combobox/Combobox.tsx","../src/components/LetterStamp/LetterStamp.css.ts","../src/components/LetterStamp/LetterStamp.tsx","../src/components/EntityPill/EntityPill.css.ts","../src/components/EntityPill/EntityPill.tsx","../src/components/Sparkline/Sparkline.css.ts","../src/components/Sparkline/Sparkline.tsx","../src/components/KpiTile/KpiTile.css.ts","../src/components/KpiTile/KpiTile.tsx","../src/components/StatePill/StatePill.tsx","../src/components/TypeTag/TypeTag.css.ts","../src/components/TypeTag/TypeTag.tsx","../src/components/MaterialCard/MaterialCard.tsx"],"names":["createContext","useState","jsx","useContext","useEffect","useCallback","lazy","title","Suspense","label","value","useRef","PopoverPrimitive","jsxs","count","_7a468","dot","glyph","Fragment","body","description","footer","trigger","RadixDialog","opts","RadixToggle","searchInput","hint","header","marginalia","RadixTabs","item","RadixTooltip","group","content","block","track","initials","display","brandName","brandSub","searchKbd","actions","accentColorNames","accentColors","emptyState","window","toolbar","useMemo","toast","createPortal","statusIndicator","statusIndicatorVariants","wrapper","RadixCheckbox","RadixDropdownMenu","statusIcon","statusIconVariants","input","useId","letter","root","inner"],"mappings":"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","file":"index.cjs","sourcesContent":["import { createContext, useContext, useState, type ReactNode } from 'react'\n\n/** The search configuration published by {@link AppBar} for consumption by {@link Sidebar}. */\nexport interface AppBarSearchConfig {\n placeholder: string\n kbd?: string\n onSearch?: (query: string) => void\n onSearchFocus?: () => void\n}\n\ninterface AppBarSearchContextValue {\n searchConfig: AppBarSearchConfig | null\n setSearchConfig: (config: AppBarSearchConfig | null) => void\n}\n\nexport const AppBarSearchContext = createContext<AppBarSearchContextValue | null>(null)\n\n/** Internal provider — rendered by {@link AcheryProvider}. Do not mount independently. */\nexport const AppBarSearchProvider = ({ children }: { children: ReactNode }) => {\n const [searchConfig, setSearchConfig] = useState<AppBarSearchConfig | null>(null)\n return (\n <AppBarSearchContext.Provider value={{ searchConfig, setSearchConfig }}>\n {children}\n </AppBarSearchContext.Provider>\n )\n}\n\n/** Returns the search context, or null if no AppBar with showSearch is mounted. */\nexport const useAppBarSearch = () => useContext(AppBarSearchContext)\n","import { createContext, useContext, useState, useEffect, useCallback, type ReactNode } from 'react'\nimport type { ThemeContextValue, ThemeMode, ResolvedTheme, AccentColor, AccentDial, MaterialSignature } from '../types/theme'\nimport { AppBarSearchProvider } from '../context/AppBarSearchContext'\n\nimport './light.css'\nimport './dark.css'\nimport './accents.css'\nimport './dial.css'\nimport './material.css'\nimport './global.css'\n\nconst STORAGE_KEY = 'achery-theme-mode'\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null)\n\nfunction getSystemTheme(): ResolvedTheme {\n if (typeof window === 'undefined') return 'light'\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n}\n\nfunction resolveTheme(mode: ThemeMode | string): ResolvedTheme {\n if (mode === 'light' || mode === 'dark') return mode\n return getSystemTheme()\n}\n\nfunction readStoredMode(fallback: ThemeMode): ThemeMode {\n try {\n const stored = localStorage.getItem(STORAGE_KEY)\n if (stored === 'light' || stored === 'dark' || stored === 'system') return stored\n } catch {}\n return fallback\n}\n\n/** Props for the {@link AcheryProvider} component. */\nexport interface AcheryProviderProps {\n children: ReactNode\n /**\n * Initial colour-mode preference. Overridden by any persisted localStorage\n * value from a previous session.\n * @default 'system'\n */\n defaultTheme?: ThemeMode\n /**\n * Initial accent colour.\n * @default 'terracotta'\n */\n defaultAccent?: AccentColor\n /**\n * How loudly the accent runs across the working UI.\n * - `'underline'` — accent on links, focus, and active-tab underline only\n * - `'chrome'` — accent threads the wiring: tabs, ticks, eyebrows, outlines\n * - `'surface'` — one `.signature-surface` panel floods with accent (default for storefront/game products)\n * @default 'chrome'\n */\n defaultDial?: AccentDial\n /**\n * Hero material signature for contained, occasional objects (modals, dialogs, featured cards).\n * - `'none'` — no material; objects use plain paper/ink\n * - `'leather'` — cordovan + gilt\n * - `'wood'` — walnut + pewter\n * - `'copper'` — oxidised copper + patina\n * @default 'none'\n */\n defaultMaterial?: MaterialSignature\n /** className applied to the root `[data-achery-root]` div. */\n className?: string\n /** Inline styles applied to the root `[data-achery-root]` div. */\n style?: React.CSSProperties\n}\n\n/**\n * Root provider for the Achery design system. Must wrap any part of the tree\n * that uses Achery components.\n *\n * Responsibilities:\n * - Injects theme CSS (light, dark, accents, global reset) as side-effect imports\n * - Persists the colour-mode preference in `localStorage` under `'achery-theme-mode'`\n * - Supports `'system'` mode — resolves to light/dark based on `prefers-color-scheme`\n * and updates live when the OS setting changes\n * - Renders a `[data-achery-root][data-theme][data-accent]` div that scopes all\n * CSS custom properties\n * - Mirrors those attributes onto `<html>` so portaled content (Modal, Tooltip,\n * Toast) inherits the same CSS vars outside the root div\n * - Provides {@link ThemeContext} for {@link useTheme}\n *\n * @example\n * ```tsx\n * import { AcheryProvider } from 'achery-ui'\n *\n * export default function App() {\n * return (\n * <AcheryProvider defaultTheme=\"system\" defaultAccent=\"terracotta\">\n * <YourApp />\n * </AcheryProvider>\n * )\n * }\n * ```\n */\nexport function AcheryProvider({\n children,\n defaultTheme = 'system',\n defaultAccent = 'terracotta',\n defaultDial = 'chrome',\n defaultMaterial = 'none',\n className,\n style,\n}: AcheryProviderProps) {\n const [mode, setModeState] = useState<ThemeMode>(() => readStoredMode(defaultTheme))\n const [accent, setAccentState] = useState<AccentColor>(defaultAccent)\n const [dial, setDialState] = useState<AccentDial>(defaultDial)\n const [material, setMaterialState] = useState<MaterialSignature>(defaultMaterial)\n const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>(() => resolveTheme(readStoredMode(defaultTheme)))\n\n // Sync explicit light/dark prop changes (e.g. Storybook toolbar) into state.\n // 'system' is intentionally excluded — it should not override a user's stored preference.\n useEffect(() => {\n setModeState(defaultTheme)\n setResolvedTheme(resolveTheme(defaultTheme))\n }, [defaultTheme])\n\n useEffect(() => { setAccentState(defaultAccent) }, [defaultAccent])\n useEffect(() => { setDialState(defaultDial) }, [defaultDial])\n useEffect(() => { setMaterialState(defaultMaterial) }, [defaultMaterial])\n\n const setTheme = useCallback((next: ThemeMode) => {\n setModeState(next)\n setResolvedTheme(resolveTheme(next))\n try { localStorage.setItem(STORAGE_KEY, next) } catch {}\n }, [])\n\n const toggleTheme = useCallback(() => {\n setTheme(resolvedTheme === 'light' ? 'dark' : 'light')\n }, [resolvedTheme, setTheme])\n\n const setAccent = useCallback((next: AccentColor) => setAccentState(next), [])\n const setDial = useCallback((next: AccentDial) => setDialState(next), [])\n const setMaterial = useCallback((next: MaterialSignature) => setMaterialState(next), [])\n\n // When mode is 'system', subscribe to OS preference changes\n useEffect(() => {\n if (mode !== 'system') return\n const mq = window.matchMedia('(prefers-color-scheme: dark)')\n const handler = (e: MediaQueryListEvent) => {\n setResolvedTheme(e.matches ? 'dark' : 'light')\n }\n mq.addEventListener('change', handler)\n // Sync immediately in case OS changed since mount\n setResolvedTheme(mq.matches ? 'dark' : 'light')\n return () => mq.removeEventListener('change', handler)\n }, [mode])\n\n // Mirror theme attrs onto <html> so portaled content (Modal, Tooltip, Toast)\n // inherits CSS vars even though they render outside [data-achery-root].\n useEffect(() => {\n const html = document.documentElement\n html.dataset['theme'] = resolvedTheme\n html.dataset['accent'] = accent\n html.dataset['dial'] = dial\n if (material !== 'none') html.dataset['material'] = material\n else delete html.dataset['material']\n html.dataset['acheryRoot'] = ''\n return () => {\n delete html.dataset['theme']\n delete html.dataset['accent']\n delete html.dataset['dial']\n delete html.dataset['material']\n delete html.dataset['acheryRoot']\n }\n }, [resolvedTheme, accent, dial, material])\n\n return (\n <ThemeContext.Provider value={{ mode, theme: resolvedTheme, setTheme, toggleTheme, accent, setAccent, dial, setDial, material, setMaterial }}>\n <AppBarSearchProvider>\n <div\n data-achery-root=\"\"\n data-theme={resolvedTheme}\n data-accent={accent}\n data-dial={dial}\n {...(material !== 'none' ? { 'data-material': material } : {})}\n className={className}\n style={style}\n >\n {children}\n </div>\n </AppBarSearchProvider>\n </ThemeContext.Provider>\n )\n}\n\n/**\n * Hook that returns the current theme state and setters from the nearest\n * {@link AcheryProvider}.\n *\n * @throws If called outside an `<AcheryProvider>`.\n *\n * @example\n * ```tsx\n * function ThemeToggle() {\n * const { mode, setTheme } = useTheme()\n * return (\n * <div style={{ display: 'flex', gap: 8 }}>\n * {(['light', 'system', 'dark'] as const).map(m => (\n * <Button key={m} variant={mode === m ? 'accent' : 'secondary'} onClick={() => setTheme(m)}>\n * {m}\n * </Button>\n * ))}\n * </div>\n * )\n * }\n * ```\n */\nexport function useTheme(): ThemeContextValue {\n const ctx = useContext(ThemeContext)\n if (!ctx) throw new Error('useTheme must be used within <AcheryProvider>')\n return ctx\n}\n\n/** Raw React context — use {@link useTheme} in components instead. */\nexport { ThemeContext }\n","export var vars = {color:{bg:'var(--color-bg__1acibxb0)',bg2:'var(--color-bg2__1acibxb1)',bgSunken:'var(--color-bgSunken__1acibxb2)',surface:'var(--color-surface__1acibxb3)',surface2:'var(--color-surface2__1acibxb4)',fg:'var(--color-fg__1acibxb5)',fg2:'var(--color-fg2__1acibxb6)',fg3:'var(--color-fg3__1acibxb7)',fgMute:'var(--color-fgMute__1acibxb8)',border:'var(--color-border__1acibxb9)',border2:'var(--color-border2__1acibxba)',borderMute:'var(--color-borderMute__1acibxbb)',rule:'var(--color-rule__1acibxbc)',accent:'var(--color-accent__1acibxbd)',accentFg:'var(--color-accentFg__1acibxbe)',accent2:'var(--color-accent2__1acibxbf)',accent3:'var(--color-accent3__1acibxbg)',success:'var(--color-success__1acibxbh)',warn:'var(--color-warn__1acibxbi)',danger:'var(--color-danger__1acibxbj)',info:'var(--color-info__1acibxbk)',selectionBg:'var(--color-selectionBg__1acibxbl)',selectionFg:'var(--color-selectionFg__1acibxbm)',material:'var(--color-material__1acibxbn)',materialFg:'var(--color-materialFg__1acibxbo)',materialBtnFg:'var(--color-materialBtnFg__1acibxbp)',metal:'var(--color-metal__1acibxbq)',metalDeep:'var(--color-metalDeep__1acibxbr)'},font:{display:'var(--font-display__1acibxbs)',body:'var(--font-body__1acibxbt)',mono:'var(--font-mono__1acibxbu)'},space:{sp1:'var(--space-sp1__1acibxbv)',sp2:'var(--space-sp2__1acibxbw)',sp3:'var(--space-sp3__1acibxbx)',sp4:'var(--space-sp4__1acibxby)',sp5:'var(--space-sp5__1acibxbz)',sp6:'var(--space-sp6__1acibxb10)',sp7:'var(--space-sp7__1acibxb11)',sp8:'var(--space-sp8__1acibxb12)',sp9:'var(--space-sp9__1acibxb13)',sp10:'var(--space-sp10__1acibxb14)',sp11:'var(--space-sp11__1acibxb15)',sp12:'var(--space-sp12__1acibxb16)'},radius:{none:'var(--radius-none__1acibxb17)',hairline:'var(--radius-hairline__1acibxb18)',sm:'var(--radius-sm__1acibxb19)',pill:'var(--radius-pill__1acibxb1a)'},shadow:{stamp:'var(--shadow-stamp__1acibxb1b)',stampLg:'var(--shadow-stampLg__1acibxb1c)',press:'var(--shadow-press__1acibxb1d)',soft:'var(--shadow-soft__1acibxb1e)'},duration:{fast:'var(--duration-fast__1acibxb1f)',base:'var(--duration-base__1acibxb1g)',slow:'var(--duration-slow__1acibxb1h)'},ease:{out:'var(--ease-out__1acibxb1i)',snap:'var(--ease-snap__1acibxb1j)'}};","import 'src/glyphs/Glyph.css.ts.vanilla.css?source=LkdseXBoX2dseXBoX19rYnZ2NDIwIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGZsZXgtc2hyaW5rOiAwOwp9';\nexport var glyph = 'Glyph_glyph__kbvv420';","import { lazy, Suspense } from 'react'\nimport type { SVGProps } from 'react'\nimport type { GlyphName } from '../types/components'\nimport * as styles from './Glyph.css'\n\nconst toComponentName = (name: GlyphName): string =>\n name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join('')\n\n// Cache lazy components so re-renders don't create new lazy() calls\nconst lazyCache = new Map<string, React.LazyExoticComponent<React.FC<SVGProps<SVGSVGElement>>>>()\n\nconst getLazy = (name: GlyphName) => {\n const compName = toComponentName(name)\n if (!lazyCache.has(compName)) {\n lazyCache.set(\n compName,\n lazy(() =>\n import(`./svg-components/${compName}.tsx`).then(m => ({ default: m.default }))\n ),\n )\n }\n return lazyCache.get(compName)!\n}\n\n/** Props for the {@link Glyph} component. */\nexport interface GlyphProps extends SVGProps<SVGSVGElement> {\n /**\n * Name of the glyph to render. One of the 394 icons + 3 brand marks in the Achery glyph set.\n * Use `searchGlyphs()` to find glyphs by keyword, or browse categories via `GlyphCategories`.\n *\n * **Brand:** `mark`, `wordmark`, `sigil`\n */\n name: GlyphName\n /**\n * Size in pixels — applied to both `width` and `height`.\n * @default 16\n */\n size?: number\n /**\n * Accessible label for the glyph. When provided, sets `aria-label` and\n * removes `aria-hidden`. Omit for decorative use.\n */\n title?: string\n className?: string\n}\n\nconst Placeholder = ({ size, className, style }: { size: number; className?: string | undefined; style?: React.CSSProperties | undefined }) => (\n <span\n className={[styles.glyph, className].filter(Boolean).join(' ')}\n style={{ width: size, height: size, display: 'inline-block', ...style }}\n aria-hidden=\"true\"\n />\n)\n\n/**\n * Renders a single SVG glyph from the Achery icon set. Each glyph is loaded\n * lazily via dynamic import — only the requested glyph's module is fetched,\n * keeping the initial bundle small. Inherits `currentColor`.\n *\n * For decorative use, omit `title` (the glyph is `aria-hidden` by default).\n * For semantic use (icon-only button labels etc.), provide a `title`.\n */\nexport const Glyph = ({ name, size = 16, title, className, style, ...props }: GlyphProps) => {\n const SvgComponent = getLazy(name)\n\n return (\n <Suspense fallback={<Placeholder size={size} className={className} style={style} />}>\n <SvgComponent\n width={size}\n height={size}\n aria-hidden={title ? undefined : true}\n aria-label={title}\n className={[styles.glyph, className].filter(Boolean).join(' ')}\n style={style}\n {...props}\n />\n </Suspense>\n )\n}\n","import type { GlyphName } from '../types/components'\n\nexport const GlyphCategories: Record<string, readonly GlyphName[]> = {\n 'Original & alchemical': [\n 'mercury', 'sulfur', 'salt', 'sun', 'moon', 'star', 'sigil', 'flask', 'key',\n 'leaf', 'sprig', 'fern', 'compass', 'eye', 'hand', 'feather', 'book', 'scroll',\n 'asterism', 'flourish',\n ],\n 'Geometric': [\n 'triangle', 'triangle-down', 'square', 'circle', 'hex', 'cross', 'tick', 'plus', 'minus',\n ],\n 'Navigation': [\n 'arrow-up', 'arrow-right', 'arrow-left', 'arrow-down', 'arrow-up-right', 'arrow-down-right',\n 'chevron-left', 'chevron-right', 'chevron-up', 'chevron-down', 'chevrons-left', 'chevrons-right',\n 'caret-down', 'caret-up', 'caret-left', 'caret-right',\n 'menu', 'close', 'expand', 'collapse', 'external-link',\n 'grid', 'list', 'columns', 'sidebar', 'more', 'more-vertical',\n 'filter', 'sort', 'refresh', 'undo', 'redo', 'home', 'maximize', 'drag', 'search',\n ],\n 'Controls & status': [\n 'edit', 'pencil', 'eraser', 'trash', 'save', 'copy', 'clipboard',\n 'download', 'upload', 'share', 'link', 'unlink', 'lock', 'unlock',\n 'pin', 'thumbtack', 'bookmark', 'flag', 'tag',\n 'check-circle', 'x-circle', 'plus-circle', 'minus-circle',\n 'info', 'help', 'warning', 'ban',\n 'sliders', 'toggle-on', 'toggle-off', 'eye-off', 'settings',\n ],\n 'Communication': [\n 'mail', 'mail-open', 'send', 'chat', 'chat-dots', 'comments',\n 'phone', 'at-sign', 'inbox', 'megaphone', 'rss', 'bell', 'bell-off', 'paperclip',\n ],\n 'Media & devices': [\n 'play', 'pause', 'stop', 'skip-forward', 'skip-back', 'play-circle',\n 'volume', 'volume-off', 'mic', 'mic-off',\n 'camera', 'video', 'image', 'music-note', 'headphones', 'film',\n 'monitor', 'smartphone', 'laptop', 'keyboard', 'printer',\n 'battery', 'wifi', 'plug', 'cpu', 'database', 'server', 'hard-drive', 'tv', 'router',\n ],\n 'Time': [\n 'clock', 'calendar', 'calendar-check', 'timer', 'hourglass', 'history', 'alarm', 'sunrise',\n ],\n 'Weather & nature': [\n 'cloud', 'cloud-rain', 'cloud-sun', 'snowflake', 'bolt', 'wind', 'droplet', 'waves', 'fire',\n 'mountain', 'tree', 'flower', 'sprout', 'umbrella', 'paw', 'bug', 'bird', 'fish',\n 'acorn', 'rainbow', 'palm-tree', 'cactus', 'mushroom', 'campfire', 'snowman',\n ],\n 'Transport & travel': [\n 'car', 'bus', 'train', 'plane', 'ship', 'bike', 'scooter', 'truck', 'taxi',\n 'fuel', 'parking', 'traffic-light', 'luggage', 'passport', 'anchor', 'road',\n ],\n 'Tools & workshop': [\n 'hammer', 'wrench', 'screwdriver', 'scissors', 'ruler', 'brush', 'palette',\n 'gear', 'anvil', 'axe', 'pickaxe', 'shovel', 'saw', 'drafting-compass',\n 'magnet', 'needle', 'toolbox', 'nut-bolt', 'gavel',\n ],\n 'Shopping & apparel': [\n 'shirt', 'dress', 'shoe', 'hat', 'watch', 'ring', 'glasses', 'sunglasses',\n 'perfume', 'lipstick', 'hanger', 'basket', 'barcode', 'gem', 'backpack',\n ],\n 'Commerce & data': [\n 'cart', 'bag', 'wallet', 'credit-card', 'coin', 'receipt', 'gift',\n 'chart-bar', 'chart-line', 'chart-pie', 'trending-up', 'trending-down',\n 'scale', 'target', 'percent', 'box', 'archive',\n ],\n 'Finance & money': [\n 'bank', 'piggy-bank', 'dollar', 'euro', 'pound', 'yen', 'bitcoin', 'atm',\n 'vault', 'calculator', 'money-bill', 'coins', 'hand-coin', 'exchange',\n ],\n 'Home & utilities': [\n 'couch', 'bed', 'lamp', 'door', 'broom', 'washer', 'thermometer', 'thermostat',\n 'fire-extinguisher', 'key-round',\n ],\n 'Health & fitness': [\n 'dumbbell', 'heart-pulse', 'pill', 'syringe', 'stethoscope', 'tooth', 'bandage',\n 'first-aid', 'lotus', 'running', 'weight-scale', 'wheelchair', 'mask', 'brain',\n ],\n 'Food & drink': [\n 'coffee', 'cup', 'wine', 'bottle', 'cocktail', 'cake', 'restaurant', 'utensils',\n 'apple', 'ice-cream', 'bread', 'burger', 'pizza', 'noodles', 'sushi', 'taco',\n 'salad', 'egg', 'donut', 'cookie', 'candy', 'popcorn', 'beer', 'soda', 'milk', 'croissant',\n ],\n 'People & places': [\n 'person', 'people', 'person-add', 'user-circle', 'building', 'store',\n 'map', 'navigation', 'globe', 'school', 'briefcase', 'factory', 'hospital', 'tent', 'ticket',\n ],\n 'Family & pets': [\n 'dog', 'cat', 'bone', 'stroller', 'baby-bottle', 'teddy', 'blocks',\n ],\n 'Leisure': [\n 'gamepad', 'dice', 'theater-masks', 'guitar', 'piano', 'chess', 'clapperboard', 'balloon',\n ],\n 'Alchemical & esoteric': [\n 'venus', 'mars', 'element-fire', 'element-water', 'element-air', 'element-earth',\n 'quintessence', 'ankh', 'crystal', 'candle', 'mortar-pestle', 'planet', 'comet',\n 'skull', 'potion', 'scales', 'hexagram',\n ],\n 'Objects & misc': [\n 'heart', 'heart-filled', 'star-filled', 'thumbs-up', 'thumbs-down', 'award', 'trophy',\n 'rocket', 'crown', 'shield', 'shield-check', 'lightbulb', 'puzzle', 'layers',\n 'folder', 'folder-open', 'file', 'file-plus', 'note', 'shield-key',\n 'crosshair', 'qr', 'fingerprint', 'fish-hook',\n ],\n 'Sigils': [\n 'sigil-blade', 'sigil-cardinal', 'sigil-eye', 'sigil-feather', 'sigil-flame', 'sigil-flask',\n 'sigil-heptagram', 'sigil-hexnested', 'sigil-key', 'sigil-leaf', 'sigil-moon', 'sigil-octagram',\n 'sigil-pentagram', 'sigil-solomon', 'sigil-spiralsquare', 'sigil-triquetra', 'sigil-vesica', 'sigil-wheel',\n ],\n}\n\nexport type GlyphCategory = keyof typeof GlyphCategories\n\nexport const GlyphAliases: Partial<Record<GlyphName, readonly string[]>> = {\n 'mercury': ['quicksilver', 'hydrargyrum', 'planet', 'metal', 'element'],\n 'sulfur': ['brimstone', 'alchemy', 'element', 'sulphur'],\n 'salt': ['alchemy', 'element', 'mineral'],\n 'sun': ['solar', 'day', 'daylight', 'light', 'sunny', 'gold'],\n 'moon': ['lunar', 'night', 'crescent', 'silver', 'phase'],\n 'star': ['favorite', 'favourite', 'rating', 'night', 'sparkle', 'asterisk'],\n 'sigil': ['seal', 'rune', 'mark', 'symbol', 'glyph', 'occult'],\n 'flask': ['lab', 'laboratory', 'potion', 'chemistry', 'science', 'beaker', 'alchemy'],\n 'key': ['unlock', 'password', 'access', 'login', 'secret'],\n 'leaf': ['nature', 'plant', 'foliage', 'eco', 'autumn', 'herb'],\n 'sprig': ['herb', 'plant', 'twig', 'botanical', 'garnish'],\n 'fern': ['plant', 'frond', 'botanical', 'forest'],\n 'compass': ['navigate', 'direction', 'explore', 'orient', 'map'],\n 'eye': ['view', 'see', 'watch', 'visible', 'look', 'vision', 'preview'],\n 'hand': ['palm', 'wave', 'touch', 'gesture'],\n 'feather': ['quill', 'write', 'light', 'bird', 'plume'],\n 'book': ['read', 'library', 'journal', 'notebook', 'manual', 'docs', 'guide'],\n 'scroll': ['document', 'parchment', 'manuscript', 'certificate', 'deed'],\n 'asterism': ['divider', 'ornament', 'marginalia', 'dots', 'three'],\n 'flourish': ['divider', 'ornament', 'marginalia', 'decoration'],\n 'triangle': ['up', 'play', 'warning', 'delta', 'shape'],\n 'triangle-down': ['down', 'caret', 'delta', 'shape'],\n 'square': ['stop', 'box', 'shape', 'checkbox'],\n 'circle': ['dot', 'round', 'shape', 'ring'],\n 'hex': ['hexagon', 'shape', 'honeycomb'],\n 'cross': ['x', 'close', 'multiply', 'plus'],\n 'tick': ['check', 'done', 'yes', 'correct', 'confirm', 'ok'],\n 'plus': ['add', 'new', 'create', 'more', 'increment'],\n 'minus': ['subtract', 'remove', 'decrement', 'less', 'dash'],\n 'arrow-up': ['north', 'up', 'top', 'increase'],\n 'arrow-right': ['next', 'forward', 'east', 'go'],\n 'arrow-left': ['back', 'previous', 'prev', 'west', 'return'],\n 'arrow-down': ['south', 'down', 'bottom', 'decrease'],\n 'arrow-up-right': ['northeast', 'external', 'outbound', 'diagonal'],\n 'arrow-down-right': ['southeast', 'inbound', 'diagonal'],\n 'chevron-left': ['back', 'previous', 'prev', 'collapse'],\n 'chevron-right': ['next', 'forward', 'expand', 'more'],\n 'chevron-up': ['collapse', 'up', 'less'],\n 'chevron-down': ['expand', 'down', 'dropdown', 'more'],\n 'chevrons-left': ['first', 'rewind', 'skip', 'start'],\n 'chevrons-right': ['last', 'fast', 'skip', 'end'],\n 'caret-down': ['dropdown', 'expand', 'select', 'triangle'],\n 'caret-up': ['collapse', 'triangle'],\n 'caret-left': ['previous', 'triangle'],\n 'caret-right': ['next', 'play', 'triangle'],\n 'menu': ['hamburger', 'nav', 'list', 'bars', 'options'],\n 'close': ['x', 'cancel', 'dismiss', 'remove', 'exit'],\n 'expand': ['fullscreen', 'enlarge', 'grow', 'maximize'],\n 'collapse': ['minimize', 'shrink', 'reduce'],\n 'external-link': ['open', 'outbound', 'new tab', 'launch', 'visit'],\n 'grid': ['layout', 'tiles', 'gallery', 'apps', 'dashboard'],\n 'list': ['rows', 'lines', 'agenda', 'bullets', 'menu'],\n 'columns': ['layout', 'split', 'board', 'kanban'],\n 'sidebar': ['panel', 'drawer', 'layout', 'nav'],\n 'more': ['ellipsis', 'options', 'overflow', 'menu', 'dots'],\n 'more-vertical': ['ellipsis', 'options', 'overflow', 'kebab', 'dots'],\n 'filter': ['funnel', 'refine', 'sort', 'sift'],\n 'sort': ['order', 'arrange', 'rank', 'sequence'],\n 'refresh': ['reload', 'sync', 'update', 'renew', 'retry'],\n 'undo': ['back', 'revert', 'history'],\n 'redo': ['forward', 'repeat', 'again'],\n 'home': ['house', 'main', 'start', 'dashboard'],\n 'maximize': ['fullscreen', 'expand', 'enlarge'],\n 'drag': ['move', 'reorder', 'handle', 'grip', 'dots'],\n 'search': ['find', 'magnifier', 'lookup', 'zoom', 'explore', 'look'],\n 'edit': ['pencil', 'write', 'modify', 'change', 'compose'],\n 'pencil': ['edit', 'write', 'draw', 'compose'],\n 'eraser': ['delete', 'remove', 'rubber', 'clear'],\n 'trash': ['delete', 'bin', 'remove', 'garbage', 'discard'],\n 'save': ['disk', 'floppy', 'store', 'keep'],\n 'copy': ['duplicate', 'clone', 'clipboard'],\n 'clipboard': ['paste', 'copy', 'board', 'tasks'],\n 'download': ['save', 'import', 'get', 'arrow'],\n 'upload': ['export', 'send', 'arrow', 'publish'],\n 'share': ['network', 'send', 'social', 'distribute'],\n 'link': ['chain', 'url', 'connect', 'attach', 'hyperlink'],\n 'unlink': ['break', 'disconnect', 'detach'],\n 'lock': ['secure', 'private', 'locked', 'password', 'closed'],\n 'unlock': ['open', 'access', 'unsecure'],\n 'pin': ['location', 'marker', 'place', 'map', 'tack'],\n 'thumbtack': ['pin', 'attach', 'board', 'tack'],\n 'bookmark': ['save', 'favorite', 'favourite', 'ribbon', 'later'],\n 'flag': ['report', 'milestone', 'country', 'mark'],\n 'tag': ['label', 'price', 'category', 'badge'],\n 'check-circle': ['done', 'success', 'complete', 'verified', 'ok', 'approve'],\n 'x-circle': ['error', 'cancel', 'fail', 'remove', 'close'],\n 'plus-circle': ['add', 'new', 'create', 'include'],\n 'minus-circle': ['remove', 'subtract', 'exclude'],\n 'info': ['information', 'about', 'details', 'help', 'tooltip'],\n 'help': ['question', 'support', 'faq', 'ask'],\n 'warning': ['caution', 'alert', 'danger', 'attention'],\n 'ban': ['block', 'forbidden', 'no', 'prohibited', 'denied'],\n 'sliders': ['settings', 'controls', 'adjust', 'filters', 'mixer', 'tune'],\n 'toggle-on': ['switch', 'enabled', 'active', 'on'],\n 'toggle-off': ['switch', 'disabled', 'inactive', 'off'],\n 'eye-off': ['hide', 'hidden', 'invisible', 'private', 'conceal'],\n 'settings': ['gear', 'cog', 'preferences', 'options', 'config'],\n 'mail': ['email', 'envelope', 'message', 'inbox', 'letter', 'contact'],\n 'mail-open': ['email', 'read', 'opened', 'envelope'],\n 'send': ['paper plane', 'submit', 'message', 'deliver'],\n 'chat': ['message', 'talk', 'bubble', 'comment', 'sms'],\n 'chat-dots': ['message', 'typing', 'talk', 'bubble'],\n 'comments': ['discussion', 'replies', 'thread', 'talk'],\n 'phone': ['call', 'telephone', 'contact', 'mobile', 'ring'],\n 'at-sign': ['email', 'mention', 'handle', 'username'],\n 'inbox': ['mail', 'messages', 'receive', 'tray'],\n 'megaphone': ['announce', 'broadcast', 'marketing', 'promote', 'loud', 'bullhorn'],\n 'rss': ['feed', 'subscribe', 'news', 'syndicate'],\n 'bell': ['notification', 'alert', 'reminder', 'ring', 'alarm'],\n 'bell-off': ['mute', 'silent', 'do not disturb', 'notification'],\n 'paperclip': ['attach', 'attachment', 'clip', 'file'],\n 'play': ['start', 'video', 'media', 'run', 'begin'],\n 'pause': ['stop', 'hold', 'break', 'media'],\n 'stop': ['end', 'square', 'halt', 'media'],\n 'skip-forward': ['next', 'fast', 'forward', 'media'],\n 'skip-back': ['previous', 'rewind', 'back', 'media'],\n 'play-circle': ['start', 'video', 'watch', 'media'],\n 'volume': ['sound', 'speaker', 'audio', 'loud'],\n 'volume-off': ['mute', 'silent', 'sound', 'quiet'],\n 'mic': ['microphone', 'record', 'audio', 'voice', 'speak'],\n 'mic-off': ['mute', 'microphone', 'silent', 'muted'],\n 'camera': ['photo', 'picture', 'capture', 'snapshot'],\n 'video': ['camera', 'film', 'record', 'movie', 'recording'],\n 'image': ['photo', 'picture', 'gallery', 'media', 'pic'],\n 'music-note': ['song', 'audio', 'melody', 'tune', 'sound'],\n 'headphones': ['audio', 'music', 'sound', 'listen', 'headset'],\n 'film': ['movie', 'video', 'cinema', 'reel', 'media'],\n 'monitor': ['screen', 'display', 'desktop', 'computer', 'tv'],\n 'smartphone': ['phone', 'mobile', 'cell', 'device'],\n 'laptop': ['computer', 'notebook', 'device', 'macbook'],\n 'keyboard': ['type', 'keys', 'input', 'typing'],\n 'printer': ['print', 'document', 'paper', 'office'],\n 'battery': ['power', 'charge', 'energy', 'level'],\n 'wifi': ['wireless', 'internet', 'network', 'signal', 'connection'],\n 'plug': ['power', 'charge', 'connect', 'outlet', 'electric'],\n 'cpu': ['processor', 'chip', 'compute', 'hardware'],\n 'database': ['storage', 'data', 'server', 'db', 'records'],\n 'server': ['hosting', 'rack', 'data', 'backend', 'cloud'],\n 'hard-drive': ['storage', 'disk', 'hdd', 'data', 'memory'],\n 'tv': ['television', 'screen', 'monitor', 'watch', 'display'],\n 'router': ['wifi', 'network', 'modem', 'internet', 'wireless'],\n 'clock': ['time', 'schedule', 'watch', 'hour', 'wait'],\n 'calendar': ['date', 'schedule', 'event', 'month', 'planner'],\n 'calendar-check': ['scheduled', 'appointment', 'booked', 'done', 'event'],\n 'timer': ['stopwatch', 'countdown', 'time', 'duration'],\n 'hourglass': ['time', 'wait', 'loading', 'sand', 'timer'],\n 'history': ['recent', 'past', 'log', 'undo', 'clock', 'activity'],\n 'alarm': ['clock', 'wake', 'reminder', 'time'],\n 'sunrise': ['morning', 'dawn', 'sun', 'sunset', 'horizon'],\n 'cloud': ['weather', 'cloudy', 'sky', 'overcast', 'storage'],\n 'cloud-rain': ['weather', 'rainy', 'storm', 'precipitation', 'wet'],\n 'cloud-sun': ['weather', 'partly cloudy', 'forecast', 'day'],\n 'snowflake': ['snow', 'winter', 'cold', 'freeze', 'ice', 'frost'],\n 'bolt': ['lightning', 'thunder', 'flash', 'electric', 'power', 'storm', 'energy'],\n 'wind': ['breeze', 'air', 'windy', 'weather', 'gust'],\n 'droplet': ['water', 'drop', 'liquid', 'rain', 'moisture', 'wet'],\n 'waves': ['water', 'sea', 'ocean', 'tide', 'ripple'],\n 'fire': ['flame', 'heat', 'hot', 'burn', 'campfire', 'warm', 'spicy'],\n 'mountain': ['hill', 'peak', 'summit', 'outdoor', 'hike', 'nature'],\n 'tree': ['nature', 'forest', 'plant', 'wood', 'park', 'pine'],\n 'flower': ['bloom', 'blossom', 'plant', 'garden', 'floral', 'nature'],\n 'sprout': ['seedling', 'plant', 'grow', 'eco', 'germinate', 'garden'],\n 'umbrella': ['rain', 'weather', 'parasol', 'protection', 'insurance'],\n 'paw': ['pet', 'animal', 'dog', 'cat', 'print', 'track'],\n 'bug': ['insect', 'beetle', 'error', 'pest', 'debug'],\n 'bird': ['animal', 'tweet', 'sparrow', 'fly', 'nature'],\n 'fish': ['animal', 'sea', 'seafood', 'aquarium', 'swim'],\n 'acorn': ['nut', 'oak', 'autumn', 'seed', 'fall', 'squirrel'],\n 'rainbow': ['weather', 'pride', 'colors', 'arc', 'spectrum'],\n 'palm-tree': ['tropical', 'beach', 'vacation', 'holiday', 'coconut', 'island'],\n 'cactus': ['desert', 'plant', 'succulent', 'southwest', 'spike'],\n 'mushroom': ['fungus', 'toadstool', 'forage', 'plant', 'fungi'],\n 'campfire': ['fire', 'camp', 'bonfire', 'outdoor', 'flame'],\n 'snowman': ['winter', 'snow', 'christmas', 'cold', 'frosty'],\n 'car': ['auto', 'vehicle', 'drive', 'automobile', 'sedan', 'transport'],\n 'bus': ['transit', 'coach', 'transport', 'public', 'shuttle'],\n 'train': ['rail', 'metro', 'subway', 'transit', 'locomotive', 'transport'],\n 'plane': ['airplane', 'flight', 'fly', 'airport', 'travel', 'aircraft', 'aviation'],\n 'ship': ['boat', 'sail', 'cruise', 'ferry', 'vessel', 'sea', 'maritime'],\n 'bike': ['bicycle', 'cycle', 'cycling', 'ride', 'pedal'],\n 'scooter': ['moped', 'vespa', 'ride', 'kick'],\n 'truck': ['lorry', 'delivery', 'freight', 'cargo', 'shipping', 'haul'],\n 'taxi': ['cab', 'uber', 'ride', 'hail', 'transport'],\n 'fuel': ['gas', 'petrol', 'station', 'gasoline', 'pump', 'energy'],\n 'parking': ['park', 'garage', 'lot', 'car'],\n 'traffic-light': ['signal', 'stoplight', 'traffic', 'intersection'],\n 'luggage': ['suitcase', 'baggage', 'travel', 'trip', 'bag'],\n 'passport': ['travel', 'id', 'visa', 'identity', 'document', 'border'],\n 'anchor': ['boat', 'ship', 'nautical', 'marine', 'sea', 'harbor'],\n 'road': ['street', 'highway', 'route', 'path', 'drive', 'journey'],\n 'hammer': ['tool', 'build', 'construct', 'nail', 'repair', 'hardware'],\n 'wrench': ['tool', 'spanner', 'fix', 'repair', 'mechanic', 'settings'],\n 'screwdriver': ['tool', 'screw', 'fix', 'repair', 'assemble'],\n 'scissors': ['cut', 'trim', 'snip', 'shears', 'clip'],\n 'ruler': ['measure', 'scale', 'length', 'straight', 'dimensions'],\n 'brush': ['paint', 'art', 'stroke', 'design', 'clean'],\n 'palette': ['color', 'paint', 'art', 'swatch', 'design', 'theme'],\n 'gear': ['settings', 'cog', 'mechanism', 'config', 'machine'],\n 'anvil': ['forge', 'blacksmith', 'metal', 'smith', 'workshop'],\n 'axe': ['chop', 'wood', 'hatchet', 'lumber', 'cut'],\n 'pickaxe': ['mine', 'dig', 'mining', 'pick', 'quarry'],\n 'shovel': ['dig', 'spade', 'garden', 'excavate', 'dirt'],\n 'saw': ['cut', 'wood', 'carpentry', 'blade', 'lumber'],\n 'drafting-compass': ['draw', 'geometry', 'circle', 'technical', 'architect'],\n 'magnet': ['magnetic', 'attract', 'field', 'physics', 'pull'],\n 'needle': ['sew', 'thread', 'stitch', 'sharp', 'tailor'],\n 'toolbox': ['tools', 'kit', 'repair', 'hardware', 'equipment'],\n 'nut-bolt': ['hardware', 'fastener', 'screw', 'mechanic', 'assembly'],\n 'gavel': ['judge', 'law', 'court', 'auction', 'legal', 'justice', 'hammer'],\n 'shirt': ['clothes', 'apparel', 'tshirt', 'top', 'tee', 'fashion', 'clothing'],\n 'dress': ['clothes', 'apparel', 'fashion', 'gown', 'women', 'clothing'],\n 'shoe': ['footwear', 'sneaker', 'boot', 'fashion', 'clothing'],\n 'hat': ['cap', 'clothing', 'fashion', 'headwear', 'accessory'],\n 'watch': ['time', 'clock', 'wrist', 'accessory', 'wearable'],\n 'ring': ['jewelry', 'wedding', 'engagement', 'band', 'diamond'],\n 'glasses': ['spectacles', 'eyewear', 'vision', 'reading', 'optical'],\n 'sunglasses': ['shades', 'eyewear', 'sun', 'summer', 'cool'],\n 'perfume': ['fragrance', 'cologne', 'scent', 'beauty', 'cosmetics'],\n 'lipstick': ['makeup', 'cosmetics', 'beauty', 'lips'],\n 'hanger': ['clothes', 'closet', 'wardrobe', 'hang', 'laundry'],\n 'basket': ['shopping', 'grocery', 'cart', 'market', 'buy'],\n 'barcode': ['scan', 'product', 'sku', 'price', 'upc'],\n 'gem': ['jewel', 'diamond', 'gemstone', 'precious', 'crystal', 'luxury'],\n 'backpack': ['bag', 'rucksack', 'school', 'travel', 'hike'],\n 'cart': ['shopping', 'buy', 'checkout', 'basket', 'ecommerce', 'trolley'],\n 'bag': ['shopping', 'purchase', 'tote', 'buy', 'handbag'],\n 'wallet': ['money', 'payment', 'cash', 'billfold', 'finance'],\n 'credit-card': ['payment', 'debit', 'card', 'pay', 'bank', 'checkout'],\n 'coin': ['money', 'cash', 'currency', 'token', 'payment'],\n 'receipt': ['invoice', 'bill', 'purchase', 'transaction', 'order'],\n 'gift': ['present', 'reward', 'box', 'birthday', 'bonus'],\n 'chart-bar': ['graph', 'analytics', 'statistics', 'data', 'bars', 'report'],\n 'chart-line': ['graph', 'analytics', 'trend', 'data', 'line', 'report'],\n 'chart-pie': ['graph', 'analytics', 'statistics', 'data', 'pie', 'breakdown'],\n 'trending-up': ['growth', 'increase', 'rise', 'up', 'gain', 'profit'],\n 'trending-down': ['decline', 'decrease', 'drop', 'down', 'loss', 'fall'],\n 'scale': ['balance', 'justice', 'weigh', 'compare', 'law'],\n 'target': ['goal', 'aim', 'bullseye', 'objective', 'focus', 'accuracy'],\n 'percent': ['discount', 'sale', 'rate', 'percentage', 'off'],\n 'box': ['package', 'parcel', 'shipping', 'cube', 'product', '3d'],\n 'archive': ['store', 'box', 'backup', 'old', 'file', 'storage'],\n 'bank': ['finance', 'money', 'institution', 'building', 'account', 'savings'],\n 'piggy-bank': ['savings', 'save', 'money', 'deposit', 'budget', 'funds'],\n 'dollar': ['money', 'usd', 'currency', 'cash', 'price', 'payment'],\n 'euro': ['money', 'eur', 'currency', 'europe', 'cash'],\n 'pound': ['money', 'gbp', 'currency', 'sterling', 'britain', 'cash'],\n 'yen': ['money', 'jpy', 'currency', 'japan', 'yuan', 'cash'],\n 'bitcoin': ['crypto', 'btc', 'currency', 'blockchain', 'digital', 'money'],\n 'atm': ['cash', 'machine', 'withdraw', 'bank', 'money'],\n 'vault': ['safe', 'secure', 'bank', 'storage', 'money', 'deposit'],\n 'calculator': ['math', 'compute', 'accounting', 'numbers', 'sum'],\n 'money-bill': ['cash', 'dollar', 'note', 'currency', 'payment'],\n 'coins': ['money', 'cash', 'change', 'currency', 'savings', 'stack'],\n 'hand-coin': ['payment', 'give', 'donate', 'tip', 'salary', 'income', 'pay'],\n 'exchange': ['transfer', 'swap', 'convert', 'trade', 'currency'],\n 'couch': ['sofa', 'furniture', 'living room', 'seat', 'lounge'],\n 'bed': ['sleep', 'bedroom', 'furniture', 'rest', 'hotel'],\n 'lamp': ['light', 'desk', 'furniture', 'lighting', 'bulb'],\n 'door': ['entrance', 'exit', 'room', 'open', 'enter'],\n 'broom': ['clean', 'sweep', 'chores', 'housekeeping', 'tidy'],\n 'washer': ['laundry', 'washing machine', 'clean', 'appliance'],\n 'thermometer': ['temperature', 'fever', 'heat', 'weather', 'health'],\n 'thermostat': ['temperature', 'heating', 'climate', 'nest', 'hvac'],\n 'fire-extinguisher': ['safety', 'fire', 'emergency', 'protect'],\n 'key-round': ['unlock', 'password', 'access', 'login', 'key', 'security'],\n 'dumbbell': ['gym', 'workout', 'weights', 'exercise', 'fitness', 'lift', 'muscle'],\n 'heart-pulse': ['health', 'heartbeat', 'cardio', 'medical', 'vitals', 'ecg'],\n 'pill': ['medicine', 'drug', 'pharmacy', 'medication', 'tablet', 'health'],\n 'syringe': ['injection', 'vaccine', 'needle', 'medical', 'shot', 'health'],\n 'stethoscope': ['doctor', 'medical', 'health', 'checkup', 'clinic'],\n 'tooth': ['dental', 'dentist', 'teeth', 'oral', 'health'],\n 'bandage': ['plaster', 'injury', 'first aid', 'wound', 'medical', 'heal'],\n 'first-aid': ['medical', 'emergency', 'kit', 'health', 'help', 'aid'],\n 'lotus': ['yoga', 'meditation', 'zen', 'wellness', 'flower', 'spa', 'calm'],\n 'running': ['run', 'jog', 'exercise', 'fitness', 'marathon', 'sprint', 'cardio'],\n 'weight-scale': ['weigh', 'bathroom scale', 'fitness', 'health', 'measure'],\n 'wheelchair': ['accessible', 'disability', 'accessibility', 'handicap', 'mobility'],\n 'mask': ['face mask', 'medical', 'covid', 'protection', 'health'],\n 'brain': ['mind', 'think', 'memory', 'neuroscience', 'intelligence', 'mental'],\n 'coffee': ['cafe', 'drink', 'espresso', 'latte', 'mug', 'caffeine', 'tea'],\n 'cup': ['drink', 'mug', 'beverage', 'tea', 'glass'],\n 'wine': ['drink', 'alcohol', 'glass', 'bar', 'vineyard', 'merlot'],\n 'bottle': ['drink', 'water', 'container', 'beverage'],\n 'cocktail': ['drink', 'bar', 'alcohol', 'martini', 'mixer', 'party'],\n 'cake': ['dessert', 'birthday', 'bakery', 'sweet', 'celebration', 'pastry'],\n 'restaurant': ['food', 'dining', 'eat', 'fork', 'knife', 'meal', 'cutlery'],\n 'utensils': ['fork', 'spoon', 'cutlery', 'eat', 'dining', 'silverware'],\n 'apple': ['fruit', 'food', 'healthy', 'snack', 'orchard'],\n 'ice-cream': ['dessert', 'sweet', 'cone', 'gelato', 'summer', 'frozen'],\n 'bread': ['bakery', 'loaf', 'food', 'toast', 'carbs'],\n 'burger': ['food', 'fast food', 'hamburger', 'sandwich', 'beef', 'meal'],\n 'pizza': ['food', 'italian', 'slice', 'fast food', 'pepperoni', 'meal'],\n 'noodles': ['food', 'ramen', 'pasta', 'asian', 'soup', 'bowl'],\n 'sushi': ['food', 'japanese', 'seafood', 'roll', 'asian'],\n 'taco': ['food', 'mexican', 'burrito', 'wrap', 'fast food'],\n 'salad': ['food', 'healthy', 'vegetables', 'greens', 'vegan', 'bowl'],\n 'egg': ['food', 'breakfast', 'protein', 'omelette', 'easter'],\n 'donut': ['doughnut', 'dessert', 'sweet', 'pastry', 'bakery', 'snack'],\n 'cookie': ['biscuit', 'dessert', 'sweet', 'snack', 'bakery', 'treat'],\n 'candy': ['sweet', 'sugar', 'treat', 'confectionery', 'dessert'],\n 'popcorn': ['snack', 'cinema', 'movie', 'corn', 'treat'],\n 'beer': ['drink', 'alcohol', 'pub', 'bar', 'pint', 'ale', 'lager'],\n 'soda': ['drink', 'cola', 'pop', 'fizzy', 'soft drink', 'beverage'],\n 'milk': ['drink', 'dairy', 'carton', 'beverage', 'breakfast'],\n 'croissant': ['pastry', 'bakery', 'breakfast', 'french', 'food'],\n 'person': ['user', 'profile', 'account', 'people', 'human', 'individual', 'avatar'],\n 'people': ['users', 'group', 'team', 'community', 'persons', 'crowd'],\n 'person-add': ['add user', 'invite', 'signup', 'register', 'follow', 'new contact'],\n 'user-circle': ['profile', 'account', 'avatar', 'user', 'contact'],\n 'building': ['office', 'company', 'business', 'city', 'apartment', 'tower'],\n 'store': ['shop', 'retail', 'market', 'business', 'storefront', 'merchant'],\n 'map': ['location', 'navigation', 'directions', 'travel', 'geography'],\n 'navigation': ['compass', 'direction', 'gps', 'arrow', 'navigate', 'locate'],\n 'globe': ['world', 'earth', 'international', 'web', 'global', 'language'],\n 'school': ['education', 'university', 'college', 'learn', 'academy', 'student'],\n 'briefcase': ['work', 'business', 'job', 'office', 'portfolio', 'career'],\n 'factory': ['industry', 'manufacturing', 'plant', 'production', 'industrial'],\n 'hospital': ['medical', 'health', 'clinic', 'emergency', 'care'],\n 'tent': ['camp', 'camping', 'outdoor', 'festival', 'shelter'],\n 'ticket': ['event', 'admission', 'pass', 'voucher', 'coupon', 'entry'],\n 'dog': ['pet', 'animal', 'puppy', 'canine', 'hound'],\n 'cat': ['pet', 'animal', 'kitten', 'feline', 'kitty'],\n 'bone': ['dog', 'pet', 'treat', 'skeleton', 'chew'],\n 'stroller': ['baby', 'pram', 'child', 'infant', 'buggy', 'parenting'],\n 'baby-bottle': ['baby', 'infant', 'milk', 'feed', 'child', 'nursery'],\n 'teddy': ['toy', 'bear', 'child', 'plush', 'kids'],\n 'blocks': ['toy', 'kids', 'building', 'child', 'play', 'lego'],\n 'gamepad': ['game', 'controller', 'gaming', 'console', 'play', 'joystick'],\n 'dice': ['game', 'random', 'chance', 'board game', 'luck', 'roll'],\n 'theater-masks': ['drama', 'comedy', 'tragedy', 'acting', 'performance', 'arts'],\n 'guitar': ['music', 'instrument', 'band', 'rock', 'strings'],\n 'piano': ['music', 'instrument', 'keys', 'keyboard', 'classical'],\n 'chess': ['game', 'strategy', 'board game', 'pawn', 'play'],\n 'clapperboard': ['movie', 'film', 'video', 'director', 'production', 'cinema'],\n 'balloon': ['party', 'celebration', 'birthday', 'festive', 'float'],\n 'venus': ['female', 'woman', 'feminine', 'copper', 'planet', 'gender'],\n 'mars': ['male', 'man', 'masculine', 'iron', 'planet', 'gender'],\n 'element-fire': ['alchemy', 'triangle', 'classical element', 'hot'],\n 'element-water': ['alchemy', 'triangle', 'classical element', 'liquid'],\n 'element-air': ['alchemy', 'triangle', 'classical element', 'wind'],\n 'element-earth': ['alchemy', 'triangle', 'classical element', 'ground'],\n 'quintessence': ['aether', 'fifth element', 'spirit', 'essence', 'occult'],\n 'ankh': ['egyptian', 'life', 'cross', 'eternal', 'symbol'],\n 'crystal': ['gem', 'quartz', 'mineral', 'esoteric', 'healing'],\n 'candle': ['flame', 'light', 'wax', 'wick', 'vigil', 'fire'],\n 'mortar-pestle': ['grind', 'apothecary', 'pharmacy', 'herbs', 'potion', 'alchemy'],\n 'planet': ['saturn', 'space', 'astronomy', 'ringed', 'cosmos'],\n 'comet': ['space', 'astronomy', 'meteor', 'shooting star', 'cosmos'],\n 'skull': ['death', 'danger', 'poison', 'bone', 'pirate', 'dead'],\n 'potion': ['flask', 'elixir', 'magic', 'brew', 'alchemy', 'vial'],\n 'scales': ['balance', 'justice', 'libra', 'weigh', 'law', 'fairness'],\n 'hexagram': ['star of david', 'six point', 'occult', 'seal', 'symbol'],\n 'heart': ['love', 'like', 'favorite', 'favourite', 'health', 'romance'],\n 'heart-filled': ['love', 'like', 'favorite', 'favourite', 'liked', 'solid'],\n 'star-filled': ['favorite', 'favourite', 'rating', 'rated', 'solid', 'bookmark'],\n 'thumbs-up': ['like', 'approve', 'good', 'yes', 'upvote', 'positive'],\n 'thumbs-down': ['dislike', 'disapprove', 'bad', 'no', 'downvote', 'negative'],\n 'award': ['medal', 'prize', 'achievement', 'badge', 'winner', 'honor'],\n 'trophy': ['win', 'champion', 'prize', 'award', 'first', 'victory'],\n 'rocket': ['launch', 'startup', 'space', 'boost', 'fast', 'ship'],\n 'crown': ['king', 'queen', 'royal', 'premium', 'vip', 'best'],\n 'shield': ['security', 'protect', 'safety', 'guard', 'defense', 'privacy'],\n 'shield-check': ['secure', 'verified', 'protected', 'safe', 'trusted'],\n 'lightbulb': ['idea', 'tip', 'innovation', 'bright', 'insight', 'hint'],\n 'puzzle': ['piece', 'plugin', 'extension', 'solve', 'jigsaw', 'integration'],\n 'layers': ['stack', 'levels', 'overlap', 'z-index', 'design'],\n 'folder': ['directory', 'files', 'storage', 'organize'],\n 'folder-open': ['directory', 'files', 'open', 'browse'],\n 'file': ['document', 'page', 'paper', 'doc'],\n 'file-plus': ['new document', 'add file', 'create', 'new'],\n 'note': ['memo', 'sticky', 'reminder', 'annotation', 'post-it'],\n 'shield-key': ['security', 'access', 'protected', 'permission', 'vault'],\n 'crosshair': ['target', 'aim', 'precision', 'focus', 'locate'],\n 'qr': ['qr code', 'scan', 'barcode', 'code', 'square'],\n 'fingerprint': ['biometric', 'identity', 'touch id', 'secure', 'scan', 'print'],\n 'fish-hook': ['fishing', 'catch', 'angle', 'bait', 'hook'],\n}\n\n/** Human label: 'chart-bar' → 'Chart Bar'. */\nexport const glyphLabel = (name: GlyphName): string =>\n name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ')\n\n/** Category a glyph belongs to (first match), or undefined. */\nexport const glyphCategory = (name: GlyphName): GlyphCategory | undefined =>\n (Object.keys(GlyphCategories) as GlyphCategory[]).find(c =>\n (GlyphCategories[c] as readonly string[]).includes(name)\n )\n\nexport interface GlyphSearchResult {\n name: GlyphName\n score: number\n}\n\n/**\n * Search glyphs by free text, ranked by relevance (higher = better).\n *\n * Multi-word queries use AND semantics — every token must hit something.\n * Returns matches sorted by score desc, then alphabetically, capped by `limit`.\n */\nexport const searchGlyphs = (\n query: string,\n allNames: readonly GlyphName[],\n limit = Infinity,\n): GlyphSearchResult[] => {\n const q = query.trim().toLowerCase()\n if (!q) return allNames.map(name => ({ name, score: 0 }))\n const tokens = q.split(/\\s+/).filter(Boolean)\n\n const scoreToken = (name: GlyphName, token: string): number => {\n const label = glyphLabel(name).toLowerCase()\n const words = name.split('-')\n const al = (GlyphAliases[name] as string[]) ?? []\n let best = 0\n\n if (name === token || label === token) best = Math.max(best, 100)\n if (name.startsWith(token) || label.startsWith(token)) best = Math.max(best, 70)\n if (words.some(w => w.startsWith(token))) best = Math.max(best, 55)\n if (name.includes(token) || label.includes(token)) best = Math.max(best, 40)\n\n for (let i = 0; i < al.length; i++) {\n const a = al[i]\n if (!a) continue\n const rank = Math.min(i, 9)\n if (a === token) best = Math.max(best, 100 - 2 - rank * 2)\n else if (a.startsWith(token)) best = Math.max(best, 50 - rank * 2)\n else if (a.includes(token)) best = Math.max(best, 30 - rank * 1.5)\n }\n return best\n }\n\n const results: GlyphSearchResult[] = []\n for (const name of allNames) {\n let total = 0\n let missed = false\n for (const token of tokens) {\n const s = scoreToken(name, token)\n if (s === 0) missed = true\n total += s\n }\n if (total > 0 && !(tokens.length > 1 && missed)) {\n results.push({ name, score: total })\n }\n }\n\n results.sort((a, b) => b.score - a.score || a.name.localeCompare(b.name))\n return Number.isFinite(limit) ? results.slice(0, limit) : results\n}\n","import 'src/components/GlyphPicker/GlyphPicker.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8VWTW_jNhC951cQAQqsgWUg2U6acLGHtkC3PRRYtIceisKgyZHERiKJIZXYKfrfC1Em5e_YidGebIrkzJuvx3fzpV7a6qsSj4Azj6osAX9HbmezEicP_jkjf18RIpWzNV8yonStNNCihsWnK0J4rUpNlYfGMSJAe8Duc8ktI08cP1DqLBdAnR3PZjkXar6YP48-Xf1zdbPHb_SZv8XnX63zqlhSYbQH7c-CQ4jlUipdHju2tTVJW4tgoVGaPivpK0YmdzYgrUCVlR_Wc4MSkJH85tYuiDO1kiujwtQGab-f7D6MhksUuVSti_j6Fa24wi436Up-39_h4rFE02rJNhy4FgsuhuOTcFq06AwyYo2KGSuM9rTgjaqX0UL4NDdymW77UTrq1Aswkk_6OIOzTc9Fma7dhmseuXbKK6NZDDGcXN2SLfJukxbc-SG8IlYBuANq2rUt9Xpbsco8AYbmWne5iZSLrnGSXfm62T8k95w6zz18vjYW9PWfl_LxteYCKlPLwd042N6b4l9aP9T2fqc64746J9d2C5I1tkvfD_18RTiTPtSzGu7ic-CaoQ_i6QV1FZfmOY10WHVlauxweh5Ox7mdZn2KGr6gcXin8WPio0hE3S-VCkH0bSxM3Ta623mhSktYMJJnWbfu8lbUHZZKSQl6J7cOOIrqV_Mc0zoNaT3AStvUs0rN3HhvGkbyI0ndaJE--BCGq1DpR0ayA9B-1rZNNb8N4FZJy7Psm8sw6P9Oj_OBpLLRf0ODpvUdQka00ZAaV72ETKa6Lk6qCiuMaN27qWevaWYHJjqDgLZNCzR1_R0Cj5bvgrE4H3TJCG-9iW3JSH6ktTb7Z8uV4B5Kg8ufgHd3o79vg7_1YmXHWbEx2iQ_bahZDd4DBhgBVXaTQxPeNFh4Gh62wmDDSGstoOAODnbDHsY-IViSnSOuDmWCFQqdp6JStVxnG-qN3UcEZff_CyoZLdxvyrQSlQxqC5WkHhpbcw-0J0XHCIIF7j_cfyR5gaMDsixPgTz1oopjqXRitjOiDmi_9zqCfdgE-3YxGd-K8ZbGG29pvERhoSEsR9D-EoQViWKPatvbYkOW7naFV7L7Dtn1kVxcuO0Ub125HZcaQ7jT0Wkk_JrvlbyDGoQH-fnaYwtR4R3Asodk9yLpz_044IH1N-1N7A2N9cvfOi0aA-DHpMTdUIds-32epr3lKNFbGJj1eXiPwnzjMyJq4LhWovmFZ3ucbc52XMfZTm_1aWOZUp-d8w68Ist2crA2Iif0_L-3byzS9w8AAA';\nexport var categoryHeading = 'GlyphPicker_categoryHeading__gr39tw7';\nexport var clearBtn = 'GlyphPicker_clearBtn__gr39twb';\nexport var emptyState = 'GlyphPicker_emptyState__gr39twa';\nexport var glyphBtn = 'GlyphPicker_glyphBtn__gr39tw9';\nexport var glyphGrid = 'GlyphPicker_glyphGrid__gr39tw8';\nexport var popoverContent = 'GlyphPicker_popoverContent__gr39tw3';\nexport var scrollArea = 'GlyphPicker_scrollArea__gr39tw6';\nexport var searchInput = 'GlyphPicker_searchInput__gr39tw5';\nexport var searchRow = 'GlyphPicker_searchRow__gr39tw4';\nexport var trigger = 'GlyphPicker_trigger__gr39tw1';\nexport var triggerPlaceholder = 'GlyphPicker_triggerPlaceholder__gr39tw2';\nexport var triggerWrap = 'GlyphPicker_triggerWrap__gr39tw0';","import { useState, useRef, useEffect, useCallback } from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport type { GlyphName } from '../../types/components'\nimport { Glyph } from '../../glyphs/Glyph'\nimport { GlyphCategories, GlyphAliases, searchGlyphs, glyphLabel } from '../../glyphs/glyphMeta'\nimport * as styles from './GlyphPicker.css'\n\nconst ALL_NAMES = Object.values(GlyphCategories).flat() as GlyphName[]\n\nexport interface GlyphPickerProps {\n /** Currently selected glyph, or undefined for none. */\n value?: GlyphName\n /** Called when a glyph is selected or cleared. */\n onChange?: (name: GlyphName | undefined) => void\n /** Placeholder shown when no glyph is selected. */\n placeholder?: string\n /** Disable the picker. */\n disabled?: boolean\n /** Show a clear button in the trigger when a value is selected. */\n clearable?: boolean\n className?: string\n}\n\nexport const GlyphPicker = ({\n value,\n onChange,\n placeholder = 'Pick a glyph…',\n disabled = false,\n clearable = true,\n className,\n}: GlyphPickerProps) => {\n const [open, setOpen] = useState(false)\n const [query, setQuery] = useState('')\n const inputRef = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if (open) {\n setQuery('')\n setTimeout(() => inputRef.current?.focus(), 50)\n }\n }, [open])\n\n const handleSelect = useCallback((name: GlyphName) => {\n onChange?.(name === value ? undefined : name)\n setOpen(false)\n }, [onChange, value])\n\n const handleClear = useCallback((e: React.MouseEvent) => {\n e.stopPropagation()\n onChange?.(undefined)\n }, [onChange])\n\n const q = query.trim()\n const isSearching = q.length > 0\n\n const searchResults = isSearching\n ? searchGlyphs(q, ALL_NAMES)\n : null\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={disabled ? () => {} : setOpen} modal={false}>\n <div className={[styles.triggerWrap, className].filter(Boolean).join(' ')}>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={styles.trigger}\n disabled={disabled}\n aria-label={value ? `Selected glyph: ${glyphLabel(value)}` : placeholder}\n >\n {value ? (\n <Glyph name={value} size={16} />\n ) : (\n <span className={styles.triggerPlaceholder}>{placeholder}</span>\n )}\n </button>\n </PopoverPrimitive.Trigger>\n {clearable && value && (\n <button\n type=\"button\"\n className={styles.clearBtn}\n onClick={handleClear}\n aria-label=\"Clear glyph\"\n >\n <Glyph name=\"close\" size={12} />\n </button>\n )}\n </div>\n\n <PopoverPrimitive.Content\n className={styles.popoverContent}\n sideOffset={4}\n align=\"start\"\n onOpenAutoFocus={e => e.preventDefault()}\n >\n <div className={styles.searchRow}>\n <input\n ref={inputRef}\n type=\"text\"\n className={styles.searchInput}\n placeholder=\"Search glyphs…\"\n value={query}\n onChange={e => setQuery(e.target.value)}\n autoComplete=\"off\"\n spellCheck={false}\n />\n </div>\n\n <div className={styles.scrollArea}>\n {isSearching ? (\n searchResults && searchResults.length > 0 ? (\n <div className={styles.glyphGrid}>\n {searchResults.map(({ name }) => (\n <GlyphButton\n key={name}\n name={name}\n selected={name === value}\n onSelect={handleSelect}\n />\n ))}\n </div>\n ) : (\n <div className={styles.emptyState}>No glyphs match \"{query}\"</div>\n )\n ) : (\n Object.entries(GlyphCategories).map(([category, names]) => (\n <div key={category}>\n <div className={styles.categoryHeading}>{category}</div>\n <div className={styles.glyphGrid}>\n {(names as readonly GlyphName[]).map(name => (\n <GlyphButton\n key={name}\n name={name}\n selected={name === value}\n onSelect={handleSelect}\n />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Root>\n )\n}\n\ninterface GlyphButtonProps {\n name: GlyphName\n selected: boolean\n onSelect: (name: GlyphName) => void\n}\n\nconst GlyphButton = ({ name, selected, onSelect }: GlyphButtonProps) => (\n <button\n type=\"button\"\n className={styles.glyphBtn}\n data-selected={selected}\n onClick={() => onSelect(name)}\n title={glyphLabel(name)}\n aria-label={glyphLabel(name)}\n aria-pressed={selected}\n >\n <Glyph name={name} size={16} />\n </button>\n)\n","import 'src/components/Typography/Typography.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WSz3KCMBCH7z5Fju0hTPgrxlforb07CwbITEiYEFTa6bt3RI1VHJ02cuTHzu73bdb76BtVamiqfrXmbSOgX638TSS2pSboa4ZQoaTBBdRc9BRtQL9gPETnash5tsva1-Wpest4WRmKFoTYrOWfjKI0bXb7SHDJcHUsI94iHkJmDNO4bSDnsqQIE48ErN7_ypVQ-jR--MBFaUfHw-gadMklRWQ5-555v7wq3yr5rkrzkVKU3FDyPZJOqhRYpeD5SmH0RyX_GUqhVQpdleKRUnD7lQJ37MhiRxNgk6mwY4sd38XO1PrMbMbMyYjZP13P1aEQj6SHOzFsZ7DRINtC6ZqirmmYzqFlzlpH2oNY8i-xK4nLxUfxUxDfGKwt5twF8_ZZ38EMbLPkMed7DUJY0NQFNJgMtFZSWcbFXcZj6aFtN2IMHd986LUBzUEaLLuaaZ5TZCDrBOh90D4Uudw4uNj4rhv_u84PpQqDTU4IAAA';\nexport var body = 'Typography_body__1v4lwgr6';\nexport var bodyLead = 'Typography_bodyLead__1v4lwgr7';\nexport var bodySmall = 'Typography_bodySmall__1v4lwgr8';\nexport var display = 'Typography_display__1v4lwgr0';\nexport var h1 = 'Typography_h1__1v4lwgr1';\nexport var h2 = 'Typography_h2__1v4lwgr2';\nexport var h3 = 'Typography_h3__1v4lwgr3';\nexport var h4 = 'Typography_h4__1v4lwgr4';\nexport var h5 = 'Typography_h5__1v4lwgr5';\nexport var mono = 'Typography_mono__1v4lwgr9';\nexport var monoSmall = 'Typography_monoSmall__1v4lwgra';","import type { ReactNode, ElementType, HTMLAttributes } from 'react'\nimport * as styles from './Typography.css'\n\ntype PolymorphicProps<E extends ElementType> = HTMLAttributes<HTMLElement> & {\n as?: E\n children?: ReactNode\n className?: string\n}\n\n/**\n * Large decorative text set in the display (serif) typeface. Polymorphic — renders\n * as any HTML element via the `as` prop; defaults to `<p>`.\n *\n * Use for hero headings, pull quotes, or editorial callouts where the display\n * face should carry the visual weight.\n *\n * @example\n * ```tsx\n * <Display as=\"h1\">The Alchemist's Field Guide</Display>\n * <Display as=\"blockquote\">Patience is a precipitate.</Display>\n * ```\n */\nexport function Display({ as: Tag = 'p', className, children, ...props }: PolymorphicProps<ElementType>) {\n return (\n <Tag className={[styles.display, className].filter(Boolean).join(' ')} {...props}>\n {children}\n </Tag>\n )\n}\n\n/** Props for the {@link Heading} component. */\nexport interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {\n /**\n * Heading level — renders the corresponding `<h1>`–`<h5>` element and\n * applies the matching size/weight from the type scale.\n * @default 1\n */\n level?: 1 | 2 | 3 | 4 | 5\n children?: ReactNode\n className?: string\n}\n\nconst headingStyles = {\n 1: styles.h1,\n 2: styles.h2,\n 3: styles.h3,\n 4: styles.h4,\n 5: styles.h5,\n} as const\n\n/**\n * Section heading set in the body (sans-serif) typeface at appropriate scale.\n * Uses the correct semantic HTML element (`h1`–`h5`) based on `level`.\n *\n * @example\n * ```tsx\n * <Heading level={1}>Recipes</Heading>\n * <Heading level={3}>Mordants & Fixatives</Heading>\n * ```\n */\nexport function Heading({ level = 1, className, children, ...props }: HeadingProps) {\n const Tag = `h${level}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5'\n const style = headingStyles[level]\n return (\n <Tag className={[style, className].filter(Boolean).join(' ')} {...props}>\n {children}\n </Tag>\n )\n}\n\n/** Props for the {@link Body} component. */\nexport interface BodyProps extends HTMLAttributes<HTMLParagraphElement> {\n /**\n * Size variant.\n * - `base` — 14px, standard reading text (default)\n * - `lead` — 16px, introductory or summary paragraphs\n * - `small` — 12px, captions, helper text, footnotes\n * @default 'base'\n */\n variant?: 'base' | 'lead' | 'small'\n children?: ReactNode\n className?: string\n}\n\nconst bodyStyles = {\n base: styles.body,\n lead: styles.bodyLead,\n small: styles.bodySmall,\n} as const\n\n/**\n * Body text rendered as a `<p>` element. Three size variants map to the\n * base reading scale.\n *\n * @example\n * ```tsx\n * <Body>Combine oak gall with iron sulphate in a ratio of 2:1.</Body>\n * <Body variant=\"lead\">An introduction to the chapter.</Body>\n * <Body variant=\"small\">Last updated 3 days ago.</Body>\n * ```\n */\nexport function Body({ variant = 'base', className, children, ...props }: BodyProps) {\n return (\n <p className={[bodyStyles[variant], className].filter(Boolean).join(' ')} {...props}>\n {children}\n </p>\n )\n}\n\n/** Props for the {@link Mono} component. */\nexport interface MonoProps extends HTMLAttributes<HTMLElement> {\n /**\n * Size variant.\n * - `base` — 13px monospace (default)\n * - `small` — 11px monospace; use for inline code in dense layouts\n * @default 'base'\n */\n variant?: 'base' | 'small'\n /** Element to render as. @default 'span' */\n as?: ElementType\n children?: ReactNode\n className?: string\n}\n\n/**\n * Monospace text for code, measurements, IDs, and numeric values. Polymorphic\n * via `as`; defaults to `<span>` for inline use.\n *\n * @example\n * ```tsx\n * <Mono>Fe₂(SO₄)₃</Mono>\n * <Mono as=\"code\" variant=\"small\">recipe-042</Mono>\n * ```\n */\nexport function Mono({ variant = 'base', as: Tag = 'span', className, children, ...props }: MonoProps) {\n const s = variant === 'small' ? styles.monoSmall : styles.mono\n return (\n <Tag className={[s, className].filter(Boolean).join(' ')} {...props}>\n {children}\n </Tag>\n )\n}\n","import 'src/components/Eyebrow/Eyebrow.css.ts.vanilla.css?source=LkV5ZWJyb3dfZXllYnJvd19fYjhybHIzMCB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IHZhcigtLXNwYWNlLXNwM19fMWFjaWJ4YngpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHlfXzFhY2lieGJ0KTsKICBmb250LXNpemU6IDExcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBsZXR0ZXItc3BhY2luZzogMC4xOGVtOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgY29sb3I6IHZhcigtLWNvbG9yLWZnMl9fMWFjaWJ4YjYpOwp9Ci5FeWVicm93X2NvdW50X19iOHJscjMxIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9fXzFhY2lieGJ1KTsKICBmb250LXNpemU6IDEwcHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBsZXR0ZXItc3BhY2luZzogMDsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICBjb2xvcjogdmFyKC0tY29sb3ItZmczX18xYWNpYnhiNyk7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmcyX18xYWNpYnhiMSk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyTXV0ZV9fMWFjaWJ4YmIpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1waWxsX18xYWNpYnhiMWEpOwogIG1pbi13aWR0aDogMThweDsKICBoZWlnaHQ6IDE2cHg7CiAgcGFkZGluZzogMCA1cHg7CiAgbGluZS1oZWlnaHQ6IDE7Cn0';\nexport var count = 'Eyebrow_count__b8rlr31';\nexport var eyebrow = 'Eyebrow_eyebrow__b8rlr30';","import type { ReactNode, HTMLAttributes } from 'react'\nimport * as styles from './Eyebrow.css'\n\n/** Props for the {@link Eyebrow} component. */\nexport interface EyebrowProps extends HTMLAttributes<HTMLSpanElement> {\n children: ReactNode\n /**\n * Numeric count shown as a small badge after the label — useful for\n * section totals, unread counts, etc.\n */\n count?: number\n /** Arbitrary content appended after the label and optional count. */\n after?: ReactNode\n className?: string\n}\n\n/**\n * Compact uppercase label used to categorise sections, label groups of\n * controls, or introduce content blocks. Rendered in small-caps with\n * tracked letter-spacing.\n *\n * Pair with a numeric `count` to show totals inline, or use `after` for\n * actions or secondary content alongside the label.\n *\n * @example\n * ```tsx\n * <Eyebrow>Ingredients</Eyebrow>\n * <Eyebrow count={12}>Recipes</Eyebrow>\n * <Eyebrow after={<Button size=\"sm\" variant=\"ghost\">Add</Button>}>Steps</Eyebrow>\n * ```\n */\nexport function Eyebrow({ children, count, after, className, ...props }: EyebrowProps) {\n return (\n <span className={[styles.eyebrow, className].filter(Boolean).join(' ')} {...props}>\n {children}\n {count !== undefined && <span className={styles.count}>{count}</span>}\n {after}\n </span>\n )\n}\n","import 'src/components/Badge/Badge.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8WW0Y6bMBBF3_MVlqpKzQMRhkCyzlv7IdGAHeKG2K4xCdlq_73CCfZmWVeVQOpLJDzm-HKdO5rVd6AV2xf2d4-5zm9tEqPfC4Qob1QNN4K4qLlg0aFm3W6BENS8EhE37NwQVDJhmO6XK1AEZcpuOUhhogOceX0j6AL6WxTZpULS236PoeRFV5il29rwV0YQjt-9fWW8OhqC8jju12pmDNNRo6DkoiIoXuGcnfuKYZ2JjAbRHKQ-E9QqxXQJDeuLCii1-1PVoe0dX0hNmY40UN42g7z7UySkYE4g3liF9uOPDzm4X7keuWFWCyNIyKsGtVu8LVbvvbyA5iDMXramBzhvwXpbQHmqtGwFJchqV6CZMEFKI2tOHaOwjFLWUg_67UNUVE58vAzCFK9rxyrvev7iyWP7wxOwnvyr_lKeVb9rH7sD6XvxX9aQQZr4ayEIqw7Zz_XFEBQ7KBu5Oo2cOPJhPrmpg1ZP0GL7kqwhAB2KIejaQY9jDyaRM0fm88nNHfTnE3QLKSQhY4diCLpx0NPYg0nkrSPX88l9cdDzEzSja8hDxg7FYBZ8wsTYhGlonzM5o2CfMRXqZ4cqcZ0nX35-0FP_s1X_DoyboD_fx_HXyLApIj7uDwrw0dX_xQAf8ObpWvMC4pQGrnUoBqk-4Wb8P5yG9jlvZxTsM36Zr89hH_LrzH058Unv5hOc-JDf5mt1iQ_568ytOfH5xfGMin0qMX7CbiBj25C9QzGI9WHDydiJaWwfOZxOkEyl8aC1BV05NUeC8vvkPAzB-aeDdBZ__Tgalq3ux8IfvRw72desi5qj5uJEULxbvP0B0MV14X8MAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var badge = _7a468({defaultClassName:'Badge_badge__1ir6yu20',variantClassNames:{tone:{saved:'Badge_badge_tone_saved__1ir6yu21',drafting:'Badge_badge_tone_drafting__1ir6yu22',stopped:'Badge_badge_tone_stopped__1ir6yu23',archived:'Badge_badge_tone_archived__1ir6yu24',neutral:'Badge_badge_tone_neutral__1ir6yu25',success:'Badge_badge_tone_success__1ir6yu26',warn:'Badge_badge_tone_warn__1ir6yu27',danger:'Badge_badge_tone_danger__1ir6yu28',info:'Badge_badge_tone_info__1ir6yu29'},variant:{outline:'Badge_badge_variant_outline__1ir6yu2a',solid:'Badge_badge_variant_solid__1ir6yu2b',pill:'Badge_badge_variant_pill__1ir6yu2c'}},defaultVariants:{tone:'neutral',variant:'outline'},compoundVariants:[[{tone:'saved',variant:'outline'},'Badge_badge_compound_0__1ir6yu2d'],[{tone:'saved',variant:'solid'},'Badge_badge_compound_1__1ir6yu2e'],[{tone:'saved',variant:'pill'},'Badge_badge_compound_2__1ir6yu2f'],[{tone:'drafting',variant:'outline'},'Badge_badge_compound_3__1ir6yu2g'],[{tone:'drafting',variant:'solid'},'Badge_badge_compound_4__1ir6yu2h'],[{tone:'drafting',variant:'pill'},'Badge_badge_compound_5__1ir6yu2i'],[{tone:'stopped',variant:'outline'},'Badge_badge_compound_6__1ir6yu2j'],[{tone:'stopped',variant:'solid'},'Badge_badge_compound_7__1ir6yu2k'],[{tone:'stopped',variant:'pill'},'Badge_badge_compound_8__1ir6yu2l'],[{tone:'archived',variant:'outline'},'Badge_badge_compound_9__1ir6yu2m'],[{tone:'archived',variant:'solid'},'Badge_badge_compound_10__1ir6yu2n'],[{tone:'archived',variant:'pill'},'Badge_badge_compound_11__1ir6yu2o'],[{tone:'neutral',variant:'outline'},'Badge_badge_compound_12__1ir6yu2p'],[{tone:'neutral',variant:'solid'},'Badge_badge_compound_13__1ir6yu2q'],[{tone:'neutral',variant:'pill'},'Badge_badge_compound_14__1ir6yu2r'],[{tone:'success',variant:'outline'},'Badge_badge_compound_15__1ir6yu2s'],[{tone:'success',variant:'solid'},'Badge_badge_compound_16__1ir6yu2t'],[{tone:'success',variant:'pill'},'Badge_badge_compound_17__1ir6yu2u'],[{tone:'warn',variant:'outline'},'Badge_badge_compound_18__1ir6yu2v'],[{tone:'warn',variant:'solid'},'Badge_badge_compound_19__1ir6yu2w'],[{tone:'warn',variant:'pill'},'Badge_badge_compound_20__1ir6yu2x'],[{tone:'danger',variant:'outline'},'Badge_badge_compound_21__1ir6yu2y'],[{tone:'danger',variant:'solid'},'Badge_badge_compound_22__1ir6yu2z'],[{tone:'danger',variant:'pill'},'Badge_badge_compound_23__1ir6yu210'],[{tone:'info',variant:'outline'},'Badge_badge_compound_24__1ir6yu211'],[{tone:'info',variant:'solid'},'Badge_badge_compound_25__1ir6yu212'],[{tone:'info',variant:'pill'},'Badge_badge_compound_26__1ir6yu213']]});\nexport var dot = 'Badge_dot__1ir6yu214';","import type { HTMLAttributes, ReactNode } from 'react'\nimport type { RecipeVariants } from '@vanilla-extract/recipes'\nimport * as styles from './Badge.css'\n\ntype BadgeVariants = NonNullable<RecipeVariants<typeof styles.badge>>\n\n/** Props for the {@link Badge} component. */\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n /**\n * Semantic colour tone.\n * - `saved` — green; completed or published state\n * - `drafting` — amber; in-progress or pending state\n * - `stopped` — red; error, blocked, or inactive state\n * - `archived` — muted; historical or soft-deleted state\n * - `neutral` — default; informational, no semantic weight\n * @default 'neutral'\n */\n tone?: BadgeVariants['tone']\n /**\n * Visual style.\n * - `outline` — border + tinted background (default); lighter weight\n * - `solid` — filled background; higher visual weight\n * @default 'outline'\n */\n variant?: BadgeVariants['variant']\n /** Show a small filled dot before the label — useful for status indicators. */\n dot?: boolean\n children: ReactNode\n className?: string\n}\n\n/**\n * Compact inline label for status, category, or metadata. Combines a semantic\n * `tone` (colour) with an `outline` or `solid` style.\n *\n * @example\n * ```tsx\n * <Badge tone=\"saved\">Published</Badge>\n * <Badge tone=\"drafting\" dot>In progress</Badge>\n * <Badge tone=\"stopped\" variant=\"solid\">Blocked</Badge>\n * ```\n */\nexport function Badge({\n tone = 'neutral',\n variant = 'outline',\n dot = false,\n children,\n className,\n ...props\n}: BadgeProps) {\n return (\n <span\n className={[styles.badge({ tone, variant }), className].filter(Boolean).join(' ')}\n {...props}\n >\n {dot && <span className={styles.dot} aria-hidden=\"true\" />}\n {children}\n </span>\n )\n}\n","import 'src/components/Button/Button.css.ts.vanilla.css?source=#H4sIAAAAAAAAA71X227jNhB9z1cQ-xQD4UKyc9loUaDYBYq-9AuKwqDIkcyNRLLkyJZb7L8XpCxKcSTFwW764IvI4ZwzM2co8tcnOBaW1eDIlwZRq60zUm23KWpr_-YJ-feKkMLqOvwhBC1TrtC2zojVyBCuEwHl6vMVId-vCEE9a7e5H1l-v_o4glNgI2IaHAjpTMWOGZGqkgpoUUHrVzIla4ZSq2yGbuqIX8AskaqQSiJ8HoHl3U9vvl7GqmSpqESoXUY4KATrh781DmVxpFwrBIXjqZKZjOyZvabUGcaBOnO73aaMy7zNjyH0QiukBatldexNw1CuxTGa4mB6AFnuMCP3SeLHKkAEG7xLVWYk-ZgmUPsZhBbpKOuNMWA5c-Anc20F2IykpiVOV1KcoLmutKXdbER_XA1LqGVCNq6n2j1RpRVE8_Qh2PPGOm0zYrTs0xHYyK5akdnJk2hsqCMtmMPBV7E6zQNzQHUzmpKrG5LrlrodE_rwY24YfyqtbpT4ATc-Qt2gl0xGfEZiFQRwbU8q7ScOO4nQqcIPHiwzfrhxvppQAcfedl6tWaF54-heOplXELQbCawnK8u4F2dkLcakqS4KBxiWLqIK6VhegbghcyZ_MisZ7e1--YC2gQ9_dQS9UvHolXo7lonSSFlV6QMIP3xSDYU9KHSzqdh7IIVbY2XN7DEy2ASsoazZsywUZczAXadVP_zcJh9skpP-e6nFlg5P1CGrzSCEfPUWntlO78FmSuN1zOsqkB-1bvhb-T2Tpqa9If77BaeNacMnIclSsG-gxjjKPVzMbe2prSeYvVI7B1wrMYa-Xayea2zB-LDfbOZKeGnkEwTmyzLHKi_XgwbGG-ZBCtzNNdUShfn0z0rRWHBuoCGWoo5bQYd3txjd5L4xkfLO7rch8TBOxeyCM8c_pdXO43v_TpuI5XJ2_1OzlTvtBtj7F0UPCIZZUDjbVYPQ71-pbjfzR4NDty7W7IzdfMle7_bXaT0731xM6Z27UjBVjg6_D4tdGY07z9_e8C6bS82ky5_Sj-eRvX8_TsRyObt37kcn_4GtqyPgp-5e5U_4fiojaWrCpcMwIcLJ_s60JE26wYl7xSbG2U7FGfBqEfEeX-Ctz_AePN7ZW-spF7_L0bbFBi8TV5haKx1ZNcMVpgN87PBeXmCSu-kLTH9yHp0gH_xzzWwpFa2gwPOkDDvVYaT78bWHN9bvdV-9YJ6F701uO4pLN58dk9Yfnocm-OTT_x_lLY3fRg8AAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var button = _7a468({defaultClassName:'Button_button__1torrqc2',variantClassNames:{variant:{primary:'Button_button_variant_primary__1torrqc3',secondary:'Button_button_variant_secondary__1torrqc4',accent:'Button_button_variant_accent__1torrqc5',ghost:'Button_button_variant_ghost__1torrqc6',danger:'Button_button_variant_danger__1torrqc7'},size:{sm:'Button_button_size_sm__1torrqc8',md:'Button_button_size_md__1torrqc9'}},defaultVariants:{variant:'secondary',size:'md'},compoundVariants:[]});\nexport var kbdHint = 'Button_kbdHint__1torrqca';\nexport var spinner = 'Button_spinner__1torrqc1';","import type { ButtonHTMLAttributes, ReactNode } from 'react'\nimport type { RecipeVariants } from '@vanilla-extract/recipes'\nimport { Glyph } from '../../glyphs/Glyph'\nimport type { GlyphName } from '../../types/components'\nimport * as styles from './Button.css'\n\ntype ButtonVariants = NonNullable<RecipeVariants<typeof styles.button>>\n\n/** Props for the {@link Button} component. */\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * Visual style of the button.\n * - `primary` — high-emphasis, filled in foreground ink with stamp shadow\n * - `secondary` — medium-emphasis, surface fill (default)\n * - `accent` — accent-colour fill; use for the single primary CTA per view\n * - `ghost` — minimal, border only; use for toolbar/icon actions\n * - `danger` — destructive actions; uses danger semantic colour\n * @default 'secondary'\n */\n variant?: ButtonVariants['variant']\n /**\n * Size of the button.\n * - `sm` — 11px text, compact padding; use in toolbars, table rows\n * - `md` — 12px text, standard padding (default)\n * - `lg` — 13px text, generous padding; use for primary CTAs\n * @default 'md'\n */\n size?: ButtonVariants['size']\n /** Name of a {@link Glyph} to render alongside the label. */\n glyph?: GlyphName\n /**\n * Which side the glyph appears on.\n * @default 'start'\n */\n glyphPosition?: 'start' | 'end'\n /**\n * Keyboard shortcut hint rendered as a subtle badge at the button's trailing edge.\n * Display only — does not wire up any keyboard listener.\n * @example kbd=\"⌘K\"\n */\n kbd?: string\n /**\n * When true, replaces the button content with a spinning `spinner` glyph and an optional\n * `loadingLabel`, and sets `disabled` to prevent double-submission. The button keeps\n * its current dimensions so the layout does not shift.\n */\n loading?: boolean\n /**\n * Label shown alongside the spinner when `loading` is true.\n * @default 'Loading…'\n */\n loadingLabel?: string\n children?: ReactNode\n className?: string\n}\n\n/**\n * The primary interactive element. Supports five variants, three sizes, optional\n * glyphs, and keyboard shortcut hints.\n *\n * @example\n * ```tsx\n * <Button variant=\"accent\" glyph=\"plus\">New entry</Button>\n * <Button variant=\"ghost\" size=\"sm\" glyph=\"cross\" aria-label=\"Close\" />\n * <Button variant=\"primary\" kbd=\"⌘S\">Save</Button>\n * ```\n */\nexport function Button({\n variant = 'secondary',\n size = 'md',\n glyph,\n glyphPosition = 'start',\n kbd,\n loading = false,\n loadingLabel = 'Loading…',\n children,\n className,\n ...props\n}: ButtonProps) {\n const glyphSize = size === 'sm' ? 12 : 14\n\n return (\n <button\n className={[styles.button({ variant, size }), className].filter(Boolean).join(' ')}\n disabled={loading || props.disabled}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading ? (\n <>\n <span className={styles.spinner} aria-hidden=\"true\">\n <Glyph name=\"spinner\" size={glyphSize} />\n </span>\n {loadingLabel}\n </>\n ) : (\n <>\n {glyph && glyphPosition === 'start' && (\n <Glyph name={glyph} size={glyphSize} aria-hidden=\"true\" />\n )}\n {children}\n {glyph && glyphPosition === 'end' && (\n <Glyph name={glyph} size={glyphSize} aria-hidden=\"true\" />\n )}\n {kbd && <span className={styles.kbdHint}>{kbd}</span>}\n </>\n )}\n </button>\n )\n}\n","import 'src/components/Modal/Modal.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-1Wy27bOhDd5yu4KRChYSA5lu2om-LuLnC7Kro2KD4k3lCkQFK2nKL_XpCUKUV2bGfdbgRJ8zozc2bIry_0wDRqqAHfFEFiyxCh_8rtNnvBZW54Cn7eAcC0avwLAKpFmNtDAdIvdwD8ugPAqrkoC6Jfd1_n3o3ghP5oo_vssnsArEbSMKWbIrwKZOk9zNNPDwAjgf0r-Aw2bZ8kVwBddOaeyRH2YwCrdlQLdIhgF95tqwy3XMkCMN5T4my4NNQOkEuEXyqtOkkKoKsS3S_Sh-z5Icsf0sc8T44qRKsWMi4s1QUoRafvF23vpa-QS0L7AmSpd4gkb1AI-E6HdkjfQ0g67dVgiQzdbjOEedmXWZUMcooMhaqzo4gnX8ZksZKWShvdPr2XrFVtAfL0k3sXlNn4cUt1p9UJsLASSkPTaYbwCPspaCtNXH2ytgdGCU7e2ARpNHkeTHpoakTU_hggfEFjUdP-V43ZY6_fIkK4rKJyizCFpt2Meovkksz5aFAP95zYugD5Jm1792_49hzN0nS3BxAsN0OLnUFNeVXbiUY91XDUY8IlgTqrZrTIxtpAjQjvzBF--IJSyQkD1slZGp2O4oxHRqj96KW-kUc1RaErwevS04hw0wp0KAAT1JcHCV5JyC1tTPjp-qOtE_3fGcvZAQ6ELECoe0ntnlIZyqcrLmGprFXNvHN5xPU6hWW5FTSiysPaUdJChhouDkcv_teANjoyvoBetB-6tg6z6f8Z_koLsFiFxgsuaWxu9piFMbGWag_Rcw2mj2mW08bJPJffDgMbWZonY8LzTJ-iVp-ANGyfCRU3bipj_oQarHnrGhursLpYhVKRsQQ2maWbLUO6Z-Evot1qgh_6zfF-DtNlJJSh_3TWTtCuPdrpAvFbpkWaSnvrtvjW2XEySg8Od9q4FFrFpaX6wlIY09onN-d-mfqYHmOe0H4UhfmoNZcvx0Pmg8PvKzUs8sHW452PPENmMtfs1qPjXLeK2u2w0LNJxOL6Cr8-EVciM4U7A3fc8FJQj0B11s1lARZnuYEwDkdfCEHCCg42UDHmT_eFI3yMPExHCLnxQd5n-WosXDqFz5Syk135fH5XnjDD84FKfxpX6CTaMkY7XJm-k5NsIP4NOcSuetUPjdz8yvGdv1ISi4D-3jtuvXf8sXeMN8Rx59HWNDFGOQxjPAiXafpmdE-tm5F-eG6dr65Ziypak7n1embt1sZ3rJUQqJzcR4YtNTQEHsaWTNu4Tnf15YGeL5rf8Im3r94NAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var body = 'Modal_body__1kcb5si8';\nexport var bodyScrollable = 'Modal_bodyScrollable__1kcb5sie';\nexport var closeButton = 'Modal_closeButton__1kcb5si7';\nexport var content = 'Modal_content__1kcb5si3';\nexport var contentSized = _7a468({defaultClassName:'Modal_contentSized__1kcb5sia',variantClassNames:{size:{sm:'Modal_contentSized_size_sm__1kcb5sib',md:'Modal_contentSized_size_md__1kcb5sic',lg:'Modal_contentSized_size_lg__1kcb5sid'}},defaultVariants:{size:'sm'},compoundVariants:[]});\nexport var description = 'Modal_description__1kcb5si6';\nexport var footer = 'Modal_footer__1kcb5si9';\nexport var header = 'Modal_header__1kcb5si4';\nexport var overlay = 'Modal_overlay__1kcb5si2';\nexport var title = 'Modal_title__1kcb5si5';","import * as RadixDialog from '@radix-ui/react-dialog'\nimport type { ReactNode } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport * as styles from './Modal.css'\n\n/** Props for the {@link Modal} component. */\nexport interface ModalProps {\n /**\n * Controlled open state. When provided alongside `onOpenChange`, the\n * component is fully controlled. Omit for uncontrolled usage with\n * `defaultOpen` and a `trigger`.\n */\n open?: boolean\n /** Initial open state for uncontrolled usage. */\n defaultOpen?: boolean\n /** Called when the open state changes — required for controlled usage. */\n onOpenChange?: (open: boolean) => void\n /** Dialog title rendered in display typeface above the description. */\n title?: ReactNode\n /** Secondary description line rendered below the title. */\n description?: ReactNode\n /** Main body content of the dialog — typically a form or informational layout. */\n children?: ReactNode\n /**\n * Footer slot rendered below the body with a top border. Typically holds\n * confirm/cancel {@link Button} elements aligned to the trailing edge.\n */\n footer?: ReactNode\n /**\n * Element that opens the dialog when clicked. Rendered as a Radix\n * `asChild` trigger — pass any single React element (e.g. a {@link Button}).\n * Omit when controlling `open` externally.\n */\n trigger?: ReactNode\n /**\n * Dialog width preset.\n * - `sm` — 400px (default)\n * - `md` — 560px\n * - `lg` — 760px\n * @default 'sm'\n */\n size?: 'sm' | 'md' | 'lg'\n /**\n * When true, the body area becomes scrollable with `max-height: 70vh`.\n * Use for modals with variable-length content.\n * @default false\n */\n scrollable?: boolean\n className?: string\n}\n\n/**\n * Accessible dialog built on Radix Dialog. Renders into a portal at\n * `document.body`, so it appears above all other content regardless of\n * stacking context. Includes focus trapping, `Escape` to close, and\n * backdrop click to dismiss.\n *\n * Theme CSS vars are inherited via `data-achery-root` on `<html>`, so\n * the modal matches the active theme and accent even though it is portaled.\n *\n * @example\n * ```tsx\n * // Uncontrolled with trigger\n * <Modal\n * trigger={<Button variant=\"accent\" glyph=\"plus\">New recipe</Button>}\n * title=\"New recipe\"\n * size=\"md\"\n * footer={<><Button variant=\"ghost\">Cancel</Button><Button variant=\"primary\">Save</Button></>}\n * >\n * <Field label=\"Name\"><Input autoFocus /></Field>\n * </Modal>\n *\n * // Controlled + scrollable\n * <Modal open={isOpen} onOpenChange={setIsOpen} title=\"Confirm\" scrollable>…</Modal>\n * ```\n */\nexport function Modal({\n open,\n defaultOpen,\n onOpenChange,\n title,\n description,\n children,\n footer,\n trigger,\n size = 'sm',\n scrollable = false,\n className,\n}: ModalProps) {\n return (\n <RadixDialog.Root\n {...(open !== undefined ? { open } : {})}\n {...(defaultOpen !== undefined ? { defaultOpen } : {})}\n {...(onOpenChange !== undefined ? { onOpenChange } : {})}\n >\n {trigger && <RadixDialog.Trigger asChild>{trigger}</RadixDialog.Trigger>}\n <RadixDialog.Portal>\n <RadixDialog.Overlay className={styles.overlay} />\n <RadixDialog.Content\n className={[styles.contentSized({ size }), className].filter(Boolean).join(' ')}\n aria-describedby={description ? 'modal-description' : undefined}\n >\n <div className={styles.header}>\n <div>\n {title && (\n <RadixDialog.Title className={styles.title}>{title}</RadixDialog.Title>\n )}\n {description && (\n <RadixDialog.Description id=\"modal-description\" className={styles.description}>\n {description}\n </RadixDialog.Description>\n )}\n </div>\n <RadixDialog.Close className={styles.closeButton} aria-label=\"Close\">\n <Glyph name=\"cross\" size={14} aria-hidden=\"true\" />\n </RadixDialog.Close>\n </div>\n <div className={scrollable ? styles.bodyScrollable : styles.body}>{children}</div>\n {footer && <div className={styles.footer}>{footer}</div>}\n </RadixDialog.Content>\n </RadixDialog.Portal>\n </RadixDialog.Root>\n )\n}\n","import { createContext, useCallback, useContext, useRef, useState, type ReactNode } from 'react'\nimport { Modal } from '../Modal/Modal'\nimport { Button } from '../Button/Button'\nimport { Body } from '../Typography/Typography'\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface ConfirmOptions {\n /** Modal title. */\n title?: ReactNode\n /** Body message. */\n message: ReactNode\n /** Label for the confirm button. @default 'Confirm' */\n confirmLabel?: string\n /** Variant for the confirm button. @default 'accent' */\n confirmVariant?: 'accent' | 'secondary' | 'ghost'\n /** Label for the cancel button. @default 'Cancel' */\n cancelLabel?: string\n /**\n * When true, the confirm button is rendered in a destructive style\n * (terracotta-deep background, matching the existing danger idiom).\n * @default false\n */\n destructive?: boolean\n}\n\ntype ConfirmFn = (opts: ConfirmOptions) => Promise<boolean>\n\n// ─── Context ──────────────────────────────────────────────────────────────────\n\nconst ConfirmContext = createContext<ConfirmFn | null>(null)\n\n// ─── Provider ─────────────────────────────────────────────────────────────────\n\ninterface State {\n open: boolean\n opts: ConfirmOptions\n resolve: (value: boolean) => void\n}\n\nconst EMPTY_OPTS: ConfirmOptions = { message: '' }\nconst NOOP_RESOLVE = (_: boolean) => {}\n\n/** Renders a single in-theme confirm dialog. Mount once at your app root. */\nexport const ConfirmDialogProvider = ({ children }: { children: ReactNode }) => {\n const [state, setState] = useState<State>({\n open: false,\n opts: EMPTY_OPTS,\n resolve: NOOP_RESOLVE,\n })\n\n const confirm = useCallback<ConfirmFn>((opts) => {\n return new Promise<boolean>((resolve) => {\n setState({ open: true, opts, resolve })\n })\n }, [])\n\n const settle = (value: boolean) => {\n state.resolve(value)\n setState((s) => ({ ...s, open: false }))\n }\n\n const { open, opts } = state\n const confirmLabel = opts.confirmLabel ?? 'Confirm'\n const cancelLabel = opts.cancelLabel ?? 'Cancel'\n\n return (\n <ConfirmContext.Provider value={confirm}>\n {children}\n <Modal\n open={open}\n onOpenChange={(o) => { if (!o) settle(false) }}\n title={opts.title}\n size=\"sm\"\n footer={\n <div style={{ display: 'flex', gap: 8, justifyContent: 'flex-end', width: '100%' }}>\n <Button variant=\"ghost\" size=\"sm\" onClick={() => settle(false)}>\n {cancelLabel}\n </Button>\n <Button\n variant={opts.confirmVariant ?? 'accent'}\n size=\"sm\"\n onClick={() => settle(true)}\n style={opts.destructive ? {\n background: 'var(--achery-color-rust, #8a3a22)',\n borderColor: 'var(--achery-color-rust, #8a3a22)',\n } : undefined}\n >\n {confirmLabel}\n </Button>\n </div>\n }\n >\n {typeof opts.message === 'string'\n ? <Body variant=\"small\">{opts.message}</Body>\n : opts.message}\n </Modal>\n </ConfirmContext.Provider>\n )\n}\n\n// ─── Hook ─────────────────────────────────────────────────────────────────────\n\n/**\n * Returns an async `confirm(opts)` function that resolves `true` if the user\n * clicks confirm, `false` if they cancel or close the dialog.\n *\n * Requires `<ConfirmDialogProvider>` to be mounted above the calling component.\n *\n * @example\n * ```tsx\n * const confirm = useConfirm()\n *\n * async function handleDelete() {\n * const ok = await confirm({\n * title: 'Delete task',\n * message: 'This cannot be undone.',\n * confirmLabel: 'Delete',\n * destructive: true,\n * })\n * if (!ok) return\n * await deleteTask(id)\n * }\n * ```\n */\nexport const useConfirm = (): ConfirmFn => {\n const fn = useContext(ConfirmContext)\n if (!fn) throw new Error('useConfirm must be used within a ConfirmDialogProvider')\n return fn\n}\n","import 'src/components/Toggle/Toggle.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6VV24rbMBB9z1eIhcIGqiVOspdqKfSp0PdSCqWEsTV2ppElIcm5tOy_F8uXONk4he2bpbmcmTln5E8bPOQOSvTsqykKhStvSa9Wwdlyl83YnwljuTNl_GAsONA-N64UzJkAAW9nEovp84SxlwljwYz6LR4Gni-TuxYtOMg2HVwSoyV5q-AgGGlFGnmucF-HgaJCcwpYesEy1AFdfb0jGdaCLWc2eq2RinUQbD5vzqlxEh13IKnygm3B3fL2xC0ptVolkFG6TxOYHv0FS-yeeaNItiGZUcbxxtrHfGhCINsUzlRaihNnX7kcMuy9F9E7q5w3TjBrqGvBgpSkC8HamuP0KJDRYpC8zS0rB7WJ5-DDsfp82toRPHJTDUw0fd-NIRb2H4nq6mo-uF870hvBZs-jZP6QEID7mv2PN0bf_Izsjg0LsprSHksOyGg8_uk-VofITVZ5viVPqcJYhKlCLa048AssX6yljeEmzz2GlqtRTEkeUoWygbOQUTgINrtbDiWgTeCglNmhPEm1rsq0SzWPGVqRJw-nIu_OZyK_n727psu86Fu7n57rrd_cc5Wk4I9STooTlXgN9mj7Fcl4Tf-V_gbvRfxUEPD7bfJk91c3rCHq87EfPNHBzoG19bo2UIu3PC8F2A7TW8iQe7vs4Q4ncApSVB3Ysnk6jQ48h5LUocsSr1IjD32W0KxVfe_pNwqWLBpaL-j-FXeVR8c9KsxCLSiNw4rq6Vf-i5aUQTD9IO7fMojxtT9D-QaOQAe_8rAlXXSgDxH0YkuLvqfH2BNoKqGR48WfUuJZXTE4RjonTeFa08NyUHZJHsequfqwjKVG547TfRpLLUEXg59HXJO_lQ_rGoAHAAA';\nexport var label = 'Toggle_label__trpmwc4';\nexport var statusIndicator = 'Toggle_statusIndicator__trpmwc5';\nexport var statusIndicatorVariants = {saving:'Toggle_statusIndicatorVariants_saving__trpmwc6',saved:'Toggle_statusIndicatorVariants_saved__trpmwc7',error:'Toggle_statusIndicatorVariants_error__trpmwc8'};\nexport var thumb = 'Toggle_thumb__trpmwc2';\nexport var track = 'Toggle_track__trpmwc1';\nexport var wrapper = 'Toggle_wrapper__trpmwc3';","import * as RadixToggle from '@radix-ui/react-toggle'\nimport type { ReactNode } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport type { InputStatus } from '../Input/Input'\nimport * as styles from './Toggle.css'\n\n/** Props for the {@link Toggle} component. */\nexport interface ToggleProps {\n /**\n * Controlled pressed state. When provided, the component becomes controlled\n * and `onPressedChange` must be handled externally.\n */\n pressed?: boolean\n /** Initial pressed state for uncontrolled usage. */\n defaultPressed?: boolean\n /** Called when the pressed state changes. */\n onPressedChange?: (pressed: boolean) => void\n disabled?: boolean\n /** Optional text label rendered beside the toggle track. */\n label?: ReactNode\n /** Auto-save feedback state. When set to anything other than `'idle'`, a small icon appears after the label. */\n status?: InputStatus\n className?: string\n /** Accessible label when no visible text label is present. */\n 'aria-label'?: string\n}\n\n/**\n * Binary on/off switch built on Radix Toggle. Supports both controlled and\n * uncontrolled usage via `pressed`/`defaultPressed`.\n *\n * Always provide either a visible `label` or an `aria-label` so the control\n * is accessible to screen readers.\n *\n * @example\n * ```tsx\n * // Uncontrolled\n * <Toggle defaultPressed label=\"Dark mode\" />\n *\n * // Controlled\n * <Toggle pressed={isDark} onPressedChange={setIsDark} label=\"Dark mode\" />\n *\n * // Icon-only (needs aria-label)\n * <Toggle aria-label=\"Enable notifications\" />\n * ```\n */\nexport function Toggle({\n pressed,\n defaultPressed,\n onPressedChange,\n disabled,\n label,\n status,\n className,\n 'aria-label': ariaLabel,\n}: ToggleProps) {\n return (\n <span className={[styles.wrapper, className].filter(Boolean).join(' ')}>\n <RadixToggle.Root\n {...(pressed !== undefined ? { pressed } : {})}\n {...(defaultPressed !== undefined ? { defaultPressed } : {})}\n {...(onPressedChange !== undefined ? { onPressedChange } : {})}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(ariaLabel !== undefined ? { 'aria-label': ariaLabel } : {})}\n className={styles.track}\n >\n <span className={styles.thumb} />\n </RadixToggle.Root>\n {label && <span className={styles.label}>{label}</span>}\n {status && status !== 'idle' && (\n <span className={[styles.statusIndicator, styles.statusIndicatorVariants[status]].join(' ')} aria-hidden=\"true\">\n <Glyph name={status === 'saving' ? 'spinner' : status === 'saved' ? 'tick' : 'cross'} size={12} />\n </span>\n )}\n </span>\n )\n}\n","import 'src/components/Marginalia/Marginalia.css.ts.vanilla.css?source=Lk1hcmdpbmFsaWFfbWFyZ2luYWxpYV9fZWxjMjl6MCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogdmFyKC0tc3BhY2Utc3AzX18xYWNpYnhieCk7CiAgcmlnaHQ6IHZhcigtLXNwYWNlLXNwM19fMWFjaWJ4YngpOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwogIGNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQyX18xYWNpYnhiZik7Cn0';\nexport var marginalia = 'Marginalia_marginalia__elc29z0';","import type { GlyphName } from '../../types/components'\nimport { Glyph } from '../../glyphs/Glyph'\nimport * as styles from './Marginalia.css'\n\n/** Props for the {@link Marginalia} component. */\nexport interface MarginaliaProps {\n /**\n * Glyph to display. Any of the 33 named glyphs from the Achery icon set.\n * @default 'fern'\n */\n glyph?: GlyphName\n /**\n * Size in pixels (applied to both width and height).\n * @default 120\n */\n size?: number\n /**\n * Opacity of the glyph, 0–1. Keep low (0.25–0.5) so the decorative\n * element doesn't compete with content.\n * @default 0.4\n */\n opacity?: number\n /** When true, renders the glyph in the current accent colour. */\n accent?: boolean\n className?: string\n style?: React.CSSProperties\n}\n\n/**\n * Decorative botanical/alchemical glyph for use as corner or edge ornamentation.\n * Renders `aria-hidden` — purely presentational.\n *\n * Position it absolutely within a relatively-positioned container (e.g. a {@link Card})\n * to achieve the characteristic manuscript-margin effect.\n *\n * @example\n * ```tsx\n * // Inside a Card — Card handles positioning via its `marginalia` prop shorthand\n * <Card marginalia=\"fern\">…</Card>\n *\n * // Manual placement\n * <div style={{ position: 'relative' }}>\n * <Marginalia glyph=\"asterism\" size={160} opacity={0.25} />\n * <p>Content</p>\n * </div>\n * ```\n */\nexport function Marginalia({\n glyph = 'fern',\n size = 120,\n opacity = 0.4,\n className,\n style,\n}: MarginaliaProps) {\n return (\n <Glyph\n name={glyph}\n size={size}\n className={[styles.marginalia, className].filter(Boolean).join(' ')}\n style={{ opacity, ...style }}\n aria-hidden=\"true\"\n />\n )\n}\n","import 'src/components/Input/Input.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7VWwW7jNhC95yuIBQxl0VUiW4niaGGg2CCHPeylXbToyRiLI5kJRRIkZStd7L8XJC1ZVmwnaNGLTc1w3jwO35D89RlfSg01GvJVqMYujWJiucy2qWWYkB8XhJRa1n5AiNUgTCl1nRMtLVi8TChWHz9fEPLzghArT85Ls8HMnxdXIVnJkNPfpLRdxqkHoMwoDi85KTm2LsT9x5RpLCyTIieF5E0tnKcClZMN6Ms4NgoKjI2aLZdTKNiqXW0_ft7n4rBC3uWZhZVJYeMSasZfOhBvWkn60oNYT9rbDfsbczJNVNubtsiqtc1JliTOxtFa1J4KE1VOkqvpHGvnsdjaeFCXRinUBRh0zkJyqTsK_iMuq_06suE61kz05UrPLqOWQvYYzallHM2d9nF3w9yotdTfse0J3Pw_BCiICnUf-jTkwNzvFzDYcbj9L3uZnilCH3brw1ZQPFdaNoIeTjSNLqHAfnYaZktNUedkqlpiJGf0ICZ4-5D7QUisgbLGdDnCVyyk2GeY3vn5Cij1KrtTbV_NLaN27YqbTNynbCxnAnPiALwOnQRZaKNdQk9pl442GpwzLsHYfcLy486PYDCWzcDFzm9OnisOBa4lp6j9Th2t9bfG7tc3fwOylEVjPNZwBYeQUBQo9jTpsMK7Gs1CxfoyZqol9852LjdlBlYcqU8vXZ_bF9fnt15GjTaOiJA2Bs7lFukY7dG1UAeXfSKnfe9a5rlOcUcOaIQO8c5jaQzS36C2rADueNdMxOvdSTZPDkpgkGNhw3iHM_c4oBSCBlEMxLUrZawD1GweKrzvnJjVUGFOGs0vP1CwkHvDtdlUv7Q1_zRJH8ymIm3NhVlEa2tVfn293W6vtumV1NX1LEkSNzkKOl9E01lEAvMw3jDcfpHtIkpIQmY3ZHYTkZJxvogcx4gYq-UzLqKi0RqFfXBF7Kxxh3l105tc8xSgFpGnf2B-kkx09kn6OEkfFNg1oYvoW0bueUYyksVZdB18jvUkffwwOkpijQrBuhLuhiO_kl23-qKSuWqJUzbqoeCUZMF0KLY_tdulXlL3fuMGiMjBsg2-OjdGKMyuf7dgG9MBQQA6tttvhg5kPQa4OwDo5PsaY_WO9Gei380gaP81QnEs9uYwv_ERXwvZv6boqPqwMpI31ld_h3Ef-sVKlZPbcIAPngx-yMHiX5fxbTIJd0DY-Bg3KKzZd-KrJxRwVomYWaxN3gvoCNvvo0MDPWvPqLtiBpRCuiMwf4BmIKxZGtgwUXVo5ekb4PDJQQgIVkOo1LGX6dQQ14SgCRMlE8y-zQNpF16donHk1jgHisMDe30K9NwZbRB0sR71KTvZp6O4obyezsiLY_mv1PWujTouwTHT4QXyfNA_gVw6vnZeRx3p2xA7C7f2P8DROTXMDAAA';\nexport var errorText = 'Input_errorText__6w3tie4';\nexport var fieldRoot = 'Input_fieldRoot__6w3tie1';\nexport var hint = 'Input_hint__6w3tie3';\nexport var inputBase = 'Input_inputBase__6w3tie5';\nexport var inputError = 'Input_inputError__6w3tie6';\nexport var inputWithStatus = 'Input_inputWithStatus__6w3tiea Input_inputBase__6w3tie5';\nexport var inputWrapper = 'Input_inputWrapper__6w3tie9';\nexport var label = 'Input_label__6w3tie2';\nexport var searchIcon = 'Input_searchIcon__6w3tiej';\nexport var searchInput = 'Input_searchInput__6w3tiek Input_inputBase__6w3tie5';\nexport var searchWrapper = 'Input_searchWrapper__6w3tiei';\nexport var selectInput = 'Input_selectInput__6w3tie8 Input_inputBase__6w3tie5';\nexport var selectWithStatus = 'Input_selectWithStatus__6w3tiec';\nexport var statusIcon = 'Input_statusIcon__6w3tied';\nexport var statusIconTextarea = 'Input_statusIconTextarea__6w3tiee Input_statusIcon__6w3tied';\nexport var statusIconVariants = {saving:'Input_statusIconVariants_saving__6w3tief',saved:'Input_statusIconVariants_saved__6w3tieg',error:'Input_statusIconVariants_error__6w3tieh'};\nexport var textarea = 'Input_textarea__6w3tie7 Input_inputBase__6w3tie5';\nexport var textareaWithStatus = 'Input_textareaWithStatus__6w3tieb';","import type {\n InputHTMLAttributes,\n TextareaHTMLAttributes,\n SelectHTMLAttributes,\n ReactNode,\n} from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport * as styles from './Input.css'\n\n/** Props for the {@link Field} wrapper component. */\nexport interface FieldProps {\n /** Visible label rendered above the input. */\n label?: string\n /** Helper text shown below the input when there is no error. */\n hint?: string\n /**\n * Error message. When present, replaces the hint and applies error styling\n * to the field. Pass to {@link Input}, {@link Textarea}, or {@link Select}\n * via their `error` boolean prop to also colour the input itself.\n */\n error?: string\n children: ReactNode\n className?: string\n}\n\n/**\n * Layout wrapper that pairs a label, input control, and hint/error text.\n * Compose with {@link Input}, {@link Textarea}, or {@link Select} as `children`.\n *\n * @example\n * ```tsx\n * <Field label=\"Name\" hint=\"As it appears on the specimen jar\">\n * <Input placeholder=\"Iron-gall ink\" />\n * </Field>\n *\n * <Field label=\"Notes\" error=\"Required\">\n * <Textarea error rows={4} />\n * </Field>\n * ```\n */\nexport function Field({ label, hint, error, children, className }: FieldProps) {\n return (\n <div className={[styles.fieldRoot, className].filter(Boolean).join(' ')}>\n {label && <label className={styles.label}>{label}</label>}\n {children}\n {error && <span className={styles.errorText}>{error}</span>}\n {!error && hint && <span className={styles.hint}>{hint}</span>}\n </div>\n )\n}\n\n/**\n * Auto-save feedback state for inputs.\n * - `'saving'` — spinning indicator; prevents confusing \"done\" flash before round-trip completes\n * - `'saved'` — accent-coloured tick; shown briefly after a successful save\n * - `'error'` — danger-coloured cross; save failed\n */\nexport type InputStatus = 'idle' | 'saving' | 'saved' | 'error'\n\n/** Props for the {@link Input} component. */\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n /** When true, applies error border colouring. Pair with {@link Field} `error` prop. */\n error?: boolean\n /**\n * Auto-save feedback state. When set to anything other than `'idle'`, a small\n * icon appears at the trailing edge of the input.\n */\n status?: InputStatus\n className?: string\n}\n\n/**\n * Single-line text input. Forwards all native `<input>` attributes.\n * Wrap in {@link Field} to add a label and hint/error text.\n *\n * @example\n * ```tsx\n * <Input placeholder=\"Search recipes…\" type=\"search\" />\n * <Input error value={value} onChange={handleChange} />\n * <Input status=\"saving\" value={value} onChange={handleChange} />\n * ```\n */\nexport function Input({ error, status, className, ...props }: InputProps) {\n const hasStatus = status && status !== 'idle'\n if (!hasStatus) {\n return (\n <input\n className={[styles.inputBase, error && styles.inputError, className].filter(Boolean).join(' ')}\n {...props}\n />\n )\n }\n return (\n <div className={[styles.inputWrapper, className].filter(Boolean).join(' ')}>\n <input\n className={[styles.inputBase, styles.inputWithStatus, error && styles.inputError].filter(Boolean).join(' ')}\n {...props}\n />\n <span className={[styles.statusIcon, styles.statusIconVariants[status]].join(' ')} aria-hidden=\"true\">\n <Glyph name={status === 'saving' ? 'spinner' : status === 'saved' ? 'tick' : 'cross'} size={12} />\n </span>\n </div>\n )\n}\n\n/** Props for the {@link Textarea} component. */\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n /** When true, applies error border colouring. Pair with {@link Field} `error` prop. */\n error?: boolean\n /** Auto-save feedback state. When set to anything other than `'idle'`, a small icon appears at the top-right. */\n status?: InputStatus\n className?: string\n}\n\n/**\n * Multi-line text input. Forwards all native `<textarea>` attributes.\n * Wrap in {@link Field} to add a label and hint/error text.\n *\n * @example\n * ```tsx\n * <Field label=\"Process notes\">\n * <Textarea rows={5} placeholder=\"Describe proportions and method…\" />\n * </Field>\n * ```\n */\nexport function Textarea({ error, status, className, ...props }: TextareaProps) {\n const hasStatus = status && status !== 'idle'\n if (!hasStatus) {\n return (\n <textarea\n className={[styles.textarea, error && styles.inputError, className].filter(Boolean).join(' ')}\n {...props}\n />\n )\n }\n return (\n <div className={[styles.inputWrapper, className].filter(Boolean).join(' ')}>\n <textarea\n className={[styles.textarea, styles.textareaWithStatus, error && styles.inputError].filter(Boolean).join(' ')}\n {...props}\n />\n <span className={[styles.statusIconTextarea, styles.statusIconVariants[status]].join(' ')} aria-hidden=\"true\">\n <Glyph name={status === 'saving' ? 'spinner' : status === 'saved' ? 'tick' : 'cross'} size={12} />\n </span>\n </div>\n )\n}\n\n/** Props for the {@link Select} component. */\nexport interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {\n /** When true, applies error border colouring. Pair with {@link Field} `error` prop. */\n error?: boolean\n /** Auto-save feedback state. When set to anything other than `'idle'`, a small icon appears at the trailing edge (beside the native chevron). */\n status?: InputStatus\n children: ReactNode\n className?: string\n}\n\n/**\n * Native `<select>` dropdown with Achery styling. For complex requirements\n * (searchable, multi-select, grouped options) the Radix Select primitive is\n * available via `TabsPrimitive` export — but for most form use-cases the\n * native select is sufficient and more accessible.\n *\n * @example\n * ```tsx\n * <Field label=\"Chapter\">\n * <Select>\n * <option value=\"\">Select a chapter…</option>\n * <option value=\"ink\">Ink</option>\n * <option value=\"pigment\">Pigment</option>\n * </Select>\n * </Field>\n * ```\n */\nexport function Select({ error, status, children, className, ...props }: SelectProps) {\n const hasStatus = status && status !== 'idle'\n if (!hasStatus) {\n return (\n <select\n className={[styles.selectInput, error && styles.inputError, className].filter(Boolean).join(' ')}\n {...props}\n >\n {children}\n </select>\n )\n }\n return (\n <div className={[styles.inputWrapper, className].filter(Boolean).join(' ')}>\n <select\n className={[styles.selectInput, styles.selectWithStatus, error && styles.inputError].filter(Boolean).join(' ')}\n {...props}\n >\n {children}\n </select>\n <span className={[styles.statusIcon, styles.statusIconVariants[status]].join(' ')} aria-hidden=\"true\" style={{ right: '28px' }}>\n <Glyph name={status === 'saving' ? 'spinner' : status === 'saved' ? 'tick' : 'cross'} size={12} />\n </span>\n </div>\n )\n}\n\n/** Props for the {@link SearchInput} component. */\nexport interface SearchInputProps extends InputHTMLAttributes<HTMLInputElement> {\n className?: string\n}\n\n/**\n * Search input with a built-in compass glyph icon and `type=\"search\"`.\n * Use in headers, toolbars, or filter panels.\n *\n * @example\n * ```tsx\n * <SearchInput placeholder=\"Search recipes…\" value={q} onChange={e => setQ(e.target.value)} />\n * ```\n */\nexport function SearchInput({ className, ...props }: SearchInputProps) {\n return (\n <div className={[styles.searchWrapper, className].filter(Boolean).join(' ')}>\n <Glyph name=\"compass\" size={12} className={styles.searchIcon} aria-hidden=\"true\" />\n <input\n type=\"search\"\n className={styles.searchInput}\n {...props}\n />\n </div>\n )\n}\n","import 'src/components/Card/Card.css.ts.vanilla.css?source=LkNhcmRfY2FyZF9fMXVwcmdycjAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlX18xYWNpYnhiMyk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyX18xYWNpYnhiOSk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW5vbmVfXzFhY2lieGIxNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouQ2FyZF9jYXJkX3ZhcmlhbnRfc3RhbXBfXzF1cHJncnIyIHsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc3RhbXBfXzFhY2lieGIxYik7Cn0KLkNhcmRfY2FyZF92YXJpYW50X3N0YW1wTGdfXzF1cHJncnIzIHsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc3RhbXBMZ19fMWFjaWJ4YjFjKTsKfQouQ2FyZF9jYXJkX3BhZGRpbmdfbm9uZV9fMXVwcmdycjQgewogIHBhZGRpbmc6IDA7Cn0KLkNhcmRfY2FyZF9wYWRkaW5nX3NtX18xdXByZ3JyNSB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2Utc3A1X18xYWNpYnhieik7Cn0KLkNhcmRfY2FyZF9wYWRkaW5nX21kX18xdXByZ3JyNiB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2Utc3A2X18xYWNpYnhiMTApOwp9Ci5DYXJkX2NhcmRfcGFkZGluZ19sZ19fMXVwcmdycjcgewogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXNwOF9fMWFjaWJ4YjEyKTsKfQouQ2FyZF9jYXJkSGVhZGVyX18xdXByZ3JyOCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyX18xYWNpYnhiOSk7CiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLXNwM19fMWFjaWJ4YngpOwogIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLXNwNF9fMWFjaWJ4YnkpOwp9';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var card = _7a468({defaultClassName:'Card_card__1uprgrr0',variantClassNames:{variant:{flat:'Card_card_variant_flat__1uprgrr1',stamp:'Card_card_variant_stamp__1uprgrr2',stampLg:'Card_card_variant_stampLg__1uprgrr3'},padding:{none:'Card_card_padding_none__1uprgrr4',sm:'Card_card_padding_sm__1uprgrr5',md:'Card_card_padding_md__1uprgrr6',lg:'Card_card_padding_lg__1uprgrr7'}},defaultVariants:{variant:'flat',padding:'md'},compoundVariants:[]});\nexport var cardHeader = 'Card_cardHeader__1uprgrr8';","import type { HTMLAttributes, ReactNode } from 'react'\nimport type { RecipeVariants } from '@vanilla-extract/recipes'\nimport { Marginalia } from '../Marginalia/Marginalia'\nimport type { GlyphName } from '../../types/components'\nimport * as styles from './Card.css'\n\ntype CardVariants = NonNullable<RecipeVariants<typeof styles.card>>\n\n/** Props for the {@link Card} component. */\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Visual style.\n * - `flat` — surface background, hairline border (default)\n * - `stamp` — adds the characteristic hard-offset stamp shadow\n * @default 'flat'\n */\n variant?: CardVariants['variant']\n /**\n * Internal padding.\n * - `none` — no padding; manage internally\n * - `sm` — compact (12px)\n * - `md` — standard (24px, default)\n * - `lg` — generous (32px)\n * @default 'md'\n */\n padding?: CardVariants['padding']\n /**\n * Optional header slot — rendered above the body with a border-bottom rule.\n * Use for {@link Eyebrow} labels, titles, or action rows.\n */\n header?: ReactNode\n /**\n * Name of a {@link Glyph} to render as a decorative {@link Marginalia}\n * element in the card's bottom-right corner.\n */\n marginalia?: GlyphName\n /**\n * Size of the marginalia glyph in pixels.\n * @default 80\n */\n marginaliaSize?: number\n children?: ReactNode\n className?: string\n}\n\n/**\n * Container surface for grouping related content. Two variants — `flat` for\n * standard surfaces and `stamp` for the elevated hard-shadow look.\n *\n * Use the `header` slot for section labels and the `marginalia` prop for\n * decorative botanical ornamentation in the corner.\n *\n * @example\n * ```tsx\n * <Card variant=\"stamp\" header={<Eyebrow>Field notes</Eyebrow>} marginalia=\"fern\">\n * <Body>Mix oak gall and vitriol…</Body>\n * </Card>\n * ```\n */\nexport function Card({\n variant = 'flat',\n padding = 'md',\n header,\n marginalia,\n marginaliaSize = 80,\n children,\n className,\n ...props\n}: CardProps) {\n return (\n <div\n className={[styles.card({ variant, padding }), className].filter(Boolean).join(' ')}\n {...props}\n >\n {header && <div className={styles.cardHeader}>{header}</div>}\n {children}\n {marginalia && (\n <Marginalia glyph={marginalia} size={marginaliaSize} />\n )}\n </div>\n )\n}\n","import 'src/components/Tabs/Tabs.css.ts.vanilla.css?source=LlRhYnNfdGFiTGlzdF9fMWIweGo5djAgewogIGRpc3BsYXk6IGZsZXg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcl9fMWFjaWJ4YjkpOwp9Ci5UYWJzX3RhYl9fMWIweGo5djEgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHlfXzFhY2lieGJ0KTsKICBmb250LXNpemU6IDEwcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBsZXR0ZXItc3BhY2luZzogMC4xNmVtOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgcGFkZGluZzogdmFyKC0tc3BhY2Utc3A0X18xYWNpYnhieSkgdmFyKC0tc3BhY2Utc3A1X18xYWNpYnhieik7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiBub25lOwogIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCB0cmFuc3BhcmVudDsKICBtYXJnaW4tYm90dG9tOiAtMXB4OwogIGNvbG9yOiB2YXIoLS1jb2xvci1mZzJfXzFhY2lieGI2KTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tZHVyYXRpb24tZmFzdF9fMWFjaWJ4YjFmKSB2YXIoLS1lYXNlLW91dF9fMWFjaWJ4YjFpKTsKICBvdXRsaW5lOiBub25lOwp9Ci5UYWJzX3RhYl9fMWIweGo5djFbZGF0YS1zdGF0ZT0iYWN0aXZlIl0gewogIGNvbG9yOiB2YXIoLS1jb2xvci1mZ19fMWFjaWJ4YjUpOwogIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudF9fMWFjaWJ4YmQpOwp9Ci5UYWJzX3RhYl9fMWIweGo5djE6aG92ZXI6bm90KFtkYXRhLXN0YXRlPSJhY3RpdmUiXSkgewogIGNvbG9yOiB2YXIoLS1jb2xvci1mZ19fMWFjaWJ4YjUpOwp9Ci5UYWJzX3RhYl9fMWIweGo5djE6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLWFjY2VudF9fMWFjaWJ4YmQpOwogIG91dGxpbmUtb2Zmc2V0OiAtMnB4Owp9Ci5UYWJzX3RhYlBhbmVsX18xYjB4ajl2MiB7CiAgb3V0bGluZTogbm9uZTsKfQ';\nexport var tab = 'Tabs_tab__1b0xj9v1';\nexport var tabList = 'Tabs_tabList__1b0xj9v0';\nexport var tabPanel = 'Tabs_tabPanel__1b0xj9v2';","import * as RadixTabs from '@radix-ui/react-tabs'\nimport type { ReactNode } from 'react'\nimport * as styles from './Tabs.css'\n\n/** A single tab definition passed to {@link Tabs}. */\nexport interface TabItem {\n /** Unique string identifier — used as the controlled/uncontrolled value. */\n value: string\n /** Content rendered in the tab trigger button. Usually a short text label. */\n label: ReactNode\n /** Content rendered in the tab panel when this tab is active. */\n content: ReactNode\n /** When true, the tab is visible but not selectable. */\n disabled?: boolean\n}\n\n/** Props for the {@link Tabs} component. */\nexport interface TabsProps {\n /** Ordered list of tab definitions. */\n items: TabItem[]\n /**\n * Controlled active tab value. When provided alongside `onValueChange`,\n * the component is fully controlled.\n */\n value?: string\n /**\n * Initial active tab value for uncontrolled usage. Defaults to the\n * `value` of the first item if not specified.\n */\n defaultValue?: string\n /** Called when the active tab changes. */\n onValueChange?: (value: string) => void\n className?: string\n}\n\n/**\n * Accessible tab navigation built on Radix Tabs. Handles roving `tabindex`,\n * arrow-key navigation, and ARIA roles automatically.\n *\n * Supports both controlled (`value` + `onValueChange`) and uncontrolled\n * (`defaultValue`) usage. When neither is provided, the first tab is active\n * by default.\n *\n * @example\n * ```tsx\n * <Tabs\n * items={[\n * { value: 'details', label: 'Details', content: <DetailsPanel /> },\n * { value: 'history', label: 'History', content: <HistoryPanel /> },\n * { value: 'notes', label: 'Notes', content: <NotesPanel />, disabled: true },\n * ]}\n * />\n * ```\n */\nexport function Tabs({ items, value, defaultValue, onValueChange, className }: TabsProps) {\n const resolvedDefault = defaultValue ?? items[0]?.value\n\n return (\n <RadixTabs.Root\n {...(value !== undefined ? { value } : {})}\n {...(resolvedDefault != null ? { defaultValue: resolvedDefault } : {})}\n {...(onValueChange !== undefined ? { onValueChange } : {})}\n {...(className !== undefined ? { className } : {})}\n >\n <RadixTabs.List className={styles.tabList}>\n {items.map(item => (\n <RadixTabs.Trigger\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n className={styles.tab}\n >\n {item.label}\n </RadixTabs.Trigger>\n ))}\n </RadixTabs.List>\n {items.map(item => (\n <RadixTabs.Content\n key={item.value}\n value={item.value}\n className={styles.tabPanel}\n >\n {item.content}\n </RadixTabs.Content>\n ))}\n </RadixTabs.Root>\n )\n}\n\n/** Direct access to Radix Tabs primitives for advanced composition. */\nexport { RadixTabs as TabsPrimitive }\n","import 'src/components/Tooltip/Tooltip.css.ts.vanilla.css?source=QGtleWZyYW1lcyBUb29sdGlwX2ZhZGVJbl9fbzM0d29xMCB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgfQogIHRvIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQp9Ci5Ub29sdGlwX2NvbnRlbnRfX28zNHdvcTEgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHlfXzFhY2lieGJ0KTsKICBmb250LXNpemU6IDExcHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBsaW5lLWhlaWdodDogMS40OwogIGNvbG9yOiB2YXIoLS1jb2xvci1iZ19fMWFjaWJ4YjApOwogIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWZnX18xYWNpYnhiNSk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZmdfXzFhY2lieGI1KTsKICBwYWRkaW5nOiA0cHggOHB4OwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1ub25lX18xYWNpYnhiMTcpOwogIG1heC13aWR0aDogMjQwcHg7CiAgei1pbmRleDogMjAwOwogIGFuaW1hdGlvbjogVG9vbHRpcF9mYWRlSW5fX28zNHdvcTAgdmFyKC0tZHVyYXRpb24tZmFzdF9fMWFjaWJ4YjFmKSB2YXIoLS1lYXNlLW91dF9fMWFjaWJ4YjFpKTsKfQouVG9vbHRpcF9jb250ZW50X19vMzR3b3ExW2RhdGEtc3RhdGU9ImRlbGF5ZWQtb3BlbiJdIHsKICBhbmltYXRpb24tbmFtZTogVG9vbHRpcF9mYWRlSW5fX28zNHdvcTA7Cn0';\nexport var content = 'Tooltip_content__o34woq1';","import * as RadixTooltip from '@radix-ui/react-tooltip'\nimport type { ReactNode } from 'react'\nimport * as styles from './Tooltip.css'\n\n/** Props for the {@link Tooltip} component. */\nexport interface TooltipProps {\n /** Content rendered inside the tooltip bubble. */\n content: ReactNode\n /**\n * The element that triggers the tooltip on hover/focus. Must be a single\n * focusable element — wrapped with Radix `asChild`.\n */\n children: ReactNode\n /**\n * Preferred side of the trigger to display the tooltip.\n * Flips automatically when there is insufficient space.\n * @default 'top'\n */\n side?: 'top' | 'right' | 'bottom' | 'left'\n /**\n * Milliseconds before the tooltip opens after the pointer enters.\n * Set to `0` for instant display.\n * @default 400\n */\n delayDuration?: number\n /**\n * Controlled open state. When provided alongside `onOpenChange`, the\n * tooltip is fully controlled.\n */\n open?: boolean\n /** Initial open state for uncontrolled usage. */\n defaultOpen?: boolean\n /** Called when the open state changes. */\n onOpenChange?: (open: boolean) => void\n}\n\n/**\n * Contextual label that appears on hover or focus, built on Radix Tooltip.\n * Renders into a portal so it is never clipped by overflow:hidden ancestors.\n *\n * Theme CSS vars are inherited via `data-achery-root` on `<html>`, ensuring\n * the tooltip matches the active theme even though it is portaled.\n *\n * Always use for supplementary information — never to convey information\n * required to complete a task (that belongs in visible UI).\n *\n * @example\n * ```tsx\n * <Tooltip content=\"Steeping time: three minutes\" side=\"top\">\n * <Button variant=\"ghost\" glyph=\"info\" aria-label=\"More info\" />\n * </Tooltip>\n *\n * <Tooltip content=\"⌘K\" delayDuration={0}>\n * <Button variant=\"ghost\">Search</Button>\n * </Tooltip>\n * ```\n */\nexport function Tooltip({\n content: tooltipContent,\n children,\n side = 'top',\n delayDuration = 400,\n open,\n defaultOpen,\n onOpenChange,\n}: TooltipProps) {\n return (\n <RadixTooltip.Provider delayDuration={delayDuration}>\n <RadixTooltip.Root\n {...(open !== undefined ? { open } : {})}\n {...(defaultOpen !== undefined ? { defaultOpen } : {})}\n {...(onOpenChange !== undefined ? { onOpenChange } : {})}\n >\n <RadixTooltip.Trigger asChild>{children}</RadixTooltip.Trigger>\n <RadixTooltip.Portal>\n <RadixTooltip.Content\n side={side}\n sideOffset={6}\n className={styles.content}\n >\n {tooltipContent}\n </RadixTooltip.Content>\n </RadixTooltip.Portal>\n </RadixTooltip.Root>\n </RadixTooltip.Provider>\n )\n}\n","import 'src/components/Sidebar/Sidebar.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7VY32vjOBB-z18hFg4aqIqdNmnj5eCOg4OF26fe27IU2Ro7upUlIcmt06P_-2HJln8kTtLdvadgeTSa-fTNN-PcPDIKKdFPpv19ikVU13kWoX8XCFFmFCf7BOUc6o8L5H4xZRoyy6RIUCZ5VYrmzQujdpeg1SpSzjKVmoLGmhU7m6BY1chIzih6JvoK40xyqbG3eXqKScbSOt0u3UaSfSu0rARNxsbFKljGzlIRSpkoOjOjSAbYqE1vFi1RhKLGdgdtIFH0S_Msn0HnXL4kiFRWNitWE2GYT8sl07qllSbNKk6Jgd51sWzfAzGAZWX7V2z5cfG2uJmF9gslljRZcaIM0F8_WF3Bh68O8RbG9apB8dDJZ5kyDsFV7PYo2cWdsxqoS0aqxCfOIbcJwuFepkBM7-0VM0GhTtAqiqawNL5-MirThDw2pVvFUoEYoeOTiUaOGr5QLVXwsZoDhQkDtoVlyDJdpORqFV3H2-t4fR3d3K2XIyTi7bZ5JoKVxLsUUsAoiO4y_5ZFMUjn9ngVEc4KgZmF0iQoA2FBN8v_VMayfI8zKSwIO3w1DNfdiCIahO0LrYsJoazSRuoEKcm63aFQIhRNiuUuXNDeJe1qbVx4eXEbjO6XA850FBpSxG2ZciQnZkCE_GKOzKGa7JryddgejTc4XI_9NQj2PLnzPOmxGSOzDl5el6cUZiB2qbRWll7tKDE7OCZ3nyvbF0zqtpdEF0yE7fNxnMom4cRYnO0Ypy6xSUwdPSZnRYcu_yIp8OB3PaZwymX2zXUCKSzOScn4vovYLaWS7kPEdhlMDXuFBG29yLiVl1aJNlErVNaCdmn7-7hZRVA6fkFtsSNZLnWZoEop0BkxcDFhTwI8LoEBGoI8f7JQBig2YygKzZysNL_YQqk4sYB9RzQJiu9UjeJchwYzU_UFUdOI-vDrcaNbq_pM_U5K8x260TVsQllluoj8E25ses57TN2tuJx8Y_h-UsS3nhXna_moug3lp8_3hzQIIVlZzgT08Lh0KWRST3qA71gk24HeYy2l_YrOMGjG1TvF7MD3QBXnZ6jgLVq-O_h3ye4JxOZP6MKx7BlGjX8uoUN-HAb2Y0nPhnT-pO-CIMllVhn8zAxLObiTAhdXR6dokjViEk6mQ_5imedu6MHtQDk3e56h7AmNOzO5BO16UPWk27RH_SErF74_796dNyckpRQyZFodCEk7w8qmh9h900M26wErmNiBZnYURC6lhX44fxgPBadacZBMN2yf-sI5aPnD8dX1pEcuewi2Loa2ZznnvoUMdvkB-RGIznZhHxn3pwOuDTd9EqrqT0w96NxNu0ebw3wf-f81f6LFl2WUJIqTDHaS01OaNbqah-n4WQn7e1dd3m_2E-g5J2ZHC_lI1N7uzx4mGE8JDRXX46_wy5r62-K3Eigj6KokNW5HifvNvaqXLu1L6Hfkc2d29Dk6_EwnmkFim4PxZ1qRXdmccnrWRUf-d_xpcXHLReht8fYfZONPU3YRAAA';\nexport var backdrop = 'Sidebar_backdrop__1n0xxfc2';\nexport var bottomSlot = 'Sidebar_bottomSlot__1n0xxfc9';\nexport var collapseToggle = 'Sidebar_collapseToggle__1n0xxfc3';\nexport var countAccent = 'Sidebar_countAccent__1n0xxfcc';\nexport var footer = 'Sidebar_footer__1n0xxfc8';\nexport var group = 'Sidebar_group__1n0xxfc4';\nexport var groupLabel = 'Sidebar_groupLabel__1n0xxfc5';\nexport var mobileSearch = 'Sidebar_mobileSearch__1n0xxfca';\nexport var mobileSearchInput = 'Sidebar_mobileSearchInput__1n0xxfcb';\nexport var navItem = 'Sidebar_navItem__1n0xxfc6';\nexport var navItemCount = 'Sidebar_navItemCount__1n0xxfc7';\nexport var sidebar = 'Sidebar_sidebar__1n0xxfc0';\nexport var sidebarMobile = 'Sidebar_sidebarMobile__1n0xxfc1';","import type { ComponentType, ReactNode } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport type { GlyphName } from '../../types/components'\nimport { useAppBarSearch } from '../../context/AppBarSearchContext'\nimport * as styles from './Sidebar.css'\n\n/** Props passed to the custom link renderer supplied via {@link SidebarProps.renderLink}. */\nexport interface SidebarLinkProps {\n href: string\n className?: string\n 'data-active'?: boolean\n 'aria-current'?: 'page' | undefined\n title?: string\n children: ReactNode\n}\n\n/** A single navigation item within a {@link NavGroupDef}. */\nexport interface NavItemDef {\n /** Unique identifier used for active state tracking and `onItemClick` callbacks. */\n id: string\n /** Visible label. */\n label: string\n /** Optional {@link Glyph} shown to the left of the label. */\n glyph?: GlyphName\n /** Numeric badge shown at the trailing edge — useful for unread counts. */\n count?: number\n /** Colour tone for the count badge. @default 'neutral' */\n countTone?: 'accent' | 'neutral'\n /**\n * When provided, the item renders as a link instead of a `<button>`.\n * Use for top-level routes; omit for in-page actions.\n */\n href?: string\n}\n\n/** A labelled group of {@link NavItemDef} items within a {@link Sidebar}. */\nexport interface NavGroupDef {\n /** Optional group heading rendered in eyebrow style above the items. */\n label?: string\n items: NavItemDef[]\n}\n\n/** Props for the {@link Sidebar} component. */\nexport interface SidebarProps {\n /** Ordered list of navigation groups. Groups without a label are unlabelled. */\n groups: NavGroupDef[]\n /** `id` of the currently active navigation item — highlights it with accent colouring. */\n activeId?: string\n /**\n * Called when a navigation item (button variant) is clicked.\n * Receives the `id` of the clicked item.\n */\n onItemClick?: (id: string) => void\n /**\n * Optional custom link component used to render items that have an `href`.\n * Pass your router's `<Link>` here to enable client-side navigation.\n * Falls back to a plain `<a>` tag if omitted.\n *\n * @example\n * ```tsx\n * import { Link } from '@tanstack/react-router'\n * <Sidebar renderLink={Link} … />\n * ```\n */\n renderLink?: ComponentType<SidebarLinkProps>\n /**\n * Content rendered at the bottom of the sidebar — typically user account\n * info, a settings link, or version text.\n *\n * **Responsive action pattern:** `AppBar` hides its `actions` slot on mobile\n * via CSS (below 768 px). If those actions must remain accessible on mobile,\n * pass the same node here so it appears at the foot of the mobile overlay.\n *\n * @example\n * ```tsx\n * // Month selector: visible in AppBar on desktop, in Sidebar footer on mobile\n * const isMobile = useIsMobile()\n * const monthPicker = <MonthSelect value={month} onChange={setMonth} />\n *\n * <Sidebar footer={isMobile ? monthPicker : undefined} … />\n * <AppBar actions={monthPicker} … />\n * ```\n */\n footer?: ReactNode\n /**\n * When `true`, the sidebar collapses to icon-only mode (52px wide).\n * Labels, counts, and group headings are hidden; glyphs remain.\n */\n collapsed?: boolean\n /** Called when the user clicks the collapse toggle button. */\n onCollapsedChange?: (collapsed: boolean) => void\n /**\n * Controlled mobile overlay open state. When true, sidebar slides in from\n * the left as a fixed overlay below `mobileBreakpoint`.\n */\n mobileOpen?: boolean\n /** Called when the backdrop is clicked or the sidebar should close on mobile. */\n onMobileOpenChange?: (open: boolean) => void\n /** Viewport width (px) below which mobile overlay mode activates. @default 768 */\n mobileBreakpoint?: number\n className?: string\n}\n\n/**\n * Vertical navigation sidebar. Renders one or more labelled groups of nav items,\n * each of which can be a link (`href`) or a button (`onItemClick`).\n *\n * Active state is driven by `activeId` matching an item's `id`. The active item\n * receives a filled accent-coloured background.\n *\n * @example\n * ```tsx\n * <Sidebar\n * activeId={currentPage}\n * onItemClick={navigate}\n * groups={[\n * {\n * label: 'Workshop',\n * items: [\n * { id: 'recipes', label: 'Recipes', glyph: 'book', count: 12 },\n * { id: 'ingredients', label: 'Ingredients', glyph: 'flask' },\n * ],\n * },\n * {\n * items: [{ id: 'settings', label: 'Settings', glyph: 'key' }],\n * },\n * ]}\n * footer={<Body variant=\"small\">v0.1.0</Body>}\n * />\n * ```\n */\nexport function Sidebar({\n groups,\n activeId,\n onItemClick,\n renderLink,\n footer,\n collapsed,\n onCollapsedChange,\n mobileOpen,\n onMobileOpenChange,\n className,\n}: SidebarProps) {\n const isMobileMode = mobileOpen !== undefined\n const searchCtx = useAppBarSearch()\n const searchConfig = searchCtx?.searchConfig ?? null\n\n const nav = (\n <nav\n className={[\n styles.sidebar,\n isMobileMode ? styles.sidebarMobile : undefined,\n className,\n ].filter(Boolean).join(' ')}\n data-collapsed={collapsed ?? false}\n data-mobile-open={isMobileMode ? String(mobileOpen) : undefined}\n >\n <button\n className={styles.collapseToggle}\n onClick={() => onCollapsedChange?.(!collapsed)}\n aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n title={collapsed ? 'Expand' : 'Collapse'}\n >\n {collapsed ? '›' : '‹'}\n </button>\n {groups.map((group, i) => (\n <NavGroup\n key={i}\n label={group.label}\n items={group.items}\n activeId={activeId}\n onItemClick={onItemClick}\n renderLink={renderLink}\n collapsed={collapsed ?? false}\n />\n ))}\n <div className={styles.bottomSlot}>\n {searchConfig && (\n <div className={styles.mobileSearch}>\n <Glyph name=\"compass\" size={12} aria-hidden=\"true\" />\n <input\n type=\"search\"\n placeholder={searchConfig.placeholder}\n className={styles.mobileSearchInput}\n aria-label=\"Search\"\n onFocus={() => searchConfig.onSearchFocus?.()}\n onKeyDown={(e) => {\n if (e.key === 'Enter') searchConfig.onSearch?.((e.target as HTMLInputElement).value)\n }}\n />\n {searchConfig.kbd && <span>{searchConfig.kbd}</span>}\n </div>\n )}\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n </nav>\n )\n\n if (isMobileMode) {\n return (\n <>\n {mobileOpen && (\n <div\n className={styles.backdrop}\n onClick={() => onMobileOpenChange?.(false)}\n aria-hidden=\"true\"\n />\n )}\n {nav}\n </>\n )\n }\n\n return nav\n}\n\ninterface NavGroupProps {\n label: string | undefined\n items: NavItemDef[]\n activeId: string | undefined\n onItemClick: ((id: string) => void) | undefined\n renderLink: ComponentType<SidebarLinkProps> | undefined\n collapsed: boolean\n}\n\nfunction NavGroup({ label, items, activeId, onItemClick, renderLink, collapsed }: NavGroupProps) {\n return (\n <div className={styles.group}>\n {label && !collapsed && <span className={styles.groupLabel}>{label}</span>}\n {items.map(item => (\n <NavItem\n key={item.id}\n item={item}\n active={item.id === activeId}\n onClick={() => onItemClick?.(item.id)}\n renderLink={renderLink}\n collapsed={collapsed}\n />\n ))}\n </div>\n )\n}\n\ninterface NavItemProps {\n item: NavItemDef\n active: boolean\n onClick: () => void\n renderLink: ComponentType<SidebarLinkProps> | undefined\n collapsed: boolean\n}\n\nfunction NavItem({ item, active, onClick, renderLink, collapsed }: NavItemProps) {\n const content = (\n <>\n {item.glyph\n ? <Glyph name={item.glyph} size={14} aria-hidden=\"true\" />\n : <span />}\n {!collapsed && <span>{item.label}</span>}\n {!collapsed && item.count !== undefined && (\n <span className={item.countTone === 'accent' ? styles.countAccent : styles.navItemCount}>\n {item.count}\n </span>\n )}\n </>\n )\n\n const titleProp = collapsed ? { title: item.label } : {}\n\n if (item.href) {\n const LinkComponent = renderLink ?? 'a'\n return (\n <LinkComponent\n href={item.href}\n className={styles.navItem}\n data-active={active}\n aria-current={active ? 'page' : undefined}\n {...titleProp}\n >\n {content}\n </LinkComponent>\n )\n }\n\n return (\n <button\n className={styles.navItem}\n data-active={active}\n onClick={onClick}\n aria-current={active ? 'page' : undefined}\n {...titleProp}\n >\n {content}\n </button>\n )\n}\n","import 'src/components/Skeleton/Skeleton.css.ts.vanilla.css?source=QGtleWZyYW1lcyBTa2VsZXRvbl9zaGltbWVyX18xMTJsYWl3MCB7CiAgMCUgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwMCUgMDsKICB9CiAgMTAwJSB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMDAlIDA7CiAgfQp9Ci5Ta2VsZXRvbl9za2VsZXRvbl9fMTEybGFpdzEgewogIGRpc3BsYXk6IGJsb2NrOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbV9fMWFjaWJ4YjE5KTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlX18xYWNpYnhiMyk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KAogIDkwZGVnLAogIHZhcigtLWNvbG9yLXN1cmZhY2VfXzFhY2lieGIzKSAwJSwKICB2YXIoLS1jb2xvci1zdXJmYWNlMl9fMWFjaWJ4YjQpIDUwJSwKICB2YXIoLS1jb2xvci1zdXJmYWNlX18xYWNpYnhiMykgMTAwJQopOwogIGJhY2tncm91bmQtc2l6ZTogMjAwJSAxMDAlOwogIGFuaW1hdGlvbjogU2tlbGV0b25fc2hpbW1lcl9fMTEybGFpdzAgMS40cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKfQouU2tlbGV0b25fbGluZV9fMTEybGFpdzIgewogIGhlaWdodDogMTJweDsKICB3aWR0aDogMTAwJTsKfQouU2tlbGV0b25fYmxvY2tfXzExMmxhaXczIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDgwcHg7Cn0';\nexport var block = 'Skeleton_block__112laiw3 Skeleton_skeleton__112laiw1';\nexport var line = 'Skeleton_line__112laiw2 Skeleton_skeleton__112laiw1';\nexport var skeleton = 'Skeleton_skeleton__112laiw1';","import type { CSSProperties } from 'react'\nimport * as styles from './Skeleton.css'\n\nexport interface SkeletonProps {\n /**\n * Number of lines to render, stacked with a small gap between them.\n * @default 1\n */\n lines?: number\n /**\n * CSS width of each line (e.g. `'60%'`, `'120px'`). Accepts a single value applied\n * to all lines, or an array mapping a width to each line positionally — useful for\n * creating a natural-looking paragraph with a short last line.\n * @default '100%'\n */\n width?: string | string[]\n /**\n * When true, renders a tall rectangular block instead of line(s) — useful for\n * placeholder cards, images, or chart areas.\n * @default false\n */\n block?: boolean\n /**\n * Overrides the height of a block skeleton (e.g. `'120px'`). Has no effect when\n * `block` is false.\n */\n height?: string | undefined\n /** Inline style escape hatch — useful for shape overrides (e.g. `borderRadius: '50%'` for a circular avatar). */\n style?: CSSProperties | undefined\n className?: string | undefined\n}\n\n/**\n * Skeleton placeholder that communicates loading state without layout shift.\n *\n * @example\n * // Single line\n * <Skeleton />\n *\n * // Paragraph — three lines, last one shorter\n * <Skeleton lines={3} width={['100%', '100%', '60%']} />\n *\n * // Tall block (e.g. chart placeholder)\n * <Skeleton block height=\"200px\" />\n */\nexport const Skeleton = ({ lines = 1, width = '100%', block = false, height, style, className }: SkeletonProps) => {\n if (block) {\n return (\n <span\n className={[styles.block, className].filter(Boolean).join(' ')}\n style={height ? { height, ...style } : style}\n aria-hidden=\"true\"\n />\n )\n }\n\n const widths = Array.isArray(width) ? width : Array.from({ length: lines }, () => width as string)\n\n if (lines === 1) {\n return (\n <span\n className={[styles.line, className].filter(Boolean).join(' ')}\n style={widths[0] !== '100%' ? { width: widths[0], ...style } : style}\n aria-hidden=\"true\"\n />\n )\n }\n\n return (\n <span\n style={{ display: 'flex', flexDirection: 'column', gap: '6px', width: '100%' }}\n aria-hidden=\"true\"\n >\n {Array.from({ length: lines }, (_, i) => (\n <span\n key={i}\n className={styles.line}\n style={widths[i] !== '100%' ? { width: widths[i] } : undefined}\n />\n ))}\n </span>\n )\n}\n","import 'src/components/ProgressBar/ProgressBar.css.ts.vanilla.css?source=LlByb2dyZXNzQmFyX3RyYWNrX18xNjg2aTFrMCB7CiAgd2lkdGg6IDEwMCU7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYm9yZGVyTXV0ZV9fMWFjaWJ4YmIpOwogIG92ZXJmbG93OiBoaWRkZW47CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW5vbmVfXzFhY2lieGIxNyk7Cn0KLlByb2dyZXNzQmFyX3RyYWNrU2l6ZV9zbV9fMTY4NmkxazEgewogIGhlaWdodDogNHB4Owp9Ci5Qcm9ncmVzc0Jhcl90cmFja1NpemVfbWRfXzE2ODZpMWsyIHsKICBoZWlnaHQ6IDhweDsKfQouUHJvZ3Jlc3NCYXJfZmlsbF9fMTY4NmkxazMgewogIGhlaWdodDogMTAwJTsKICB0cmFuc2l0aW9uOiB3aWR0aCAwLjJzIGVhc2U7CiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKfQouUHJvZ3Jlc3NCYXJfZmlsbFRvbmVfbmV1dHJhbF9fMTY4NmkxazQgewogIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWZnX18xYWNpYnhiNSk7Cn0KLlByb2dyZXNzQmFyX2ZpbGxUb25lX2FjY2VudF9fMTY4NmkxazUgewogIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFjY2VudF9fMWFjaWJ4YmQpOwp9';\nexport var fill = 'ProgressBar_fill__1686i1k3';\nexport var fillTone = {neutral:'ProgressBar_fillTone_neutral__1686i1k4',accent:'ProgressBar_fillTone_accent__1686i1k5'};\nexport var track = 'ProgressBar_track__1686i1k0';\nexport var trackSize = {sm:'ProgressBar_trackSize_sm__1686i1k1',md:'ProgressBar_trackSize_md__1686i1k2'};","import { Skeleton } from '../Skeleton/Skeleton'\nimport * as styles from './ProgressBar.css'\n\nexport interface ProgressBarProps {\n /** 0–100 */\n value: number\n size?: 'sm' | 'md'\n tone?: 'neutral' | 'accent'\n /** When true, renders a skeleton placeholder at the same height as the track. */\n loading?: boolean\n className?: string\n}\n\nconst trackHeightPx: Record<'sm' | 'md', string> = { sm: '4px', md: '8px' }\n\nexport function ProgressBar({ value, size = 'md', tone = 'neutral', loading = false, className }: ProgressBarProps) {\n if (loading) {\n return (\n <Skeleton\n block\n height={trackHeightPx[size]}\n className={className}\n style={{ borderRadius: 0 }}\n />\n )\n }\n const pct = Math.min(100, Math.max(0, value))\n return (\n <div\n className={[styles.track, styles.trackSize[size], className].filter(Boolean).join(' ')}\n role=\"progressbar\"\n aria-valuenow={pct}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n className={[styles.fill, styles.fillTone[tone]].join(' ')}\n style={{ width: `${pct}%` }}\n />\n </div>\n )\n}\n","import 'src/components/Avatar/Avatar.css.ts.vanilla.css?source=LkF2YXRhcl9hdmF0YXJfXzE2ZjZxbGYwIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1waWxsX18xYWNpYnhiMWEpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWRpc3BsYXlfXzFhY2lieGJzKTsKICBmb250LXdlaWdodDogOTAwOwogIGxpbmUtaGVpZ2h0OiAxOwogIHVzZXItc2VsZWN0OiBub25lOwogIGZsZXgtc2hyaW5rOiAwOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcl9fMWFjaWJ4YjkpOwp9Ci5BdmF0YXJfYXZhdGFyX3NpemVfc21fXzE2ZjZxbGYxIHsKICB3aWR0aDogMjRweDsKICBoZWlnaHQ6IDI0cHg7CiAgZm9udC1zaXplOiAxMXB4Owp9Ci5BdmF0YXJfYXZhdGFyX3NpemVfbWRfXzE2ZjZxbGYyIHsKICB3aWR0aDogMzJweDsKICBoZWlnaHQ6IDMycHg7CiAgZm9udC1zaXplOiAxNHB4Owp9Ci5BdmF0YXJfYXZhdGFyX3NpemVfbGdfXzE2ZjZxbGYzIHsKICB3aWR0aDogNDBweDsKICBoZWlnaHQ6IDQwcHg7CiAgZm9udC1zaXplOiAxOHB4Owp9Ci5BdmF0YXJfYXZhdGFyX3RvbmVfbW9zc19fMTZmNnFsZjQgewogIGJhY2tncm91bmQ6ICM0YTVhMzI7CiAgY29sb3I6IHZhcigtLWNvbG9yLWJnX18xYWNpYnhiMCk7Cn0KLkF2YXRhcl9hdmF0YXJfdG9uZV9uZXV0cmFsX18xNmY2cWxmNSB7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmcyX18xYWNpYnhiMSk7CiAgY29sb3I6IHZhcigtLWNvbG9yLWZnX18xYWNpYnhiNSk7Cn0KLkF2YXRhcl9pbml0aWFsc19fMTZmNnFsZjYgewogIGRpc3BsYXk6IGJsb2NrOwogIGxpbmUtaGVpZ2h0OiAxOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwLjA4ZW0pOwp9';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var avatar = _7a468({defaultClassName:'Avatar_avatar__16f6qlf0',variantClassNames:{size:{sm:'Avatar_avatar_size_sm__16f6qlf1',md:'Avatar_avatar_size_md__16f6qlf2',lg:'Avatar_avatar_size_lg__16f6qlf3'},tone:{moss:'Avatar_avatar_tone_moss__16f6qlf4',neutral:'Avatar_avatar_tone_neutral__16f6qlf5'}},defaultVariants:{size:'md',tone:'neutral'},compoundVariants:[]});\nexport var initials = 'Avatar_initials__16f6qlf6';","import { Skeleton } from '../Skeleton/Skeleton'\nimport * as styles from './Avatar.css'\n\nexport type AvatarTone = 'moss' | 'neutral'\nexport type AvatarSize = 'sm' | 'md' | 'lg'\n\n/** Props for the {@link Avatar} component. */\nexport interface AvatarProps {\n /** Up to 2 characters, uppercased automatically. */\n initials: string\n /** Size variant — 24/32/40 px. @default 'md' */\n size?: AvatarSize\n /** Tone. @default 'neutral' */\n tone?: AvatarTone\n /** When true, renders a circular skeleton placeholder instead of the initials. */\n loading?: boolean\n className?: string\n}\n\n/**\n * Circular avatar displaying up to two initials.\n *\n * @example\n * ```tsx\n * <Avatar initials=\"FW\" size=\"md\" tone=\"moss\" />\n * ```\n */\nconst avatarPx: Record<AvatarSize, string> = { sm: '24px', md: '32px', lg: '40px' }\n\nexport function Avatar({ initials, size = 'md', tone = 'neutral', loading = false, className }: AvatarProps) {\n if (loading) {\n const px = avatarPx[size]\n return (\n <Skeleton\n block\n height={px}\n className={className}\n style={{ width: px, borderRadius: '50%', flexShrink: 0 }}\n />\n )\n }\n const display = initials.slice(0, 2).toUpperCase()\n return (\n <span\n className={[styles.avatar({ size, tone }), className].filter(Boolean).join(' ')}\n aria-label={`User: ${display}`}\n >\n <span className={styles.initials}>{display}</span>\n </span>\n )\n}\n","import 'src/components/AppBar/AppBar.css.ts.vanilla.css?source=#H4sIAAAAAAAAA71WS4-bMBC-51dYPW0ORJBsXqwqdateVlWrSnusqsiYIbgB27VNHlvtf68MGMIjj26jnhDgmW--bx6e0aMQH7Fc4eKxyn5t6HLpot8DhEKqRIIPPooS2D8MEMIJXTOHakiVjwgwDdJ8joGuY-2j6UzkxwQOQ8rWPnLRFss7x1ECE3CUmK1WHiY02AeeOzQnAy5DkE7AteapjzyxR4onNCztCE-4-WsOVabLwhKTzVryjIV-47DKZIQJVKcn-ek1Fv6lWAxJR8WSso2P3IfB62BUahNIzEIrjfdX0vQA31fAh2twv-IULPY4x444006EU5ocrO_8UxlT5V4V7s2vXZmhpetW3xR9AR95iyJnuXpNKaN15Wqau0pAa5A5kTy9jjtyPUg7IX-iW5pnrIh6kke9o6GO8xQfl4xXlsypdBa5_5LpOqPBsAP4nAUW7P6sRAEPa330sK1FGVxDslkhWZu7O_IWhjpCGvba0RIzFXGZ-igTAiTBCk7KOqlCmDe4KMCSxM-mTirxpgWfBPY-8ozHlDKn1NLtGj9KwNZ01ja9YdEWeblJxwZ1mRWNWI2Pmdi3wphWR1-Gl8V4YiLTVo15Ww1LgXEG7fjydAosgemHt5fT5PrW4plOKAMbzXkmvi8STCDmSQgyp9UL0eiaRU-lfQ6qqbY42zYpZ7zylHV4umd4Nmv9usLptPtRTRi7aYG3i6mGojSMbjuJxTFHTDTlTFmGy_83t0vkJ8bqPsa3hT8GM2bfKNnUYMG_go0rsF0P2PMOaxJbMNIY77MT8_1taS_3A4lDmikbZPHmmE6p7_CiukgmlalBwalldy5NPWS-h1hjx2RwC-_faZnBux85wapDx70UTnW0w6NIgS4vvgvgfsRJppwtVTRI4BrYwk0FHfZCj1vQW6zrVS88Tt940UyffT81uzuse2ZAZ76_4e64tpR_ZkrT6OAQzjQwffzrtluT3RRaxYVQpsyWAAkQXQ_zDymEFKO7FO_tdTWfzcV-mGt_eXc6EsDeVq9tw84OdMHo1L5wwez0bOs1fP0DDDsV1GAMAAA';\nexport var accentPicker = 'AppBar_accentPicker__uqki99b';\nexport var accentSwatch = 'AppBar_accentSwatch__uqki99c';\nexport var actions = 'AppBar_actions__uqki999';\nexport var actionsInner = 'AppBar_actionsInner__uqki99a';\nexport var appBar = 'AppBar_appBar__uqki990';\nexport var avatar = 'AppBar_avatar__uqki99d';\nexport var brand = 'AppBar_brand__uqki991';\nexport var brandDivider = 'AppBar_brandDivider__uqki993';\nexport var brandName = 'AppBar_brandName__uqki992';\nexport var brandSub = 'AppBar_brandSub__uqki994';\nexport var searchArea = 'AppBar_searchArea__uqki996';\nexport var searchInput = 'AppBar_searchInput__uqki997';\nexport var searchKbd = 'AppBar_searchKbd__uqki998';\nexport var searchSpacer = 'AppBar_searchSpacer__uqki995';","import { useEffect, type ReactNode } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport { Button } from '../Button/Button'\nimport { Avatar } from '../Avatar/Avatar'\nimport { accentColors, accentColorNames } from '../../tokens/accents'\nimport type { AccentColor } from '../../types/theme'\nimport { useAppBarSearch } from '../../context/AppBarSearchContext'\nimport * as styles from './AppBar.css'\n\n/** Props for the {@link AppBar} component. */\nexport interface AppBarProps {\n /**\n * Primary brand name shown beside the hex mark.\n * @default 'Achery'\n */\n brandName?: string\n /** Secondary brand descriptor shown after a divider — e.g. a workspace or project name. */\n brandSub?: string\n /**\n * Show the central search field.\n * @default true\n */\n showSearch?: boolean\n /** Placeholder text for the search field. @default 'Search…' */\n searchPlaceholder?: string\n /** Keyboard shortcut hint displayed inside the search field (display only). */\n searchKbd?: string\n /**\n * Arbitrary content inserted after the built-in controls (theme toggle, accent\n * picker, new button) and before the avatar. Use for custom action buttons.\n *\n * **Mobile note:** the `actions` slot (along with search and `brandSub`) is\n * hidden via CSS below 768 px. If an action must remain reachable on mobile,\n * also pass it as `footer` to the accompanying `<Sidebar>` so it appears in\n * the mobile overlay. See {@link SidebarProps.footer} for a usage example.\n */\n actions?: ReactNode\n /** Currently active accent colour — drives the accent picker selection indicator. */\n accent?: AccentColor\n /**\n * Called when the user selects a new accent colour via the built-in picker.\n * When omitted, the accent picker is hidden.\n */\n onAccentChange?: (accent: AccentColor) => void\n /**\n * Called when the theme toggle button is clicked.\n * When omitted, the theme toggle is hidden.\n */\n onToggleTheme?: () => void\n /** Pass `true` when the dark theme is active to show the correct toggle icon. */\n isDark?: boolean\n /**\n * When provided, renders a hamburger menu button at the leading edge of the bar.\n * Use to toggle the mobile sidebar overlay.\n */\n onMenuClick?: () => void\n /** Called when the user presses Enter in the search field. */\n onSearch?: (query: string) => void\n /** Called when the search input gains focus. */\n onSearchFocus?: () => void\n /** Up to two initials rendered in the avatar circle at the trailing edge. */\n avatarInitials?: string\n /**\n * Called when the \"New\" button is clicked.\n * When omitted, the new button is hidden.\n */\n onNewClick?: () => void\n className?: string\n}\n\n/**\n * Top-of-page application bar. Contains brand identity, search, theme and\n * accent controls, and a slot for custom actions.\n *\n * Each built-in slot is opt-in — only provide the callback/prop to show it:\n * - `onAccentChange` → renders accent colour picker swatches\n * - `onToggleTheme` → renders sun/moon theme toggle button\n * - `onNewClick` → renders accent \"New\" button\n * - `avatarInitials` → renders user avatar circle\n *\n * @example\n * ```tsx\n * const { theme, toggleTheme, accent, setAccent } = useTheme()\n *\n * <AppBar\n * brandName=\"Achery\"\n * brandSub=\"Field Guide\"\n * isDark={theme === 'dark'}\n * onToggleTheme={toggleTheme}\n * accent={accent}\n * onAccentChange={setAccent}\n * onNewClick={() => setModalOpen(true)}\n * avatarInitials=\"FW\"\n * />\n * ```\n */\nexport function AppBar({\n brandName = 'Achery',\n brandSub,\n showSearch = true,\n searchPlaceholder = 'Search…',\n searchKbd,\n actions,\n accent = 'terracotta',\n onAccentChange,\n onToggleTheme,\n isDark,\n avatarInitials,\n onNewClick,\n onMenuClick,\n onSearch,\n onSearchFocus,\n className,\n}: AppBarProps) {\n const searchCtx = useAppBarSearch()\n\n // Publish search config into context so Sidebar can render it in mobile overlay\n useEffect(() => {\n if (!searchCtx || !showSearch) return\n searchCtx.setSearchConfig({\n placeholder: searchPlaceholder,\n ...(searchKbd !== undefined && { kbd: searchKbd }),\n ...(onSearch !== undefined && { onSearch }),\n ...(onSearchFocus !== undefined && { onSearchFocus }),\n })\n return () => searchCtx.setSearchConfig(null)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showSearch, searchPlaceholder, searchKbd, onSearch, onSearchFocus])\n\n return (\n <header className={[styles.appBar, className].filter(Boolean).join(' ')}>\n {onMenuClick && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n glyph=\"menu\"\n onClick={onMenuClick}\n aria-label=\"Open navigation menu\"\n />\n )}\n <div className={styles.brand}>\n <Glyph name=\"hex\" size={20} aria-hidden=\"true\" />\n <span className={styles.brandName}>{brandName}</span>\n {brandSub && (\n <>\n <span className={styles.brandDivider} />\n <span className={styles.brandSub}>{brandSub}</span>\n </>\n )}\n </div>\n\n <div className={showSearch ? styles.searchArea : styles.searchSpacer}>\n {showSearch && (\n <>\n <Glyph name=\"compass\" size={12} aria-hidden=\"true\" />\n <input\n type=\"search\"\n placeholder={searchPlaceholder}\n className={styles.searchInput}\n aria-label=\"Search\"\n onFocus={() => onSearchFocus?.()}\n onKeyDown={(e) => {\n if (e.key === 'Enter') onSearch?.((e.target as HTMLInputElement).value)\n }}\n />\n {searchKbd && <span className={styles.searchKbd}>{searchKbd}</span>}\n </>\n )}\n </div>\n\n <div className={styles.actions}>\n <div className={styles.actionsInner}>\n {onAccentChange && (\n <div className={styles.accentPicker} role=\"group\" aria-label=\"Brand colour\">\n {accentColorNames.map(name => (\n <button\n key={name}\n className={styles.accentSwatch}\n data-active={name === accent}\n onClick={() => onAccentChange(name)}\n aria-label={name}\n aria-pressed={name === accent}\n style={{ background: accentColors[name].main }}\n />\n ))}\n </div>\n )}\n\n {onToggleTheme && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n glyph={isDark ? 'sun' : 'moon'}\n onClick={onToggleTheme}\n aria-label={isDark ? 'Switch to light mode' : 'Switch to dark mode'}\n />\n )}\n\n {onNewClick && (\n <Button variant=\"accent\" size=\"sm\" glyph=\"plus\" onClick={onNewClick}>\n New\n </Button>\n )}\n\n {actions}\n </div>\n\n {avatarInitials && (\n <Avatar initials={avatarInitials} size=\"sm\" tone=\"neutral\" />\n )}\n </div>\n </header>\n )\n}\n","import 'src/components/Table/Table.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8VXTY_bNhC9768gAhSIDlz4Y3ezyyCHtuihh_TiAj0ExYISRzYbihTIkS1v0f9ekJJJydHa62yCXAybHzPz3rwZjq__5LmCR_Sff1le12AfH-d8gfnezci_V4TspMANI_PZ7Kf3V4TkxgqwjMzrljijpCBbbt9SWhhlLO12vYVC5m3-kL2_-u_qeuBjVVijVHQxDy7MFmypzI62jPAGTfJDc4NoqtPuPjYI0WX-hcvobPE8Hm9P8doBI4dvfrM0GumWW8k1Ut1UYGXBCPK8Udz6BTd0tgEuorNlcJbz4vPamkYLNg58vYgRz7ML8Y7oJaQ2TqI0mhGHsvi892toakZm_tsTlVpAy8h8FGqM8ybEGYCWvJJqfwg0LOVG7KM7zCInTj6B57Bu49IO5HqDjNzNgl8FiGCpq3kh9ZqR2fX8BqoQG7RI0XLtSmMrRhovuoJ3jAecY67KAVd3HWIuRDD6ULf9Ue8HqKvvEq2zLHrjSq41IwpK9Gu7jUTorjCizc7y2i83zgcMCgr0yxpGjK2MHcvpNjBXNNb5iGsjNYI9c4VtvNa7i1NIY_S3Qxk7Y_F3LWTB0aTyvAtmhHS14ntGpFZSAy0VhJxU3K6lph4yO-Io0bkLFBmfI9z7HN3631uwKAuuDrRVUgg1IiMF8a6T-SuKlZCghV7CqWD6u6Kx3G_RkjtMyS2zfh-4A2qawZbMngl1QP5L63LajuIOabGRSkyhP1bO4OYnwZH3EgPx4Q3aBt78fXGnaKnbcGF2PukOkCzrlszIbHSPFwXoxIoYgUlt6v415b_syv-8kgcl63vGuZo9L0Dx0WgTQTycBFH1R4OH5gsQ8xMgxo0nuTdG5TzllQf_EeIY3U20sc_OAf_6RyC2gUP9B-qoRKgcI14KvjcRsub1qQAHIKGqcb9Cjql95QHnsKMmw8-gn88Sxptj_Pdpb5Hy8m11uIz33g3R1XwtdWgsEV0x7qdniPyncSjLPS2MRtDISAcqB9wB6Geovo3BPGUnSPsKyYQH_8K--yPY_tVotEa5yLq4iPUJTo9fM28hTDsTOToYGgYGvzSIAxnA9-qIx1PMsON3b0aarse_qeVCNo6R3nyUzaJuyV3v8ngOIaSSmvbT7uK-OzVdu2Fw2PTz2_wMPd0ryrTBt0xI58-J7OQT5hpb8iKpb5m97NU4HcbBd_cPIo0wyyEbAkreKDyy9QffHpkrU9L7TPa0TnB4ofD7yH8uUG5TK11_G8YmXvmpcXyiEH9TStZOpkLcvEb3ixdTc6Te_uKp0dtzuJJPsArbMV75veI9VafjySweHLbii57tF9T3uNslMttssuzP0jacguN_37OC_h_0xYczKBAAAA';\nexport var emptyState = 'Table_emptyState__1a2tbysb';\nexport var pageButton = 'Table_pageButton__1a2tbyse';\nexport var pageButtonActive = 'Table_pageButtonActive__1a2tbysg Table_pageButton__1a2tbyse';\nexport var pageNavButton = 'Table_pageNavButton__1a2tbysf Table_pageButton__1a2tbyse';\nexport var pageSizeSelect = 'Table_pageSizeSelect__1a2tbysi';\nexport var pagination = 'Table_pagination__1a2tbysc';\nexport var paginationControls = 'Table_paginationControls__1a2tbysd';\nexport var paginationEllipsis = 'Table_paginationEllipsis__1a2tbysh';\nexport var sortIndicator = 'Table_sortIndicator__1a2tbys6';\nexport var table = 'Table_table__1a2tbys2';\nexport var tableScroll = 'Table_tableScroll__1a2tbys1';\nexport var tableWrapper = 'Table_tableWrapper__1a2tbys0';\nexport var td = 'Table_td__1a2tbys8';\nexport var tdMono = 'Table_tdMono__1a2tbys9 Table_td__1a2tbys8';\nexport var th = 'Table_th__1a2tbys4';\nexport var thSortable = 'Table_thSortable__1a2tbys5 Table_th__1a2tbys4';\nexport var thead = 'Table_thead__1a2tbys3';\nexport var toolbar = 'Table_toolbar__1a2tbysa';\nexport var tr = 'Table_tr__1a2tbys7';","import { useState, useMemo } from 'react'\nimport type { ReactNode } from 'react'\nimport type { SortDirection } from '../../types/components'\nimport { Glyph } from '../../glyphs/Glyph'\nimport { Skeleton } from '../Skeleton/Skeleton'\nimport * as styles from './Table.css'\n\n/** Column definition for the {@link Table} component. */\nexport interface ColumnDef<T> {\n /** Field key on the row object — used for sorting and as the default cell value. */\n key: string\n /** Column header label. */\n label: string\n /** When true, the column header is clickable and cycles asc → desc → unsorted. */\n sortable?: boolean\n /** Render cell content in monospace — useful for IDs, codes, and measurements. */\n mono?: boolean\n /**\n * Custom cell renderer. Receives the full row object; return any React node.\n * When omitted, falls back to `String(row[key])`.\n */\n render?: (row: T) => ReactNode\n /** CSS width value applied to the column (e.g. `'120px'`, `'20%'`). */\n width?: string\n}\n\n/** Props for the {@link Table} component. */\nexport interface TableProps<T extends { [K in string]: unknown }> {\n /** Column configuration array — order determines display order. */\n columns: ColumnDef<T>[]\n /** Array of row data objects. */\n data: T[]\n /** Returns a stable unique string key for a row — used as the React key and for selection. */\n rowKey: (row: T) => string\n /**\n * Set of row keys that are currently selected. Selected rows receive a\n * left accent-coloured rule.\n */\n selectedKeys?: string[]\n /**\n * Called when a row is clicked. Receives the row's key and the full row object.\n * When provided, rows become clickable (pointer cursor).\n */\n onRowClick?: (key: string, row: T) => void\n /**\n * Controlled sort column key. Provide alongside `sortDir` and `onSortChange`\n * for fully controlled sort state.\n */\n sortKey?: string\n /** Controlled sort direction. Use with `sortKey`. */\n sortDir?: SortDirection\n /** Initial sort column key for uncontrolled usage. */\n defaultSortKey?: string\n /**\n * Initial sort direction for uncontrolled usage.\n * @default null\n */\n defaultSortDir?: SortDirection\n /**\n * Called when the sort state changes. Receives the column key and new direction.\n * For controlled mode, apply these values to `sortKey`/`sortDir`.\n * For uncontrolled mode, use this for side-effects (analytics, persistence) only.\n */\n onSortChange?: (key: string, dir: SortDirection) => void\n /** Current page index (0-based). Provide with `pageSize` for pagination. */\n pageIndex?: number\n /** Number of rows per page. Enables the pagination row below the table. */\n pageSize?: number\n /** Total row count across all pages — used to compute total page count. */\n totalRows?: number\n /** Called when the user navigates to a new page. */\n onPageChange?: (page: number) => void\n /**\n * Called when the user selects a new page size. Provide alongside `pageSizeOptions`.\n * Caller is responsible for resetting `pageIndex` to 0.\n */\n onPageSizeChange?: (size: number) => void\n /**\n * List of page size options rendered in a selector next to the pagination controls.\n * When omitted, no size selector is shown.\n * @example [25, 50, 100]\n */\n pageSizeOptions?: number[]\n /**\n * Number of page buttons to show either side of the current page.\n * @default 2\n */\n paginationWindow?: number\n /**\n * Fixed height for the table wrapper (e.g. `'600px'`, `'80vh'`). When set, the table\n * wrapper becomes a fixed-height flex column: the header and pagination stay in place\n * and only the body scrolls. When omitted, the table grows with its content.\n */\n height?: string\n /** Content rendered above the table in a toolbar strip. */\n toolbar?: ReactNode\n /** Rendered when `data` is empty, in place of the table body. @default \"No data.\" */\n emptyState?: ReactNode\n /**\n * When true, the table body renders skeleton placeholder rows instead of data.\n * The header, toolbar, and pagination controls remain visible so the layout\n * doesn't jump when data arrives. Row count defaults to `pageSize` (or 10).\n */\n loading?: boolean\n className?: string\n}\n\nconst skeletonWidths = ['75%', '90%', '65%', '85%', '70%', '95%', '60%', '80%']\n\n/** Builds the page number window: always includes 0 and last, current ± window, with nulls for gaps. */\nfunction buildPageWindow(current: number, total: number, window: number): (number | null)[] {\n const pages = new Set<number>()\n pages.add(0)\n pages.add(total - 1)\n for (let i = Math.max(0, current - window); i <= Math.min(total - 1, current + window); i++) {\n pages.add(i)\n }\n const sorted = Array.from(pages).sort((a, b) => a - b)\n const result: (number | null)[] = []\n for (let i = 0; i < sorted.length; i++) {\n const page = sorted[i]!\n if (i > 0 && page - sorted[i - 1]! > 1) result.push(null)\n result.push(page)\n }\n return result\n}\n\n/**\n * Data table with sortable columns, row selection, and hybrid controlled/uncontrolled\n * sort state.\n *\n * **Sort modes:**\n * - Uncontrolled: provide `defaultSortKey`/`defaultSortDir`; table manages state internally.\n * - Controlled: provide `sortKey` + `sortDir` + `onSortChange`; caller owns state.\n *\n * Sorting cycles through asc → desc → unsorted on repeated clicks of the same column.\n * Sort is performed client-side via `String.localeCompare` with `numeric: true`.\n *\n * @example\n * ```tsx\n * <Table\n * columns={[\n * { key: 'name', label: 'Name', sortable: true },\n * { key: 'status', label: 'Status', render: r => <Badge tone={r.tone}>{r.status}</Badge> },\n * { key: 'id', label: 'ID', mono: true, width: '100px' },\n * ]}\n * data={recipes}\n * rowKey={r => r.id}\n * defaultSortKey=\"name\"\n * onRowClick={(key, row) => navigate(`/recipes/${key}`)}\n * />\n * ```\n */\nexport function Table<T extends { [K in string]: unknown }>({\n columns,\n data,\n rowKey,\n selectedKeys,\n onRowClick,\n sortKey: controlledSortKey,\n sortDir: controlledSortDir,\n defaultSortKey,\n defaultSortDir = null,\n onSortChange,\n pageIndex = 0,\n pageSize,\n totalRows,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions,\n paginationWindow = 2,\n height,\n toolbar,\n emptyState,\n loading = false,\n className,\n}: TableProps<T>) {\n const [internalSortKey, setInternalSortKey] = useState<string | null>(defaultSortKey ?? null)\n const [internalSortDir, setInternalSortDir] = useState<SortDirection>(defaultSortDir)\n\n const isControlled = controlledSortKey !== undefined\n const activeSortKey = isControlled ? (controlledSortKey ?? null) : internalSortKey\n const activeSortDir = isControlled ? (controlledSortDir ?? null) : internalSortDir\n\n const handleSort = (key: string) => {\n let nextDir: SortDirection\n if (activeSortKey === key) {\n nextDir = activeSortDir === 'asc' ? 'desc' : activeSortDir === 'desc' ? null : 'asc'\n } else {\n nextDir = 'asc'\n }\n const nextKey = nextDir === null ? null : key\n\n if (!isControlled) {\n setInternalSortKey(nextKey)\n setInternalSortDir(nextDir)\n }\n onSortChange?.(key, nextDir)\n }\n\n const sortedData = useMemo(() => {\n if (!activeSortKey || !activeSortDir) return data\n return [...data].sort((a, b) => {\n const av = a[activeSortKey]\n const bv = b[activeSortKey]\n const cmp = String(av ?? '').localeCompare(String(bv ?? ''), undefined, { numeric: true })\n return activeSortDir === 'asc' ? cmp : -cmp\n })\n }, [data, activeSortKey, activeSortDir])\n\n const totalPages = pageSize && totalRows ? Math.ceil(totalRows / pageSize) : null\n const isFirstPage = pageIndex === 0\n const isLastPage = totalPages !== null ? pageIndex >= totalPages - 1 : true\n\n return (\n <div\n className={[styles.tableWrapper, className].filter(Boolean).join(' ')}\n style={height ? { height, display: 'flex', flexDirection: 'column' } : undefined}\n >\n {toolbar && <div className={styles.toolbar}>{toolbar}</div>}\n <div\n className={styles.tableScroll}\n style={height ? { flex: 1, overflowY: 'auto', minHeight: 0 } : pageSize ? { minHeight: 37 + pageSize * 38 } : undefined}\n >\n <table className={styles.table}>\n <thead className={styles.thead}>\n <tr>\n {columns.map(col => (\n <th\n key={col.key}\n className={col.sortable ? styles.thSortable : styles.th}\n style={col.width ? { width: col.width } : undefined}\n onClick={col.sortable ? () => handleSort(col.key) : undefined}\n aria-sort={\n activeSortKey === col.key\n ? activeSortDir === 'asc' ? 'ascending' : 'descending'\n : undefined\n }\n >\n {col.label}\n {col.sortable && activeSortKey === col.key && activeSortDir && (\n <span className={styles.sortIndicator} aria-hidden=\"true\">\n <Glyph name={activeSortDir === 'asc' ? 'arrow-up' : 'arrow-right'} size={10} />\n </span>\n )}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {loading ? (\n Array.from({ length: pageSize ?? 10 }, (_, i) => (\n <tr key={i} className={styles.tr} aria-hidden=\"true\">\n {columns.map(col => (\n <td key={col.key} className={col.mono ? styles.tdMono : styles.td}>\n <Skeleton width={col.width ? '80%' : skeletonWidths[i % skeletonWidths.length]!} />\n </td>\n ))}\n </tr>\n ))\n ) : data.length === 0 ? (\n <tr>\n <td colSpan={columns.length}>\n <div className={styles.emptyState}>\n {emptyState ?? 'No data.'}\n </div>\n </td>\n </tr>\n ) : (\n sortedData.map(row => {\n const key = rowKey(row)\n const isSelected = selectedKeys?.includes(key) ?? false\n return (\n <tr\n key={key}\n className={styles.tr}\n data-selected={isSelected}\n onClick={onRowClick ? (e) => {\n const target = e.target as HTMLElement\n if (target.closest('a, button, input, select, textarea, [role=\"checkbox\"], [role=\"button\"]')) return\n onRowClick(key, row)\n } : undefined}\n style={onRowClick ? { cursor: 'pointer' } : undefined}\n >\n {columns.map(col => (\n <td key={col.key} className={col.mono ? styles.tdMono : styles.td}>\n {col.render ? col.render(row) : String(row[col.key] ?? '')}\n </td>\n ))}\n </tr>\n )\n })\n )}\n </tbody>\n </table>\n </div>\n {pageSize && totalPages !== null && (\n <div className={styles.pagination}>\n {pageSizeOptions && (\n <select\n className={styles.pageSizeSelect}\n value={pageSize}\n onChange={e => onPageSizeChange?.(Number(e.target.value))}\n aria-label=\"Rows per page\"\n >\n {pageSizeOptions.map(n => (\n <option key={n} value={n}>{n} / page</option>\n ))}\n </select>\n )}\n <div className={styles.paginationControls}>\n <button className={styles.pageNavButton} onClick={() => onPageChange?.(0)} disabled={isFirstPage} aria-label=\"First page\">«</button>\n <button className={styles.pageNavButton} onClick={() => onPageChange?.(pageIndex - 1)} disabled={isFirstPage} aria-label=\"Previous page\">‹</button>\n {buildPageWindow(pageIndex, totalPages, paginationWindow).map((entry, i) =>\n entry === null\n ? <span key={`ellipsis-${i}`} className={styles.paginationEllipsis}>…</span>\n : <button\n key={entry}\n className={entry === pageIndex ? styles.pageButtonActive : styles.pageButton}\n onClick={() => onPageChange?.(entry)}\n aria-label={`Page ${entry + 1}`}\n aria-current={entry === pageIndex ? 'page' : undefined}\n >\n {entry + 1}\n </button>\n )}\n <button className={styles.pageNavButton} onClick={() => onPageChange?.(pageIndex + 1)} disabled={isLastPage} aria-label=\"Next page\">›</button>\n <button className={styles.pageNavButton} onClick={() => onPageChange?.(totalPages - 1)} disabled={isLastPage} aria-label=\"Last page\">»</button>\n </div>\n </div>\n )}\n </div>\n )\n}\n","import 'src/components/Toast/Toast.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61VPW_bMBDd_SuITPHAQvJXUhUFUrRLpy5ZiqIwKPIos5FIgjzZUor890KUTEeO7aRoF0s68t69e_fhuwdopWMVeHJvmMe1L5WAr3q9TnPEJN0m5PeEEOlMFV4IMZZxhW1Gkg_hGx3TXhpXZf1ryRC-X9_aZtqdP00IQXPsml5yTQbHp8ndSXLfaozs0rPs3hTiFLeLaS1iWk-Tdz2nrYKdNe7AaRYQrfEKldEZkaoB0TnlBtFUGdkyd02pt4wD9fZ2vU4ZV3mTp7OA7VSxwVdvCeVtydqMyBKaztA9qVAOeB-Wm7KudHdSMHsMt4hwbUB7pEoLaDIyS0L-OyVwk5H5KrEBvGINHWyclfw6TZLtjlCy2Ne5VB6px7aEjGijobNZJoTSxSBpxVyhdPiI2mH43Qs3D8LljD8UztRa7ElzUxpHfe0k4xCJz6e9pk6Ay0hqG-JNqcTIpz-NLu8Hl4b6DRNmF1UJX9Qjq-xB53w6SmIs4DLee5weHa0OEMm4VIVToRG6J0WobNdUtC-Uz0gqHWE1mjfWjJWq0FQhVD4jHpnDYNWqYn0HnBvoHlbULtyjOfMHVdNinw4wD9SEWRuO1PR86X4IhqxTEOHjFS-NB3H1M9TzNKHxEB8xkj30EFb-DaN7hSVE5EW_HoxGKlmlynavaTDlRrQRC4Omwe7VI2QknfetH0w76Idy1Y9H6K5xe8oiQi2nh36np4c-jZe3L1L4Ap47ZTslYiLLf0lk1idykvQs-q2GOdZAN0O26bvlMbnPXWkjrdWLiQ270jIHGp-P534l8Nr5joQ1SiO4s7TmkdbNpSkcy3hiKY5mhMM-5q_ao5It5UYjaHx-FNao3zilH4bFFVJScaka9x_b9UjObGO24IKor7fYZSRpeO3pVnmVlxAQTY1ddTMyO7krGe9EiBFEEHTwoUZKDxhcjwN_4qNOvQmxhuZH82KLHSrb_XE8_QGriaP3gAgAAA';\nexport var toast = 'Toast_toast__1btt01v3';\nexport var toastAction = 'Toast_toastAction__1btt01v7';\nexport var toastClose = 'Toast_toastClose__1btt01v6';\nexport var toastDescription = 'Toast_toastDescription__1btt01v5';\nexport var toastTitle = 'Toast_toastTitle__1btt01v4';\nexport var viewport = 'Toast_viewport__1btt01v2';","import { useState, useCallback, createContext, useContext } from 'react'\nimport type { ReactNode } from 'react'\nimport { createPortal } from 'react-dom'\nimport { Glyph } from '../../glyphs/Glyph'\nimport * as styles from './Toast.css'\n\n/** Shape of a single toast notification. */\nexport interface ToastData {\n /** Auto-generated unique ID — do not set manually; provided by {@link useToast}. */\n id: string\n /** Primary message. Keep short — one clause. */\n title: string\n /** Secondary detail line. Optional. */\n description?: string\n /**\n * How long (ms) before the toast auto-dismisses.\n * Pass `0` to keep it on screen until manually dismissed.\n * @default 4000\n */\n duration?: number\n /** Optional action element (e.g. an undo {@link Button}) rendered below the description. */\n action?: ReactNode\n}\n\ninterface ToastContextValue {\n toast: (data: Omit<ToastData, 'id'>) => void\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null)\n\n/**\n * Hook that returns the `toast()` imperative function for firing notifications.\n * Must be called within a component tree wrapped by {@link ToastProvider}.\n *\n * @throws If called outside a `<ToastProvider>`.\n *\n * @example\n * ```tsx\n * function SaveButton() {\n * const { toast } = useToast()\n * return (\n * <Button onClick={() => toast({ title: 'Saved.', description: 'Changes committed.' })}>\n * Save\n * </Button>\n * )\n * }\n * ```\n */\nexport function useToast() {\n const ctx = useContext(ToastContext)\n if (!ctx) throw new Error('useToast must be used within <ToastProvider>')\n return ctx\n}\n\n/** Props for the {@link ToastProvider} component. */\nexport interface ToastProviderProps {\n children: ReactNode\n}\n\n/**\n * Context provider that manages the toast queue and renders the notification\n * stack into a portal at `document.body`. Place once near the root of your app,\n * inside `<AcheryProvider>`.\n *\n * Use the {@link useToast} hook anywhere in the subtree to fire toasts\n * imperatively.\n *\n * @example\n * ```tsx\n * // app root\n * <AcheryProvider>\n * <ToastProvider>\n * <App />\n * </ToastProvider>\n * </AcheryProvider>\n *\n * // anywhere inside\n * const { toast } = useToast()\n * toast({ title: 'Entry deleted.', duration: 0, action: <Button size=\"sm\">Undo</Button> })\n * ```\n */\nexport function ToastProvider({ children }: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastData[]>([])\n\n const toast = useCallback((data: Omit<ToastData, 'id'>) => {\n const id = String(Date.now())\n setToasts(prev => [...prev, { ...data, id }])\n const duration = data.duration ?? 4000\n if (duration > 0) {\n setTimeout(() => {\n setToasts(prev => prev.filter(t => t.id !== id))\n }, duration)\n }\n }, [])\n\n const dismiss = (id: string) => setToasts(prev => prev.filter(t => t.id !== id))\n\n return (\n <ToastContext.Provider value={{ toast }}>\n {children}\n {typeof document !== 'undefined' && createPortal(\n <ol className={styles.viewport} aria-live=\"polite\" aria-label=\"Notifications\">\n {toasts.map(t => (\n <li key={t.id} className={styles.toast} role=\"status\">\n <div>\n <div className={styles.toastTitle}>{t.title}</div>\n {t.description && (\n <div className={styles.toastDescription}>{t.description}</div>\n )}\n {t.action && <div className={styles.toastAction}>{t.action}</div>}\n </div>\n <button\n className={styles.toastClose}\n onClick={() => dismiss(t.id)}\n aria-label=\"Dismiss\"\n >\n <Glyph name=\"cross\" size={12} aria-hidden=\"true\" />\n </button>\n </li>\n ))}\n </ol>,\n document.body,\n )}\n </ToastContext.Provider>\n )\n}\n","import 'src/components/Checkbox/Checkbox.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8VV227bMAx9z1cIfWqAqYib3qZhwIABA_YDexmGgJYoh40seZLcJhv674Pl-NI2TotuwN5skTw8PKSoTxvcaQ8lBvZ5jXKTu-0qVGRXK2vLnfy5YL9njGnvyvTBWPRgg3a-FMy7CBFPFwqL-YcZYw8zxqKb9FtejTwfZmd9vnsPVYW-S5klBEWhMrATjKwhi1wb3DahYKiwnCKWQTCJNqJvjguoBLsDf8p5qEAiD9VytcpAUr7NtymprH1wXrDKURt1jMN3BRG4ogC5QfUjUXIVSIo7wRZnF2NA6yIHY9w9qseg3rnYIZ4niHtScS1YdlWlYtZIxToO_7nzCr1g2dlltWXBGVL7oqQzzvPW3tf1fj4EcQ-K6tCJ0P7xNZBv5OtDsps2BuSm8K62SjxKEGqvQQ7uy-Td9-KFJtzWIZLecelsRBvHpiaSh7UnuxFscbAd-5mhSM6KEcM9QVV7aExcQ4hDPXq-tyME5K4emWj-rhMnVfcXQEf62k5KaEb844lsXFCdtAMzpTLIRpgeX43bmDxedH8dG7IKI_qSLET8f5yEdrIO_I4C5Qbbq1THZiwFOz845wfJ7GO40zpgTKHHknZ3921Xl6wiCdH1G2GZcCaV-FL0bPFf3ZlUbb8iHvMzkKPpuF20S9rZyDWUZHYdw3SUO7XrycVELp0H-oWCZct29RyoTA81XaawOqDnAQ3K2Ehn8TnLRt4xz2YS6_D1qZqXb9nxT3fIkTzfwBPYGFYB7sgWXdqrqSbqYngtrlOtYKmEdhVNPIxZSLWDZ2Q1WYr4akqoOpjr42M1ecGmwNH7QeWbKXAFthi9I7cN-B_YdEBYCggAAA';\nexport var indicator = 'Checkbox_indicator__nnmycq3';\nexport var label = 'Checkbox_label__nnmycq4';\nexport var root = 'Checkbox_root__nnmycq2';\nexport var statusIndicator = 'Checkbox_statusIndicator__nnmycq5';\nexport var statusIndicatorVariants = {saving:'Checkbox_statusIndicatorVariants_saving__nnmycq6',saved:'Checkbox_statusIndicatorVariants_saved__nnmycq7',error:'Checkbox_statusIndicatorVariants_error__nnmycq8'};\nexport var wrapper = 'Checkbox_wrapper__nnmycq1';","import * as RadixCheckbox from '@radix-ui/react-checkbox'\nimport type { ReactNode } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport type { InputStatus } from '../Input/Input'\nimport * as styles from './Checkbox.css'\n\n/** Props for the {@link Checkbox} component. */\nexport interface CheckboxProps {\n /** Controlled checked state. `true` = checked, `false` = unchecked, `'indeterminate'` = partial. */\n checked?: boolean | 'indeterminate'\n /** Initial checked state for uncontrolled usage. */\n defaultChecked?: boolean | 'indeterminate'\n /** Called when the checked state changes. */\n onChange?: (checked: boolean | 'indeterminate') => void\n disabled?: boolean\n /** Optional label rendered beside the checkbox. */\n label?: ReactNode\n /** Accessible label when no visible label is present. */\n 'aria-label'?: string\n id?: string\n /**\n * Auto-save feedback state. When set to anything other than `'idle'`, a small\n * icon appears after the label (or after the checkbox if there is no label).\n */\n status?: InputStatus\n className?: string\n}\n\n/**\n * Accessible checkbox built on Radix Checkbox. Supports checked, unchecked,\n * and indeterminate states. Controlled via `checked`/`onChange` or uncontrolled\n * via `defaultChecked`.\n *\n * @example\n * ```tsx\n * // Uncontrolled\n * <Checkbox defaultChecked label=\"Accept terms\" />\n *\n * // Controlled\n * <Checkbox checked={done} onChange={setDone} label=\"Mark done\" />\n *\n * // Indeterminate (e.g. select-all with partial selection)\n * <Checkbox checked=\"indeterminate\" onChange={handleSelectAll} />\n * ```\n */\nexport function Checkbox({\n checked,\n defaultChecked,\n onChange,\n disabled,\n label,\n id,\n status,\n className,\n 'aria-label': ariaLabel,\n}: CheckboxProps) {\n const resolvedId = id ?? (label ? `checkbox-${Math.random().toString(36).slice(2, 7)}` : undefined)\n\n return (\n <span className={[styles.wrapper, className].filter(Boolean).join(' ')} data-disabled={disabled || undefined}>\n <RadixCheckbox.Root\n {...(checked !== undefined ? { checked } : {})}\n {...(defaultChecked !== undefined ? { defaultChecked } : {})}\n {...(onChange !== undefined ? { onCheckedChange: onChange } : {})}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(ariaLabel !== undefined ? { 'aria-label': ariaLabel } : {})}\n {...(resolvedId !== undefined ? { id: resolvedId } : {})}\n className={styles.root}\n >\n <RadixCheckbox.Indicator className={styles.indicator}>\n {checked === 'indeterminate' ? (\n <svg width=\"10\" height=\"2\" viewBox=\"0 0 10 2\" fill=\"currentColor\">\n <rect width=\"10\" height=\"2\" rx=\"1\" />\n </svg>\n ) : (\n <svg width=\"10\" height=\"8\" viewBox=\"0 0 10 8\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"1,4 4,7 9,1\" />\n </svg>\n )}\n </RadixCheckbox.Indicator>\n </RadixCheckbox.Root>\n {label && (\n <label htmlFor={resolvedId} className={styles.label} style={{ cursor: disabled ? 'not-allowed' : 'pointer' }}>\n {label}\n </label>\n )}\n {status && status !== 'idle' && (\n <span className={[styles.statusIndicator, styles.statusIndicatorVariants[status]].join(' ')} aria-hidden=\"true\">\n <Glyph name={status === 'saving' ? 'spinner' : status === 'saved' ? 'tick' : 'cross'} size={12} />\n </span>\n )}\n </span>\n )\n}\n","import 'src/components/Menu/Menu.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5VUwY6bMBC98xU-NgdHYUmq1rlW7alfUFXRgAeYrrEt2yyQav-9wqxJUqW72xsz88Zv3rOH7XfU_akyOqAOp9Pgz7Zodux3xlhHmg8kQytY_mlnx2PGWAnVY-NMr6VgT-A-cF4ZZRz3vauhwtMph4rKsSw2EW2cRCdYvj3YkXmjSN50LfW16fNVE3cgqfeJZYm471ZwntAj9y1IMyToEnEfoLMXdBnRFqQk3axQCxVybx9W3LBhuxl45qQljoIdYgiaOghkNJe9ix_piBTzGny40NWbY_acbaO5FLBLzubRWUneKpgEqxVGW0FRo_kM9IJVqAO6Od2A_XvUYuUY363otrRfS1M8oTY6cE9nFCwvlluOqRo6UlM6OKZKI6e1O8TueJG3b6FuVsxhwfTOzyBrKCkzfVCkUTBtNM6J3qPjHhVWISXv-vdDQgDeUtMqatqA8md09I13ebFj_86pXyGX5KFUidlYqChMgu22-2ux2gQOSpkBZbynRTvHJ9TB35P4BXQzL8PC9fCfQuVL94uEX_-SCdX8vL5exOKVWI8WHASzTlFEzhbnCQTLX_8H3N3mDlxD-q2Fu_bhm5psmwbYxwHmNeG-daQfxbKfV65_PGbPfwB9Vq22xgQAAA';\nexport var content = 'Menu_content__wszp3g0';\nexport var item = 'Menu_item__wszp3g1';\nexport var itemDanger = 'Menu_itemDanger__wszp3g2';\nexport var itemGlyph = 'Menu_itemGlyph__wszp3g4';\nexport var separator = 'Menu_separator__wszp3g3';","import * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport type { ReactNode } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport type { GlyphName } from '../../glyphs/index'\nimport * as styles from './Menu.css'\n\n/** A single item in a {@link Menu}. */\nexport interface MenuItemDef {\n /** Unique key for this item. */\n id: string\n /** Display label. */\n label: ReactNode\n /** Optional glyph shown before the label. */\n glyph?: GlyphName\n /** Called when the item is selected. */\n onSelect: () => void\n /** When true, the item is visible but not selectable. */\n disabled?: boolean\n /** Renders the item with danger (destructive action) styling. */\n danger?: boolean\n}\n\n/** Renders a horizontal rule between groups of items. */\nexport interface MenuSeparator {\n type: 'separator'\n id: string\n}\n\n/** Props for the {@link Menu} component. */\nexport interface MenuProps {\n /**\n * Element that opens the menu when clicked. Rendered as a Radix `asChild`\n * trigger — pass any single React element (e.g. a {@link Button}).\n */\n trigger: ReactNode\n /**\n * Ordered list of items and separators to render in the dropdown.\n */\n items: (MenuItemDef | MenuSeparator)[]\n /** Preferred side to open the menu relative to the trigger. */\n side?: 'top' | 'bottom' | 'left' | 'right'\n /** Alignment of the menu relative to the trigger. */\n align?: 'start' | 'center' | 'end'\n className?: string\n}\n\n/**\n * Dropdown menu built on Radix DropdownMenu. Renders into a portal so it\n * appears above all content regardless of overflow constraints.\n *\n * @example\n * ```tsx\n * <Menu\n * trigger={<Button variant=\"ghost\" size=\"sm\">Actions</Button>}\n * items={[\n * { id: 'edit', label: 'Edit', glyph: 'key', onSelect: () => setEditing(true) },\n * { type: 'separator', id: 'sep1' },\n * { id: 'delete', label: 'Delete', danger: true, onSelect: handleDelete },\n * ]}\n * />\n * ```\n */\nexport function Menu({ trigger, items, side = 'bottom', align = 'end', className }: MenuProps) {\n return (\n <RadixDropdownMenu.Root>\n <RadixDropdownMenu.Trigger asChild>\n {trigger as React.ReactElement}\n </RadixDropdownMenu.Trigger>\n\n <RadixDropdownMenu.Portal>\n <RadixDropdownMenu.Content\n side={side}\n align={align}\n sideOffset={6}\n className={[styles.content, className].filter(Boolean).join(' ')}\n >\n {items.map((item) => {\n if ('type' in item && item.type === 'separator') {\n return <RadixDropdownMenu.Separator key={item.id} className={styles.separator} />\n }\n const def = item as MenuItemDef\n return (\n <RadixDropdownMenu.Item\n key={def.id}\n {...(def.disabled !== undefined ? { disabled: def.disabled } : {})}\n onSelect={def.onSelect}\n className={[styles.item, def.danger ? styles.itemDanger : ''].filter(Boolean).join(' ')}\n >\n {def.glyph && <Glyph name={def.glyph} size={14} className={styles.itemGlyph} />}\n {def.label}\n </RadixDropdownMenu.Item>\n )\n })}\n </RadixDropdownMenu.Content>\n </RadixDropdownMenu.Portal>\n </RadixDropdownMenu.Root>\n )\n}\n","import 'src/components/DatePicker/DatePicker.css.ts.vanilla.css?source=#H4sIAAAAAAAAA41UTW_bMAy951cIBQq0BwVx0_TDxYAddtltpwHDMASMRTtcZcmg6Hxs6H8fLCWO0yXLbpJIvvcoPunjK25LhhqD-gSCX6h4RZ6Hhtx8nqEYXj9O1O-RUiX7Oi6UEgYXSs91rtgLCN5MDFa3LyOl3kZKiT-bN30YZL6NxgNKck0rPWeWOL0TXUJNdpurFfCN1vGo9s7P5xkUtNgs2ggXzwP9wlxl02bTHRXeet7XxY0uq75sFssWULxW7FtnjhNDyyUU2GdPU7Zng5yrbDxrNip4S-aoKsX7oudBkWYw1IY9S9rpJRBbcgee7CnWNGAMuWqfHRooUIfmrs9b374LTfvQJiKsycgyV9lkcp1EbLrbiZg7QQsfbykOiYS86yOxmR2-aRm6oC4hyEFmuedHCKh9OwjR7cu_R5uXvmhDHLBvpWs_V847HFzWidFBUaA70JiLLIYCLCyaRNRAQbLN1WR8H73RcugYnBcN1vo1mgt43w0IaGT2_OFKuMWrHxH5vGIDrhq44eclxYlhCUEHAWnDEc3OEZqpWkqu7p46jx_DrRmaJhImwLtU6PfTZbQgtMK_7HEMk8g_F_7wA0zfIcEieNtKRNoJek5vTnyTq1ny3OD5x6UFwW83eja5Th735ARZ4wqdhIMFDIXGwjZXpcWICZYqp0mwDrnqTIB8XvNXYAInYR5gRa7qW7iPLZz8Eg5P5zEKA0c1pEbPf4lZUJ1zgRW5khx1l_E_mtD0ILNzki5a_QR0NGYP_XAO-pQn_wC1E09CAwYAAA';\nexport var input = 'DatePicker_input__1etdrw71';\nexport var statusIcon = 'DatePicker_statusIcon__1etdrw73';\nexport var statusIconVariants = {saving:'DatePicker_statusIconVariants_saving__1etdrw74',saved:'DatePicker_statusIconVariants_saved__1etdrw75',error:'DatePicker_statusIconVariants_error__1etdrw76'};\nexport var wrapper = 'DatePicker_wrapper__1etdrw72';","import type { InputHTMLAttributes } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport type { InputStatus } from '../Input/Input'\nimport * as styles from './DatePicker.css'\n\n/** Props for the {@link DatePicker} component. */\nexport interface DatePickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /**\n * Input type.\n * - `date` — ISO date string `YYYY-MM-DD` (default)\n * - `datetime-local` — ISO datetime string `YYYY-MM-DDTHH:mm`\n * @default 'date'\n */\n type?: 'date' | 'datetime-local'\n /** ISO date or datetime string value. */\n value?: string\n /** Called when the date changes — receives the new ISO string (or empty string when cleared). */\n onChange?: InputHTMLAttributes<HTMLInputElement>['onChange']\n /** Minimum selectable date/datetime. */\n min?: string\n /** Maximum selectable date/datetime. */\n max?: string\n disabled?: boolean\n /** When true, applies error border styling. */\n error?: boolean\n /** Auto-save feedback state. When set to anything other than `'idle'`, a small trailing icon appears. */\n status?: InputStatus\n placeholder?: string\n className?: string\n}\n\n/**\n * Date (or datetime-local) input component. Styled to match the achery-ui design\n * system — no calendar popover; relies on the browser's native date picker UX.\n *\n * Values are ISO strings. Pass `value` and `onChange` for controlled usage.\n *\n * @example\n * ```tsx\n * // Date-only\n * <DatePicker value={date} onChange={(e) => setDate(e.target.value)} />\n *\n * // Datetime-local\n * <DatePicker type=\"datetime-local\" value={datetime} onChange={(e) => setDatetime(e.target.value)} />\n * ```\n */\nexport function DatePicker({\n type = 'date',\n value,\n onChange,\n min,\n max,\n disabled,\n error,\n status,\n placeholder,\n className,\n ...rest\n}: DatePickerProps) {\n const hasStatus = status && status !== 'idle'\n const input = (\n <input\n type={type}\n value={value}\n onChange={onChange}\n min={min}\n max={max}\n disabled={disabled}\n placeholder={placeholder}\n data-error={error || undefined}\n data-has-status={hasStatus || undefined}\n className={[styles.input, !hasStatus && className].filter(Boolean).join(' ')}\n {...rest}\n />\n )\n if (!hasStatus) return input\n return (\n <div className={[styles.wrapper, className].filter(Boolean).join(' ')}>\n {input}\n <span className={[styles.statusIcon, styles.statusIconVariants[status]].join(' ')} aria-hidden=\"true\">\n <Glyph name={status === 'saving' ? 'spinner' : status === 'saved' ? 'tick' : 'cross'} size={12} />\n </span>\n </div>\n )\n}\n","import 'src/components/Combobox/Combobox.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7VWS2_bOBC-51cQBQo0aGlIfmRTFXvqeS97LQqDEkcSG4lDkJQtd9H_XpCUaNnKw86mlzjiPPnNNzNcfMU2xxz77V4zpUBvt6nQpd5gQv67IUShEVagzIiGhlmxgy83hOwFt3VG0iR5_-Xm180iOrFaVNXESeqdcGFUww4ZKRvonb37pS5gRtxfd8QaUUkqLLQmIwVIC9odV05nx_QHSo1iBVCjltttygqR9_n-1qm0QtIaRFXbjKzuVD9LkBDFOBeyes7TmWgVRb0PkqPmoDOSLjaqJwYbwQeLAhvUNMij0eeJEdWMi86MwcMXrZnQjZAQTdL7YMOKh0pjJ3l2EsB0umTFUX3ltYtOG9QZsdDbELGnRvz0dx2i5-gRsZrJsZSDxDsegvBOMyekJTP2mFM54gLMAMVuIhK3L5T-G2eWUVQg_35ndQfvvnsyTIOfXpEVru4xAr8sAGiN-sIInMlqUqUfZxGKWqjofnlKXSFdtejI4NfTNXJxqfoXVF_gwlF9fcrRP8vQEqV1JIOMpGloN39UslY0h9GJP2pRYjTvvHUD1oL2V_YoJItkDa2XOHzHRk4X6zgoTK2FfMhIMq_Wv9DiDmLNVq-p2Y_OWFEeaIHSgrRT0ThG1uGaMbnhewRcooTzeo1nY4cqFKPXyIDEK8xpWlbH0t551NDBZQ8Orrs5Vi_jktW4A-3Ria7OzIRUvr2DxdrrOuS8YpiyAxz3yeXXx866XI8HT1ElR36Il7Yzoq1CyEfBimab2zm8c1ZNL60aVkCNDZ_MlU24-tvn-U9nj80UemlgBYUdSGtGlE4yROVKF7O7O1vLLDfYdNZja1FlpGBN8cEtPvKRrFU_NF1pBzx0QML__5MKyV2FN8n1q-fNN6Jpj5Nm1HbNzzju41D1X9RY1qqjdh7eAayPhV4uB4467MoG9_SQEdZZPAUXlQMxYvvX46-VS-dGGOM52D2AfN2zYx1Fh6eodQUxL-mW2Xx6Dp8wRj6RpzXCTmaFeymeLuVrdtlzOYQIBhooLPCTGNe_KYLzrzUUDzHC_RW-_t82nGYCrbKHmMPn0OWP82f6Nr2CP8u34c9siv36DWsCMvJEDAAA';\nexport var chip = 'Combobox_chip__1irfr5o2';\nexport var chipRemove = 'Combobox_chipRemove__1irfr5o3';\nexport var empty = 'Combobox_empty__1irfr5o9';\nexport var input = 'Combobox_input__1irfr5o4';\nexport var option = 'Combobox_option__1irfr5o7';\nexport var optionCheck = 'Combobox_optionCheck__1irfr5o8';\nexport var placeholder = 'Combobox_placeholder__1irfr5o5';\nexport var popover = 'Combobox_popover__1irfr5o6';\nexport var trigger = 'Combobox_trigger__1irfr5o1';\nexport var wrapper = 'Combobox_wrapper__1irfr5o0';","import { useState, useRef, useId, type KeyboardEvent } from 'react'\nimport * as styles from './Combobox.css'\n\n/** Props for the {@link Combobox} component. */\nexport interface ComboboxProps {\n /** Currently selected values. */\n value: string[]\n /** Called when the selection changes. */\n onChange: (value: string[]) => void\n /**\n * Suggested options shown in the dropdown. Strings are used as both label\n * and value. When `allowCustom` is true, the user can also type values not\n * in this list.\n */\n options?: string[]\n /**\n * When true, the user can enter any value — not just options from the list.\n * The typed value is added on Enter or comma.\n * @default false\n */\n allowCustom?: boolean\n placeholder?: string\n disabled?: boolean\n /** When true, applies error border styling. */\n error?: boolean\n className?: string\n}\n\n/**\n * Multi-select free-text combobox. Selected values appear as removable chips.\n * Dropdown suggests from `options`; when `allowCustom` is true the user can\n * type any value and confirm with Enter or comma.\n *\n * @example\n * ```tsx\n * // Fixed options only\n * <Combobox\n * value={tags}\n * onChange={setTags}\n * options={['computer', 'outside', 'quick-win']}\n * placeholder=\"Add tags…\"\n * />\n *\n * // Free-text + suggestions\n * <Combobox\n * value={contextTags}\n * onChange={setContextTags}\n * options={allKnownTags}\n * allowCustom\n * placeholder=\"Add context tags…\"\n * />\n * ```\n */\nexport function Combobox({\n value,\n onChange,\n options = [],\n allowCustom = false,\n placeholder,\n disabled,\n error,\n className,\n}: ComboboxProps) {\n const [inputValue, setInputValue] = useState('')\n const [open, setOpen] = useState(false)\n const [activeIndex, setActiveIndex] = useState(-1)\n const inputRef = useRef<HTMLInputElement>(null)\n const id = useId()\n\n const filteredOptions = options.filter((opt) => {\n const lower = inputValue.toLowerCase()\n return opt.toLowerCase().includes(lower) && !value.includes(opt)\n })\n\n const customOption =\n allowCustom &&\n inputValue.trim() &&\n !options.includes(inputValue.trim()) &&\n !value.includes(inputValue.trim())\n ? inputValue.trim()\n : null\n\n const visibleOptions = [...filteredOptions, ...(customOption ? [customOption] : [])]\n const showDropdown = open && visibleOptions.length > 0\n\n function addValue(v: string) {\n const trimmed = v.trim()\n if (trimmed && !value.includes(trimmed)) {\n onChange([...value, trimmed])\n }\n setInputValue('')\n setActiveIndex(-1)\n }\n\n function removeValue(v: string) {\n onChange(value.filter((x) => x !== v))\n }\n\n function handleKeyDown(e: KeyboardEvent<HTMLInputElement>) {\n if ((e.key === 'Enter' || e.key === ',') && inputValue.trim()) {\n e.preventDefault()\n const active = activeIndex >= 0 ? visibleOptions[activeIndex] : undefined\n if (active) {\n addValue(active)\n } else if (allowCustom) {\n addValue(inputValue)\n } else if (filteredOptions[0]) {\n addValue(filteredOptions[0])\n }\n return\n }\n if (e.key === 'Backspace' && !inputValue && value.length > 0) {\n const last = value[value.length - 1]\n if (last) removeValue(last)\n return\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n setActiveIndex((i) => Math.min(i + 1, visibleOptions.length - 1))\n return\n }\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n setActiveIndex((i) => Math.max(i - 1, -1))\n return\n }\n if (e.key === 'Escape') {\n setOpen(false)\n setActiveIndex(-1)\n }\n }\n\n return (\n <div\n className={[styles.wrapper, className].filter(Boolean).join(' ')}\n onClick={() => { if (!disabled) inputRef.current?.focus() }}\n >\n <div\n className={styles.trigger}\n data-open={showDropdown || undefined}\n data-error={error || undefined}\n >\n {value.map((v) => (\n <span key={v} className={styles.chip}>\n {v}\n {!disabled && (\n <button\n type=\"button\"\n className={styles.chipRemove}\n onClick={(e) => { e.stopPropagation(); removeValue(v) }}\n aria-label={`Remove ${v}`}\n >\n ×\n </button>\n )}\n </span>\n ))}\n <input\n ref={inputRef}\n id={id}\n className={styles.input}\n value={inputValue}\n disabled={disabled}\n placeholder={value.length === 0 ? placeholder : undefined}\n autoComplete=\"off\"\n onChange={(e) => {\n setInputValue(e.target.value)\n setOpen(true)\n setActiveIndex(-1)\n }}\n onFocus={() => setOpen(true)}\n onBlur={() => {\n // short delay so mouseDown on an option fires before blur closes the list\n setTimeout(() => setOpen(false), 150)\n }}\n onKeyDown={handleKeyDown}\n aria-autocomplete=\"list\"\n aria-expanded={showDropdown}\n aria-controls={showDropdown ? `${id}-list` : undefined}\n aria-activedescendant={activeIndex >= 0 ? `${id}-opt-${activeIndex}` : undefined}\n />\n </div>\n\n {showDropdown && (\n <div id={`${id}-list`} role=\"listbox\" className={styles.popover}>\n {visibleOptions.map((opt, i) => {\n const isSelected = value.includes(opt)\n const isCustom = opt === customOption\n return (\n <div\n key={opt}\n id={`${id}-opt-${i}`}\n role=\"option\"\n aria-selected={isSelected}\n className={styles.option}\n data-active={activeIndex === i || undefined}\n data-selected={isSelected || undefined}\n onMouseDown={(e) => { e.preventDefault(); addValue(opt) }}\n onMouseEnter={() => setActiveIndex(i)}\n >\n <span>{isCustom ? `Add \"${opt}\"` : opt}</span>\n {isSelected && <span className={styles.optionCheck}>✓</span>}\n </div>\n )\n })}\n </div>\n )}\n </div>\n )\n}\n\n/** Props for the {@link SingleCombobox} component. */\nexport interface SingleComboboxProps {\n /** Currently selected value, or null for no selection. */\n value: string | null\n /** Called when the selection changes. */\n onChange: (value: string | null) => void\n /** Suggested options. */\n options?: string[]\n /**\n * When true, typed text not in options is accepted on Enter.\n * @default false\n */\n allowCustom?: boolean\n placeholder?: string\n disabled?: boolean\n /** When true, applies error border styling. */\n error?: boolean\n className?: string\n}\n\n/**\n * Single-select combobox. Selected value is shown in the input directly (no chips).\n * Backspace/Delete when input is empty clears the current value.\n *\n * @example\n * ```tsx\n * <SingleCombobox value={category} onChange={setCategory} options={categories} />\n * ```\n */\nexport function SingleCombobox({\n value,\n onChange,\n options = [],\n allowCustom = false,\n placeholder,\n disabled,\n error,\n className,\n}: SingleComboboxProps) {\n const [inputValue, setInputValue] = useState(value ?? '')\n const [open, setOpen] = useState(false)\n const [activeIndex, setActiveIndex] = useState(-1)\n const inputRef = useRef<HTMLInputElement>(null)\n const id = useId()\n\n const filteredOptions = options.filter((opt) =>\n opt.toLowerCase().includes(inputValue.toLowerCase())\n )\n\n const customOption =\n allowCustom &&\n inputValue.trim() &&\n !options.includes(inputValue.trim())\n ? inputValue.trim()\n : null\n\n const visibleOptions = [...filteredOptions, ...(customOption ? [customOption] : [])]\n const showDropdown = open && visibleOptions.length > 0\n\n function selectValue(v: string) {\n onChange(v)\n setInputValue(v)\n setOpen(false)\n setActiveIndex(-1)\n }\n\n function handleKeyDown(e: KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'Enter') {\n e.preventDefault()\n const active = activeIndex >= 0 ? visibleOptions[activeIndex] : undefined\n if (active) {\n selectValue(active)\n } else if (allowCustom && inputValue.trim()) {\n selectValue(inputValue.trim())\n } else if (filteredOptions[0]) {\n selectValue(filteredOptions[0])\n }\n return\n }\n if ((e.key === 'Backspace' || e.key === 'Delete') && !inputValue) {\n onChange(null)\n return\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n setActiveIndex((i) => Math.min(i + 1, visibleOptions.length - 1))\n return\n }\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n setActiveIndex((i) => Math.max(i - 1, -1))\n return\n }\n if (e.key === 'Escape') {\n setOpen(false)\n setActiveIndex(-1)\n }\n }\n\n return (\n <div\n className={[styles.wrapper, className].filter(Boolean).join(' ')}\n onClick={() => { if (!disabled) inputRef.current?.focus() }}\n >\n <div\n className={styles.trigger}\n data-open={showDropdown || undefined}\n data-error={error || undefined}\n >\n <input\n ref={inputRef}\n id={id}\n className={styles.input}\n value={inputValue}\n disabled={disabled}\n placeholder={placeholder}\n autoComplete=\"off\"\n onChange={(e) => {\n setInputValue(e.target.value)\n onChange(null)\n setOpen(true)\n setActiveIndex(-1)\n }}\n onFocus={() => setOpen(true)}\n onBlur={() => {\n setTimeout(() => {\n setOpen(false)\n // Restore display to selected value if user typed something invalid\n setInputValue(value ?? '')\n }, 150)\n }}\n onKeyDown={handleKeyDown}\n aria-autocomplete=\"list\"\n aria-expanded={showDropdown}\n aria-controls={showDropdown ? `${id}-list` : undefined}\n aria-activedescendant={activeIndex >= 0 ? `${id}-opt-${activeIndex}` : undefined}\n />\n </div>\n\n {showDropdown && (\n <div id={`${id}-list`} role=\"listbox\" className={styles.popover}>\n {visibleOptions.map((opt, i) => {\n const isSelected = value === opt\n const isCustom = opt === customOption\n return (\n <div\n key={opt}\n id={`${id}-opt-${i}`}\n role=\"option\"\n aria-selected={isSelected}\n className={styles.option}\n data-active={activeIndex === i || undefined}\n data-selected={isSelected || undefined}\n onMouseDown={(e) => { e.preventDefault(); selectValue(opt) }}\n onMouseEnter={() => setActiveIndex(i)}\n >\n <span>{isCustom ? `Add \"${opt}\"` : opt}</span>\n {isSelected && <span className={styles.optionCheck}>✓</span>}\n </div>\n )\n })}\n </div>\n )}\n </div>\n )\n}\n","import 'src/components/LetterStamp/LetterStamp.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6WUzY6bMBCA73kKS71sDo74MQlhX6G3nnpCgxmCG2Mj23Q3rfruFU7MwrLJJRfkGcz3zchmdt_ROTQ_HHR9af2zrC95OmQR-bshpBa2l3ApiFBSKKSNxPfXDSEgxUlR4bCzBeGoHJox_WuwTjQXyrVyqNz8VaVNjYYaqMVgC_IbzAu9RVRphWUZAxfVexUftuP-0URta4Q6FyQaM4NFQy1K5K4g4yevm3-b3boBN9I6bW1oJfatVMDPJ6MHVRfkG4MM0mSkci21CfX4gFanqZho-0hiBuuCJFlLckgheVqieWswWNK1pcqPCYNnLb0cuiBha0lWM9g_LeG679EETfZVLweWPK1RODgDMnj2K8-Smnxcve0ddfOhzu6prfiDZcyC9eCtb6J2bUFi1vvfpkVxal2I72OSKGDyOSaJlphr_ACTB8xxgck_YfLHmHQfMDDHpPsl5hrfx7CpmmqOYZ-qYV9VI_06fM-Xs6mSmp_9zNDK0QY6IS_h_HzqtnM6Q7uddr_drMfIzxg_5KZTmt0GoVo0wo0ZZ0DZRpuuuC4lOPz5Eu2iHLvxcvwHHLl-fVQFAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var letter = 'LetterStamp_letter__dy83u5c';\nexport var stamp = _7a468({defaultClassName:'LetterStamp_stamp__dy83u50',variantClassNames:{tone:{moss:'LetterStamp_stamp_tone_moss__dy83u51',rust:'LetterStamp_stamp_tone_rust__dy83u52',ochre:'LetterStamp_stamp_tone_ochre__dy83u53',plum:'LetterStamp_stamp_tone_plum__dy83u54',copper:'LetterStamp_stamp_tone_copper__dy83u55',neutral:'LetterStamp_stamp_tone_neutral__dy83u56'},size:{'14':'LetterStamp_stamp_size_14__dy83u57','20':'LetterStamp_stamp_size_20__dy83u58','28':'LetterStamp_stamp_size_28__dy83u59','36':'LetterStamp_stamp_size_36__dy83u5a','48':'LetterStamp_stamp_size_48__dy83u5b'}},defaultVariants:{tone:'neutral',size:28},compoundVariants:[]});","import type { CSSProperties } from 'react'\nimport { Glyph } from '../../glyphs/Glyph'\nimport type { GlyphName } from '../../types/components'\nimport * as styles from './LetterStamp.css'\n\nexport type LetterStampTone = 'moss' | 'rust' | 'ochre' | 'plum' | 'copper' | 'neutral'\nexport type LetterStampSize = 14 | 20 | 28 | 36 | 48\n\n/** Props for the {@link LetterStamp} component. */\nexport interface LetterStampProps {\n /** Single character displayed in the display font. Mutually exclusive with `glyph`. */\n letter?: string\n /** Glyph rendered centred inside the stamp. Mutually exclusive with `letter`. */\n glyph?: GlyphName\n /** Stamp size in px. @default 28 */\n size?: LetterStampSize\n /** Tone (fill colour). @default 'neutral' */\n tone?: LetterStampTone\n /** Raw hex colour override — overrides `tone` background. */\n colour?: string\n className?: string\n}\n\n/**\n * Hard-edged square stamp displaying a single letter or glyph.\n * Tone variants provide semantically-coloured fill pairs.\n *\n * @example\n * ```tsx\n * <LetterStamp letter=\"A\" tone=\"moss\" size={28} />\n * <LetterStamp glyph=\"flask\" tone=\"rust\" size={36} />\n * ```\n */\nexport function LetterStamp({\n letter,\n glyph,\n size = 28,\n tone = 'neutral',\n colour,\n className,\n}: LetterStampProps) {\n const style: CSSProperties = colour ? { background: colour } : {}\n\n return (\n <span\n className={[styles.stamp({ tone, size }), className].filter(Boolean).join(' ')}\n style={style}\n aria-hidden=\"true\"\n >\n {glyph ? (\n <Glyph name={glyph} size={Math.round(size * 0.55)} />\n ) : letter ? (\n <span className={styles.letter} style={{ fontSize: `${Math.round(size / 2)}px` }}>\n {letter.slice(0, 1).toUpperCase()}\n </span>\n ) : null}\n </span>\n )\n}\n","import 'src/components/EntityPill/EntityPill.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WUy47bMAxF9_MVArppFhrEzttdd1mgwHyAQVu0zY4iGXqkSYv-eyE5ViZTO8VsDFjiPaR4RT1_VY7c5TtJWfbhU24OP_YOl-z3E2OCbC_hUjBSkhTyRuL5yxNjIKlVnBwebcFqVA5NWG6hL9i2jyGVNgINNyDI24KdwHzm1z-utMKyzKCm6lxlu0WMh_q1NdorMQbXWmrDqzZFLhc3cMGy_sysliTuw-NukhyipAchSLUFW7J9f2ZLtgyr-oSmkfpnwToSAlVYa7RyvIEjyctYRlyqtLgkqIvQmO--1uZW6ybGODw7LrDWBhxpVbBw8ij2xga1wAa8dDHWgLI0hN2aceULPxB4A9bdWtcsrvsIFrn2b7YoFqC9C8aNif88Pb_32wUvjtra0fksOn-173rIT2vYwCqfBxgfyhoA-RRgDyvIHwB03RkcCaspQrU_5GuYJ_TSH0fAegqwEWvYPgDUuu_D1RkQm-kaduv8AUKhdwbSEG0nGP-5rBNkS7-wtOlsuwjtkNrOFSzPw7jNqY5iVO3vVfsZFYVRhtrRCUtnfHLkEOXjre01DSP_EULRhYEbOjI76y9evaJKHcmnOzKfo9G1t_xEliqJMVeagHzyvYA6PF8poXg7NVw3jUUXn5r3dUioMPlcxUwffztIdWgoTn_MN9qTTWZ7SVegvuULNhcsm6vwW7oA4h_NKmr-AglFjlcBBgAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var label = 'EntityPill_label__59j8teb';\nexport var labelMd = 'EntityPill_labelMd__59j8ted EntityPill_label__59j8teb';\nexport var labelSm = 'EntityPill_labelSm__59j8tec EntityPill_label__59j8teb';\nexport var pill = _7a468({defaultClassName:'EntityPill_pill__59j8te0',variantClassNames:{tone:{moss:'EntityPill_pill_tone_moss__59j8te1',rust:'EntityPill_pill_tone_rust__59j8te2',ochre:'EntityPill_pill_tone_ochre__59j8te3',plum:'EntityPill_pill_tone_plum__59j8te4',copper:'EntityPill_pill_tone_copper__59j8te5',neutral:'EntityPill_pill_tone_neutral__59j8te6'},size:{sm:'EntityPill_pill_size_sm__59j8te7',md:'EntityPill_pill_size_md__59j8te8'},interactive:{true:'EntityPill_pill_interactive_true__59j8te9',false:'EntityPill_pill_interactive_false__59j8tea'}},defaultVariants:{tone:'neutral',size:'md',interactive:false},compoundVariants:[]});","import type { CSSProperties } from 'react'\nimport type { GlyphName } from '../../types/components'\nimport { LetterStamp } from '../LetterStamp/LetterStamp'\nimport type { LetterStampTone } from '../LetterStamp/LetterStamp'\nimport * as styles from './EntityPill.css'\n\n/** Props for the {@link EntityPill} component. */\nexport interface EntityPillProps {\n /** Visible label text. */\n label: string\n /** Single character displayed in the stamp. Mutually exclusive with `glyph`. */\n letter?: string\n /** Glyph in the stamp. Mutually exclusive with `letter`. */\n glyph?: GlyphName\n /** Tone applied to both stamp fill and border. @default 'neutral' */\n tone?: LetterStampTone\n /**\n * Raw hex colour — sets the stamp fill AND the pill border.\n * Takes precedence over `tone` for both.\n */\n colour?: string\n /** Size variant. @default 'md' */\n size?: 'sm' | 'md'\n /** Makes the pill a `<button>` with click handler. */\n onClick?: () => void\n /** Makes the pill an `<a>` link. */\n href?: string\n className?: string\n style?: CSSProperties\n}\n\n/**\n * Compact entity identifier pill — combines a {@link LetterStamp} with a text label.\n * Renders as `<button>` when `onClick`, `<a>` when `href`, or `<span>` otherwise.\n *\n * @example\n * ```tsx\n * <EntityPill label=\"Acme Corp\" letter=\"A\" tone=\"moss\" />\n * <EntityPill label=\"Subscriptions\" glyph=\"flask\" tone=\"rust\" onClick={handleClick} />\n * ```\n */\nexport function EntityPill({\n label,\n letter,\n glyph,\n tone = 'neutral',\n colour,\n size = 'md',\n onClick,\n href,\n className,\n style,\n}: EntityPillProps) {\n const stampSize = size === 'sm' ? 20 : 28\n const isInteractive = Boolean(onClick || href)\n\n const pillClass = [\n styles.pill({ tone, size, interactive: isInteractive }),\n className,\n ].filter(Boolean).join(' ')\n\n const pillStyle: CSSProperties = {\n ...(colour ? { borderColor: colour } : {}),\n ...style,\n }\n\n const labelClass = size === 'sm' ? styles.labelSm : styles.labelMd\n\n const content = (\n <>\n <LetterStamp\n {...(letter !== undefined ? { letter } : {})}\n {...(glyph !== undefined ? { glyph } : {})}\n {...(colour !== undefined ? { colour } : {})}\n tone={tone}\n size={stampSize}\n />\n <span className={labelClass}>{label}</span>\n </>\n )\n\n if (href) {\n return (\n <a href={href} className={pillClass} style={pillStyle}>\n {content}\n </a>\n )\n }\n\n if (onClick) {\n return (\n <button type=\"button\" onClick={onClick} className={pillClass} style={pillStyle}>\n {content}\n </button>\n )\n }\n\n return <span className={pillClass} style={pillStyle}>{content}</span>\n}\n","import 'src/components/Sparkline/Sparkline.css.ts.vanilla.css?source=LlNwYXJrbGluZV9yb290X18zaTM1MjQwIHsKICBkaXNwbGF5OiBibG9jazsKICBvdmVyZmxvdzogdmlzaWJsZTsKfQ';\nexport var root = 'Sparkline_root__3i35240';","import * as styles from './Sparkline.css'\n\nexport type SparklineTone = 'positive' | 'negative' | 'neutral'\n\n/** Props for the {@link Sparkline} component. */\nexport interface SparklineProps {\n /** Array of numeric data points. Fewer than 2 renders an empty SVG. */\n data: number[]\n /** SVG width in px. @default 80 */\n width?: number\n /** SVG height in px. @default 28 */\n height?: number\n /** Colour tone. @default 'neutral' */\n tone?: SparklineTone\n className?: string\n}\n\n// CSS custom properties are not accessible in pure SVG attr without vars.\n// Use hardcoded design-system colour references that match the token values.\nconst TONE_COLORS: Record<SparklineTone, string> = {\n positive: 'var(--achery-color-success, #6ba03d)',\n negative: 'var(--achery-color-danger, #8a3a22)',\n neutral: 'var(--achery-color-accent, #c46a3a)',\n}\n\n/**\n * Minimal inline sparkline chart. Pure SVG, no dependencies, SSR-safe.\n *\n * @example\n * ```tsx\n * <Sparkline data={[1,3,2,5,4,6]} tone=\"positive\" width={80} height={28} />\n * ```\n */\nexport function Sparkline({\n data,\n width = 80,\n height = 28,\n tone = 'neutral',\n className,\n}: SparklineProps) {\n const PADDING = 2\n\n if (data.length < 2) {\n return (\n <svg\n viewBox={`0 0 ${width} ${height}`}\n width={width}\n height={height}\n className={[styles.root, className].filter(Boolean).join(' ')}\n aria-hidden=\"true\"\n />\n )\n }\n\n const min = Math.min(...data)\n const max = Math.max(...data)\n const range = max - min || 1\n\n const xStep = (width - PADDING * 2) / (data.length - 1)\n const yScale = (height - PADDING * 2) / range\n\n const points = data\n .map((v, i) => {\n const x = PADDING + i * xStep\n const y = height - PADDING - (v - min) * yScale\n return `${x.toFixed(2)},${y.toFixed(2)}`\n })\n .join(' ')\n\n return (\n <svg\n viewBox={`0 0 ${width} ${height}`}\n width={width}\n height={height}\n className={[styles.root, className].filter(Boolean).join(' ')}\n aria-hidden=\"true\"\n >\n <polyline\n points={points}\n fill=\"none\"\n stroke={TONE_COLORS[tone]}\n strokeWidth={1.4}\n strokeLinejoin=\"round\"\n strokeLinecap=\"round\"\n />\n </svg>\n )\n}\n","import 'src/components/KpiTile/KpiTile.css.ts.vanilla.css?source=LktwaVRpbGVfd3JhcHBlcl9fMXlpOThjNjAgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogbm9uZTsKICBwYWRkaW5nOiAwOwogIGN1cnNvcjogcG9pbnRlcjsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci5LcGlUaWxlX3dyYXBwZXJfXzF5aTk4YzYwOmZvY3VzLXZpc2libGUgewogIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1hY2NlbnRfXzFhY2lieGJkKTsKICBvdXRsaW5lLW9mZnNldDogMnB4Owp9Ci5LcGlUaWxlX3dyYXBwZXJfXzF5aTk4YzYwOmhvdmVyID4gKiB7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmdTdW5rZW5fXzFhY2lieGIyKTsKfQouS3BpVGlsZV9pbm5lcl9fMXlpOThjNjEgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IHZhcigtLXNwYWNlLXNwM19fMWFjaWJ4YngpOwogIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24tZmFzdF9fMWFjaWJ4YjFmKSB2YXIoLS1lYXNlLW91dF9fMWFjaWJ4YjFpKTsKfQouS3BpVGlsZV92YWx1ZV9fMXlpOThjNjIgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWRpc3BsYXlfXzFhY2lieGJzKTsKICBmb250LXdlaWdodDogOTAwOwogIGZvbnQtc2l6ZTogMjhweDsKICBsaW5lLWhlaWdodDogMS4xOwogIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtOwogIGNvbG9yOiB2YXIoLS1jb2xvci1mZ19fMWFjaWJ4YjUpOwp9';\nexport var inner = 'KpiTile_inner__1yi98c61';\nexport var value = 'KpiTile_value__1yi98c62';\nexport var wrapper = 'KpiTile_wrapper__1yi98c60';","import type { ReactNode } from 'react'\nimport { Card } from '../Card/Card'\nimport { Eyebrow } from '../Eyebrow/Eyebrow'\nimport { Badge } from '../Badge/Badge'\nimport { Skeleton } from '../Skeleton/Skeleton'\nimport { Sparkline } from '../Sparkline/Sparkline'\nimport type { SparklineTone } from '../Sparkline/Sparkline'\nimport type { BadgeTone } from '../../types'\nimport * as styles from './KpiTile.css'\n\nconst deltaToneToBadge: Record<SparklineTone, BadgeTone> = {\n positive: 'saved',\n negative: 'stopped',\n neutral: 'neutral',\n}\n\n/** Props for the {@link KpiTile} component. */\nexport interface KpiTileProps {\n /** Eyebrow label above the value (e.g. \"Total Income\"). */\n label: string\n /** Pre-formatted value string (e.g. \"$4,200\"). */\n value: string\n /** Delta label (e.g. \"+$340 vs last month\"). */\n delta?: string\n /** Tone for the delta badge and sparkline. @default 'neutral' */\n deltaTone?: SparklineTone\n /** Data points passed to the internal Sparkline. */\n sparkData?: number[]\n /** Makes the tile a clickable button. */\n onClick?: () => void\n /**\n * When true, renders skeleton placeholders in place of the value and delta.\n * The card shell stays in place so the layout doesn't shift when data arrives.\n */\n loading?: boolean\n className?: string\n}\n\n/**\n * KPI summary tile with eyebrow label, large value, optional delta badge,\n * and optional sparkline.\n *\n * @example\n * ```tsx\n * <KpiTile\n * label=\"Total Income\"\n * value=\"$4,200\"\n * delta=\"+$340 vs last month\"\n * deltaTone=\"positive\"\n * sparkData={[3200, 3500, 3800, 4200]}\n * onClick={() => navigate('/income')}\n * />\n * ```\n */\nexport function KpiTile({\n label,\n value,\n delta,\n deltaTone = 'neutral',\n sparkData,\n onClick,\n loading = false,\n className,\n}: KpiTileProps) {\n const inner: ReactNode = (\n <Card variant=\"stamp\" padding=\"md\" {...(className !== undefined ? { className } : {})}>\n <div className={styles.inner}>\n <Eyebrow>{label}</Eyebrow>\n {loading ? (\n <>\n <Skeleton width=\"55%\" />\n <Skeleton width=\"70%\" />\n </>\n ) : (\n <>\n <span className={styles.value}>{value}</span>\n {delta && (\n <Badge tone={deltaToneToBadge[deltaTone]} dot>\n {delta}\n </Badge>\n )}\n {sparkData && sparkData.length >= 2 && (\n <Sparkline data={sparkData} tone={deltaTone} width={80} height={24} />\n )}\n </>\n )}\n </div>\n </Card>\n )\n\n if (onClick) {\n return (\n <button type=\"button\" onClick={onClick} className={styles.wrapper}>\n {inner}\n </button>\n )\n }\n\n return inner\n}\n","import { Badge } from '../Badge/Badge'\nimport type { BadgeTone } from '../../types'\n\nexport type SubscriptionState = 'stable' | 'drift-up' | 'drift-down' | 'new-price' | 'renewing'\n\n/** Props for the {@link StatePill} component. */\nexport interface StatePillProps {\n /** Subscription lifecycle state. */\n state: SubscriptionState\n className?: string\n}\n\nconst stateMap: Record<SubscriptionState, { tone: BadgeTone; label: string }> = {\n 'stable': { tone: 'neutral', label: 'Stable' },\n 'drift-up': { tone: 'stopped', label: 'Drift up' },\n 'drift-down': { tone: 'saved', label: 'Drift down' },\n 'new-price': { tone: 'drafting', label: 'New price' },\n 'renewing': { tone: 'drafting', label: 'Renewing soon' },\n}\n\n/**\n * Subscription state indicator pill. Wraps {@link Badge} with predefined\n * tone and label for each subscription lifecycle state.\n *\n * @example\n * ```tsx\n * <StatePill state=\"drift-up\" />\n * <StatePill state=\"stable\" />\n * ```\n */\nexport function StatePill({ state, className }: StatePillProps) {\n const { tone, label } = stateMap[state]\n return (\n <Badge tone={tone} dot {...(className !== undefined ? { className } : {})}>\n {label}\n </Badge>\n )\n}\n","import 'src/components/TypeTag/TypeTag.css.ts.vanilla.css?source=LlR5cGVUYWdfdGFnX18xbmYyemhiMCB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vX18xYWNpYnhidSk7CiAgZm9udC1zaXplOiAxMXB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlck11dGVfXzFhY2lieGJiKTsKICBwYWRkaW5nOiAxcHggNXB4OwogIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbm9uZV9fMWFjaWJ4YjE3KTsKfQouVHlwZVRhZ190YWdfdHlwZV9iYXNpY19fMW5mMnpoYjEgewogIGNvbG9yOiB2YXIoLS1jb2xvci1mZzNfXzFhY2lieGI3KTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQouVHlwZVRhZ190YWdfdHlwZV9pbnRlcm5hbF9fMW5mMnpoYjIgewogIGNvbG9yOiB2YXIoLS1jb2xvci1mZzNfXzFhY2lieGI3KTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQouVHlwZVRhZ190YWdfdHlwZV9leGNlcHRpb25hbF9fMW5mMnpoYjMgewogIGNvbG9yOiB2YXIoLS1jb2xvci1kYW5nZXJfXzFhY2lieGJqKTsKICBiYWNrZ3JvdW5kOiByZ2JhKDEzOCw1OCwzNCwwLjA4KTsKICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWRhbmdlcl9fMWFjaWJ4YmopOwp9Ci5UeXBlVGFnX3RhZ190eXBlX2ZlZV9fMW5mMnpoYjQgewogIGNvbG9yOiB2YXIoLS1jb2xvci13YXJuX18xYWNpYnhiaSk7CiAgYmFja2dyb3VuZDogcmdiYSgxODQsMTQ2LDc0LDAuMDgpOwogIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3Itd2Fybl9fMWFjaWJ4YmkpOwp9';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var tag = _7a468({defaultClassName:'TypeTag_tag__1nf2zhb0',variantClassNames:{type:{basic:'TypeTag_tag_type_basic__1nf2zhb1',internal:'TypeTag_tag_type_internal__1nf2zhb2',exceptional:'TypeTag_tag_type_exceptional__1nf2zhb3',fee:'TypeTag_tag_type_fee__1nf2zhb4'}},defaultVariants:{type:'basic'},compoundVariants:[]});","import * as styles from './TypeTag.css'\n\nexport type TransactionType = 'basic' | 'internal' | 'exceptional' | 'fee'\n\n/** Props for the {@link TypeTag} component. */\nexport interface TypeTagProps {\n /** Transaction type — determines colour and label. */\n type: TransactionType\n className?: string\n}\n\nconst labels: Record<TransactionType, string> = {\n basic: 'basic',\n internal: 'internal',\n exceptional: 'exceptional',\n fee: 'fee',\n}\n\n/**\n * Monospace type tag for transaction classification.\n * Colour-coded by type with a muted border.\n *\n * @example\n * ```tsx\n * <TypeTag type=\"exceptional\" />\n * <TypeTag type=\"fee\" />\n * ```\n */\nexport function TypeTag({ type, className }: TypeTagProps) {\n return (\n <span className={[styles.tag({ type }), className].filter(Boolean).join(' ')}>\n {labels[type]}\n </span>\n )\n}\n","import type { HTMLAttributes, ReactNode } from 'react'\nimport type { MaterialIntensity } from '../../types/theme'\n\nimport '../../theme/material.css'\n\n/** Props for the {@link MaterialCard} component. */\nexport interface MaterialCardProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * How much of the material surfaces on this object.\n * - `'chrome'` — material as spine + metal trim only; paper body (default)\n * - `'surface'` — material header band over a paper body\n * - `'full'` — the whole object in material; reserve for rare, celebratory moments\n * @default 'chrome'\n */\n intensity?: MaterialIntensity\n /**\n * Header slot — rendered as `.material__bar`. Receives material background\n * at `surface` and `full` intensities. Pass a string for the title or a\n * ReactNode for a custom bar layout.\n */\n header?: ReactNode\n /**\n * Footer slot — rendered as `.material__foot` with a top border rule.\n * Ideal for action buttons.\n */\n footer?: ReactNode\n children?: ReactNode\n className?: string\n}\n\n/**\n * A contained, bounded surface that wears the project's material signature.\n * Use for modals, dialogs, featured cards, receipts — objects that *arrive*\n * and demand a moment of attention.\n *\n * The working page stays plain paper/ink. The material is the occasion.\n *\n * The parent `<AcheryProvider defaultMaterial=\"leather\">` (or `wood` / `copper`)\n * sets which signature is used; the `intensity` prop controls how loudly it\n * surfaces on this object.\n *\n * @example\n * ```tsx\n * <MaterialCard intensity=\"surface\" header=\"Close the month\" footer={<Button>Bind & archive</Button>}>\n * <Eyebrow>November · ready to bind</Eyebrow>\n * <Body>Seal the ledger and file it to the archive.</Body>\n * </MaterialCard>\n * ```\n */\nexport function MaterialCard({\n intensity = 'chrome',\n header,\n footer,\n children,\n className,\n ...props\n}: MaterialCardProps) {\n const classes = ['material', `m-${intensity}`, className].filter(Boolean).join(' ')\n\n return (\n <div className={classes} {...props}>\n {header !== undefined && (\n <div className=\"material__bar\">\n <span className=\"material__mark\" aria-hidden />\n {typeof header === 'string' ? (\n <span className=\"material__title\">{header}</span>\n ) : (\n header\n )}\n </div>\n )}\n <div className=\"material__body\">\n {children}\n </div>\n {footer !== undefined && (\n <div className=\"material__foot\">\n {footer}\n </div>\n )}\n </div>\n )\n}\n"]}