achery-ui 0.1.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/theme/ThemeProvider.tsx","../src/theme/vars.css.ts","../src/glyphs/Glyph.css.ts","../src/glyphs/GlyphComponents.tsx","../src/glyphs/Glyph.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/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/AppBar/AppBar.css.ts","../src/components/AppBar/AppBar.tsx","../src/components/Table/Table.css.ts","../src/components/Table/Table.tsx","../src/components/Modal/Modal.css.ts","../src/components/Modal/Modal.tsx","../src/components/Toast/Toast.css.ts","../src/components/Toast/Toast.tsx"],"names":["jsx","title","count","jsxs","_7a468","dot","glyph","label","hint","header","marginalia","footer","group","searchInput","brandName","brandSub","searchKbd","actions","useState","body","content","description","createContext","useContext","toast"],"mappings":"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","file":"index.js","sourcesContent":["import { createContext, useContext, useState, useEffect, type ReactNode } from 'react'\nimport type { ThemeContextValue, ThemeMode, AccentColor } from '../types/theme.js'\n\nimport './light.css.js'\nimport './dark.css.js'\nimport './accents.css.js'\nimport './global.css.js'\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null)\n\n/** Props for the {@link AcheryProvider} component. */\nexport interface AcheryProviderProps {\n children: ReactNode\n /**\n * Initial colour theme.\n * @default 'light'\n */\n defaultTheme?: ThemeMode\n /**\n * Initial accent colour.\n * @default 'terracotta'\n */\n defaultAccent?: AccentColor\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 * - 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 * // app entry point\n * import { AcheryProvider } from 'achery-ui'\n *\n * export default function App() {\n * return (\n * <AcheryProvider defaultTheme=\"light\" defaultAccent=\"terracotta\">\n * <YourApp />\n * </AcheryProvider>\n * )\n * }\n * ```\n */\nexport function AcheryProvider({\n children,\n defaultTheme = 'light',\n defaultAccent = 'terracotta',\n className,\n style,\n}: AcheryProviderProps) {\n const [theme, setThemeState] = useState<ThemeMode>(defaultTheme)\n const [accent, setAccentState] = useState<AccentColor>(defaultAccent)\n\n const setTheme = (next: ThemeMode) => setThemeState(next)\n const toggleTheme = () => setThemeState(t => (t === 'light' ? 'dark' : 'light'))\n const setAccent = (next: AccentColor) => setAccentState(next)\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'] = theme\n html.dataset['accent'] = accent\n html.dataset['acheryRoot'] = ''\n return () => {\n delete html.dataset['theme']\n delete html.dataset['accent']\n delete html.dataset['acheryRoot']\n }\n }, [theme, accent])\n\n return (\n <ThemeContext.Provider value={{ theme, setTheme, toggleTheme, accent, setAccent }}>\n <div\n data-achery-root=\"\"\n data-theme={theme}\n data-accent={accent}\n className={className}\n style={style}\n >\n {children}\n </div>\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 { theme, toggleTheme, accent, setAccent } = useTheme()\n * return (\n * <Button\n * glyph={theme === 'dark' ? 'sun' : 'moon'}\n * onClick={toggleTheme}\n * aria-label=\"Toggle theme\"\n * />\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)'},font:{display:'var(--font-display__1acibxbn)',body:'var(--font-body__1acibxbo)',mono:'var(--font-mono__1acibxbp)'},space:{sp1:'var(--space-sp1__1acibxbq)',sp2:'var(--space-sp2__1acibxbr)',sp3:'var(--space-sp3__1acibxbs)',sp4:'var(--space-sp4__1acibxbt)',sp5:'var(--space-sp5__1acibxbu)',sp6:'var(--space-sp6__1acibxbv)',sp7:'var(--space-sp7__1acibxbw)',sp8:'var(--space-sp8__1acibxbx)',sp9:'var(--space-sp9__1acibxby)',sp10:'var(--space-sp10__1acibxbz)',sp11:'var(--space-sp11__1acibxb10)',sp12:'var(--space-sp12__1acibxb11)'},radius:{none:'var(--radius-none__1acibxb12)',hairline:'var(--radius-hairline__1acibxb13)',sm:'var(--radius-sm__1acibxb14)',pill:'var(--radius-pill__1acibxb15)'},shadow:{stamp:'var(--shadow-stamp__1acibxb16)',stampLg:'var(--shadow-stampLg__1acibxb17)',press:'var(--shadow-press__1acibxb18)',soft:'var(--shadow-soft__1acibxb19)'},duration:{fast:'var(--duration-fast__1acibxb1a)',base:'var(--duration-base__1acibxb1b)',slow:'var(--duration-slow__1acibxb1c)'},ease:{out:'var(--ease-out__1acibxb1d)',snap:'var(--ease-snap__1acibxb1e)'}};","import 'src/glyphs/Glyph.css.ts.vanilla.css?source=LkdseXBoX2dseXBoX19rYnZ2NDIwIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGZsZXgtc2hyaW5rOiAwOwp9';\nexport var glyph = 'Glyph_glyph__kbvv420';","// AUTO-GENERATED — do not edit manually. Run: node scripts/generate-glyphs.mjs\nimport type { SVGProps } from 'react'\n\ntype P = SVGProps<SVGSVGElement>\n\nexport function ArrowRight(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...props}><path d=\"M3 12h18\"></path><polyline points=\"15,6 21,12 15,18\"></polyline></svg> }\nexport function ArrowUp(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...props}><path d=\"M12 3v18\"></path><polyline points=\"6,9 12,3 18,9\"></polyline></svg> }\nexport function Asterism(props: P) { return <svg viewBox=\"0 0 60 24\" fill=\"currentColor\" {...props}><circle cx=\"14\" cy=\"16\" r=\"2\"></circle><circle cx=\"30\" cy=\"8\" r=\"2\"></circle><circle cx=\"46\" cy=\"16\" r=\"2\"></circle></svg> }\nexport function Book(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" strokeLinecap=\"round\" {...props}><path d=\"M4 5v14\"></path><path d=\"M20 5v14\"></path><path d=\"M4 5c4-1 8-1 8 1v14c0-2-4-2-8-1\"></path><path d=\"M20 5c-4-1-8-1-8 1v14c0-2 4-2 8-1\"></path></svg> }\nexport function Circle(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" {...props}><circle cx=\"12\" cy=\"12\" r=\"8\"></circle></svg> }\nexport function Compass(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" {...props}><circle cx=\"12\" cy=\"12\" r=\"9\"></circle><polygon points=\"12,5 14,12 12,19 10,12\" fill=\"currentColor\"></polygon></svg> }\nexport function Cross(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" {...props}><line x1=\"5\" y1=\"5\" x2=\"19\" y2=\"19\"></line><line x1=\"19\" y1=\"5\" x2=\"5\" y2=\"19\"></line></svg> }\nexport function Eye(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" strokeLinecap=\"round\" {...props}><path d=\"M2 12c3-5 7-7 10-7s7 2 10 7c-3 5-7 7-10 7s-7-2-10-7z\"></path><circle cx=\"12\" cy=\"12\" r=\"3\"></circle><circle cx=\"12\" cy=\"12\" r=\"1\" fill=\"currentColor\"></circle></svg> }\nexport function Feather(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...props}><path d=\"M20 4c-8 0-14 6-14 14v2h2c8 0 14-6 14-14V4z\"></path><path d=\"M6 20L20 6\"></path></svg> }\nexport function Fern(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" {...props}><path d=\"M12 21V4\"></path><path d=\"M12 4c-2 1-3 3-3 5\"></path><path d=\"M12 9c-2 1-3 3-3 5\"></path><path d=\"M12 14c-2 1-3 3-3 5\"></path><path d=\"M12 6c2 1 3 3 3 5\"></path><path d=\"M12 11c2 1 3 3 3 5\"></path></svg> }\nexport function Flask(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" strokeLinecap=\"round\" {...props}><path d=\"M9 3h6\"></path><path d=\"M10 3v6L5 19a2 2 0 0 0 2 3h10a2 2 0 0 0 2-3l-5-10V3\"></path><path d=\"M7 15h10\"></path></svg> }\nexport function Flourish(props: P) { return <svg viewBox=\"0 0 120 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" {...props}><path d=\"M2 12 H42\"></path><path d=\"M42 12 c4 -6 10 -6 14 0 c4 6 10 6 14 0\"></path><circle cx=\"60\" cy=\"12\" r=\"1.4\" fill=\"currentColor\"></circle><path d=\"M78 12 H118\"></path></svg> }\nexport function Hand(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" strokeLinecap=\"round\" {...props}><path d=\"M8 21v-6l-3-3v-3a1 1 0 0 1 2 0v3\"></path><path d=\"M8 12V5a1 1 0 0 1 2 0v6\"></path><path d=\"M10 11V4a1 1 0 0 1 2 0v8\"></path><path d=\"M12 12V6a1 1 0 0 1 2 0v8\"></path><path d=\"M14 12v-3a1 1 0 0 1 2 0v9c0 2-2 4-4 4\"></path></svg> }\nexport function Hex(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" {...props}><polygon points=\"12,3 21,8 21,16 12,21 3,16 3,8\"></polygon></svg> }\nexport function Key(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" strokeLinecap=\"round\" {...props}><circle cx=\"7\" cy=\"12\" r=\"4\"></circle><path d=\"M11 12h11\"></path><path d=\"M18 12v4\"></path><path d=\"M22 12v3\"></path></svg> }\nexport function Leaf(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...props}><path d=\"M4 20c0-9 7-16 16-16 0 9-7 16-16 16z\"></path><path d=\"M4 20l8-8\"></path></svg> }\nexport function Mark(props: P) { return <svg viewBox=\"0 0 80 80\" fill=\"currentColor\" stroke=\"currentColor\" strokeLinejoin=\"miter\" strokeLinecap=\"square\" {...props}>\n <polygon points=\"40,4 72,22 72,58 40,76 8,58 8,22\" fill=\"none\" strokeWidth=\"6\"></polygon>\n <polygon points=\"40,12 56,32 24,32\" stroke=\"none\"></polygon>\n <rect x=\"33\" y=\"28\" width=\"14\" height=\"30\" stroke=\"none\"></rect>\n <polygon points=\"24,50 33,58 33,52\" stroke=\"none\"></polygon>\n <polygon points=\"56,50 47,58 47,52\" stroke=\"none\"></polygon>\n</svg> }\nexport function Mercury(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...props}>\n <circle cx=\"12\" cy=\"9\" r=\"5\"></circle>\n <path d=\"M12 14v7\"></path>\n <path d=\"M8 18h8\"></path>\n <path d=\"M9 21h6\"></path>\n</svg> }\nexport function Minus(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" {...props}><line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\"></line></svg> }\nexport function Moon(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...props}><path d=\"M16 4a8 8 0 1 0 0 16 6 6 0 0 1 0-16z\"></path></svg> }\nexport function Plus(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" {...props}><line x1=\"12\" y1=\"4\" x2=\"12\" y2=\"20\"></line><line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\"></line></svg> }\nexport function Salt(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...props}><circle cx=\"12\" cy=\"12\" r=\"8\"></circle><path d=\"M4 12h16\"></path></svg> }\nexport function Scroll(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" strokeLinecap=\"round\" {...props}><path d=\"M5 6a2 2 0 0 1 4 0v12a2 2 0 0 0 4 0V8h6v10a3 3 0 0 1-3 3H7\"></path><path d=\"M5 6v0a2 2 0 0 0 2 2h6\"></path></svg> }\nexport function Sigil(props: P) { return <svg viewBox=\"0 0 48 48\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.2\" {...props}><circle cx=\"24\" cy=\"24\" r=\"20\"></circle><circle cx=\"24\" cy=\"24\" r=\"14\"></circle><polygon points=\"24,8 38,32 10,32\"></polygon><polygon points=\"24,40 10,16 38,16\"></polygon><circle cx=\"24\" cy=\"24\" r=\"3\"></circle></svg> }\nexport function Sprig(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" {...props}><path d=\"M12 3v18\"></path><path d=\"M12 7c-2-1-3-1-5-1 0 2 1 3 5 4\"></path><path d=\"M12 11c2-1 3-1 5-1 0 2-1 3-5 4\"></path><path d=\"M12 15c-2-1-3-1-5-1 0 2 1 3 5 4\"></path></svg> }\nexport function Square(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" {...props}><rect x=\"4\" y=\"4\" width=\"16\" height=\"16\"></rect></svg> }\nexport function Star(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" {...props}><polygon points=\"12,3 14,10 21,10 15.5,14 17.5,21 12,17 6.5,21 8.5,14 3,10 10,10\"></polygon></svg> }\nexport function Sulfur(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...props}><path d=\"M12 3l4 6h-8z\"></path><circle cx=\"12\" cy=\"14\" r=\"4\"></circle><path d=\"M12 18v3\"></path><path d=\"M9 21h6\"></path></svg> }\nexport function Sun(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" {...props}><circle cx=\"12\" cy=\"12\" r=\"7\"></circle><circle cx=\"12\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"></circle></svg> }\nexport function Tick(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...props}><polyline points=\"4,13 10,19 20,5\"></polyline></svg> }\nexport function TriangleDown(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" {...props}><polygon points=\"12,20 21,4 3,4\"></polygon></svg> }\nexport function Triangle(props: P) { return <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" {...props}><polygon points=\"12,4 21,20 3,20\"></polygon></svg> }\nexport function Wordmark(props: P) { return <svg viewBox=\"0 0 320 80\" fill=\"currentColor\" stroke=\"currentColor\" strokeLinejoin=\"miter\" strokeLinecap=\"square\" {...props}>\n <g transform=\"translate(40,40) scale(0.72) translate(-40,-40)\">\n <polygon points=\"40,4 72,22 72,58 40,76 8,58 8,22\" fill=\"none\" strokeWidth=\"6\"></polygon>\n <polygon points=\"40,12 56,32 24,32\" stroke=\"none\"></polygon>\n <rect x=\"33\" y=\"28\" width=\"14\" height=\"30\" stroke=\"none\"></rect>\n <polygon points=\"24,50 33,58 33,52\" stroke=\"none\"></polygon>\n <polygon points=\"56,50 47,58 47,52\" stroke=\"none\"></polygon>\n </g>\n <g transform=\"translate(82,52)\" fontFamily=\"&#39;Roboto Slab&#39;, serif\" fontWeight=\"900\" fontSize=\"34\" letterSpacing=\"2\" stroke=\"none\">\n <text x=\"0\" y=\"0\">ACHERY</text>\n </g>\n <g transform=\"translate(82,72)\" fontFamily=\"&#39;Space Grotesk&#39;, sansSerif\" fontWeight=\"600\" fontSize=\"10\" letterSpacing=\"6\" stroke=\"none\">\n <text x=\"2\" y=\"0\">— W O R K S H O P —</text>\n </g>\n</svg> }\n","import type { SVGProps, FC } from 'react'\nimport type { GlyphName } from '../types/components.js'\nimport * as styles from './Glyph.css.js'\nimport * as GlyphComponents from './GlyphComponents.js'\n\ntype SvgComponent = FC<SVGProps<SVGSVGElement>>\n\nconst glyphMap: Record<GlyphName, SvgComponent> = {\n 'arrow-right': GlyphComponents.ArrowRight,\n 'arrow-up': GlyphComponents.ArrowUp,\n 'asterism': GlyphComponents.Asterism,\n 'book': GlyphComponents.Book,\n 'circle': GlyphComponents.Circle,\n 'compass': GlyphComponents.Compass,\n 'cross': GlyphComponents.Cross,\n 'eye': GlyphComponents.Eye,\n 'feather': GlyphComponents.Feather,\n 'fern': GlyphComponents.Fern,\n 'flask': GlyphComponents.Flask,\n 'flourish': GlyphComponents.Flourish,\n 'hand': GlyphComponents.Hand,\n 'hex': GlyphComponents.Hex,\n 'key': GlyphComponents.Key,\n 'leaf': GlyphComponents.Leaf,\n 'mark': GlyphComponents.Mark,\n 'mercury': GlyphComponents.Mercury,\n 'minus': GlyphComponents.Minus,\n 'moon': GlyphComponents.Moon,\n 'plus': GlyphComponents.Plus,\n 'salt': GlyphComponents.Salt,\n 'scroll': GlyphComponents.Scroll,\n 'sigil': GlyphComponents.Sigil,\n 'sprig': GlyphComponents.Sprig,\n 'square': GlyphComponents.Square,\n 'star': GlyphComponents.Star,\n 'sulfur': GlyphComponents.Sulfur,\n 'sun': GlyphComponents.Sun,\n 'tick': GlyphComponents.Tick,\n 'triangle': GlyphComponents.Triangle,\n 'triangle-down': GlyphComponents.TriangleDown,\n 'wordmark': GlyphComponents.Wordmark,\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 33 icons in the Achery glyph set.\n *\n * **Geometric:** `circle`, `square`, `triangle`, `triangle-down`, `hex`, `minus`, `plus`, `cross`, `tick`, `arrow-right`, `arrow-up`\n *\n * **Botanical / alchemical:** `fern`, `sprig`, `leaf`, `feather`, `flourish`, `asterism`, `sigil`, `salt`, `sulfur`, `mercury`\n *\n * **Editorial / tools:** `book`, `scroll`, `feather`, `key`, `flask`, `compass`, `eye`, `hand`, `star`, `moon`, `sun`\n *\n * **Brand:** `mark`, `wordmark`\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\n/**\n * Renders a single SVG glyph from the Achery icon set. Each glyph is inlined\n * as a React component — tree-shakeable, 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 *\n * @example\n * ```tsx\n * // Decorative\n * <Glyph name=\"fern\" size={24} />\n *\n * // Semantic (in an icon-only button)\n * <button aria-label=\"Close\"><Glyph name=\"cross\" size={16} /></button>\n * ```\n */\nexport function Glyph({ name, size = 16, title, className, style, ...props }: GlyphProps) {\n const SvgComponent = glyphMap[name]\n\n if (!SvgComponent) {\n return (\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 return (\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 )\n}\n","import 'src/components/Typography/Typography.css.ts.vanilla.css?source=#H4sIAAAAAAAAE7WSy27CMBBF93yFl-3CkfMkhF_ort2jSXASS45tOeaRVv33igCmEAQCk2VuRjPnjMf76pSsNKi6WyxZqzh0i4W_jvim0gT9TBAqpTC4hIbxLkNr0G8Y99GpGgqWb3PxPj9WbyirapOhGSE2a9k3zVCaqu0u4kxQXB_KiDeL-5AaQzVuFRRMVBnCxCMBbXa_CsmlPo7vP3BZ2dFxP7oBXTGRITKf_E68f161b5V8V6XpQClKrij5HklHVQqsUvB6pTB6UMl_hVJolUJXpXigFFx_pcAdO7LY0QjYZCzs2GLHN7FzuTwxyyFzMmD2j9dzcSjEI-n-TgzdGmw0iLaUusnQSimqC2ips9aBdi-WPCV2IXG--Ch-CeIHhaXFnLpgXj_rG5iBbZbc5_xsgHMLmrqABqOBNlJIyzi7yXgo3bdVA8bQ8c37XmvQDITBYtVQzYoMGchXHPQuaO-KnG8cXGx8140_rvMHo3kHSU4IAAA';\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.js'\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=LkV5ZWJyb3dfZXllYnJvd19fYjhybHIzMCB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IHZhcigtLXNwYWNlLXNwM19fMWFjaWJ4YnMpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHlfXzFhY2lieGJvKTsKICBmb250LXNpemU6IDExcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBsZXR0ZXItc3BhY2luZzogMC4xOGVtOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgY29sb3I6IHZhcigtLWNvbG9yLWZnMl9fMWFjaWJ4YjYpOwp9Ci5FeWVicm93X2NvdW50X19iOHJscjMxIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9fXzFhY2lieGJwKTsKICBmb250LXNpemU6IDEwcHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBsZXR0ZXItc3BhY2luZzogMDsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICBjb2xvcjogdmFyKC0tY29sb3ItZmczX18xYWNpYnhiNyk7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmcyX18xYWNpYnhiMSk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyTXV0ZV9fMWFjaWJ4YmIpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1waWxsX18xYWNpYnhiMTUpOwogIG1pbi13aWR0aDogMThweDsKICBoZWlnaHQ6IDE2cHg7CiAgcGFkZGluZzogMCA1cHg7CiAgbGluZS1oZWlnaHQ6IDE7Cn0';\nexport var count = 'Eyebrow_count__b8rlr31';\nexport var eyebrow = 'Eyebrow_eyebrow__b8rlr30';","import type { ReactNode, HTMLAttributes } from 'react'\nimport * as styles from './Eyebrow.css.js'\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=#H4sIAAAAAAAAE8WW0Y6bMBBF3_MVlqpKzQMRJoHNOm_th0QDdogbsF1jErLV_nuFE-xkWVeVQOpLJDzm-HKdO5rVd6Al2-f2d4-5zq5tEqPfC4Qob1QFV4K4qLhg0aFi3W6BEFS8FBE3rG4IKpgwTPfLJSiCUmW3HKQw0QFqXl0JOoP-FkV2KZf0ut9jKHje5XLptjb8jRGE44e3L4yXR0NQFsf9WsWMYTpqFBRclATFK5yxuq8Y1pnIaBDNQeqaoFYppgtoWF9UQKndv1Yd2t7wudSU6UgD5W0zyLs9RUIK5gTixCq0H3-8y8H9yuXIDbNaGEFCXjSo3eJ9sXr08gyagzB72Zoe4LwF620OxanUshWUIKtdgWbCBCmNrDh1jNwyCllJPei3D1FeOvHxMghTvKocq7jp-Ysn9-13T1Lryb_qL2St-l372B1IH8V_2UAK68RfC0FYdch-ri-GoNhB2cjVaeTEkQ_zyV07aPkEzbevyQYC0KEYgm4c9Dj2YBI5dWQ-n9zMQX8-QbewhiRk7FAMQV8c9DT2YBJ568jVfHJfHbR-gqZ0A1nI2KEYzIJPmBibMA3tcyZnFOwzpkL97FAmrvNky88Peup_turfgXET9Of7OP4aGTZFxMf9QQE-uvq_GOAD3jxda5ZDvKaBax2KQapPuBn_D6ehfc7bGQX7jJ_n63PYh_wyc19OfNK7-QQnPuTX-Vpd4kP-NnNrTnx-cTyjYp9KjJ-wL5CybcjeoRjE-rDhZOzENLaPHF5PkEyl8aCNBV04NUeCstvkPAzB2aeDdBp__TgaFq3ux8IfvRw72Vesi5qj5uJEULxbvP8BQnceVn8MAAA';\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.js'\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=#H4sIAAAAAAAAE71X227bOBB9z1cQfYqBMJCcW6tFX1qg6Mt-wWJhUORIZiuRLDnyZRf99wUpm5QdSXHQZh8cR5zRnDMzZ2jy9lOHqNWq7L9WOWprf_CM_HtFiJDONGxfEKkaqYBWDez-uCKENbJWVCK0riAcFIL1y986h7LaU64VgsKhqWamIBtmryl1hnGgztyvVjnjstyVuPAulVZIK9bKZn90DUulFvvoqpPrFmS9xoI8ZplfawARbIguVV2Q7DbPoPUWhB1StEy5Stu2IJ0xYDlz4I2ltgJsQXKzI043UhyguW60pb01on9YpFeoZUJ27ki1f6JKK4ju-TL48846bQtitDyWI7CRKLUqSGR2iCQ6y7yFVsxhisUWBzswB1R3A5NY3JBS76hbM6G3vxaG8e-11Z0SvxDGZ6g79JIpiK9I7IIArvt4ybBdS4ReFX5xa5nxy53z3YQGOB59f17dTqi1qDTvHN1IJ8sGgnYjgeVoZxn34oysT0hTXVUOMLw6iyqkY2UD4oZMufzFrGT06PfxHdoO3v3dE_RKxb1X6v1QJkojZU2jtyD88kE1FDag0E2WYuOBFK6MlS2z-8ggD1iprcVJFao6VuCh16pfPvUpk0920P9RanGkwxN1yFqThPC4eA3PYq03YAul8TrWdRHID0Y3_NswhGuam90N8X-fcbozu_DJSDaX7CuoMY5yAxdzW3pqyxFmL_TOAddKDKGXs91zna0YT_vN3VQLL818hMB0W6ZYlfUyaWC4YW6lwPXUUM1RmC7_pBSNBecSjfdzWcetoMe7m81udN8YKXnv9yUVHoalmHzhLPBvGbXz_N5-0kZyuZzd_zRs9Vq7BHv_rOkBwTALCienKgn98YXu9pY_O0zTWs5V5YzddMtenvaXaZ2cby6m9MZTKZiqA7Ue72F2KqNzH_nbK37LpkozGvK3zON5Zm8_jyO5XM7ujefRyX9g5doI-BhChxO-NxUkz024dBgmRDjZP5gdybN-ceRecRfzdGN5BrxWRLynZ3jLM7wnj3f2q_W9FF_lYNt6n6KMXGFarXRkZdIVpgf80OM9v8BkD-MXmOPJeXCCfPLPLbO1VLSBCs-LknYqO9D98NrDO-v3us9eMCfpe5f7nuLczWfNpPWH5zQE_jjy8z_BOeYWYA4AAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var button = _7a468({defaultClassName:'Button_button__1torrqc0',variantClassNames:{variant:{primary:'Button_button_variant_primary__1torrqc1',secondary:'Button_button_variant_secondary__1torrqc2',accent:'Button_button_variant_accent__1torrqc3',ghost:'Button_button_variant_ghost__1torrqc4',danger:'Button_button_variant_danger__1torrqc5'},size:{sm:'Button_button_size_sm__1torrqc6',md:'Button_button_size_md__1torrqc7'}},defaultVariants:{variant:'secondary',size:'md'},compoundVariants:[]});\nexport var kbdHint = 'Button_kbdHint__1torrqc8';","import type { ButtonHTMLAttributes, ReactNode } from 'react'\nimport type { RecipeVariants } from '@vanilla-extract/recipes'\nimport { Glyph } from '../../glyphs/Glyph.js'\nimport type { GlyphName } from '../../types/components.js'\nimport * as styles from './Button.css.js'\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 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 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 {...props}\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 </button>\n )\n}\n","import 'src/components/Toggle/Toggle.css.ts.vanilla.css?source=#H4sIAAAAAAAAE6VUXYvbMBB8z68QB4ULVCFOcker0Nf-gj4USglrae0sUSShlS9Jy_334s_Ed0kK7ZulXc3MakaeffNlaXGTIujdZpNi2B_0XPyeCGGIg4WTEuQsOZSFxeN6IgRYKp2khHtWQqNLGOvtA5m0VWI1D03XFqncJiUWi3ad-2gwygiGKlbiBeKj7FYykLWbTQaa8mOePU3P_Upk4SjYWzLdEe2tj7KtDmc-t0dA78roK2fUqJmrWIDGoXvZdOsqso9KBE_9CAGMIVcq0WlOERxTIu_UBXiHbaoIdUkWwOmsHqZdHYFR-uqiZKYf-2tohP0HUK2u9kPyNpLbKTFfT14ns6tm_jCQQHKChF8evHv42bh767JA15YOXObCjLbjr-23dKjC64rlCzHlFhsRvkp1tJoLv-LyVS3dGemLgjF1Xt3kNMSQWzQtXQBN6aTEfLa6jIDzSYK1_oBmBLWt9nkPlTUIXciz53HI-_WbkD_NP9zLZVEOo7WZv8xb8134uH-bkhz4HOUsH6WEHYRzDRsz3tt_Z76BtRNgIeH3x-xTON59Ya1RX8_z4CgHhwgh1M-1pVr8y--lhNBzcgCNksNqoEsjOgs52p5s2ZAV3iVZwJ7sqUdptnJvTgOKb59Vvc_0C5XIlq2tV3L_zruKMUpGizrVgXK4nrz-AZYM-99dBQAA';\nexport var label = 'Toggle_label__trpmwc3';\nexport var thumb = 'Toggle_thumb__trpmwc1';\nexport var track = 'Toggle_track__trpmwc0';\nexport var wrapper = 'Toggle_wrapper__trpmwc2';","import * as RadixToggle from '@radix-ui/react-toggle'\nimport type { ReactNode } from 'react'\nimport * as styles from './Toggle.css.js'\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 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 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 </span>\n )\n}\n","import 'src/components/Marginalia/Marginalia.css.ts.vanilla.css?source=Lk1hcmdpbmFsaWFfbWFyZ2luYWxpYV9fZWxjMjl6MCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogdmFyKC0tc3BhY2Utc3AzX18xYWNpYnhicyk7CiAgcmlnaHQ6IHZhcigtLXNwYWNlLXNwM19fMWFjaWJ4YnMpOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwogIGNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQyX18xYWNpYnhiZik7Cn0';\nexport var marginalia = 'Marginalia_marginalia__elc29z0';","import type { GlyphName } from '../../types/components.js'\nimport { Glyph } from '../../glyphs/Glyph.js'\nimport * as styles from './Marginalia.css.js'\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=#H4sIAAAAAAAAE7VVwW7bOBC95yuIAoYSbOnIVqw4CnxpkEMPvSwKLPZkjMmRzJYmCZKylV3svy9IWrLsbd0CxV5saobz5s3jDDn9qEzr17VAyX_X2q_X5aHwAnPy9w0hXDgj4a0itcTu-YbEf8qFReaFVhVhWrY7FTwNmIrswd5S6gwwpM7M1-sZMLHpNvbu-eafm2nKJWGDss8zi3lqrTytYSfkWw8STRvN3wYQfffcb3XiL6zILDfdYDqgaLa-ImWeB5tE79FGKkI1FcmnsyXugsdj56m3oFyt7a4irTFoGTgMTqaltj2F-EHr5lRHOa5jK9Qg1_xqGTut9IBhvlfGN3MXQ9zjODdaq-1n7AYCxf9DgINq0A6hX8YcRPj9AA57Dg-_cpbFFRGGsEUM2wD72ljdKn6-0bW2BobD7iLt1pajrcjMdMRpKfhZTPIOIU-jEGqBi9b1OdIXVVqdMszmcb8BzmOXPZpuUPMguN8GcfNJ-NStl0JhRQJA7MPQgiKN0TFhpHRMx1sLwUlrcP6UEO6OfgSHVLcjF79-OFVlJDDcasnRxpP6ptafWn-qb_kDyFqz1kWscQXnkMAYqhNNPlb4qNE8KTbIWJqOPAXbtdxcONhI5DG9DnPu38KcL2IbtdYFIkp7ClLqA_JLtNcwQj3c4j35vu-nyrw2KeHKAYvQI5YRy2Jq_T1aLxjIwHsnFN0eb7JlfiaBQ4nMp_UR5zHigDEIFhQbNddRSmoT1HyZFD5NDhU7aLAirZW37zh4qKLh3u2b37qdfD8pXty-Id1OKrfKtt6b6v7-cDhMD8VU2-Z-nud52JylPl9ls3lGEvO03gs8fNDdKstJTuYPZP6QkVpIucoCx4w4b_VXXGWstRaVfwki9lbaY04fBlMYHgZmlUX6Z-YvWqjePileJ8WLAb8lfJV9KsmTLElJSlpm98kXWE-K13cXVwm1aBB8kPC4vPAb3U9rFJUsTUdCZ6MdN5zRIplG5waWbf-w4ZiGnlrGkxtBogQv9vifuI9Mqz7o6SIINk7L1mN672pfpaEhxGtTkUW6d0YvXVxK8PjnLV3kk7uffHRIXxTFPSrv-i67ZDruTEhUj12YyBWpn_8FfSxAw3IIAAA';\nexport var errorText = 'Input_errorText__6w3tie3';\nexport var fieldRoot = 'Input_fieldRoot__6w3tie0';\nexport var hint = 'Input_hint__6w3tie2';\nexport var inputBase = 'Input_inputBase__6w3tie4';\nexport var inputError = 'Input_inputError__6w3tie5';\nexport var label = 'Input_label__6w3tie1';\nexport var searchIcon = 'Input_searchIcon__6w3tie9';\nexport var searchInput = 'Input_searchInput__6w3tiea Input_inputBase__6w3tie4';\nexport var searchWrapper = 'Input_searchWrapper__6w3tie8';\nexport var selectInput = 'Input_selectInput__6w3tie7 Input_inputBase__6w3tie4';\nexport var textarea = 'Input_textarea__6w3tie6 Input_inputBase__6w3tie4';","import type {\n InputHTMLAttributes,\n TextareaHTMLAttributes,\n SelectHTMLAttributes,\n ReactNode,\n} from 'react'\nimport { Glyph } from '../../glyphs/Glyph.js'\nimport * as styles from './Input.css.js'\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/** 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 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 * ```\n */\nexport function Input({ error, className, ...props }: InputProps) {\n return (\n <input\n className={[styles.inputBase, error && styles.inputError, className].filter(Boolean).join(' ')}\n {...props}\n />\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 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, className, ...props }: TextareaProps) {\n return (\n <textarea\n className={[styles.textarea, error && styles.inputError, className].filter(Boolean).join(' ')}\n {...props}\n />\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 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, children, className, ...props }: SelectProps) {\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\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=LkNhcmRfY2FyZF9fMXVwcmdycjAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlX18xYWNpYnhiMyk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyX18xYWNpYnhiOSk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW5vbmVfXzFhY2lieGIxMik7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouQ2FyZF9jYXJkX3ZhcmlhbnRfc3RhbXBfXzF1cHJncnIyIHsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc3RhbXBfXzFhY2lieGIxNik7Cn0KLkNhcmRfY2FyZF92YXJpYW50X3N0YW1wTGdfXzF1cHJncnIzIHsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc3RhbXBMZ19fMWFjaWJ4YjE3KTsKfQouQ2FyZF9jYXJkX3BhZGRpbmdfbm9uZV9fMXVwcmdycjQgewogIHBhZGRpbmc6IDA7Cn0KLkNhcmRfY2FyZF9wYWRkaW5nX3NtX18xdXByZ3JyNSB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2Utc3A1X18xYWNpYnhidSk7Cn0KLkNhcmRfY2FyZF9wYWRkaW5nX21kX18xdXByZ3JyNiB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2Utc3A2X18xYWNpYnhidik7Cn0KLkNhcmRfY2FyZF9wYWRkaW5nX2xnX18xdXByZ3JyNyB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2Utc3A4X18xYWNpYnhieCk7Cn0KLkNhcmRfY2FyZEhlYWRlcl9fMXVwcmdycjggewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcl9fMWFjaWJ4YjkpOwogIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS1zcDNfXzFhY2lieGJzKTsKICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS1zcDRfXzFhY2lieGJ0KTsKfQ';\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.js'\nimport type { GlyphName } from '../../types/components.js'\nimport * as styles from './Card.css.js'\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=LlRhYnNfdGFiTGlzdF9fMWIweGo5djAgewogIGRpc3BsYXk6IGZsZXg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcl9fMWFjaWJ4YjkpOwp9Ci5UYWJzX3RhYl9fMWIweGo5djEgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHlfXzFhY2lieGJvKTsKICBmb250LXNpemU6IDEwcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBsZXR0ZXItc3BhY2luZzogMC4xNmVtOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgcGFkZGluZzogdmFyKC0tc3BhY2Utc3A0X18xYWNpYnhidCkgdmFyKC0tc3BhY2Utc3A1X18xYWNpYnhidSk7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiBub25lOwogIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCB0cmFuc3BhcmVudDsKICBtYXJnaW4tYm90dG9tOiAtMXB4OwogIGNvbG9yOiB2YXIoLS1jb2xvci1mZzJfXzFhY2lieGI2KTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tZHVyYXRpb24tZmFzdF9fMWFjaWJ4YjFhKSB2YXIoLS1lYXNlLW91dF9fMWFjaWJ4YjFkKTsKICBvdXRsaW5lOiBub25lOwp9Ci5UYWJzX3RhYl9fMWIweGo5djFbZGF0YS1zdGF0ZT0iYWN0aXZlIl0gewogIGNvbG9yOiB2YXIoLS1jb2xvci1mZ19fMWFjaWJ4YjUpOwogIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudF9fMWFjaWJ4YmQpOwp9Ci5UYWJzX3RhYl9fMWIweGo5djE6aG92ZXI6bm90KFtkYXRhLXN0YXRlPSJhY3RpdmUiXSkgewogIGNvbG9yOiB2YXIoLS1jb2xvci1mZ19fMWFjaWJ4YjUpOwp9Ci5UYWJzX3RhYl9fMWIweGo5djE6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLWFjY2VudF9fMWFjaWJ4YmQpOwogIG91dGxpbmUtb2Zmc2V0OiAtMnB4Owp9Ci5UYWJzX3RhYlBhbmVsX18xYjB4ajl2MiB7CiAgb3V0bGluZTogbm9uZTsKfQ';\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.js'\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=QGtleWZyYW1lcyBUb29sdGlwX2ZhZGVJbl9fbzM0d29xMCB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgfQogIHRvIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQp9Ci5Ub29sdGlwX2NvbnRlbnRfX28zNHdvcTEgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHlfXzFhY2lieGJvKTsKICBmb250LXNpemU6IDExcHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBsaW5lLWhlaWdodDogMS40OwogIGNvbG9yOiB2YXIoLS1jb2xvci1iZ19fMWFjaWJ4YjApOwogIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWZnX18xYWNpYnhiNSk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZmdfXzFhY2lieGI1KTsKICBwYWRkaW5nOiA0cHggOHB4OwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1ub25lX18xYWNpYnhiMTIpOwogIG1heC13aWR0aDogMjQwcHg7CiAgei1pbmRleDogMjAwOwogIGFuaW1hdGlvbjogVG9vbHRpcF9mYWRlSW5fX28zNHdvcTAgdmFyKC0tZHVyYXRpb24tZmFzdF9fMWFjaWJ4YjFhKSB2YXIoLS1lYXNlLW91dF9fMWFjaWJ4YjFkKTsKfQouVG9vbHRpcF9jb250ZW50X19vMzR3b3ExW2RhdGEtc3RhdGU9ImRlbGF5ZWQtb3BlbiJdIHsKICBhbmltYXRpb24tbmFtZTogVG9vbHRpcF9mYWRlSW5fX28zNHdvcTA7Cn0';\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.js'\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=#H4sIAAAAAAAAE51VTW_bMAy951cIBQYsBxW223Soip12GrCddhyGQJZoW6gsCRKdOhv63wfLsRw3H8V2EmyReuTjI3n7Q0koud-Gw7nNTdb3lcjInxUhUgWn-Z6RSkP_tCLxpFJ5EKisYURY3bVmuHlREhtGiiJz0bK0XoKnXtUNMpK7ngSrlSQ77j9SKqy2no42223OhSr78nEdHbl4rr3tjGRL47pIlnm0dFxKZerJLDgugAb3kMx2a5KRbDBt4BBHln0Yvu0OfKXtCyO8Q_u0el3dTkwM2C7xkEceElL2BmuTsLr1lTCOCCktom1HRiQPDZyj5HuHkNzL6N5yXyuT3C-HcS0ZpnlAKhqlZczrTUzGGjiDlZ0--Y2XoNO7xVIspbbiOarFGqQVb5XeTxHHX6WV-xSxXSfToH4DI4-jgOKfl0PdHrJYRg2I4GPaYzluiwza4QahR4qem1BZ3zLSOQde8BDzidQu1VTVdymCT-8TfJ-McUmw4buvCG2i4m5JRe2VHB4fTorQOs0R6Ng1gZH83vUkr_xBhYRwrWpDFUIbGBFgEHx05-5tRHP4YdkMG9dfDT616tQLxw0XGXTcg8FZs7MwpqbmUnVhimj8ooPN3KDFOlUl5sSIhgr_XxT53aiKs6VMbpvoJjofBiNn1URgzEuNM2vO9_CM7DwfrmjFA84p8KmjgQegtju6khHHdqiVgZmemK4EYcf3potrcmHNMIrGZrw4-BJw9o74fkqOnHKBagefb9B3cPPr6tun3J3y-w_4rLKiC3Sngio1ROREUnF2BXAxqDwBLIiltqoCICO0GIp_CvzFdtF3RL-PeJfk1VpjE4w7kddha9lhsuB-mCwPmyM-lGnAK1wEUVmLMG_MTYQ_TBG0jqWmvrCnlkM7NVd0vbYvT5bD618Qw6D1xgcAAA';\nexport var footer = 'Sidebar_footer__1n0xxfc5';\nexport var group = 'Sidebar_group__1n0xxfc1';\nexport var groupLabel = 'Sidebar_groupLabel__1n0xxfc2';\nexport var navItem = 'Sidebar_navItem__1n0xxfc3';\nexport var navItemCount = 'Sidebar_navItemCount__1n0xxfc4';\nexport var sidebar = 'Sidebar_sidebar__1n0xxfc0';","import type { ReactNode } from 'react'\nimport { Glyph } from '../../glyphs/Glyph.js'\nimport type { GlyphName } from '../../types/components.js'\nimport * as styles from './Sidebar.css.js'\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 /**\n * When provided, the item renders as an `<a>` tag 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 * Content rendered at the bottom of the sidebar — typically user account\n * info, a settings link, or version text.\n */\n footer?: ReactNode\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({ groups, activeId, onItemClick, footer, className }: SidebarProps) {\n return (\n <nav className={[styles.sidebar, className].filter(Boolean).join(' ')}>\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 />\n ))}\n {footer && <div className={styles.footer}>{footer}</div>}\n </nav>\n )\n}\n\ninterface NavGroupProps {\n label: string | undefined\n items: NavItemDef[]\n activeId: string | undefined\n onItemClick: ((id: string) => void) | undefined\n}\n\nfunction NavGroup({ label, items, activeId, onItemClick }: NavGroupProps) {\n return (\n <div className={styles.group}>\n {label && <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 />\n ))}\n </div>\n )\n}\n\ninterface NavItemProps {\n item: NavItemDef\n active: boolean\n onClick: () => void\n}\n\nfunction NavItem({ item, active, onClick }: NavItemProps) {\n const glyphStyle = active ? { filter: 'invert(1)' } : undefined\n\n if (item.href) {\n return (\n <a\n href={item.href}\n className={styles.navItem}\n data-active={active}\n aria-current={active ? 'page' : undefined}\n >\n {item.glyph\n ? <Glyph name={item.glyph} size={14} style={glyphStyle} aria-hidden=\"true\" />\n : <span />}\n <span>{item.label}</span>\n {item.count !== undefined && (\n <span className={styles.navItemCount}>{item.count}</span>\n )}\n </a>\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 >\n {item.glyph\n ? <Glyph name={item.glyph} size={14} style={glyphStyle} aria-hidden=\"true\" />\n : <span />}\n <span>{item.label}</span>\n {item.count !== undefined && (\n <span className={styles.navItemCount}>{item.count}</span>\n )}\n </button>\n )\n}\n","import 'src/components/AppBar/AppBar.css.ts.vanilla.css?source=#H4sIAAAAAAAAE71WTY_aMBC98yusPZWDUQILC0E9bNVLVbWqtMeqQo4zIS6J7foD2Fb971WcxJCEr25XPSGS8bx5b96MM3qU8h1RK1L9rOyPDVssAvRrgFDCtMzJc4TSHPbLAUIkZ2uOmYFCR4gCN6DKxxmwdWYiNJ1JFyZJkjC-jlCAtkS9wVhLQgFrOVutQkJZvI-3wzIwFioBhWNhjCgiFMo90iJnSX2MilyUb8sgf3JRnSR0s1bC8iRqBWurUkLBR09c9JrI6EopJUWsM8X4JkLBcvB7MKqViRXhSSNM-FfCnMC997jmFtzPpIAGe-ywU8ENTknB8ucmt3tU1-TT8yp9-WpX92cRBP6ZZj8hQuG86pgTr61kuvappi5VDsaAckRcc3EwCkIoeiW_Z1vmGlZVPXFV71hiMtfhY8OEtWHOdbNq_SdrDg2Nhz3AJxs3YPcXJYpFctBHDLta1MW1JJtVknW5B6NwXlJHyMDeYKMI16lQRYSslKAo0XBW1okv4aHFRQNRNHtUQBo204pNDvsIhcvX9V0l7avMXHxwSjBszf9M7jtlTH2odaEF47j2RtAX4wOX1jRqzLpqNBS44NCtz3VEEgXcLF_uiMnt0yGsyRmHpprLTKJI5oRCJvIElKN1EqJl_PkJs3yM_WJ6uOj8QnDhM8kez-ACz7ZdbzNOb2KPPFGem1Z4u4wZqKxR6rZTRB5zJNQwwXXDcP7_Vi-hZaIvjG4Oe2zxr_BjD6-GfbCnHTE0a8BIa2nOzmzNl3WivnQVSZjVTZHVP1ya14eHYxdPrdKlLaRgDbtrynXIfE2IIbhs5xbe3hll4e6bI-iHZnySwrkhwyJNNZj6OrkCHqWCWo23TLM4h1tgqzQeOjkJPe5Ab4k5fD7Fx-0bz9vta_6fW6c91ifGsrdyX7DOb7Xyd6sNS58xFdwAN8evXvdbpLl_O-ZCyOry7oUcqPH79Q9QrTaXuAoAAA';\nexport var accentPicker = 'AppBar_accentPicker__uqki999';\nexport var accentSwatch = 'AppBar_accentSwatch__uqki99a';\nexport var actions = 'AppBar_actions__uqki998';\nexport var appBar = 'AppBar_appBar__uqki990';\nexport var avatar = 'AppBar_avatar__uqki99b';\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__uqki995';\nexport var searchInput = 'AppBar_searchInput__uqki996';\nexport var searchKbd = 'AppBar_searchKbd__uqki997';","import type { ReactNode } from 'react'\nimport { Glyph } from '../../glyphs/Glyph.js'\nimport { Button } from '../Button/Button.js'\nimport { accentColors, accentColorNames } from '../../tokens/accents.js'\nimport type { AccentColor } from '../../types/theme.js'\nimport * as styles from './AppBar.css.js'\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 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 /** 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 className,\n}: AppBarProps) {\n return (\n <header className={[styles.appBar, className].filter(Boolean).join(' ')}>\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 {showSearch && (\n <div className={styles.searchArea}>\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 />\n {searchKbd && <span className={styles.searchKbd}>{searchKbd}</span>}\n </div>\n )}\n\n <div className={styles.actions}>\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\n {avatarInitials && (\n <div className={styles.avatar} aria-label={`User: ${avatarInitials}`}>\n {avatarInitials.slice(0, 2).toUpperCase()}\n </div>\n )}\n </div>\n </header>\n )\n}\n","import 'src/components/Table/Table.css.ts.vanilla.css?source=#H4sIAAAAAAAAE6VUTW_bMAy951cIBQbMBwV22mariv2AHXragB2GoaAlOhYmS4JEJ86G_vdBdurYbdp02yVwSJHvPX4tv0Jp8J7S77cA3mO4vy9gReU-5uz3grGdVlQLVuT5u9sFY26LoTJuJxi05JKldEFhEKzwHYvOaMW2EN5zLp1xgQ_elFPqsitvstvFw2I5QR3hilNwQ3jKZcBHFOzxKzkrZ4lvIWiwxG3bYNBSMIKyNRCSIU7BagQ1gq16sBLkz01wrVViTnqzGhkX2YRH6Yhc809a6xH7ssfuyVfQaLN_BO9NpVP7MYXLRp1R_8JUF9-Nph3qTU2CrfM82QwSYeDRg9R2I1i-LK6wSR7CjjgFsLFyoRGsTX2WMFSx5z7XX030r3sKHpTqk9747vA04SCPfj0-3WYjGBi9sYIZrCjZdrUmHCIEs24XwCdzGxNfNCgpmS3OCvbFhfmEXPWFk22IibB32hKGMyGiThM7BJ4SOpK_nnYrukCfrdISyB0X4rpPo3T0BvaCaWu0RV4Z7FvSQNhoy5Nk8aREx2qGvkQutYj2qUXX6f8WA2kJ5rFsjVbKzIpxJLEeJvft83jXEo745dCiNAqatLNisgOHWNUGSC5eQaTjGkB28CNE5K6duFT2AtVJ8d-6aifzfFdAcBgUVJ8uKLR48eOvV7jjsQaVbpe2EYld-o7lLJ_FgZRoj9pelmYgEpe1NupUQ54O8_HyfPif7b8ctv_8JE82Np2MMyt7fv7UnbNu1PDxVQ3N4WkP4J9pKF7RMD87D38ASPquGJ4GAAA';\nexport var sortIndicator = 'Table_sortIndicator__1a2tbys5';\nexport var table = 'Table_table__1a2tbys1';\nexport var tableWrapper = 'Table_tableWrapper__1a2tbys0';\nexport var td = 'Table_td__1a2tbys7';\nexport var tdMono = 'Table_tdMono__1a2tbys8 Table_td__1a2tbys7';\nexport var th = 'Table_th__1a2tbys3';\nexport var thSortable = 'Table_thSortable__1a2tbys4 Table_th__1a2tbys3';\nexport var thead = 'Table_thead__1a2tbys2';\nexport var tr = 'Table_tr__1a2tbys6';","import { useState, useMemo } from 'react'\nimport type { ReactNode } from 'react'\nimport type { SortDirection } from '../../types/components.js'\nimport { Glyph } from '../../glyphs/Glyph.js'\nimport * as styles from './Table.css.js'\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 className?: string\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 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 return (\n <div className={[styles.tableWrapper, className].filter(Boolean).join(' ')}>\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 {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 ? () => onRowClick(key, row) : 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 </tbody>\n </table>\n </div>\n )\n}\n","import 'src/components/Modal/Modal.css.ts.vanilla.css?source=#H4sIAAAAAAAAE5VVS2_bOBC-51fwUsACwkByosRRL8XeCrTHPezJoMShzQ1FCuTIjy7y3xckZUpV_Egvgsh5fTPzzfDbGxyFZS048tNwptaCcfiu1-viralLJ3Py3x0hwpo2_BBiOtZIPFYk_3pHyPsdIWjmoiKK3u--zb07JTn83SX3xXX3hKBl2glj2yr-Kobwz2LVHbIb4S-Z5tkJ3EOEZHZgFTsmSMvgrjNOojS6IkIegHsbqR3gAKxmzdvGml7zithNzRbL_L54vS_K-_yhLLOTCremo0IqBFuRWvV2sRyQ_6JSczhUpMiDQ6Zly2LAC33YMbuglPc2qNGaOVivC9bI-lAXdTbIgTmgpsdRxLOvY7KN0Qgak9vHS8mi6SpS5l_8vwKB6XCuqgta5l_uif9m8-pEWI1RxlLXW8GaEfZj1DaW-_oU3YE4oyT_zSZKk8nrYHKgbsu42Z8CxBN1yNrux2bM_iXod4xzqTdJuWMNUNetkt4huyLyHlp2oHvJcVuRcpV3B383nBummkWR57s9oeTpRE1vsAW52eJEYzvV8MQTyqfAejQzUhRjZahlXPbuBD6eqDZ60v9ldpZEH8dtxiKnzH700nySRVtgsSfR61MgEZeuU-xYEaEglIcpudFUIrQuXvruWPSif3uHUhzpQMeKxLLXgHsAHctnN1LT2iCadt63MuHqp7BQooKEqoyrxWikgrVSHU9ewtWANjnSoYBBtB-69hInM9w5-QsqsnyOjVdSQ2pu8VDEIUEEGyAGptH8IS9KaL0sMPn3URAjR8tsTHie6WPSchnJ4-6ZUHHlZzLlz8E1Vna-sakKz1erUBs-lsBks3SLp5juWfjLZPc8wU_D3ricw3QVKePgrx5xgvYloJ2uj7BjOmZB42d3xc8ex8moA7imt86n0BmpEeyVlTCmZbNP536d-g2cYn6g_SiK87G1Ur-dnpg_HP5QqWGND7YB73zkBXOTuWaffTjOdava-h0WezaJWN1e4Lcn4kZkYZre0Z10slYQEJge_VxWZHmWG6xp4sMXQ_C4gqMNNUKEt33pCZ8iD9MRQ65CkMssf06ud1P0whicrMrX86vyAzECHUCHp3jDPgR7SsHwxvDN37GB9rczSC0Nmn80b-__AyT7BG1VCgAA';\nexport var body = 'Modal_body__1kcb5si8';\nexport var closeButton = 'Modal_closeButton__1kcb5si7';\nexport var content = 'Modal_content__1kcb5si3';\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.js'\nimport * as styles from './Modal.css.js'\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 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 * description=\"Add a recipe to the field guide.\"\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\n * <Modal open={isOpen} onOpenChange={setIsOpen} title=\"Confirm\">…</Modal>\n * ```\n */\nexport function Modal({\n open,\n defaultOpen,\n onOpenChange,\n title,\n description,\n children,\n footer,\n trigger,\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.content, 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={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 'src/components/Toast/Toast.css.ts.vanilla.css?source=#H4sIAAAAAAAAE61UyW7bMBC95yuInOIDA8lbUhUFUrSXnnrJpSgKgyJHMhuJw5IjLyny74UomY4c20nRXrQMOW_evFnuHmBbOFGDZ_coPC18pRV8MYtFmhMl6Sphvy8YKxzW4YMxtEJq2mYseR_-yQnjC3R11n1WguDb1a3djNrzpwvGCA9d03OuSe_4dHF3lNzXhiK79CS7N4U4xu1sWtOY1tPFdcdppWFt0e05jQOiRa9Jo8lYoTegWqccibDO2Eq4K869FRK4t7eLRSqkzjd5B-10uaTXLintbSW2GSsq2LSG9s2VdiC7oBKrpjbtSSnsIdo0olFAe-TaKNhkbJyE7Nda0TJjk3liA3gtNry3SVHJqzRJVmvG2XRX5Up74p62FWTMoIHWZoVS2pS9oLVwpTbhJypH4bmTbRJky4V8KB02Ru1IS6zQcd-4QkiIxCejTlGnwGUstRvmsdJq4NOdRpd3vcuG-6VQuI6qhD_uSdQ2Xk7no0ESQwFn8V4zOjiax6PVsFKl06EL2jcnqG3bUbyrk89YWjgmGsI3lkxUujRcE9Q-Y56Eo2A1uhZdA5ya5g5WNS7c47nwe1HTfJcNCA8cw6D1R2p0unLflSDRCkjw4VJW6EFd_gjlPE5oOMEHjIoOug8r_obRvaYKIvK02w1oiBei1tV2p2kw5ai2EQuDpsHu9SNkLJ10nR9Ma-hGct5NR2iuYXcWZYSajfbtzo9PfBov_3qRwmfw0mnbKhETmf1LIuMukaOkx9Fv3o-xAb7ss02vZ4fkPrWljbTmLwY2LEorHBh6Pp27jSAb51sSFrUhcCdpTSKtm3NDOJTxyE4czIiEXcyfjSddbLlEQ2Do-VHYon7ptHno91ZIScediu4_tuuBnNkSV-CCqK-32HmkAmXj-Up7nVcQELGhtroZGx9dlUK2IsQIKgja-3AsCg8UXA8Df5SDTr0JsfrmJ3yxxfaV9W0OfwBW_mKGfQgAAA';\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.js'\nimport * as styles from './Toast.css.js'\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"]}
@@ -0,0 +1,183 @@
1
+ 'use strict';
2
+
3
+ var chunkSSWJ4EPA_cjs = require('../chunk-SSWJ4EPA.cjs');
4
+
5
+ // src/tokens/spacing.ts
6
+ var spacingScale = [0, 2, 4, 6, 8, 12, 16, 20, 24, 32, 40, 56, 80];
7
+ var spacing = {
8
+ sp0: 0,
9
+ sp1: 2,
10
+ sp2: 4,
11
+ sp3: 6,
12
+ sp4: 8,
13
+ sp5: 12,
14
+ sp6: 16,
15
+ sp7: 20,
16
+ sp8: 24,
17
+ sp9: 32,
18
+ sp10: 40,
19
+ sp11: 56,
20
+ sp12: 80
21
+ };
22
+ var px = (n) => `${n}px`;
23
+
24
+ // src/tokens/typography.ts
25
+ var fontFamilies = {
26
+ display: "'Roboto Slab', 'Rockwell', 'Courier New', serif",
27
+ body: "'Space Grotesk', 'Helvetica Neue', 'Inter', system-ui, sans-serif",
28
+ mono: "'JetBrains Mono', 'IBM Plex Mono', ui-monospace, monospace"
29
+ };
30
+ var fontSizes = {
31
+ xs: "11px",
32
+ sm: "12px",
33
+ md: "14px",
34
+ lg: "16px",
35
+ xl: "20px",
36
+ "2xl": "26px",
37
+ "3xl": "34px",
38
+ "4xl": "46px",
39
+ "5xl": "64px",
40
+ "6xl": "88px"
41
+ };
42
+ var fontWeights = {
43
+ regular: 400,
44
+ medium: 500,
45
+ semibold: 600,
46
+ bold: 700,
47
+ black: 900
48
+ };
49
+ var lineHeights = {
50
+ tight: 1.08,
51
+ snug: 1.2,
52
+ base: 1.45,
53
+ loose: 1.65
54
+ };
55
+ var letterSpacings = {
56
+ tight: "-0.02em",
57
+ snug: "-0.01em",
58
+ base: "0",
59
+ wide: "0.04em",
60
+ wider: "0.08em",
61
+ widest: "0.18em"
62
+ };
63
+ var googleFontsUrl = "https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@400;500;700;900&family=Space+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap";
64
+
65
+ // src/tokens/radius.ts
66
+ var radius = {
67
+ none: "0",
68
+ hairline: "1px",
69
+ sm: "2px",
70
+ pill: "999px"
71
+ };
72
+
73
+ // src/tokens/shadows.ts
74
+ var shadows = {
75
+ stamp: "2px 2px 0 0",
76
+ stampLg: "4px 4px 0 0",
77
+ pressLight: "inset 0 1px 0 rgba(20,19,15,0.18)",
78
+ pressDark: "inset 0 1px 0 rgba(232,223,200,0.10)",
79
+ softLight: "0 1px 0 rgba(20,19,15,0.12), 0 0 0 1px rgba(20,19,15,0.04)",
80
+ softDark: "0 1px 0 rgba(0,0,0,0.6), 0 0 0 1px rgba(232,223,200,0.05)"
81
+ };
82
+
83
+ // src/tokens/motion.ts
84
+ var duration = {
85
+ fast: "120ms",
86
+ base: "180ms",
87
+ slow: "320ms"
88
+ };
89
+ var easing = {
90
+ out: "cubic-bezier(.2,.7,.2,1)",
91
+ in: "cubic-bezier(.6,.0,.8,.3)",
92
+ snap: "cubic-bezier(.5,1.6,.4,1)"
93
+ };
94
+ var zIndex = {
95
+ base: 1,
96
+ sticky: 10,
97
+ overlay: 50,
98
+ modal: 100,
99
+ toast: 200
100
+ };
101
+
102
+ // src/tokens/semantic.ts
103
+ var lightTokens = {
104
+ bg: chunkSSWJ4EPA_cjs.palette.paper,
105
+ bg2: chunkSSWJ4EPA_cjs.palette.paperWarm,
106
+ bgSunken: chunkSSWJ4EPA_cjs.palette.paperToasted,
107
+ surface: "#fdfaf3",
108
+ surface2: chunkSSWJ4EPA_cjs.palette.paperWarm,
109
+ fg: chunkSSWJ4EPA_cjs.palette.ink,
110
+ fg2: "#4a463c",
111
+ fg3: "#6e6a5e",
112
+ fgMute: "#8a8576",
113
+ border: chunkSSWJ4EPA_cjs.palette.ink,
114
+ border2: "#6e6a5e",
115
+ borderMute: "#b8ad94",
116
+ rule: chunkSSWJ4EPA_cjs.palette.inkDeep,
117
+ accent: chunkSSWJ4EPA_cjs.palette.terracotta,
118
+ accentFg: chunkSSWJ4EPA_cjs.palette.paper,
119
+ accent2: chunkSSWJ4EPA_cjs.palette.moss,
120
+ accent3: chunkSSWJ4EPA_cjs.palette.plum,
121
+ success: chunkSSWJ4EPA_cjs.palette.success,
122
+ warn: chunkSSWJ4EPA_cjs.palette.ochre,
123
+ danger: chunkSSWJ4EPA_cjs.palette.rust,
124
+ info: chunkSSWJ4EPA_cjs.palette.plumMid,
125
+ selectionBg: chunkSSWJ4EPA_cjs.palette.ochre,
126
+ selectionFg: chunkSSWJ4EPA_cjs.palette.ink
127
+ };
128
+ var darkTokens = {
129
+ bg: chunkSSWJ4EPA_cjs.palette.inkDeep,
130
+ bg2: "#1f1d18",
131
+ bgSunken: "#0c0b08",
132
+ surface: "#26241e",
133
+ surface2: "#2d2a23",
134
+ fg: chunkSSWJ4EPA_cjs.palette.cream,
135
+ fg2: "#b8ad94",
136
+ fg3: "#8a8576",
137
+ fgMute: "#6e6a5e",
138
+ border: chunkSSWJ4EPA_cjs.palette.cream,
139
+ border2: "#8a8576",
140
+ borderMute: "#4a463c",
141
+ rule: chunkSSWJ4EPA_cjs.palette.cream,
142
+ accent: chunkSSWJ4EPA_cjs.palette.terracottaLight,
143
+ accentFg: chunkSSWJ4EPA_cjs.palette.inkDeep,
144
+ accent2: chunkSSWJ4EPA_cjs.palette.mossLight,
145
+ accent3: chunkSSWJ4EPA_cjs.palette.plumLight,
146
+ success: "#7fba4a",
147
+ warn: chunkSSWJ4EPA_cjs.palette.ochre,
148
+ danger: chunkSSWJ4EPA_cjs.palette.terracotta,
149
+ info: chunkSSWJ4EPA_cjs.palette.plumMid,
150
+ selectionBg: chunkSSWJ4EPA_cjs.palette.mossLight,
151
+ selectionFg: chunkSSWJ4EPA_cjs.palette.inkDeep
152
+ };
153
+
154
+ Object.defineProperty(exports, "accentColorNames", {
155
+ enumerable: true,
156
+ get: function () { return chunkSSWJ4EPA_cjs.accentColorNames; }
157
+ });
158
+ Object.defineProperty(exports, "accentColors", {
159
+ enumerable: true,
160
+ get: function () { return chunkSSWJ4EPA_cjs.accentColors; }
161
+ });
162
+ Object.defineProperty(exports, "palette", {
163
+ enumerable: true,
164
+ get: function () { return chunkSSWJ4EPA_cjs.palette; }
165
+ });
166
+ exports.darkTokens = darkTokens;
167
+ exports.duration = duration;
168
+ exports.easing = easing;
169
+ exports.fontFamilies = fontFamilies;
170
+ exports.fontSizes = fontSizes;
171
+ exports.fontWeights = fontWeights;
172
+ exports.googleFontsUrl = googleFontsUrl;
173
+ exports.letterSpacings = letterSpacings;
174
+ exports.lightTokens = lightTokens;
175
+ exports.lineHeights = lineHeights;
176
+ exports.px = px;
177
+ exports.radius = radius;
178
+ exports.shadows = shadows;
179
+ exports.spacing = spacing;
180
+ exports.spacingScale = spacingScale;
181
+ exports.zIndex = zIndex;
182
+ //# sourceMappingURL=index.cjs.map
183
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/tokens/spacing.ts","../../src/tokens/typography.ts","../../src/tokens/radius.ts","../../src/tokens/shadows.ts","../../src/tokens/motion.ts","../../src/tokens/semantic.ts"],"names":["palette"],"mappings":"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","file":"index.cjs","sourcesContent":["export const spacingScale = [0, 2, 4, 6, 8, 12, 16, 20, 24, 32, 40, 56, 80] as const\n\nexport const spacing = {\n sp0: 0,\n sp1: 2,\n sp2: 4,\n sp3: 6,\n sp4: 8,\n sp5: 12,\n sp6: 16,\n sp7: 20,\n sp8: 24,\n sp9: 32,\n sp10: 40,\n sp11: 56,\n sp12: 80,\n} as const\n\nexport const px = (n: number): string => `${n}px`\n","export const fontFamilies = {\n display: \"'Roboto Slab', 'Rockwell', 'Courier New', serif\",\n body: \"'Space Grotesk', 'Helvetica Neue', 'Inter', system-ui, sans-serif\",\n mono: \"'JetBrains Mono', 'IBM Plex Mono', ui-monospace, monospace\",\n} as const\n\nexport const fontSizes = {\n xs: '11px',\n sm: '12px',\n md: '14px',\n lg: '16px',\n xl: '20px',\n '2xl': '26px',\n '3xl': '34px',\n '4xl': '46px',\n '5xl': '64px',\n '6xl': '88px',\n} as const\n\nexport const fontWeights = {\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n black: 900,\n} as const\n\nexport const lineHeights = {\n tight: 1.08,\n snug: 1.2,\n base: 1.45,\n loose: 1.65,\n} as const\n\nexport const letterSpacings = {\n tight: '-0.02em',\n snug: '-0.01em',\n base: '0',\n wide: '0.04em',\n wider: '0.08em',\n widest: '0.18em',\n} as const\n\nexport const googleFontsUrl =\n 'https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@400;500;700;900&family=Space+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap'\n","export const radius = {\n none: '0',\n hairline: '1px',\n sm: '2px',\n pill: '999px',\n} as const\n","export const shadows = {\n stamp: '2px 2px 0 0',\n stampLg: '4px 4px 0 0',\n pressLight: 'inset 0 1px 0 rgba(20,19,15,0.18)',\n pressDark: 'inset 0 1px 0 rgba(232,223,200,0.10)',\n softLight: '0 1px 0 rgba(20,19,15,0.12), 0 0 0 1px rgba(20,19,15,0.04)',\n softDark: '0 1px 0 rgba(0,0,0,0.6), 0 0 0 1px rgba(232,223,200,0.05)',\n} as const\n","export const duration = {\n fast: '120ms',\n base: '180ms',\n slow: '320ms',\n} as const\n\nexport const easing = {\n out: 'cubic-bezier(.2,.7,.2,1)',\n in: 'cubic-bezier(.6,.0,.8,.3)',\n snap: 'cubic-bezier(.5,1.6,.4,1)',\n} as const\n\nexport const zIndex = {\n base: 1,\n sticky: 10,\n overlay: 50,\n modal: 100,\n toast: 200,\n} as const\n","import { palette } from './palette.js'\n\nexport const lightTokens = {\n bg: palette.paper,\n bg2: palette.paperWarm,\n bgSunken: palette.paperToasted,\n surface: '#fdfaf3',\n surface2: palette.paperWarm,\n\n fg: palette.ink,\n fg2: '#4a463c',\n fg3: '#6e6a5e',\n fgMute: '#8a8576',\n\n border: palette.ink,\n border2: '#6e6a5e',\n borderMute: '#b8ad94',\n rule: palette.inkDeep,\n\n accent: palette.terracotta,\n accentFg: palette.paper,\n accent2: palette.moss,\n accent3: palette.plum,\n\n success: palette.success,\n warn: palette.ochre,\n danger: palette.rust,\n info: palette.plumMid,\n\n selectionBg: palette.ochre,\n selectionFg: palette.ink,\n} as const\n\nexport const darkTokens = {\n bg: palette.inkDeep,\n bg2: '#1f1d18',\n bgSunken: '#0c0b08',\n surface: '#26241e',\n surface2: '#2d2a23',\n\n fg: palette.cream,\n fg2: '#b8ad94',\n fg3: '#8a8576',\n fgMute: '#6e6a5e',\n\n border: palette.cream,\n border2: '#8a8576',\n borderMute: '#4a463c',\n rule: palette.cream,\n\n accent: palette.terracottaLight,\n accentFg: palette.inkDeep,\n accent2: palette.mossLight,\n accent3: palette.plumLight,\n\n success: '#7fba4a',\n warn: palette.ochre,\n danger: palette.terracotta,\n info: palette.plumMid,\n\n selectionBg: palette.mossLight,\n selectionFg: palette.inkDeep,\n} as const\n\nexport type SemanticTokens = typeof lightTokens\n"]}