@duro-app/ui 0.50.0 → 0.52.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.
Files changed (29) hide show
  1. package/dist/components/ActionBar/ActionBar.d.ts +6 -0
  2. package/dist/components/ActionBar/ActionBar.d.ts.map +1 -1
  3. package/dist/components/ActionBar/ActionBar.meta.d.ts.map +1 -1
  4. package/dist/components/ActionBar/ActionBar.stories.d.ts +2 -0
  5. package/dist/components/ActionBar/ActionBar.stories.d.ts.map +1 -1
  6. package/dist/components/ActionBar/styles.css.d.ts +3 -0
  7. package/dist/components/ActionBar/styles.css.d.ts.map +1 -1
  8. package/dist/components/Icon/Icon.d.ts +1 -1
  9. package/dist/components/Icon/Icon.d.ts.map +1 -1
  10. package/dist/components/SideNav/SideNav.d.ts +32 -3
  11. package/dist/components/SideNav/SideNav.d.ts.map +1 -1
  12. package/dist/components/SideNav/SideNav.meta.d.ts.map +1 -1
  13. package/dist/components/SideNav/SideNav.stories.d.ts +1 -0
  14. package/dist/components/SideNav/SideNav.stories.d.ts.map +1 -1
  15. package/dist/components/SideNav/styles.css.d.ts +4 -0
  16. package/dist/components/SideNav/styles.css.d.ts.map +1 -1
  17. package/dist/index.css +1 -1
  18. package/dist/index.js +1123 -1069
  19. package/dist/index.js.map +1 -1
  20. package/package.json +2 -2
  21. package/src/components/ActionBar/ActionBar.meta.ts +2 -1
  22. package/src/components/ActionBar/ActionBar.stories.tsx +35 -0
  23. package/src/components/ActionBar/ActionBar.tsx +12 -1
  24. package/src/components/ActionBar/styles.css.ts +3 -0
  25. package/src/components/Icon/Icon.tsx +56 -0
  26. package/src/components/SideNav/SideNav.meta.ts +10 -7
  27. package/src/components/SideNav/SideNav.stories.tsx +63 -4
  28. package/src/components/SideNav/SideNav.tsx +50 -7
  29. package/src/components/SideNav/styles.css.ts +7 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/ActionBar/ActionBarProvider.tsx","../src/components/ActionBar/styles.css.ts","../src/components/ActionBar/ActionBar.tsx","../src/components/Icon/Icon.tsx","../src/components/Alert/styles.css.ts","../src/components/Alert/Alert.tsx","../src/platform.ts","../src/components/Badge/styles.css.ts","../src/components/Badge/Badge.tsx","../src/components/Button/styles.css.ts","../src/components/Button/Button.tsx","../src/components/ButtonGroup/styles.css.ts","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Callout/styles.css.ts","../src/components/Callout/Callout.tsx","../src/components/Card/styles.css.ts","../src/components/Card/Card.tsx","../src/components/Checkbox/styles.css.ts","../src/components/Checkbox/Checkbox.tsx","../src/hooks/useControllableValue.ts","../src/components/CheckboxGroup/styles.css.ts","../src/components/CheckboxGroup/CheckboxGroup.tsx","../src/components/Field/FieldContext.ts","../src/components/ColorInput/styles.css.ts","../src/components/ColorInput/ColorInput.tsx","../src/components/Dialog/styles.css.ts","../src/components/Dialog/Dialog.tsx","../src/components/InputGroup/InputGroupContext.ts","../src/components/Input/styles.css.ts","../src/components/Input/Input.tsx","../src/components/Form/FormContext.ts","../src/components/Field/styles.css.ts","../src/components/Field/Field.tsx","../src/components/ConfirmDialog/ConfirmDialog.tsx","../src/components/DetailPanel/styles.css.ts","../src/components/DetailPanel/DetailPanel.tsx","../src/components/Drawer/styles.css.ts","../src/components/Drawer/useSwipeDismiss.ts","../src/components/Drawer/Drawer.tsx","../src/components/EmptyState/styles.css.ts","../src/components/EmptyState/EmptyState.tsx","../../tokens/src/tokens/type-presets.css.ts","../src/components/Heading/styles.css.ts","../src/components/Heading/Heading.tsx","../src/components/List/styles.css.ts","../src/components/List/List.tsx","../src/components/Form/Form.tsx","../src/components/Fieldset/styles.css.ts","../src/components/Fieldset/Fieldset.tsx","../src/components/InputGroup/styles.css.ts","../src/components/InputGroup/InputGroup.tsx","../src/components/LinkButton/styles.css.ts","../src/components/LinkButton/LinkButton.tsx","../src/components/Panel/styles.css.ts","../src/components/Panel/Panel.tsx","../src/components/RadioGroup/styles.css.ts","../src/components/RadioGroup/RadioGroup.tsx","../src/components/ScrollArea/styles.css.ts","../src/components/ScrollArea/ScrollAreaContext.ts","../src/components/ScrollArea/useScrollAreaRoot.ts","../src/components/ScrollArea/ScrollArea.tsx","../src/components/Combobox/styles.css.ts","../src/components/Combobox/ComboboxContext.ts","../src/components/Combobox/useComboboxRoot.ts","../../tokens/src/themes/light.css.ts","../../tokens/src/themes/high-contrast.css.ts","../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/Combobox/Combobox.tsx","../src/components/Select/styles.css.ts","../src/components/Select/SelectContext.ts","../src/components/Select/useSelectRoot.ts","../src/components/Select/Select.tsx","../src/components/SideNav/styles.css.ts","../src/components/SideNav/SideNavContext.ts","../src/components/SideNav/SideNav.tsx","../src/components/Spinner/styles.css.ts","../src/components/Spinner/Spinner.tsx","../src/components/Toast/styles.css.ts","../src/components/Toast/ToastProvider.tsx","../src/components/StatusIcon/styles.css.ts","../src/components/StatusIcon/StatusIcon.tsx","../src/components/TagGroup/TagGroupContext.ts","../src/components/Tag/styles.css.ts","../src/components/Tag/Tag.tsx","../src/components/TagGroup/styles.css.ts","../src/components/TagGroup/TagGroup.tsx","../src/components/Tabs/styles.css.ts","../src/components/Tabs/TabsContext.ts","../src/components/Tabs/useTabsRoot.ts","../src/components/Tabs/Tabs.tsx","../src/components/Textarea/styles.css.ts","../src/components/Textarea/Textarea.tsx","../src/components/ColorMode/styles.css.ts","../src/components/ColorMode/ColorMode.tsx","../src/components/Text/styles.css.ts","../src/components/Text/Text.tsx","../src/components/ToggleGroup/ToggleGroupContext.ts","../src/components/Toggle/styles.css.ts","../src/components/Toggle/Toggle.tsx","../src/components/ToggleGroup/styles.css.ts","../src/components/ToggleGroup/ToggleGroup.tsx","../src/components/Tooltip/styles.css.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Switch/styles.css.ts","../src/components/Switch/Switch.tsx","../src/components/Stack/styles.css.ts","../src/components/Stack/Stack.tsx","../src/components/Inline/styles.css.ts","../src/components/Inline/Inline.tsx","../src/components/Cluster/styles.css.ts","../src/components/Cluster/Cluster.tsx","../src/components/Grid/styles.css.ts","../src/components/Grid/Grid.tsx","../src/components/PageShell/styles.css.ts","../src/components/PageShell/PageShell.tsx","../src/hooks/useContainerQuery.ts"],"sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useSyncExternalStore,\n type ReactNode,\n} from 'react'\n\ninterface ActionBarEntry {\n id: string\n render: () => ReactNode\n}\n\ninterface ActionBarStore {\n subscribe: (cb: () => void) => () => void\n getSnapshot: () => readonly ActionBarEntry[]\n push: (id: string, render: () => ReactNode) => void\n update: (id: string, render: () => ReactNode) => void\n remove: (id: string) => void\n}\n\nfunction createActionBarStore(): ActionBarStore {\n let entries: ActionBarEntry[] = []\n const listeners = new Set<() => void>()\n\n const notify = () => listeners.forEach((l) => l())\n\n return {\n subscribe: (cb) => {\n listeners.add(cb)\n return () => listeners.delete(cb)\n },\n getSnapshot: () => entries,\n push: (id, render) => {\n entries = [...entries, {id, render}]\n notify()\n },\n update: (id, render) => {\n entries = entries.map((e) => (e.id === id ? {id, render} : e))\n notify()\n },\n remove: (id) => {\n entries = entries.filter((e) => e.id !== id)\n notify()\n },\n }\n}\n\nconst ActionBarContext = createContext<ActionBarStore | null>(null)\n\nexport function ActionBarProvider({children}: {children: ReactNode}) {\n const storeRef = useRef<ActionBarStore>(null)\n if (storeRef.current === null) {\n storeRef.current = createActionBarStore()\n }\n const store = storeRef.current\n\n const entries = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot)\n const topEntry = entries.length > 0 ? entries[entries.length - 1] : null\n\n return (\n <ActionBarContext.Provider value={store}>\n {children}\n {topEntry?.render()}\n </ActionBarContext.Provider>\n )\n}\n\nexport function useActionBarStack() {\n const store = useContext(ActionBarContext)\n const id = useId()\n\n const register = useCallback(\n (render: () => ReactNode) => {\n if (!store) return\n const entries = store.getSnapshot()\n if (entries.some((e) => e.id === id)) {\n store.update(id, render)\n } else {\n store.push(id, render)\n }\n },\n [store, id],\n )\n\n const unregister = useCallback(() => {\n store?.remove(id)\n }, [store, id])\n\n const isTop = useMemo(() => {\n if (!store) return false\n const entries = store.getSnapshot()\n return entries.length > 0 && entries[entries.length - 1].id === id\n }, [store, id])\n\n return {id, register, unregister, managed: store !== null, isTop}\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n overlay: {\n position: 'fixed',\n bottom: spacing.lg,\n left: '50%',\n transform: 'translateX(-50%)',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.md,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n boxShadow: shadows.lg,\n zIndex: 50,\n maxWidth: 'calc(100vw - 48px)',\n },\n overlayEmphasized: {\n backgroundColor: colors.accent,\n borderColor: colors.accent,\n },\n selectedCount: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n fontFamily: typography.fontFamily,\n color: colors.text,\n whiteSpace: 'nowrap',\n },\n selectedCountEmphasized: {\n color: colors.accentContrast,\n },\n actions: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.sm,\n },\n closeButton: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 28,\n height: 28,\n padding: 0,\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderRadius: radii.sm,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n cursor: 'pointer',\n transitionProperty: 'color, background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 2,\n },\n },\n closeButtonEmphasized: {\n color: {\n default: colors.accentContrast,\n ':hover': colors.accentContrast,\n },\n opacity: {\n default: 0.7,\n ':hover': 1,\n },\n },\n separator: {\n width: 1,\n alignSelf: 'stretch',\n backgroundColor: colors.border,\n marginTop: spacing.xs,\n marginBottom: spacing.xs,\n },\n separatorEmphasized: {\n backgroundColor: colors.accentContrast,\n opacity: 0.3,\n },\n})\n","import {useEffect, useCallback, type ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useActionBarStack} from './ActionBarProvider'\nimport {styles} from './styles.css'\n\nexport interface ActionBarProps {\n /** Number of selected items, or 'all'. Hidden when 0. */\n selectedItemCount: number | 'all'\n /** Label for the selection count. Receives the count string. */\n selectedLabel?: (count: string) => string\n /** Whether to use emphasized (accent) styling. */\n isEmphasized?: boolean\n /** Called when the clear/close button is pressed. */\n onClearSelection: () => void\n /** Whether the bar can be dismissed. When false, the close button is hidden. @default true */\n dismissible?: boolean\n /** Action buttons to display. */\n children: ReactNode\n}\n\nfunction ActionBarContent({\n selectedItemCount,\n selectedLabel,\n isEmphasized = false,\n onClearSelection,\n dismissible = true,\n children,\n}: ActionBarProps) {\n const countStr = selectedItemCount === 'all' ? 'All' : `${selectedItemCount}`\n const label = selectedLabel ? selectedLabel(countStr) : `${countStr} selected`\n\n return (\n <html.div\n role=\"toolbar\"\n aria-label={label}\n style={[styles.overlay, isEmphasized && styles.overlayEmphasized]}\n >\n <html.span style={[styles.selectedCount, isEmphasized && styles.selectedCountEmphasized]}>\n {label}\n </html.span>\n <html.div style={[styles.separator, isEmphasized && styles.separatorEmphasized]} />\n <html.div style={styles.actions}>{children}</html.div>\n {dismissible && (\n <html.button\n type=\"button\"\n aria-label=\"Clear selection\"\n onClick={onClearSelection}\n style={[styles.closeButton, isEmphasized && styles.closeButtonEmphasized]}\n >\n <svg width={10} height={10} viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M1 1l8 8M9 1l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )}\n </html.div>\n )\n}\n\nfunction ActionBarInner(props: ActionBarProps) {\n const {selectedItemCount} = props\n const stack = useActionBarStack()\n const isActive = selectedItemCount !== 0\n\n const renderBar = useCallback(() => <ActionBarContent {...props} />, [props])\n\n useEffect(() => {\n if (!stack.managed) return\n if (isActive) {\n stack.register(renderBar)\n } else {\n stack.unregister()\n }\n return () => stack.unregister()\n }, [stack, isActive, renderBar])\n\n // If no provider, fall back to standalone rendering\n if (!stack.managed) {\n if (!isActive) return null\n return <ActionBarContent {...props} />\n }\n\n // Managed by provider — rendering happens there\n return null\n}\n\nexport const ActionBar = ActionBarInner\n","import type {ReactNode} from 'react'\n\nexport type IconName =\n | 'x-circle'\n | 'check-circle'\n | 'check-done'\n | 'clock'\n | 'forbidden'\n | 'info-circle'\n | 'alert-triangle'\n | 'shield'\n | 'lock'\n | 'key'\n // Navigation / wayfinding glyphs\n | 'map'\n | 'layers'\n | 'repeat'\n | 'database'\n | 'shield-check'\n | 'route'\n | 'git-branch'\n | 'menu'\n | 'pin'\n // People / access / admin glyphs\n | 'users'\n | 'user-plus'\n | 'mail'\n | 'file-text'\n | 'plug'\n // Color-mode glyphs\n | 'sun'\n | 'moon'\n | 'monitor'\n | 'contrast'\n // Filled variants (solid shape with cutout symbol)\n | 'info-circle-filled'\n | 'alert-triangle-filled'\n | 'check-circle-filled'\n | 'x-circle-filled'\n | 'shield-filled'\n | 'lock-filled'\n\n/** Stroke-based icons (Feather/Lucide style) */\nconst strokeIcons: Partial<Record<IconName, ReactNode>> = {\n 'x-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </>\n ),\n 'check-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"16 10 11 15 8 12\" />\n </>\n ),\n 'check-done': (\n <>\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22 4 12 14.01 9 11.01\" />\n </>\n ),\n clock: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </>\n ),\n forbidden: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\" />\n </>\n ),\n 'info-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </>\n ),\n 'alert-triangle': (\n <>\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </>\n ),\n shield: <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />,\n lock: (\n <>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </>\n ),\n key: (\n <>\n <path d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.78 7.78 5.5 5.5 0 0 1 7.78-7.78zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\" />\n </>\n ),\n // ---- navigation / wayfinding ----\n map: (\n <>\n <polygon points=\"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"18\" />\n <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"22\" />\n </>\n ),\n layers: (\n <>\n <polygon points=\"12 2 2 7 12 12 22 7 12 2\" />\n <polyline points=\"2 17 12 22 22 17\" />\n <polyline points=\"2 12 12 17 22 12\" />\n </>\n ),\n // Two crossing arrows — exchange / interface flows.\n repeat: (\n <>\n <polyline points=\"17 1 21 5 17 9\" />\n <path d=\"M3 11V9a4 4 0 0 1 4-4h14\" />\n <polyline points=\"7 23 3 19 7 15\" />\n <path d=\"M21 13v2a4 4 0 0 1-4 4H3\" />\n </>\n ),\n database: (\n <>\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\" />\n <path d=\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\" />\n </>\n ),\n 'shield-check': (\n <>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <polyline points=\"9 12 11 14 15 10\" />\n </>\n ),\n // Milestone path — roadmap / itinerary.\n route: (\n <>\n <circle cx=\"6\" cy=\"19\" r=\"3\" />\n <path d=\"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15\" />\n <circle cx=\"18\" cy=\"5\" r=\"3\" />\n </>\n ),\n 'git-branch': (\n <>\n <line x1=\"6\" y1=\"3\" x2=\"6\" y2=\"15\" />\n <circle cx=\"18\" cy=\"6\" r=\"3\" />\n <circle cx=\"6\" cy=\"18\" r=\"3\" />\n <path d=\"M18 9a9 9 0 0 1-9 9\" />\n </>\n ),\n menu: (\n <>\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </>\n ),\n // ---- people / access / admin ----\n users: (\n <>\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\" />\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" />\n </>\n ),\n 'user-plus': (\n <>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\n <circle cx=\"8.5\" cy=\"7\" r=\"4\" />\n <line x1=\"20\" y1=\"8\" x2=\"20\" y2=\"14\" />\n <line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\" />\n </>\n ),\n mail: (\n <>\n <path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\" />\n <polyline points=\"22,6 12,13 2,6\" />\n </>\n ),\n 'file-text': (\n <>\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\n <polyline points=\"10 9 9 9 8 9\" />\n </>\n ),\n plug: (\n <>\n <path d=\"M12 22v-5\" />\n <path d=\"M9 8V2\" />\n <path d=\"M15 8V2\" />\n <path d=\"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z\" />\n </>\n ),\n pin: (\n <>\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"22\" />\n <path d=\"M9 10.76V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v6.76a2 2 0 0 0 .55 1.38l1.68 1.78A1 1 0 0 1 16.5 16h-9a1 1 0 0 1-.73-1.68l1.68-1.78A2 2 0 0 0 9 10.76z\" />\n </>\n ),\n // ---- color mode ----\n sun: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"5\" />\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" />\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" />\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" />\n <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" />\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" />\n <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" />\n <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\n </>\n ),\n moon: <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />,\n monitor: (\n <>\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\" />\n <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\" />\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\" />\n </>\n ),\n // Circle, half solid — high-contrast / mode indicator.\n contrast: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 2a10 10 0 0 1 0 20z\" fill=\"currentColor\" stroke=\"none\" />\n </>\n ),\n}\n\n/**\n * Filled icons — solid shape with evenodd cutout for the inner symbol.\n * The cutout reveals the background color, so they work on any theme.\n * Uses fill=\"currentColor\" only, no stroke.\n */\nconst filledIcons: Partial<Record<IconName, ReactNode>> = {\n // Filled circle with \"i\" cutout (dot + line)\n 'info-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-.75 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0zM11 11a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0v-5z\"\n />\n ),\n // Filled triangle with \"!\" cutout\n 'alert-triangle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM11 10a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0v-3zm.25 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0z\"\n />\n ),\n // Filled circle with checkmark cutout\n 'check-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm4.707 8.707a1 1 0 0 0-1.414-1.414L11 13.586l-2.293-2.293a1 1 0 0 0-1.414 1.414l3 3a1 1 0 0 0 1.414 0l5-5z\"\n />\n ),\n // Filled circle with X cutout\n 'x-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zM9.707 8.293a1 1 0 0 0-1.414 1.414L10.586 12l-2.293 2.293a1 1 0 1 0 1.414 1.414L12 13.414l2.293 2.293a1 1 0 0 0 1.414-1.414L13.414 12l2.293-2.293a1 1 0 0 0-1.414-1.414L12 10.586 9.707 8.293z\"\n />\n ),\n // Filled shield with checkmark cutout\n 'shield-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 1L3 5v7c0 6.5 8.5 10.5 9 10.73.5-.23 9-4.23 9-10.73V5l-9-4zm3.707 8.707a1 1 0 0 0-1.414-1.414L11 11.586l-1.293-1.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4z\"\n />\n ),\n // Filled lock body with stroke shackle\n 'lock-filled': (\n <>\n <path\n d=\"M7 11V7a5 5 0 0 1 10 0v4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n </>\n ),\n}\n\ninterface IconProps {\n name: IconName\n size?: number\n}\n\nexport function Icon({name, size = 24}: IconProps) {\n const filled = filledIcons[name]\n if (filled) {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" width={size} height={size}>\n {filled}\n </svg>\n )\n }\n\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width={size}\n height={size}\n >\n {strokeIcons[name]}\n </svg>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n },\n iconWrap: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: 1,\n },\n content: {\n flex: 1,\n minWidth: 0,\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type AlertVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<AlertVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface AlertProps {\n variant?: AlertVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n children: ReactNode\n}\n\nfunction resolveIcon(icon: AlertProps['icon'], variant: AlertVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={18} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={18} />\n return icon\n}\n\nexport function Alert({variant = 'info', icon, children}: AlertProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div role=\"alert\" style={[styles.base, styles[variant]]}>\n {resolvedIcon ? (\n <>\n <html.div style={styles.iconWrap}>{resolvedIcon}</html.div>\n <html.div style={styles.content}>{children}</html.div>\n </>\n ) : (\n children\n )}\n </html.div>\n )\n}\n","/**\n * Platform flag resolved by the bundler's platform extensions: web bundlers\n * (Vite/Rollup) read THIS file (`isNative = false`); Metro reads\n * `platform.native.ts` (`isNative = true`) on React Native / Expo.\n *\n * It lets shared components layer a native-only style override without\n * importing `react-native` on web (the DS web build has no react-native).\n * Typed `boolean` (not the `false` literal) so `isNative && styles.x` stays a\n * `false | Style` union in style arrays rather than narrowing to `false`.\n */\nexport const isNative: boolean = false\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightMedium,\n lineHeight: 1,\n borderRadius: radii.full,\n whiteSpace: 'nowrap',\n },\n sizeMd: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n sizeSm: {\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n fontSize: '0.625rem',\n },\n default: {\n backgroundColor: colors.bgCardHover,\n color: colors.textMuted,\n },\n success: {\n backgroundColor: colors.successBg,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n color: colors.warningText,\n },\n error: {\n backgroundColor: colors.errorBg,\n color: colors.errorText,\n },\n info: {\n backgroundColor: colors.infoBg,\n color: colors.infoText,\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {styles} from './styles.css'\n\nexport type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type BadgeSize = 'sm' | 'md'\n\ninterface BadgeProps {\n variant?: BadgeVariant\n size?: BadgeSize\n children: ReactNode\n}\n\nconst sizeMap = {\n sm: styles.sizeSm,\n md: styles.sizeMd,\n} as const\n\nexport function Badge({variant = 'default', size = 'md', children}: BadgeProps) {\n return (\n <html.span style={[styles.base, isNative && styles.nativeFlex, sizeMap[size], styles[variant]]}>\n {children}\n </html.span>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, color, opacity, transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n textDecoration: 'none',\n whiteSpace: 'nowrap',\n // Tactile press feedback. The scale is suppressed under reduced motion (and\n // duration.fast collapses to 0ms there too), so it's inert for those users.\n transform: {\n default: 'scale(1)',\n ':active': {\n default: 'scale(0.97)',\n '@media (prefers-reduced-motion: reduce)': 'scale(1)',\n },\n },\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 2,\n },\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n ':active': colors.accentHover,\n },\n borderColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderColor: colors.border,\n color: colors.textMuted,\n },\n link: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n color: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n textDecoration: {\n default: 'none',\n ':hover': 'underline',\n },\n paddingLeft: 0,\n paddingRight: 0,\n },\n inverseSecondary: {\n backgroundColor: {\n default: 'rgba(0, 0, 0, 0.10)',\n ':hover': 'rgba(0, 0, 0, 0.18)',\n },\n borderColor: {\n default: 'rgba(0, 0, 0, 0.55)',\n ':hover': 'rgba(0, 0, 0, 0.70)',\n },\n color: colors.accentContrast,\n },\n danger: {\n backgroundColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n ':active': colors.errorHover,\n },\n borderColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n },\n color: colors.errorContrast,\n },\n fullWidth: {\n width: '100%',\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {styles} from './styles.css'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'inverseSecondary' | 'link' | 'danger'\nexport type ButtonSize = 'default' | 'small'\n\ninterface ButtonProps {\n variant?: ButtonVariant\n size?: ButtonSize\n fullWidth?: boolean\n disabled?: boolean\n type?: 'button' | 'submit'\n onClick?: () => void\n /** Accessible name override — e.g. for buttons whose visible text isn't unique. */\n 'aria-label'?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function Button({\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n disabled = false,\n type = 'button',\n onClick,\n 'aria-label': ariaLabel,\n children,\n}: ButtonProps) {\n return (\n <html.button\n type={type}\n disabled={disabled}\n onClick={onClick}\n aria-label={ariaLabel}\n style={[\n styles.base,\n isNative && styles.nativeFlex,\n sizeMap[size],\n styles[variant],\n fullWidth && styles.fullWidth,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n },\n horizontal: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n vertical: {\n flexDirection: 'column',\n },\n alignStart: {justifyContent: 'flex-start'},\n alignCenter: {justifyContent: 'center'},\n alignEnd: {justifyContent: 'flex-end'},\n verticalAlignStart: {alignItems: 'flex-start'},\n verticalAlignCenter: {alignItems: 'center'},\n verticalAlignEnd: {alignItems: 'flex-end'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMd: {gap: spacing.md},\n disabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport interface ButtonGroupProps {\n children: ReactNode\n /** Layout direction. Default: 'horizontal' */\n orientation?: 'horizontal' | 'vertical'\n /** Alignment within container. Default: 'start' */\n align?: 'start' | 'end' | 'center'\n /** Disable all buttons in group */\n disabled?: boolean\n /** Gap between buttons. Default: 'sm' */\n gap?: 'xs' | 'sm' | 'md'\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n md: styles.gapMd,\n} as const\n\nconst horizontalAlignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nconst verticalAlignMap = {\n start: styles.verticalAlignStart,\n center: styles.verticalAlignCenter,\n end: styles.verticalAlignEnd,\n} as const\n\nexport function ButtonGroup({\n children,\n orientation = 'horizontal',\n align = 'start',\n disabled = false,\n gap = 'sm',\n}: ButtonGroupProps) {\n const isVertical = orientation === 'vertical'\n const alignStyle = isVertical ? verticalAlignMap[align] : horizontalAlignMap[align]\n\n return (\n <html.div\n role=\"group\"\n style={[\n styles.base,\n isVertical ? styles.vertical : styles.horizontal,\n gapMap[gap],\n alignStyle,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n },\n // Vertically centres the icon with the message — the right default for the\n // short, single/two-line messages callouts usually carry.\n alignCenter: {\n alignItems: 'center',\n },\n // Aligns the icon to the first line — for long, multi-paragraph messages.\n alignStart: {\n alignItems: 'flex-start',\n },\n icon: {\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n content: {\n flexGrow: 1,\n minWidth: 0,\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type CalloutVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<CalloutVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface CalloutProps {\n variant?: CalloutVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n /**\n * Vertical alignment of the icon against the message. `center` (default)\n * suits short single/two-line messages; `start` aligns the icon to the first\n * line for long multi-paragraph content.\n */\n align?: 'center' | 'start'\n children: ReactNode\n}\n\nfunction resolveIcon(icon: CalloutProps['icon'], variant: CalloutVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={36} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={36} />\n return icon\n}\n\nexport function Callout({variant = 'info', icon, align = 'center', children}: CalloutProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div\n role=\"note\"\n style={[\n styles.base,\n styles[variant],\n align === 'center' ? styles.alignCenter : styles.alignStart,\n ]}\n >\n {resolvedIcon && <html.span style={styles.icon}>{resolvedIcon}</html.span>}\n <html.div style={styles.content}>{children}</html.div>\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n },\n // Variants\n elevated: {\n borderRadius: radii.lg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n },\n outlined: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n filled: {\n borderRadius: radii.md,\n },\n interactive: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n backgroundColor: {\n default: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n // Lift on hover; suppressed under reduced motion so there's no positional\n // shift (the token duration also collapses to 0ms there).\n transform: {\n default: 'translateY(0)',\n ':hover': {\n default: 'translateY(-2px)',\n '@media (prefers-reduced-motion: reduce)': 'translateY(0)',\n },\n },\n },\n // Sizes (padding)\n sizeDefault: {\n padding: spacing.lg,\n },\n sizeCompact: {\n padding: spacing.md,\n },\n sizeFull: {\n padding: spacing.xl,\n },\n // Header\n header: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n marginBottom: spacing.md,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type CardVariant = 'elevated' | 'outlined' | 'filled' | 'interactive'\nexport type CardSize = 'default' | 'compact' | 'full'\n\ninterface CardProps {\n variant?: CardVariant\n size?: CardSize\n header?: string\n onClick?: () => void\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n compact: styles.sizeCompact,\n full: styles.sizeFull,\n} as const\n\nexport function Card({\n variant = 'outlined',\n size = 'default',\n header,\n onClick,\n children,\n}: CardProps) {\n return (\n <html.div onClick={onClick} style={[styles.base, styles[variant], sizeMap[size]]}>\n {header && <html.div style={styles.header}>{header}</html.div>}\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n rootDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n box: {\n width: 18,\n height: 18,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.xs,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n transitionProperty: 'background-color, border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n boxUnchecked: {\n backgroundColor: colors.bg,\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n boxChecked: {\n backgroundColor: colors.accent,\n borderColor: colors.accent,\n },\n // Native-only checkmark: a small box showing just its right + bottom border,\n // rotated 45° into a tick. Pure CSS (RSD translates the transform string to\n // an RN transform), so no SVG / react-native-svg weight reaches web.\n checkmark: {\n width: 5,\n height: 9,\n borderRightWidth: 2,\n borderRightStyle: 'solid',\n borderRightColor: colors.accentContrast,\n borderBottomWidth: 2,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.accentContrast,\n transform: 'rotate(45deg)',\n marginTop: -2,\n },\n checkmarkVisible: {\n opacity: 1,\n },\n checkmarkHidden: {\n opacity: 0,\n },\n // Native label text — RN <Text> doesn't inherit color/size from the button\n // ancestor the way web inherits from <label>, so set it explicitly.\n labelText: {\n fontSize: typography.fontSizeSm,\n color: colors.text,\n },\n // Strip the default button chrome RSD gives <button> on native (border/bg/\n // padding mimic the browser default) so the row matches the web checkbox.\n nativeButton: {\n borderWidth: 0,\n backgroundColor: 'transparent',\n padding: 0,\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` (on both .root and .box); web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import {type ReactNode, useState, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {styles} from './styles.css'\n\ninterface CheckboxProps {\n name?: string\n value?: string\n checked?: boolean\n defaultChecked?: boolean\n disabled?: boolean\n /** Accessible label when no visible label (children) is provided. */\n 'aria-label'?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n children?: ReactNode\n}\n\nexport function Checkbox({\n name,\n value,\n checked: controlledChecked,\n defaultChecked = false,\n disabled = false,\n 'aria-label': ariaLabel,\n onChange,\n children,\n}: CheckboxProps) {\n const isControlled = controlledChecked !== undefined\n const [internalChecked, setInternalChecked] = useState(defaultChecked)\n const isChecked = isControlled ? controlledChecked : internalChecked\n\n // Web: the real <input type=checkbox> drives toggling, a11y and form submit.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(e.target.checked)\n }\n onChange?.(e)\n },\n [isControlled, onChange],\n )\n\n // Native: RSD only makes <button> pressable and has no <input type=checkbox>,\n // so the whole row is a button and we synthesize the change payload that\n // consumers read (e.target.checked).\n const handlePress = useCallback(() => {\n if (disabled) return\n const next = !isChecked\n if (!isControlled) {\n setInternalChecked(next)\n }\n onChange?.({\n target: {checked: next, name, value},\n } as unknown as React.ChangeEvent<HTMLInputElement>)\n }, [disabled, isChecked, isControlled, onChange, name, value])\n\n if (isNative) {\n return (\n <html.button\n type=\"button\"\n onClick={handlePress}\n disabled={disabled}\n role=\"checkbox\"\n aria-checked={isChecked}\n aria-label={!children ? ariaLabel : undefined}\n style={[\n styles.root,\n styles.nativeFlex,\n styles.nativeButton,\n disabled && styles.rootDisabled,\n ]}\n >\n <html.div\n style={[\n styles.box,\n styles.nativeFlex,\n isChecked ? styles.boxChecked : styles.boxUnchecked,\n ]}\n >\n {/* CSS-border checkmark (rotated right+bottom borders) — no SVG, no\n react-native-svg dep, so nothing is added to the web bundle. */}\n <html.div\n style={[styles.checkmark, isChecked ? styles.checkmarkVisible : styles.checkmarkHidden]}\n />\n </html.div>\n {children && <html.span style={styles.labelText}>{children}</html.span>}\n </html.button>\n )\n }\n\n return (\n <html.label style={[styles.root, disabled && styles.rootDisabled]}>\n <html.input\n type=\"checkbox\"\n name={name}\n value={value}\n checked={isControlled ? controlledChecked : undefined}\n defaultChecked={!isControlled ? defaultChecked : undefined}\n disabled={disabled}\n aria-label={!children ? ariaLabel : undefined}\n onChange={handleChange}\n style={styles.input}\n />\n <html.span\n style={[styles.box, isChecked ? styles.boxChecked : styles.boxUnchecked]}\n aria-hidden\n >\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n style={{opacity: isChecked ? 1 : 0}}\n >\n <polyline\n points=\"2.5 6 5 8.5 9.5 3.5\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {useState, useCallback} from 'react'\n\nexport function useControllableValue<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void,\n) {\n const [internal, setInternal] = useState(defaultValue)\n const value = controlledValue !== undefined ? controlledValue : internal\n const setValue = useCallback(\n (v: T) => {\n if (controlledValue === undefined) setInternal(v)\n onChange?.(v)\n },\n [controlledValue, onChange],\n )\n return [value, setValue] as const\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n rootHorizontal: {\n flexDirection: 'row',\n },\n})\n","import {type ReactNode, createContext, useContext, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {Checkbox} from '../Checkbox/Checkbox'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ninterface CheckboxGroupContextValue {\n value: string[]\n onToggle: (itemValue: string, checked: boolean) => void\n disabled: boolean\n}\n\nconst CheckboxGroupContext = createContext<CheckboxGroupContextValue | null>(null)\n\nfunction useCheckboxGroup() {\n const ctx = useContext(CheckboxGroupContext)\n if (!ctx) {\n throw new Error('CheckboxGroup.Item must be used within CheckboxGroup.Root')\n }\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n value?: string[]\n defaultValue?: string[]\n onValueChange?: (value: string[]) => void\n orientation?: 'horizontal' | 'vertical'\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Root({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n orientation = 'vertical',\n disabled = false,\n children,\n}: RootProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const onToggle = useCallback(\n (itemValue: string, checked: boolean) => {\n if (disabled) return\n const next = checked ? [...value, itemValue] : value.filter((v) => v !== itemValue)\n setValue(next)\n },\n [disabled, value, setValue],\n )\n\n return (\n <CheckboxGroupContext.Provider value={{value, onToggle, disabled}}>\n <html.div\n role=\"group\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'horizontal' && styles.rootHorizontal]}\n >\n {children}\n </html.div>\n </CheckboxGroupContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Item({value, disabled: itemDisabled = false, children}: ItemProps) {\n const {value: groupValue, onToggle, disabled: groupDisabled} = useCheckboxGroup()\n const isChecked = groupValue.includes(value)\n const isDisabled = groupDisabled || itemDisabled\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onToggle(value, e.target.checked)\n },\n [value, onToggle],\n )\n\n return (\n <Checkbox value={value} checked={isChecked} disabled={isDisabled} onChange={handleChange}>\n {children}\n </Checkbox>\n )\n}\n\nexport const CheckboxGroup = {\n Root,\n Item,\n}\n","import {createContext, useContext} from 'react'\nimport type {LabelPosition, NecessityIndicator} from '../Form/FormContext'\n\ninterface FieldContextValue {\n controlId: string\n descriptionId: string\n errorId: string\n invalid: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n necessityIndicator?: NecessityIndicator\n field?: {\n value: unknown\n onChange: (...event: unknown[]) => void\n onBlur: () => void\n ref: React.RefCallback<unknown>\n name: string\n }\n errorMessage?: string\n}\n\nexport type {FieldContextValue}\n\nexport const FieldContext = createContext<FieldContextValue | null>(null)\n\nexport function useFieldContext() {\n return useContext(FieldContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n width: 44,\n height: 34,\n padding: 2,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.sm,\n cursor: 'pointer',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: 1,\n },\n invalid: {\n borderColor: colors.error,\n },\n disabled: {\n cursor: 'not-allowed',\n opacity: 0.5,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {styles} from './styles.css'\n\ninterface ColorInputProps {\n /** Hex color, controlled (e.g. \"#cfc8ba\"). */\n value?: string\n defaultValue?: string\n name?: string\n /** Explicit id — overrides the Field-context controlId when set. */\n id?: string\n disabled?: boolean\n required?: boolean\n /** Accessible name when there is no associated <Field.Label>. */\n 'aria-label'?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLInputElement>\n}\n\n/**\n * A styled native `<input type=\"color\">` swatch. Mirrors <Input>'s native\n * surface (value/defaultValue/name/onChange/ref/disabled/required) and adopts\n * the parent <Field.Root> context (controlId for label association, value/\n * onChange when bound to a Form, invalid border, disabled) — so it drops into a\n * <Field> exactly like <Input>. The text <Input> can't render type=color, hence\n * a dedicated leaf.\n */\nexport function ColorInput({\n value,\n defaultValue,\n name,\n id,\n disabled,\n required,\n 'aria-label': ariaLabel,\n onChange,\n onBlur,\n ref,\n}: ColorInputProps) {\n const ctx = useFieldContext()\n const fieldCtx = ctx?.field\n\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveDisabled = disabled ?? ctx?.disabled\n\n return (\n <html.input\n type=\"color\"\n id={id ?? ctx?.controlId}\n name={effectiveName}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={effectiveDisabled}\n required={required}\n aria-label={ariaLabel}\n aria-invalid={ctx?.invalid || undefined}\n aria-describedby={\n ctx\n ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() || undefined\n : undefined\n }\n onChange={effectiveOnChange as React.ComponentProps<typeof html.input>['onChange']}\n onBlur={effectiveOnBlur as React.ComponentProps<typeof html.input>['onBlur']}\n ref={effectiveRef as React.Ref<HTMLInputElement>}\n style={[styles.base, ctx?.invalid && styles.invalid, effectiveDisabled && styles.disabled]}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n // --- Backdrop ---\n backdrop: {\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n zIndex: 1000,\n },\n backdropOpen: {\n opacity: 1,\n animationName: css.keyframes({\n from: {opacity: 0},\n to: {opacity: 1},\n }),\n animationDuration: '180ms',\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n backdropClosing: {\n opacity: 0,\n animationName: css.keyframes({\n from: {opacity: 1},\n to: {opacity: 0},\n }),\n animationDuration: '140ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Viewport (centering container) ---\n viewport: {\n position: 'fixed',\n inset: 0,\n zIndex: 1001,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: spacing.lg,\n // Allow clicking backdrop through viewport when clicking outside popup\n pointerEvents: 'none',\n },\n\n // --- Popup ---\n popup: {\n position: 'relative',\n backgroundColor: colors.bgCard,\n borderRadius: radii.lg,\n boxShadow: shadows.lg,\n width: '100%',\n maxHeight: '85vh',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n pointerEvents: 'auto',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n popupOpen: {\n opacity: 1,\n animationName: css.keyframes({\n from: {\n opacity: 0,\n transform: 'scale(0.97) translateY(8px)',\n },\n to: {\n opacity: 1,\n transform: 'scale(1) translateY(0)',\n },\n }),\n animationDuration: '180ms',\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n popupClosing: {\n opacity: 0,\n animationName: css.keyframes({\n from: {\n opacity: 1,\n transform: 'scale(1) translateY(0)',\n },\n to: {\n opacity: 0,\n transform: 'scale(0.97) translateY(8px)',\n },\n }),\n animationDuration: '140ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Sizes ---\n sm: {maxWidth: 400},\n md: {maxWidth: 520},\n lg: {maxWidth: 680},\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n gap: spacing.md,\n },\n\n // --- Title ---\n title: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n },\n\n // --- Description ---\n description: {\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n },\n\n // --- Body ---\n body: {\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n overflowY: 'auto',\n flex: 1,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: radii.sm,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n\n // --- Inline wrapper (for Trigger / Close children) ---\n inlineWrapper: {\n display: 'inline-flex',\n },\n\n // --- Reduced motion ---\n reducedMotion: {\n animationDuration: '1ms',\n },\n})\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type DialogSize = 'sm' | 'md' | 'lg'\n\n// --- Context ---\n\ninterface DialogContextValue {\n open: boolean\n closing: boolean\n dismissable: boolean\n requestOpen: () => void\n requestClose: () => void\n titleId: string\n descriptionId: string\n popupRef: RefObject<HTMLDivElement | null>\n}\n\nconst DialogContext = createContext<DialogContextValue | null>(null)\n\nfunction useDialog() {\n const ctx = useContext(DialogContext)\n if (!ctx) throw new Error('Dialog compound components must be used within Dialog.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when dialog open state changes */\n onOpenChange?: (open: boolean) => void\n /** Whether clicking backdrop closes the dialog. Default: true */\n dismissable?: boolean\n /** Duration of the close animation in ms. Default: 140 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n dismissable = true,\n closeAnimationDuration = 140,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const popupRef = useRef<HTMLDivElement>(null)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const titleId = useId()\n const descriptionId = useId()\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n closingTimerRef.current = null\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, closeAnimationDuration)\n }, [isControlled, onOpenChange, closeAnimationDuration])\n\n // If controlled open goes false externally, trigger close animation\n useEffect(() => {\n if (isControlled && !controlledOpen && !closing) {\n // Already closed, nothing to animate\n }\n }, [isControlled, controlledOpen, closing])\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n // Handle Escape key\n useEffect(() => {\n if (!isOpen && !closing) return\n if (!dismissable) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [isOpen, closing, dismissable, requestClose])\n\n // Lock body scroll when open\n useEffect(() => {\n if (isOpen || closing) {\n const prev = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = prev\n }\n }\n }, [isOpen, closing])\n\n return (\n <DialogContext.Provider\n value={{\n open: isOpen || closing,\n closing,\n dismissable,\n requestOpen,\n requestClose,\n titleId,\n descriptionId,\n popupRef,\n }}\n >\n {children}\n </DialogContext.Provider>\n )\n}\n\n// --- Trigger ---\n\ninterface TriggerProps {\n children: ReactNode\n}\n\nfunction Trigger({children}: TriggerProps) {\n const {requestOpen} = useDialog()\n\n return (\n <html.div onClick={requestOpen} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n}\n\n// --- Portal (renders backdrop + viewport + popup) ---\n\ninterface PortalProps {\n children: ReactNode\n size?: DialogSize\n}\n\nfunction Portal({children, size = 'md'}: PortalProps) {\n const {open, closing, dismissable, requestClose, titleId, descriptionId, popupRef} = useDialog()\n\n const handleBackdropClick = useCallback(() => {\n if (dismissable) {\n requestClose()\n }\n }, [dismissable, requestClose])\n\n if (!open) return null\n\n return (\n <>\n {/* Backdrop — click to dismiss */}\n <html.div\n style={[\n styles.backdrop,\n closing && styles.backdropClosing,\n !closing && styles.backdropOpen,\n ]}\n aria-hidden\n onClick={handleBackdropClick}\n />\n\n {/* Viewport (centering container, pointer-events: none) */}\n <html.div style={styles.viewport}>\n <html.div\n ref={popupRef}\n role=\"dialog\"\n aria-modal={true}\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n style={[\n styles.popup,\n styles[size],\n closing && styles.popupClosing,\n !closing && styles.popupOpen,\n ]}\n >\n {children}\n </html.div>\n </html.div>\n </>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId} = useDialog()\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Description ---\n\nfunction Description({children}: {children: ReactNode}) {\n const {descriptionId} = useDialog()\n return (\n <html.p id={descriptionId} style={styles.description}>\n {children}\n </html.p>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n return <html.div style={styles.body}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDialog()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const Dialog = {\n Root,\n Trigger,\n Portal,\n Header,\n Title,\n Description,\n Body,\n Footer,\n Close,\n}\n","import {createContext, useContext} from 'react'\n\ninterface InputGroupContextValue {\n inGroup: boolean\n}\n\nexport const InputGroupContext = createContext<InputGroupContextValue | null>(null)\n\nexport function useInputGroupContext() {\n return useContext(InputGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n inGroup: {\n borderWidth: 0,\n borderRadius: 0,\n outlineWidth: 0,\n },\n // orthogonal to variant (default/error) — composes on top so a mono field\n // still shows its error border. For slugs, identifiers, hashes.\n mono: {\n fontFamily: typography.fontFamilyMono,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {useInputGroupContext} from '../InputGroup/InputGroupContext'\nimport {styles} from './styles.css'\n\ntype StrictInputProps = React.ComponentProps<typeof html.input>\nexport type InputType = NonNullable<StrictInputProps['type']>\n\nexport type InputVariant = 'default' | 'error'\n\ninterface InputProps {\n variant?: InputVariant\n /** Orthogonal to variant — `mono` keeps the error border but uses the\n * monospace family (slugs, identifiers, hashes). */\n font?: 'mono'\n type?: InputType\n /** Explicit id — overrides the Field-context controlId when set (e.g. a\n * control used outside a Field that still needs a stable id). */\n id?: string\n name?: string\n placeholder?: string\n required?: boolean\n readOnly?: boolean\n minLength?: number\n maxLength?: number\n /** Numeric/range hints — forwarded to the native input (date/number/etc). */\n min?: string | number\n max?: string | number\n step?: string | number\n inputMode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'\n /** id of a <datalist> for native typeahead. */\n list?: string\n pattern?: string\n autoComplete?:\n | 'on'\n | 'off'\n | 'email'\n | 'username'\n | 'current-password'\n | 'new-password'\n | 'name'\n | 'tel'\n | 'url'\n value?: string\n defaultValue?: string\n disabled?: boolean\n autoFocus?: boolean\n /** Accessible name when there's no associated <Field.Label>. */\n 'aria-label'?: string\n /** Extra describedby ids (merged with the Field context's, if any). */\n 'aria-describedby'?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLInputElement>\n}\n\nexport function Input({\n variant = 'default',\n font,\n type = 'text',\n id,\n name,\n placeholder,\n required,\n readOnly,\n minLength,\n maxLength,\n min,\n max,\n step,\n inputMode,\n list,\n pattern,\n autoComplete,\n value,\n defaultValue,\n disabled,\n autoFocus,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedby,\n onChange,\n onBlur,\n ref,\n}: InputProps) {\n const ctx = useFieldContext()\n const groupCtx = useInputGroupContext()\n\n const fieldCtx = ctx?.field\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveDisabled = disabled ?? ctx?.disabled\n const effectiveVariant = ctx?.invalid ? 'error' : variant\n // Field context owns describedby (description + error); fall back to the\n // explicit prop only when standalone.\n const describedBy = ctx\n ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim()\n : ariaDescribedby\n\n // react-strict-dom omits some web-only props from its types, but the\n // underlying DOM element supports them. Type-assert to pass them through.\n const extraProps: Record<string, unknown> = {}\n if (pattern !== undefined) extraProps.pattern = pattern\n if (autoFocus) extraProps.autoFocus = true\n if (readOnly) extraProps.readOnly = true\n if (maxLength !== undefined) extraProps.maxLength = maxLength\n if (min !== undefined) extraProps.min = min\n if (max !== undefined) extraProps.max = max\n if (step !== undefined) extraProps.step = step\n if (inputMode !== undefined) extraProps.inputMode = inputMode\n if (list !== undefined) extraProps.list = list\n if (ariaLabel !== undefined) extraProps['aria-label'] = ariaLabel\n\n return (\n <html.input\n id={id ?? ctx?.controlId}\n type={type}\n name={effectiveName}\n placeholder={placeholder}\n required={required}\n minLength={minLength}\n autoComplete={autoComplete}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={effectiveDisabled}\n aria-describedby={describedBy || undefined}\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={effectiveOnChange as StrictInputProps['onChange']}\n onBlur={effectiveOnBlur as StrictInputProps['onBlur']}\n ref={effectiveRef as React.Ref<HTMLInputElement>}\n style={[\n styles.base,\n styles[effectiveVariant],\n font === 'mono' && styles.mono,\n groupCtx?.inGroup && styles.inGroup,\n ]}\n {...extraProps}\n />\n )\n}\n","import {createContext, useContext} from 'react'\n\nexport type LabelPosition = 'top' | 'side'\nexport type NecessityIndicator = 'icon' | 'label' | false\n\nexport interface FormContextValue {\n disabled: boolean\n labelPosition: LabelPosition\n necessityIndicator: NecessityIndicator\n}\n\nexport const FormContext = createContext<FormContextValue | null>(null)\n\nexport function useFormContext() {\n return useContext(FormContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n },\n rootSide: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.md,\n },\n label: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: colors.text,\n },\n labelSide: {\n minWidth: 120,\n paddingTop: spacing.sm,\n flexShrink: 0,\n },\n description: {\n fontSize: typography.fontSizeXs,\n color: colors.textMuted,\n },\n error: {\n fontSize: typography.fontSizeXs,\n color: colors.errorText,\n },\n fieldContent: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n flex: 1,\n minWidth: 0,\n },\n necessityIcon: {\n color: colors.error,\n },\n necessityLabel: {\n color: colors.textMuted,\n fontWeight: typography.fontWeightNormal,\n fontSize: typography.fontSizeXs,\n },\n})\n","import {type ReactNode, Children, isValidElement, useId, useMemo} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useFormContext as useRHFFormContext, useController} from 'react-hook-form'\nimport {FieldContext, useFieldContext} from './FieldContext'\nimport {useFormContext} from '../Form/FormContext'\nimport type {LabelPosition, NecessityIndicator} from '../Form/FormContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n invalid?: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n children: ReactNode\n}\n\nfunction Root({name, ...props}: RootProps) {\n const formCtx = useFormContext()\n if (name && formCtx) {\n return <ControlledRoot name={name} formCtx={formCtx} {...props} />\n }\n return <StaticRoot {...props} />\n}\n\n// Always calls useController — no conditional hooks\nfunction ControlledRoot({\n name,\n formCtx,\n invalid: invalidProp = false,\n required,\n disabled,\n labelPosition,\n children,\n}: {\n name: string\n formCtx: NonNullable<ReturnType<typeof useFormContext>>\n invalid?: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n children: ReactNode\n}) {\n const id = useId()\n const {control} = useRHFFormContext()\n const {field, fieldState} = useController({control, name})\n const invalid = invalidProp || !!fieldState.error\n\n const effectiveDisabled = disabled ?? formCtx.disabled\n const effectiveLabelPosition = labelPosition ?? formCtx.labelPosition\n const effectiveNecessityIndicator = formCtx.necessityIndicator\n\n const ctx = useMemo(\n () => ({\n controlId: `${id}-control`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n invalid,\n required,\n disabled: effectiveDisabled,\n labelPosition: effectiveLabelPosition,\n necessityIndicator: effectiveNecessityIndicator,\n field: {\n value: field.value,\n onChange: field.onChange,\n onBlur: field.onBlur,\n ref: field.ref,\n name: field.name,\n },\n errorMessage: fieldState.error?.message,\n }),\n [\n id,\n invalid,\n required,\n effectiveDisabled,\n effectiveLabelPosition,\n effectiveNecessityIndicator,\n field.value,\n field.onChange,\n field.onBlur,\n field.ref,\n field.name,\n fieldState.error,\n ],\n )\n\n return (\n <FieldContext.Provider value={ctx}>\n <FieldLayout labelPosition={effectiveLabelPosition}>{children}</FieldLayout>\n </FieldContext.Provider>\n )\n}\n\n// Current behavior, no RHF dependency\nfunction StaticRoot({\n invalid = false,\n required,\n disabled,\n labelPosition = 'top',\n children,\n}: {\n invalid?: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n children: ReactNode\n}) {\n const id = useId()\n const ctx = useMemo(\n () => ({\n controlId: `${id}-control`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n invalid,\n required,\n disabled,\n labelPosition,\n }),\n [id, invalid, required, disabled, labelPosition],\n )\n\n return (\n <FieldContext.Provider value={ctx}>\n <FieldLayout labelPosition={labelPosition}>{children}</FieldLayout>\n </FieldContext.Provider>\n )\n}\n\n// --- FieldLayout ---\n// When labelPosition is 'side', separates Label from other children\n// and wraps the non-label children in a content column.\nfunction FieldLayout({\n labelPosition,\n children,\n}: {\n labelPosition: LabelPosition\n children: ReactNode\n}) {\n if (labelPosition !== 'side') {\n return <html.div style={styles.root}>{children}</html.div>\n }\n\n let labelNode: ReactNode = null\n const rest: ReactNode[] = []\n\n Children.forEach(children, (child) => {\n if (isValidElement(child) && child.type === Label && !labelNode) {\n labelNode = child\n } else {\n rest.push(child)\n }\n })\n\n return (\n <html.div style={styles.rootSide}>\n {labelNode}\n <html.div style={styles.fieldContent}>{rest}</html.div>\n </html.div>\n )\n}\n\n// --- Label ---\ninterface LabelProps {\n children: ReactNode\n}\n\nfunction Label({children}: LabelProps) {\n const ctx = useFieldContext()\n const isSide = ctx?.labelPosition === 'side'\n const indicator = ctx?.necessityIndicator\n\n return (\n <html.label for={ctx?.controlId} style={[styles.label, isSide && styles.labelSide]}>\n {children}\n {indicator === 'icon' && ctx?.required && (\n <html.span style={styles.necessityIcon} aria-hidden={true}>\n {' *'}\n </html.span>\n )}\n {indicator === 'label' && (\n <html.span style={styles.necessityLabel}>\n {ctx?.required ? ' (required)' : ' (optional)'}\n </html.span>\n )}\n </html.label>\n )\n}\n\n// --- Description ---\ninterface DescriptionProps {\n children: ReactNode\n}\n\nfunction Description({children}: DescriptionProps) {\n const ctx = useFieldContext()\n return (\n <html.span id={ctx?.descriptionId} style={styles.description}>\n {children}\n </html.span>\n )\n}\n\n// --- Error ---\ninterface ErrorProps {\n children?: ReactNode\n}\n\nfunction Error({children}: ErrorProps) {\n const ctx = useFieldContext()\n const content = children ?? ctx?.errorMessage\n if (!ctx?.invalid && !content) return null\n\n return (\n <html.span id={ctx?.errorId} role=\"alert\" style={styles.error}>\n {content}\n </html.span>\n )\n}\n\nexport const Field = {\n Root,\n Label,\n Description,\n Error,\n}\n","import {type ReactNode, useState} from 'react'\nimport {Dialog} from '../Dialog/Dialog'\nimport {Button} from '../Button/Button'\nimport {Input} from '../Input/Input'\nimport {Field} from '../Field/Field'\n\ntype DialogSize = 'sm' | 'md' | 'lg'\n\ninterface ConfirmDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: ReactNode\n /** Warning / cascade body. */\n children?: ReactNode\n /** When set, the confirm action stays DISABLED until the user types this\n * exact phrase (org name, slug…). The typed value is a client-side gate\n * only — it is never submitted. */\n confirmPhrase?: string\n /** Prompt shown above the phrase input. */\n promptLabel?: ReactNode\n cancelLabel?: ReactNode\n /**\n * App-owned confirm control. Receives whether the phrase gate is satisfied,\n * so the app can render its OWN <Button type=\"submit\"> INSIDE its form\n * (e.g. a react-router fetcher.Form with hidden intent fields) — the DS does\n * NOT own the submit, avoiding a fight with the app's form flow. Takes\n * precedence over onConfirm/confirmLabel.\n */\n confirmSlot?: (gate: {satisfied: boolean}) => ReactNode\n /** Simple case (no app form): the DS renders a danger Button calling this. */\n onConfirm?: () => void\n confirmLabel?: ReactNode\n size?: DialogSize\n}\n\n/**\n * Generic destructive-confirmation dialog: layout + an optional type-a-phrase\n * gate. The DS owns the shell and the gate; the APP owns the actual submit\n * (via `confirmSlot`) so it composes with form libraries instead of forcing a\n * callback. Domain warning text goes in `children`.\n */\nexport function ConfirmDialog({\n open,\n onOpenChange,\n title,\n children,\n confirmPhrase,\n promptLabel,\n cancelLabel = 'Cancel',\n confirmSlot,\n onConfirm,\n confirmLabel = 'Confirm',\n size = 'sm',\n}: ConfirmDialogProps) {\n const [typed, setTyped] = useState('')\n const satisfied = !confirmPhrase || typed.trim() === confirmPhrase\n\n const handleOpenChange = (next: boolean) => {\n if (!next) setTyped('') // reset the gate when the dialog closes\n onOpenChange(next)\n }\n\n return (\n <Dialog.Root open={open} onOpenChange={handleOpenChange}>\n <Dialog.Portal size={size}>\n <Dialog.Header>\n <Dialog.Title>{title}</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n {children}\n {confirmPhrase ? (\n <Field.Root>\n {promptLabel ? <Field.Label>{promptLabel}</Field.Label> : null}\n <Input\n font=\"mono\"\n value={typed}\n onChange={(e) => setTyped(e.target.value)}\n autoFocus\n aria-label=\"confirmation phrase\"\n />\n </Field.Root>\n ) : null}\n </Dialog.Body>\n <Dialog.Footer>\n <Button variant=\"secondary\" onClick={() => handleOpenChange(false)}>\n {cancelLabel}\n </Button>\n {confirmSlot ? (\n confirmSlot({satisfied})\n ) : onConfirm ? (\n <Button variant=\"danger\" disabled={!satisfied} onClick={onConfirm}>\n {confirmLabel}\n </Button>\n ) : null}\n </Dialog.Footer>\n </Dialog.Portal>\n </Dialog.Root>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\n// The \"Apple ease\" curves and the 280ms open now live in the shared motion\n// tokens (easing.easeOut/easeIn, duration.slow). The 220ms close is specific to\n// this panel's exit, so it stays local.\nconst CLOSE_DURATION = '220ms'\n\nexport const styles = css.create({\n // --- Outer wrapper: animates width from 0 → target ---\n wrapper: {\n overflow: 'hidden',\n flexShrink: 0,\n position: 'relative',\n },\n\n // --- Wrapper open/close: SM (360px) ---\n wrapperOpenSm: {\n animationName: css.keyframes({\n from: {width: 0},\n to: {width: 360},\n }),\n animationDuration: duration.slow,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n wrapperCloseSm: {\n animationName: css.keyframes({\n from: {width: 360},\n to: {width: 0},\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Wrapper open/close: MD (480px) ---\n wrapperOpenMd: {\n animationName: css.keyframes({\n from: {width: 0},\n to: {width: 480},\n }),\n animationDuration: duration.slow,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n wrapperCloseMd: {\n animationName: css.keyframes({\n from: {width: 480},\n to: {width: 0},\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Content panel ---\n content: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: colors.bgCard,\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n boxShadow: shadows.sm,\n position: 'relative',\n },\n\n // Content must maintain its target width even while wrapper is narrower\n contentSm: {width: 360},\n contentMd: {width: 480},\n\n // --- Content slide + fade animations ---\n slideIn: {\n animationName: css.keyframes({\n from: {\n transform: 'translateX(40px)',\n opacity: 0,\n },\n to: {\n transform: 'translateX(0)',\n opacity: 1,\n },\n }),\n animationDuration: duration.slow,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOut: {\n animationName: css.keyframes({\n from: {\n transform: 'translateX(0)',\n opacity: 1,\n },\n to: {\n transform: 'translateX(40px)',\n opacity: 0,\n },\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n gap: spacing.md,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n\n // --- Title ---\n title: {\n fontSize: 18,\n fontWeight: 600,\n lineHeight: 1.4,\n color: colors.text,\n margin: 0,\n flex: 1,\n minWidth: 0,\n },\n\n // --- Body ---\n body: {\n flex: 1,\n overflowY: 'auto',\n // Minimal inset prevents child borders from touching panel structural borders\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n },\n bodyPadded: {\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: 8,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n\n inlineWrapper: {\n display: 'inline-flex',\n },\n})\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type DetailPanelSize = 'sm' | 'md'\n\n// --- Context ---\n\ninterface DetailPanelContextValue {\n present: boolean\n closing: boolean\n requestOpen: () => void\n requestClose: () => void\n titleId: string\n labelId: string | undefined\n registerTitle: (id: string) => void\n unregisterTitle: () => void\n panelRef: RefObject<HTMLDivElement | null>\n}\n\nconst DetailPanelContext = createContext<DetailPanelContextValue | null>(null)\n\nfunction useDetailPanel() {\n const ctx = useContext(DetailPanelContext)\n if (!ctx) throw new Error('DetailPanel compound components must be used within DetailPanel.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Duration of the close animation in ms. Default: 220 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n closeAnimationDuration = 220,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [present, setPresent] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const panelRef = useRef<HTMLDivElement>(null)\n const previousFocusRef = useRef<Element | null>(null)\n\n const titleId = useId()\n const [labelId, setLabelId] = useState<string | undefined>(undefined)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n // Sync presence with open state\n useEffect(() => {\n if (isOpen && !present) {\n setPresent(true)\n setClosing(false)\n } else if (!isOpen && present && !closing) {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n setPresent(false)\n closingTimerRef.current = null\n }, closeAnimationDuration)\n }\n }, [isOpen, present, closing, closeAnimationDuration])\n\n // Focus management: move focus on open, restore on close\n useEffect(() => {\n if (present && !closing) {\n previousFocusRef.current = document.activeElement\n panelRef.current?.focus()\n }\n }, [present]) // eslint-disable-line react-hooks/exhaustive-deps -- only on present change\n\n useEffect(() => {\n if (!present && previousFocusRef.current) {\n const el = previousFocusRef.current as HTMLElement\n if (typeof el.focus === 'function') {\n el.focus()\n }\n previousFocusRef.current = null\n }\n }, [present])\n\n // ESC handler\n useEffect(() => {\n if (!present || closing) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [present, closing]) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n setClosing(false)\n }\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, [isControlled, onOpenChange])\n\n const registerTitle = useCallback((id: string) => {\n setLabelId(id)\n }, [])\n\n const unregisterTitle = useCallback(() => {\n setLabelId(undefined)\n }, [])\n\n return (\n <DetailPanelContext.Provider\n value={{\n present,\n closing,\n requestOpen,\n requestClose,\n titleId,\n labelId,\n registerTitle,\n unregisterTitle,\n panelRef,\n }}\n >\n {children}\n </DetailPanelContext.Provider>\n )\n}\n\n// --- Content ---\n\ninterface ContentProps {\n children: ReactNode\n /** Width of the panel. Default: 'sm' (360px) */\n size?: DetailPanelSize\n /** Accessible name for the complementary landmark */\n label: string\n}\n\nconst wrapperOpenMap = {\n sm: styles.wrapperOpenSm,\n md: styles.wrapperOpenMd,\n} as const\n\nconst wrapperCloseMap = {\n sm: styles.wrapperCloseSm,\n md: styles.wrapperCloseMd,\n} as const\n\nfunction Content({children, size = 'sm', label}: ContentProps) {\n const {present, closing, labelId, panelRef} = useDetailPanel()\n\n if (!present) return null\n\n return (\n <html.div style={[styles.wrapper, closing ? wrapperCloseMap[size] : wrapperOpenMap[size]]}>\n <html.div\n ref={panelRef}\n role=\"complementary\"\n aria-label={!labelId ? label : undefined}\n aria-labelledby={labelId || undefined}\n tabIndex={-1}\n style={[\n styles.content,\n size === 'sm' ? styles.contentSm : styles.contentMd,\n closing ? styles.slideOut : styles.slideIn,\n ]}\n >\n {children}\n </html.div>\n </html.div>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId, registerTitle, unregisterTitle} = useDetailPanel()\n\n useEffect(() => {\n registerTitle(titleId)\n return () => unregisterTitle()\n }, [titleId, registerTitle, unregisterTitle])\n\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Body ---\n\ninterface BodyProps {\n children: ReactNode\n /** Adds inner padding. Default: true */\n padded?: boolean\n}\n\nfunction Body({children, padded = true}: BodyProps) {\n return <html.div style={[styles.body, padded && styles.bodyPadded]}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDetailPanel()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const DetailPanel = {\n Root,\n Content,\n Header,\n Title,\n Body,\n Footer,\n Close,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n // --- Backdrop ---\n backdrop: {\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n zIndex: 1000,\n },\n backdropOpen: {\n animationName: css.keyframes({\n from: {opacity: 0},\n to: {opacity: 1},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n backdropClosing: {\n animationName: css.keyframes({\n from: {opacity: 1},\n to: {opacity: 0},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Viewport (positioning container) ---\n viewport: {\n position: 'fixed',\n inset: 0,\n zIndex: 1001,\n display: 'flex',\n pointerEvents: 'none',\n },\n\n // Right anchor (desktop default)\n viewportRight: {\n justifyContent: 'flex-end',\n alignItems: 'stretch',\n },\n // Left anchor\n viewportLeft: {\n justifyContent: 'flex-start',\n alignItems: 'stretch',\n },\n // Bottom anchor (mobile default)\n viewportBottom: {\n justifyContent: 'stretch',\n alignItems: 'flex-end',\n },\n\n // --- Panel ---\n panel: {\n position: 'relative',\n backgroundColor: colors.bgCard,\n boxShadow: shadows.lg,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n pointerEvents: 'auto',\n borderWidth: 0,\n touchAction: 'none',\n },\n\n // Panel sizing per anchor\n panelHorizontal: {\n width: '100%',\n height: '100%',\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n },\n panelVertical: {\n width: '100%',\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n borderTopLeftRadius: radii.lg,\n borderTopRightRadius: radii.lg,\n maxHeight: '85vh',\n },\n panelLeftBorder: {\n borderLeftWidth: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n\n // --- Panel widths (horizontal anchors) ---\n sm: {maxWidth: 360},\n md: {maxWidth: 480},\n lg: {maxWidth: 640},\n\n // --- Slide animations: Right ---\n slideInRight: {\n animationName: css.keyframes({\n from: {transform: 'translateX(100%)'},\n to: {transform: 'translateX(0)'},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOutRight: {\n animationName: css.keyframes({\n from: {transform: 'translateX(0)'},\n to: {transform: 'translateX(100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Slide animations: Left ---\n slideInLeft: {\n animationName: css.keyframes({\n from: {transform: 'translateX(-100%)'},\n to: {transform: 'translateX(0)'},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOutLeft: {\n animationName: css.keyframes({\n from: {transform: 'translateX(0)'},\n to: {transform: 'translateX(-100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Slide animations: Bottom ---\n slideInBottom: {\n animationName: css.keyframes({\n from: {transform: 'translateY(100%)'},\n to: {transform: 'translateY(0)'},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOutBottom: {\n animationName: css.keyframes({\n from: {transform: 'translateY(0)'},\n to: {transform: 'translateY(100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n gap: spacing.md,\n },\n\n // --- Title ---\n title: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n },\n\n // --- Description ---\n description: {\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n },\n\n // --- Body ---\n body: {\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n overflowY: 'auto',\n flex: 1,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: radii.sm,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n\n // --- Inline wrapper ---\n inlineWrapper: {\n display: 'inline-flex',\n },\n})\n","import {useRef, useCallback, useEffect} from 'react'\nimport type {DrawerAnchor} from './Drawer'\n\n/** Threshold: fraction of panel size the user must drag to dismiss */\nconst DISMISS_THRESHOLD = 0.3\n\n/** Minimum velocity (px/ms) to dismiss even below threshold */\nconst VELOCITY_THRESHOLD = 0.5\n\n/** Duration for the dismiss slide-out animation (ms) */\nconst DISMISS_DURATION = 160\n\n/**\n * Max pixels the panel visually \"grows\" when dragged in the opposite direction.\n * iOS-style: panel stays anchored to its edge, doesn't translate.\n * Instead we show a subtle shadow/scale hint capped at this value.\n */\nconst OPPOSITE_MAX_OVERSCROLL = 12\n\ninterface UseSwipeDismissOptions {\n anchor: DrawerAnchor\n enabled: boolean\n onDismiss: () => void\n panelRef: React.RefObject<HTMLDivElement | null>\n}\n\ninterface SwipeState {\n startX: number\n startY: number\n currentX: number\n currentY: number\n startTime: number\n swiping: boolean\n panelSize: number\n}\n\n/**\n * Hook that adds swipe-to-dismiss gesture to a drawer panel.\n *\n * Dismiss direction: panel follows finger 1:1, backdrop fades.\n * Opposite direction: iOS-style — panel stays anchored, shows subtle\n * overscroll feedback (box-shadow intensifies), then snaps back.\n */\nexport function useSwipeDismiss({anchor, enabled, onDismiss, panelRef}: UseSwipeDismissOptions) {\n const stateRef = useRef<SwipeState>({\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n startTime: 0,\n swiping: false,\n panelSize: 0,\n })\n\n const isHorizontal = anchor === 'left' || anchor === 'right'\n\n /** Returns positive = dismiss direction, negative = opposite */\n const getMovement = useCallback(\n (state: SwipeState) => {\n if (isHorizontal) {\n const dx = state.currentX - state.startX\n return anchor === 'right' ? dx : -dx\n }\n return state.currentY - state.startY\n },\n [anchor, isHorizontal],\n )\n\n const applyTransform = useCallback(\n (movement: number, panelEl: HTMLDivElement) => {\n const size = Number(panelEl.dataset.panelSize) || 1\n\n if (movement >= 0) {\n // Dismiss direction — 1:1 tracking\n const progress = movement / size\n\n if (isHorizontal) {\n const sign = anchor === 'right' ? 1 : -1\n panelEl.style.transform = `translateX(${sign * movement}px)`\n } else {\n panelEl.style.transform = `translateY(${movement}px)`\n }\n\n // Fade backdrop proportionally\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.opacity = String(Math.max(0, 1 - progress))\n }\n } else {\n // Opposite direction — iOS behavior:\n // Panel stays anchored (no translate). Show subtle overscroll via box-shadow.\n // Diminishing resistance: asymptotically approaches OPPOSITE_MAX_OVERSCROLL.\n const absMovement = Math.abs(movement)\n const overscroll = (absMovement / (absMovement + size * 0.5)) * OPPOSITE_MAX_OVERSCROLL\n const shadowSpread = Math.round(overscroll)\n\n panelEl.style.transform = ''\n panelEl.style.boxShadow =\n shadowSpread > 0 ? `0 0 ${shadowSpread * 2}px ${shadowSpread}px rgba(0, 0, 0, 0.15)` : ''\n }\n },\n [anchor, isHorizontal],\n )\n\n /** Reset all inline styles (snap back) */\n const resetStyles = useCallback((panelEl: HTMLDivElement) => {\n panelEl.style.transform = ''\n panelEl.style.boxShadow = ''\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.opacity = ''\n }\n }, [])\n\n /** Animate to fully dismissed position, then call onDismiss */\n const animateDismiss = useCallback(\n (panelEl: HTMLDivElement) => {\n const dismissTransform = isHorizontal\n ? `translateX(${anchor === 'right' ? '100%' : '-100%'})`\n : 'translateY(100%)'\n\n panelEl.style.transition = `transform ${DISMISS_DURATION}ms ease-in`\n panelEl.style.transform = dismissTransform\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.transition = `opacity ${DISMISS_DURATION}ms ease-in`\n backdrop.style.opacity = '0'\n }\n\n // When the slide-out transition finishes, just call onDismiss.\n // Do NOT reset inline styles before unmount — that causes a 1-frame flash\n // where the panel appears at its original position. React will unmount the\n // DOM node entirely, so the inline styles don't need cleanup.\n let dismissed = false\n const done = () => {\n if (dismissed) return\n dismissed = true\n onDismiss()\n }\n panelEl.addEventListener('transitionend', done, {once: true})\n setTimeout(done, DISMISS_DURATION + 50)\n },\n [anchor, isHorizontal, onDismiss],\n )\n\n /** Animate snap-back for dismiss-direction undershoot */\n const animateSnapBack = useCallback((panelEl: HTMLDivElement) => {\n panelEl.style.transition = 'transform 200ms cubic-bezier(0.25, 1, 0.5, 1)'\n panelEl.style.transform = ''\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.transition = 'opacity 200ms cubic-bezier(0.25, 1, 0.5, 1)'\n backdrop.style.opacity = ''\n }\n\n const cleanup = () => {\n panelEl.style.transition = ''\n if (backdrop) backdrop.style.transition = ''\n }\n panelEl.addEventListener('transitionend', cleanup, {once: true})\n setTimeout(cleanup, 250)\n }, [])\n\n useEffect(() => {\n if (!enabled) return\n const panel = panelRef.current\n if (!panel) return\n\n function handlePointerDown(e: PointerEvent) {\n if (e.button !== 0) return\n const target = e.target as HTMLElement\n if (target.closest('button, a, input, textarea, select, [role=\"button\"]')) {\n return\n }\n\n const rect = panel!.getBoundingClientRect()\n const state = stateRef.current\n state.startX = e.clientX\n state.startY = e.clientY\n state.currentX = e.clientX\n state.currentY = e.clientY\n state.startTime = Date.now()\n state.swiping = false\n state.panelSize = isHorizontal ? rect.width : rect.height\n\n panel!.dataset.panelSize = String(state.panelSize)\n panel!.setPointerCapture(e.pointerId)\n\n // Freeze CSS animation — we take over positioning.\n // Never restore it; the panel is already at its final resting position.\n panel!.style.animation = 'none'\n }\n\n function handlePointerMove(e: PointerEvent) {\n const state = stateRef.current\n if (state.startTime === 0) return\n\n state.currentX = e.clientX\n state.currentY = e.clientY\n\n const dx = Math.abs(state.currentX - state.startX)\n const dy = Math.abs(state.currentY - state.startY)\n\n if (!state.swiping) {\n const totalMovement = Math.sqrt(dx * dx + dy * dy)\n if (totalMovement < 8) return\n\n if (isHorizontal && dx > dy) {\n state.swiping = true\n } else if (!isHorizontal && dy > dx) {\n state.swiping = true\n } else {\n // Wrong axis — abort gesture\n state.startTime = 0\n return\n }\n }\n\n if (state.swiping) {\n e.preventDefault()\n const movement = getMovement(state)\n applyTransform(movement, panel!)\n }\n }\n\n function handlePointerUp(_e: PointerEvent) {\n const state = stateRef.current\n if (state.startTime === 0) return\n\n const movement = getMovement(state)\n const elapsed = Date.now() - state.startTime\n const velocity = movement / elapsed\n\n state.startTime = 0\n\n if (!state.swiping) {\n return\n }\n\n state.swiping = false\n\n if (movement <= 0) {\n // Was dragging in opposite direction — just reset (no translate was applied)\n resetStyles(panel!)\n return\n }\n\n const fraction = movement / state.panelSize\n const shouldDismiss = fraction > DISMISS_THRESHOLD || velocity > VELOCITY_THRESHOLD\n\n if (shouldDismiss) {\n animateDismiss(panel!)\n } else {\n animateSnapBack(panel!)\n }\n }\n\n function handlePointerCancel() {\n const state = stateRef.current\n state.startTime = 0\n state.swiping = false\n resetStyles(panel!)\n }\n\n panel.addEventListener('pointerdown', handlePointerDown)\n panel.addEventListener('pointermove', handlePointerMove)\n panel.addEventListener('pointerup', handlePointerUp)\n panel.addEventListener('pointercancel', handlePointerCancel)\n\n function handleTouchMove(e: TouchEvent) {\n if (stateRef.current.swiping) {\n e.preventDefault()\n }\n }\n panel.addEventListener('touchmove', handleTouchMove, {passive: false})\n\n return () => {\n panel.removeEventListener('pointerdown', handlePointerDown)\n panel.removeEventListener('pointermove', handlePointerMove)\n panel.removeEventListener('pointerup', handlePointerUp)\n panel.removeEventListener('pointercancel', handlePointerCancel)\n panel.removeEventListener('touchmove', handleTouchMove)\n }\n }, [\n enabled,\n panelRef,\n anchor,\n isHorizontal,\n getMovement,\n applyTransform,\n resetStyles,\n animateSnapBack,\n animateDismiss,\n ])\n}\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {useSwipeDismiss} from './useSwipeDismiss'\n\n// --- Types ---\n\nexport type DrawerAnchor = 'right' | 'left' | 'bottom'\nexport type DrawerSize = 'sm' | 'md' | 'lg'\n\n// --- Context ---\n\ninterface DrawerContextValue {\n open: boolean\n closing: boolean\n anchor: DrawerAnchor\n dismissable: boolean\n swipeDismiss: boolean\n requestOpen: () => void\n requestClose: () => void\n /** Close immediately without CSS animation (used by swipe dismiss which handles its own exit animation) */\n requestCloseImmediate: () => void\n titleId: string\n descriptionId: string\n panelRef: RefObject<HTMLDivElement | null>\n}\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null)\n\nfunction useDrawer() {\n const ctx = useContext(DrawerContext)\n if (!ctx) throw new Error('Drawer compound components must be used within Drawer.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when drawer open state changes */\n onOpenChange?: (open: boolean) => void\n /** Which edge the drawer slides from. Default: 'right' */\n anchor?: DrawerAnchor\n /** Whether clicking backdrop or pressing Escape closes the drawer. Default: true */\n dismissable?: boolean\n /** Whether swipe gesture dismisses the drawer. Default: true */\n swipeDismiss?: boolean\n /** Duration of the close animation in ms. Default: 160 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n anchor = 'right',\n dismissable = true,\n swipeDismiss = true,\n closeAnimationDuration = 160,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const panelRef = useRef<HTMLDivElement>(null)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const titleId = useId()\n const descriptionId = useId()\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n closingTimerRef.current = null\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, closeAnimationDuration)\n }, [isControlled, onOpenChange, closeAnimationDuration])\n\n const requestCloseImmediate = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, [isControlled, onOpenChange])\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n // Handle Escape key\n useEffect(() => {\n if (!isOpen && !closing) return\n if (!dismissable) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [isOpen, closing, dismissable, requestClose])\n\n // Lock body scroll when open\n useEffect(() => {\n if (isOpen || closing) {\n const prev = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = prev\n }\n }\n }, [isOpen, closing])\n\n return (\n <DrawerContext.Provider\n value={{\n open: isOpen || closing,\n closing,\n anchor,\n dismissable,\n swipeDismiss,\n requestOpen,\n requestClose,\n requestCloseImmediate,\n titleId,\n descriptionId,\n panelRef,\n }}\n >\n {children}\n </DrawerContext.Provider>\n )\n}\n\n// --- Trigger ---\n\nfunction Trigger({children}: {children: ReactNode}) {\n const {requestOpen} = useDrawer()\n\n return (\n <html.div onClick={requestOpen} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n}\n\n// --- Portal ---\n\ninterface PortalProps {\n children: ReactNode\n size?: DrawerSize\n}\n\n// Slide animation maps\nconst slideInMap = {\n right: styles.slideInRight,\n left: styles.slideInLeft,\n bottom: styles.slideInBottom,\n} as const\n\nconst slideOutMap = {\n right: styles.slideOutRight,\n left: styles.slideOutLeft,\n bottom: styles.slideOutBottom,\n} as const\n\nconst viewportAnchorMap = {\n right: styles.viewportRight,\n left: styles.viewportLeft,\n bottom: styles.viewportBottom,\n} as const\n\nfunction Portal({children, size = 'md'}: PortalProps) {\n const {\n open,\n closing,\n anchor,\n dismissable,\n swipeDismiss: swipeEnabled,\n requestClose,\n requestCloseImmediate,\n titleId,\n descriptionId,\n panelRef,\n } = useDrawer()\n\n const handleBackdropClick = useCallback(() => {\n if (dismissable) {\n requestClose()\n }\n }, [dismissable, requestClose])\n\n // Swipe-to-dismiss — uses immediate close since the hook handles its own exit animation\n useSwipeDismiss({\n anchor,\n enabled: swipeEnabled && open && !closing,\n onDismiss: requestCloseImmediate,\n panelRef,\n })\n\n if (!open) return null\n\n const isHorizontal = anchor === 'left' || anchor === 'right'\n\n return (\n <>\n {/* Backdrop — click to dismiss */}\n <html.div\n style={[\n styles.backdrop,\n closing && styles.backdropClosing,\n !closing && styles.backdropOpen,\n ]}\n aria-hidden\n onClick={handleBackdropClick}\n />\n\n {/* Viewport */}\n <html.div style={[styles.viewport, viewportAnchorMap[anchor]]} data-drawer-viewport=\"\">\n <html.div\n ref={panelRef}\n role=\"dialog\"\n aria-modal={true}\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n style={[\n styles.panel,\n isHorizontal && styles.panelHorizontal,\n isHorizontal && styles[size],\n !isHorizontal && styles.panelVertical,\n anchor === 'left' && styles.panelLeftBorder,\n closing && slideOutMap[anchor],\n !closing && slideInMap[anchor],\n ]}\n >\n {children}\n </html.div>\n </html.div>\n </>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId} = useDrawer()\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Description ---\n\nfunction Description({children}: {children: ReactNode}) {\n const {descriptionId} = useDrawer()\n return (\n <html.p id={descriptionId} style={styles.description}>\n {children}\n </html.p>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n return <html.div style={styles.body}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDrawer()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const Drawer = {\n Root,\n Trigger,\n Portal,\n Header,\n Title,\n Description,\n Body,\n Footer,\n Close,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n textAlign: 'center',\n },\n message: {\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n lineHeight: typography.lineHeight,\n },\n action: {\n marginTop: spacing.sm,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\ninterface EmptyStateProps {\n message: string\n icon?: ReactNode\n action?: ReactNode\n}\n\nexport function EmptyState({message, icon, action}: EmptyStateProps) {\n return (\n <html.div style={styles.root}>\n {icon}\n <html.p style={styles.message}>{message}</html.p>\n {action && <html.div style={styles.action}>{action}</html.div>}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {typography, typeScale} from './typography.css'\n\nexport const typePresets = css.create({\n // Body\n bodySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize4,\n lineHeight: typeScale.lineHeight4,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize5,\n lineHeight: typeScale.lineHeight5,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n\n // UI\n caption: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingWide,\n },\n label: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightMedium,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n code: {\n fontFamily: typography.fontFamilyMono,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n overline: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingWide,\n textTransform: 'uppercase' as const,\n },\n\n // Heading\n headingSm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize6,\n lineHeight: typeScale.lineHeight6,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize7,\n lineHeight: typeScale.lineHeight7,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize8,\n lineHeight: typeScale.lineHeight8,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingXl: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize9,\n lineHeight: typeScale.lineHeight9,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n\n // Display (fluid)\n displaySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displaySm,\n lineHeight: 1.2,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayMd,\n lineHeight: 1.15,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayLg,\n lineHeight: 1.1,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type HeadingVariant =\n | 'displayLg'\n | 'displayMd'\n | 'displaySm'\n | 'headingXl'\n | 'headingLg'\n | 'headingMd'\n | 'headingSm'\n\ninterface HeadingProps {\n level: 1 | 2 | 3 | 4 | 5 | 6\n variant?: HeadingVariant\n color?: 'default' | 'muted' | 'accent'\n align?: 'start' | 'center' | 'end'\n children: ReactNode\n}\n\nconst defaultVariantMap: Record<number, HeadingVariant> = {\n 1: 'headingXl',\n 2: 'headingLg',\n 3: 'headingMd',\n 4: 'headingSm',\n 5: 'headingSm',\n 6: 'headingSm',\n}\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Heading({level, variant, color = 'default', align, children}: HeadingProps) {\n const resolvedVariant = variant ?? defaultVariantMap[level]\n const style = [typePresets[resolvedVariant], styles[color], align && alignMap[align]]\n\n if (level === 1) return <html.h1 style={style}>{children}</html.h1>\n if (level === 2) return <html.h2 style={style}>{children}</html.h2>\n if (level === 3) return <html.h3 style={style}>{children}</html.h3>\n if (level === 4) return <html.h4 style={style}>{children}</html.h4>\n if (level === 5) return <html.h5 style={style}>{children}</html.h5>\n return <html.h6 style={style}>{children}</html.h6>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // --- Root ---\n root: {\n display: 'flex',\n flexDirection: 'column',\n margin: 0,\n padding: 0,\n },\n\n // --- Item ---\n item: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.ms,\n paddingRight: spacing.ms,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: '120ms',\n cursor: 'default',\n },\n itemSelected: {\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCardHover,\n },\n },\n itemDisabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n itemLast: {\n borderBottomWidth: 0,\n },\n\n // --- Item content area (text + description) ---\n content: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n minWidth: 0,\n },\n\n // --- Primary text ---\n text: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n // --- Description text ---\n description: {\n fontSize: typography.fontSizeXs,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n // --- Actions slot ---\n actions: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.xs,\n flexShrink: 0,\n },\n\n // --- Empty state ---\n empty: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n color: colors.textMuted,\n fontSize: typography.fontSizeSm,\n },\n})\n","import {type ReactNode, createContext, useContext} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type ListSelectionMode = 'none' | 'single' | 'multiple'\n\n// --- Context ---\n\ninterface ListContextValue {\n selectionMode: ListSelectionMode\n}\n\nconst ListContext = createContext<ListContextValue>({selectionMode: 'none'})\n\nfunction useList() {\n return useContext(ListContext)\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Selection mode: 'none' (default), 'single', or 'multiple' */\n selectionMode?: ListSelectionMode\n /** Accessible label for the list */\n 'aria-label'?: string\n}\n\nfunction Root({children, selectionMode = 'none', 'aria-label': ariaLabel}: RootProps) {\n return (\n <ListContext.Provider value={{selectionMode}}>\n <html.div role=\"list\" aria-label={ariaLabel} style={styles.root}>\n {children}\n </html.div>\n </ListContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n children: ReactNode\n /** Whether this item is selected */\n selected?: boolean\n /** Whether this item is disabled */\n disabled?: boolean\n /** Click handler for the item */\n onClick?: () => void\n}\n\nfunction Item({children, selected, disabled, onClick}: ItemProps) {\n const {selectionMode} = useList()\n const isSelectable = selectionMode !== 'none'\n\n return (\n <html.div\n role=\"listitem\"\n aria-selected={isSelectable ? selected : undefined}\n aria-disabled={disabled || undefined}\n onClick={disabled ? undefined : onClick}\n style={[styles.item, selected && styles.itemSelected, disabled && styles.itemDisabled]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Content: wraps primary text + description ---\n\nfunction Content({children}: {children: ReactNode}) {\n return <html.div style={styles.content}>{children}</html.div>\n}\n\n// --- Text: primary label ---\n\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.p style={styles.text}>{children}</html.p>\n}\n\n// --- Description: secondary text ---\n\nfunction Description({children}: {children: ReactNode}) {\n return <html.p style={styles.description}>{children}</html.p>\n}\n\n// --- Actions: slot for buttons, badges, etc. ---\n\nfunction Actions({children}: {children: ReactNode}) {\n return <html.div style={styles.actions}>{children}</html.div>\n}\n\n// --- Empty: placeholder when list has no items ---\n\nfunction Empty({children}: {children: ReactNode}) {\n return (\n <html.div role=\"listitem\" style={styles.empty}>\n {children}\n </html.div>\n )\n}\n\n// --- Export ---\n\nexport const List = {\n Root,\n Item,\n Content,\n Text: ItemText,\n Description,\n Actions,\n Empty,\n}\n","import {type ReactNode, useCallback, useEffect, useMemo, useRef} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {\n useForm,\n FormProvider,\n type UseFormReturn,\n type DefaultValues,\n type FieldValues,\n type FieldErrors,\n type Path,\n} from 'react-hook-form'\nimport {effectTsResolver} from '@hookform/resolvers/effect-ts'\nimport type {Schema} from 'effect'\nimport {FormContext, type LabelPosition, type NecessityIndicator} from './FormContext'\n\nexport interface FormProps<T extends FieldValues> {\n schema: Schema.Schema<T>\n defaultValues: DefaultValues<T>\n onSubmit: (data: T) => void | Promise<void>\n disabled?: boolean\n labelPosition?: LabelPosition\n necessityIndicator?: NecessityIndicator\n validationErrors?: Partial<Record<Path<T>, string>>\n children: ReactNode | ((methods: UseFormReturn<T>) => ReactNode)\n}\n\nconst formStyles = css.create({\n disabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n})\n\nexport function Form<T extends FieldValues>({\n schema,\n defaultValues,\n onSubmit,\n disabled = false,\n labelPosition = 'top',\n necessityIndicator = false,\n validationErrors,\n children,\n}: FormProps<T>) {\n const methods = useForm<T>({\n resolver: effectTsResolver(schema),\n defaultValues,\n mode: 'onTouched',\n reValidateMode: 'onChange',\n })\n\n // Sync server-side validation errors into RHF\n const prevErrorKeysRef = useRef<string[]>([])\n useEffect(() => {\n const prevKeys = prevErrorKeysRef.current\n const nextKeys = validationErrors ? Object.keys(validationErrors) : []\n\n // Clear errors that were removed\n for (const key of prevKeys) {\n if (!nextKeys.includes(key)) {\n methods.clearErrors(key as Path<T>)\n }\n }\n\n // Set new errors\n if (validationErrors) {\n for (const [key, message] of Object.entries(validationErrors)) {\n if (message) {\n methods.setError(key as Path<T>, {type: 'server', message: message as string})\n }\n }\n }\n\n prevErrorKeysRef.current = nextKeys\n }, [validationErrors, methods])\n\n const formRef = useRef<HTMLFormElement>(null)\n\n const onInvalid = useCallback(\n (errors: FieldErrors<T>) => {\n const firstField = Object.keys(errors)[0]\n if (firstField) {\n methods.setFocus(firstField as Path<T>)\n }\n },\n [methods],\n )\n\n const handleSubmit = useCallback(\n (e: Event) => {\n e.preventDefault()\n void methods.handleSubmit(onSubmit, onInvalid)()\n },\n [methods, onSubmit, onInvalid],\n )\n\n useEffect(() => {\n const el = formRef.current\n if (!el) return\n el.addEventListener('submit', handleSubmit)\n return () => el.removeEventListener('submit', handleSubmit)\n }, [handleSubmit])\n\n const formCtx = useMemo(\n () => ({disabled, labelPosition, necessityIndicator}),\n [disabled, labelPosition, necessityIndicator],\n )\n\n return (\n <FormProvider {...methods}>\n <FormContext.Provider value={formCtx}>\n <html.form\n ref={formRef}\n aria-disabled={disabled || undefined}\n style={disabled && formStyles.disabled}\n >\n {typeof children === 'function' ? children(methods) : children}\n </html.form>\n </FormContext.Provider>\n </FormProvider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n // Reset native fieldset chrome\n borderWidth: 0,\n margin: 0,\n padding: 0,\n minWidth: 0,\n },\n legend: {\n // Reset native legend quirks\n padding: 0,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: colors.text,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type FieldsetGap = 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl'\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n} as const\n\n// --- Root ---\ninterface RootProps {\n /** Disables all form controls within the fieldset */\n disabled?: boolean\n /** Gap between child elements */\n gap?: FieldsetGap\n children: ReactNode\n}\n\nfunction Root({disabled = false, gap = 'md', children}: RootProps) {\n return (\n <html.div\n role=\"group\"\n aria-disabled={disabled || undefined}\n style={[styles.root, gapMap[gap], disabled && styles.disabled]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Legend ---\ninterface LegendProps {\n children: ReactNode\n}\n\nfunction Legend({children}: LegendProps) {\n return <html.span style={styles.legend}>{children}</html.span>\n}\n\nexport const Fieldset = {\n Root,\n Legend,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n wrapper: {\n display: 'flex',\n alignItems: 'stretch',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':focus-within': colors.accent,\n },\n borderRadius: radii.sm,\n overflow: 'hidden',\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n addon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n backgroundColor: colors.bgCardHover,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n userSelect: 'none',\n borderWidth: 0,\n },\n addonStart: {\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n addonEnd: {\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n },\n addonClickable: {\n cursor: 'pointer',\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCard,\n ':active': colors.bg,\n },\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n addonDisabled: {\n opacity: 0.4,\n cursor: 'not-allowed',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import type {ReactNode} from 'react'\nimport {useMemo} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {InputGroupContext} from './InputGroupContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useMemo(() => ({inGroup: true}), [])\n\n return (\n <InputGroupContext.Provider value={ctx}>\n <html.div style={styles.wrapper}>{children}</html.div>\n </InputGroupContext.Provider>\n )\n}\n\n// --- Addon ---\nconst dynamicStyles = css.create({\n minWidth: (value: number | string) => ({minWidth: value}),\n})\n\ninterface AddonProps {\n position?: 'start' | 'end'\n onClick?: () => void\n disabled?: boolean\n /** Optional minimum width to prevent layout shift (e.g. Copy → Copied!) */\n minWidth?: number | string\n children: ReactNode\n}\n\nfunction Addon({position = 'end', onClick, disabled, minWidth, children}: AddonProps) {\n const positionStyle = position === 'start' ? styles.addonStart : styles.addonEnd\n const style = [\n styles.addon,\n isNative && styles.nativeFlex,\n positionStyle,\n onClick && !disabled && styles.addonClickable,\n disabled && styles.addonDisabled,\n minWidth != null && dynamicStyles.minWidth(minWidth),\n ]\n\n if (onClick) {\n return (\n <html.button type=\"button\" onClick={onClick} disabled={disabled} style={style}>\n {children}\n </html.button>\n )\n }\n\n return <html.span style={style}>{children}</html.span>\n}\n\nexport const InputGroup = {\n Root,\n Addon,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n cursor: 'pointer',\n textDecoration: 'none',\n transitionProperty: 'background-color, border-color, color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n color: colors.textMuted,\n },\n fullWidth: {\n width: '100%',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type LinkButtonVariant = 'primary' | 'secondary'\nexport type LinkButtonSize = 'default' | 'small'\n\ninterface LinkButtonProps {\n href: string\n variant?: LinkButtonVariant\n size?: LinkButtonSize\n fullWidth?: boolean\n target?: '_blank' | '_self'\n rel?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function LinkButton({\n href,\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n target,\n rel,\n children,\n}: LinkButtonProps) {\n return (\n <html.a\n href={href}\n target={target}\n rel={rel}\n style={[styles.base, sizeMap[size], styles[variant], fullWidth && styles.fullWidth]}\n >\n {children}\n </html.a>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: colors.bgCard,\n },\n bordered: {\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n gap: spacing.md,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n\n body: {\n flex: 1,\n overflowY: 'auto',\n // Minimal inset prevents child borders from touching panel structural borders\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n },\n bodyPadded: {\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n },\n\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Adds an outer border. Default: false */\n bordered?: boolean\n}\n\nfunction Root({children, bordered = false}: RootProps) {\n return <html.div style={[styles.root, bordered && styles.bordered]}>{children}</html.div>\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Body ---\n\ninterface BodyProps {\n children: ReactNode\n /** Adds inner padding. Default: true */\n padded?: boolean\n}\n\nfunction Body({children, padded = true}: BodyProps) {\n return <html.div style={[styles.body, padded && styles.bodyPadded]}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Export ---\n\nexport const Panel = {\n Root,\n Header,\n Body,\n Footer,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n rootHorizontal: {\n flexDirection: 'row',\n },\n item: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n itemDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n circle: {\n width: 18,\n height: 18,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.full,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n transitionProperty: 'background-color, border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n circleUnchecked: {\n backgroundColor: colors.bg,\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n circleChecked: {\n backgroundColor: colors.bg,\n borderColor: colors.accent,\n },\n dot: {\n width: 8,\n height: 8,\n borderRadius: radii.full,\n backgroundColor: colors.accent,\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n})\n","import {type ReactNode, createContext, useContext, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ninterface RadioGroupContextValue {\n value: string\n onSelect: (value: string) => void\n disabled: boolean\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null)\n\nfunction useRadioGroup() {\n const ctx = useContext(RadioGroupContext)\n if (!ctx) {\n throw new Error('RadioGroup.Item must be used within RadioGroup.Root')\n }\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Root({\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n orientation = 'vertical',\n disabled = false,\n children,\n}: RootProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const onSelect = useCallback(\n (itemValue: string) => {\n if (!disabled) {\n setValue(itemValue)\n }\n },\n [disabled, setValue],\n )\n\n return (\n <RadioGroupContext.Provider value={{value, onSelect, disabled}}>\n <html.div\n role=\"radiogroup\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'horizontal' && styles.rootHorizontal]}\n >\n {children}\n </html.div>\n </RadioGroupContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Item({value, disabled: itemDisabled = false, children}: ItemProps) {\n const {value: groupValue, onSelect, disabled: groupDisabled} = useRadioGroup()\n const isChecked = groupValue === value\n const isDisabled = groupDisabled || itemDisabled\n\n const handleClick = () => {\n if (!isDisabled) {\n onSelect(value)\n }\n }\n\n return (\n <html.label style={[styles.item, isDisabled && styles.itemDisabled]} onClick={handleClick}>\n <html.input\n type=\"radio\"\n value={value}\n checked={isChecked}\n disabled={isDisabled}\n onChange={() => onSelect(value)}\n style={styles.input}\n />\n <html.span\n style={[styles.circle, isChecked ? styles.circleChecked : styles.circleUnchecked]}\n aria-hidden\n >\n {isChecked && <html.span style={styles.dot} />}\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n\nexport const RadioGroup = {\n Root,\n Item,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n overflow: 'hidden',\n },\n viewport: {\n width: '100%',\n height: '100%',\n overflowX: 'auto',\n overflowY: 'auto',\n // Hide native scrollbar\n scrollbarWidth: 'none',\n },\n content: {\n minWidth: '100%',\n minHeight: '100%',\n },\n scrollbar: {\n position: 'absolute',\n zIndex: 1,\n display: 'flex',\n touchAction: 'none',\n userSelect: 'none',\n transitionProperty: 'opacity',\n transitionDuration: duration.base,\n transitionTimingFunction: easing.standard,\n },\n scrollbarVertical: {\n top: 0,\n right: 0,\n bottom: 0,\n width: 8,\n flexDirection: 'column',\n paddingTop: 2,\n paddingBottom: 2,\n paddingRight: 2,\n },\n scrollbarHorizontal: {\n left: 0,\n right: 0,\n bottom: 0,\n height: 8,\n flexDirection: 'row',\n paddingLeft: 2,\n paddingRight: 2,\n paddingBottom: 2,\n },\n scrollbarHidden: {\n opacity: 0,\n },\n scrollbarVisible: {\n opacity: 1,\n },\n thumb: {\n position: 'relative',\n flex: 1,\n backgroundColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.full,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n // Dynamic styles — simple identifier params only (StyleX constraint)\n viewportMaxHeight: (maxHeight: number | string) => ({\n maxHeight,\n }),\n thumbVertical: (height: string, transform: string) => ({\n height,\n transform,\n }),\n thumbHorizontal: (width: string, transform: string) => ({\n width,\n transform,\n }),\n})\n","import {createContext, useContext} from 'react'\n\nexport interface ScrollAreaContextValue {\n viewportRef: React.RefObject<HTMLDivElement | null>\n contentRef: React.RefObject<HTMLDivElement | null>\n viewportId: string\n scrollTop: number\n scrollLeft: number\n scrollHeight: number\n scrollWidth: number\n clientHeight: number\n clientWidth: number\n scrolling: boolean\n}\n\nexport const ScrollAreaContext = createContext<ScrollAreaContextValue | null>(null)\n\nexport function useScrollArea() {\n const ctx = useContext(ScrollAreaContext)\n if (!ctx) throw new Error('ScrollArea compound components must be used within ScrollArea.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useEffect, useId} from 'react'\nimport type {ScrollAreaContextValue} from './ScrollAreaContext'\n\nexport function useScrollAreaRoot(): ScrollAreaContextValue {\n const viewportId = useId()\n const viewportRef = useRef<HTMLDivElement | null>(null)\n const contentRef = useRef<HTMLDivElement | null>(null)\n const [scrollTop, setScrollTop] = useState(0)\n const [scrollLeft, setScrollLeft] = useState(0)\n const [scrollHeight, setScrollHeight] = useState(0)\n const [scrollWidth, setScrollWidth] = useState(0)\n const [clientHeight, setClientHeight] = useState(0)\n const [clientWidth, setClientWidth] = useState(0)\n const [scrolling, setScrolling] = useState(false)\n const scrollTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const handleScroll = useCallback(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n setScrollTop(vp.scrollTop)\n setScrollLeft(vp.scrollLeft)\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n setScrolling(true)\n\n if (scrollTimerRef.current) clearTimeout(scrollTimerRef.current)\n scrollTimerRef.current = setTimeout(() => setScrolling(false), 1000)\n }, [])\n\n // Observe viewport size changes\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n const observer = new ResizeObserver(() => {\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n })\n observer.observe(vp)\n // Initial measurement\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n\n return () => observer.disconnect()\n }, [])\n\n // Attach scroll listener directly to ensure we capture it\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n vp.addEventListener('scroll', handleScroll, {passive: true})\n return () => vp.removeEventListener('scroll', handleScroll)\n }, [handleScroll])\n\n return {\n viewportRef,\n contentRef,\n viewportId,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n scrolling,\n }\n}\n","import {type ReactNode, useRef, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {ScrollAreaContext, useScrollArea} from './ScrollAreaContext'\nimport {useScrollAreaRoot} from './useScrollAreaRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useScrollAreaRoot()\n\n return (\n <ScrollAreaContext.Provider value={ctx}>\n <html.div style={styles.root}>{children}</html.div>\n </ScrollAreaContext.Provider>\n )\n}\n\n// --- Viewport ---\n\ninterface ViewportProps {\n children: ReactNode\n maxHeight?: number | string\n}\n\nfunction Viewport({children, maxHeight}: ViewportProps) {\n const {viewportRef, viewportId} = useScrollArea()\n\n return (\n <html.div\n ref={viewportRef}\n id={viewportId}\n tabIndex={0}\n role=\"region\"\n aria-label=\"Scrollable content\"\n style={[styles.viewport, maxHeight != null && styles.viewportMaxHeight(maxHeight)]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Content ---\n\ninterface ContentProps {\n children: ReactNode\n}\n\nfunction Content({children}: ContentProps) {\n const {contentRef} = useScrollArea()\n return (\n <html.div ref={contentRef} style={styles.content}>\n {children}\n </html.div>\n )\n}\n\n// --- Scrollbar ---\n\ntype ScrollbarOrientation = 'vertical' | 'horizontal'\n\ninterface ScrollbarProps {\n orientation?: ScrollbarOrientation\n children: ReactNode\n}\n\nfunction Scrollbar({orientation = 'vertical', children}: ScrollbarProps) {\n const {\n viewportId,\n scrolling,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n } = useScrollArea()\n\n // Hide scrollbar when content fits\n const hasOverflow =\n orientation === 'vertical' ? scrollHeight > clientHeight : scrollWidth > clientWidth\n\n if (!hasOverflow) return null\n\n const isVertical = orientation === 'vertical'\n const maxScroll = isVertical ? scrollHeight - clientHeight : scrollWidth - clientWidth\n const scrollOffset = isVertical ? scrollTop : scrollLeft\n const valueNow = maxScroll > 0 ? Math.round((scrollOffset / maxScroll) * 100) : 0\n\n return (\n <html.div\n role=\"scrollbar\"\n aria-controls={viewportId}\n aria-orientation={orientation}\n aria-valuenow={valueNow}\n aria-valuemin={0}\n aria-valuemax={100}\n style={[\n styles.scrollbar,\n isVertical ? styles.scrollbarVertical : styles.scrollbarHorizontal,\n scrolling ? styles.scrollbarVisible : styles.scrollbarHidden,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Thumb ---\n\ninterface ThumbProps {\n orientation?: ScrollbarOrientation\n}\n\nfunction Thumb({orientation = 'vertical'}: ThumbProps) {\n const {viewportRef, scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth} =\n useScrollArea()\n const draggingRef = useRef(false)\n const startPosRef = useRef(0)\n const startScrollRef = useRef(0)\n\n const isVertical = orientation === 'vertical'\n\n const thumbSizePercent = isVertical\n ? Math.max((clientHeight / scrollHeight) * 100, 10)\n : Math.max((clientWidth / scrollWidth) * 100, 10)\n\n const maxScroll = isVertical ? scrollHeight - clientHeight : scrollWidth - clientWidth\n const trackSize = isVertical ? clientHeight : clientWidth\n const thumbPixelSize = (thumbSizePercent / 100) * trackSize\n const scrollOffset = isVertical ? scrollTop : scrollLeft\n const thumbOffset = maxScroll > 0 ? (scrollOffset / maxScroll) * (trackSize - thumbPixelSize) : 0\n\n const thumbStyle = isVertical\n ? styles.thumbVertical(`${thumbSizePercent}%`, `translateY(${thumbOffset}px)`)\n : styles.thumbHorizontal(`${thumbSizePercent}%`, `translateX(${thumbOffset}px)`)\n\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault()\n draggingRef.current = true\n startPosRef.current = isVertical ? e.clientY : e.clientX\n startScrollRef.current = isVertical\n ? (viewportRef.current?.scrollTop ?? 0)\n : (viewportRef.current?.scrollLeft ?? 0)\n ;(e.target as HTMLElement).setPointerCapture(e.pointerId)\n },\n [isVertical, viewportRef],\n )\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent) => {\n if (!draggingRef.current) return\n const vp = viewportRef.current\n if (!vp) return\n\n const delta = (isVertical ? e.clientY : e.clientX) - startPosRef.current\n const scrollRatio = maxScroll / (trackSize - thumbPixelSize)\n const scrollDelta = delta * scrollRatio\n\n if (isVertical) {\n vp.scrollTop = startScrollRef.current + scrollDelta\n } else {\n vp.scrollLeft = startScrollRef.current + scrollDelta\n }\n },\n [isVertical, maxScroll, trackSize, thumbPixelSize, viewportRef],\n )\n\n const handlePointerUp = useCallback(() => {\n draggingRef.current = false\n }, [])\n\n return (\n <html.div\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n style={[styles.thumb, thumbStyle]}\n />\n )\n}\n\nexport const ScrollArea = {\n Root,\n Viewport,\n Content,\n Scrollbar,\n Thumb,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n inputWrapper: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n borderRadius: radii.sm,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n },\n inputWrapperFocused: {\n borderColor: colors.accent,\n },\n input: {\n flex: 1,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: 'transparent',\n borderWidth: 0,\n outline: 'none',\n minWidth: 0,\n },\n trigger: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n backgroundColor: 'transparent',\n borderWidth: 0,\n color: colors.textMuted,\n cursor: 'pointer',\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n // Position is `fixed` and the top/left/width are applied inline by Popup\n // (computed from the root's bounding rect) so the dropdown can escape any\n // ancestor with `overflow: hidden` or `transform` (e.g. inside a Dialog).\n position: 'fixed',\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n maxHeight: 200,\n overflowY: 'auto',\n // Re-enable pointer events: the portal mount is pointer-events: none so\n // clicks fall through except on the popup itself.\n pointerEvents: 'auto',\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n itemSelected: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n itemHidden: {\n display: 'none',\n },\n empty: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n },\n hidden: {\n display: 'none',\n },\n // Dynamic position — applied at runtime from the input's bounding rect.\n popupPosition: (top: number, left: number, width: number) => ({\n top,\n left,\n width,\n }),\n})\n","import {createContext, useContext} from 'react'\n\nexport interface ComboboxContextValue {\n open: boolean\n openPopup: () => void\n close: () => void\n value: string | null\n setValue: (value: string) => void\n inputValue: string\n setInputValue: (value: string) => void\n labels: Record<string, string>\n registerLabel: (value: string, label: string) => void\n listboxId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, value: string, element: HTMLElement) => () => void\n inputRef: React.RefObject<HTMLInputElement | null>\n rootRef: React.RefObject<HTMLDivElement | null>\n}\n\nexport const ComboboxContext = createContext<ComboboxContextValue | null>(null)\n\nexport function useCombobox() {\n const ctx = useContext(ComboboxContext)\n if (!ctx) throw new Error('Combobox compound components must be used within Combobox.Root')\n return ctx\n}\n","import {useState, useCallback, useMemo, useRef, useId, useEffect} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {ComboboxContextValue} from './ComboboxContext'\n\ninterface UseComboboxRootOptions {\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n inputValue?: string\n onInputChange?: (value: string) => void\n initialLabels?: Record<string, string>\n}\n\nexport function useComboboxRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\n inputValue: controlledInputValue,\n onInputChange,\n initialLabels,\n}: UseComboboxRootOptions) {\n const [value, setValue] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange,\n )\n // Seed the visible text from the initially-selected value's label, so a\n // defaultValue/value shows its label on mount — and so the reconcile effect\n // below doesn't see \"value set but input empty\" and wipe the selection.\n const [internalInputValue, setInternalInputValue] = useState<string>(() => {\n const initial = controlledValue ?? defaultValue\n return initial ? (initialLabels?.[initial] ?? '') : ''\n })\n const inputValue = controlledInputValue !== undefined ? controlledInputValue : internalInputValue\n const setInputValue = useCallback(\n (v: string) => {\n if (controlledInputValue === undefined) setInternalInputValue(v)\n onInputChange?.(v)\n },\n [controlledInputValue, onInputChange],\n )\n\n const [open, setOpen] = useState(false)\n const [labels, setLabels] = useState<Record<string, string>>(initialLabels ?? {})\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const listboxId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const itemsRef = useRef(new Map<string, {value: string; element: HTMLElement}>())\n const orderRef = useRef<string[]>([])\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n }, [])\n\n const openPopup = useCallback(() => {\n setOpen(true)\n // Highlight the selected item or first visible item\n const items = itemsRef.current\n const order = orderRef.current\n let found: string | null = null\n for (const id of order) {\n const item = items.get(id)\n if (item && item.value === value) {\n found = id\n break\n }\n }\n setHighlightedId(found ?? (order.length > 0 ? order[0] : null))\n }, [value])\n\n const selectValue = useCallback(\n (itemValue: string) => {\n setValue(itemValue)\n // Set input to show the selected label\n const label = labels[itemValue] ?? itemValue\n setInputValue(label)\n close()\n inputRef.current?.focus()\n },\n [setValue, labels, setInputValue, close],\n )\n\n const registerLabel = useCallback((v: string, label: string) => {\n setLabels((prev) => {\n if (prev[v] === label) return prev\n return {...prev, [v]: label}\n })\n }, [])\n\n const registerItem = useCallback((id: string, itemValue: string, element: HTMLElement) => {\n itemsRef.current.set(id, {value: itemValue, element})\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)?.element\n const elB = map.get(b)?.element\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Get visible items (those matching the filter)\n const getVisibleOrder = useCallback(() => {\n const query = inputValue.toLowerCase()\n if (!query) return orderRef.current\n return orderRef.current.filter((id) => {\n const item = itemsRef.current.get(id)\n if (!item) return false\n const label = labels[item.value] ?? item.value\n return label.toLowerCase().includes(query)\n })\n }, [inputValue, labels])\n\n // Keyboard navigation\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const visibleOrder = getVisibleOrder()\n if (visibleOrder.length === 0 && e.key !== 'Escape' && e.key !== 'Tab') return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n if (!open) {\n setOpen(true)\n return\n }\n setHighlightedId((prev) => {\n const idx = prev ? visibleOrder.indexOf(prev) : -1\n return visibleOrder[(idx + 1) % visibleOrder.length] ?? null\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? visibleOrder.indexOf(prev) : 0\n return visibleOrder[(idx - 1 + visibleOrder.length) % visibleOrder.length] ?? null\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(visibleOrder[0] ?? null)\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(visibleOrder[visibleOrder.length - 1] ?? null)\n break\n }\n case 'Enter': {\n e.preventDefault()\n setHighlightedId((prev) => {\n if (prev) {\n const item = itemsRef.current.get(prev)\n if (item) selectValue(item.value)\n } else if (!inputValue.trim()) {\n // Empty input + Enter = clear selection (reset to \"All\")\n selectValue('')\n }\n return prev\n })\n break\n }\n case 'Escape': {\n e.preventDefault()\n close()\n inputRef.current?.focus()\n break\n }\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close, selectValue, getVisibleOrder])\n\n // Scroll highlighted item into view\n useEffect(() => {\n if (!highlightedId) return\n const item = itemsRef.current.get(highlightedId)\n item?.element.scrollIntoView({block: 'nearest'})\n }, [highlightedId])\n\n // Reconcile input text with the committed value once the popup closes.\n // Three cases when transitioning from open → closed:\n // - inputValue is empty: user cleared the field, treat that as\n // \"remove the selection\" so the consumer's onValueChange fires\n // with null and downstream UI (e.g. dependent fields) can reset.\n // - inputValue doesn't match the selected label: user typed something\n // but didn't pick anything; restore the label so the visible text\n // and the committed value stay consistent.\n // - inputValue equals the selected label: nothing to do.\n useEffect(() => {\n if (open) return\n // Treat an empty value (null OR '') as \"no selection\" — nothing to\n // reconcile. Without this, a controlled value=\"\" (e.g. a table column\n // filter) fires setValue(null) every render → inline onValueChange →\n // parent state change → re-render → infinite \"Maximum update depth\" loop.\n if (!value) return\n if (inputValue === '') {\n setValue(null)\n return\n }\n if (labels[value] && inputValue !== labels[value]) {\n setInputValue(labels[value])\n }\n }, [open, value, labels, inputValue, setInputValue, setValue])\n\n const ctx: ComboboxContextValue = useMemo(\n () => ({\n open,\n openPopup,\n close,\n value,\n setValue: selectValue,\n inputValue,\n setInputValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n inputRef,\n rootRef,\n }),\n [\n open,\n openPopup,\n close,\n value,\n selectValue,\n inputValue,\n setInputValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n ],\n )\n\n return {ctx, rootRef}\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const lightTheme = css.createTheme(colors, {\n bg: '#ffffff',\n bgCard: '#f5f5f5',\n bgCardHover: '#ebebeb',\n text: '#1a1a1a',\n textMuted: '#4a4a4a',\n accent: '#1e40af',\n accentHover: '#1a3799',\n accentContrast: '#ffffff',\n border: '#d4d4d4',\n error: '#991b1b',\n errorHover: '#7f1d1d',\n errorBg: 'rgba(153, 27, 27, 0.08)',\n errorBorder: 'rgba(153, 27, 27, 0.3)',\n errorText: '#7f1d1d',\n errorContrast: '#ffffff',\n success: '#166534',\n successBg: 'rgba(22, 101, 52, 0.08)',\n successBorder: 'rgba(22, 101, 52, 0.3)',\n successText: '#14532d',\n warning: '#92400e',\n warningBg: 'rgba(146, 64, 14, 0.08)',\n warningBorder: 'rgba(146, 64, 14, 0.3)',\n warningText: '#78350f',\n info: '#1e40af',\n infoBg: 'rgba(30, 64, 175, 0.08)',\n infoBorder: 'rgba(30, 64, 175, 0.3)',\n infoText: '#1e40af',\n})\n\nexport const lightShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.08)',\n md: '0 4px 12px rgba(0, 0, 0, 0.12)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.16)',\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const highContrastTheme = css.createTheme(colors, {\n bg: '#000000',\n bgCard: '#111111',\n bgCardHover: '#1a1a1a',\n text: '#ffffff',\n textMuted: '#b0b0b0',\n accent: '#60a5fa',\n accentHover: '#93c5fd',\n accentContrast: '#000000',\n border: '#555555',\n error: '#f87171',\n errorHover: '#fca5a5',\n errorBg: 'rgba(248, 113, 113, 0.15)',\n errorBorder: 'rgba(248, 113, 113, 0.5)',\n errorText: '#fca5a5',\n errorContrast: '#000000',\n success: '#4ade80',\n successBg: 'rgba(74, 222, 128, 0.15)',\n successBorder: 'rgba(74, 222, 128, 0.5)',\n successText: '#86efac',\n warning: '#fcd34d',\n warningBg: 'rgba(252, 211, 77, 0.15)',\n warningBorder: 'rgba(252, 211, 77, 0.5)',\n warningText: '#fef08a',\n info: '#60a5fa',\n infoBg: 'rgba(96, 165, 250, 0.15)',\n infoBorder: 'rgba(96, 165, 250, 0.5)',\n infoText: '#bfdbfe',\n})\n\nexport const highContrastShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.6)',\n md: '0 4px 12px rgba(0, 0, 0, 0.7)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.8)',\n})\n","import {createContext, type ReactNode, useContext, useState} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {lightTheme, lightShadows} from '@duro-app/tokens/themes/light.css'\nimport {highContrastTheme, highContrastShadows} from '@duro-app/tokens/themes/high-contrast.css'\n\nexport type ThemeName = 'dark' | 'light' | 'high-contrast'\n\ninterface ThemeProviderProps {\n theme?: ThemeName\n children: ReactNode\n}\n\nconst themeMap: Partial<Record<ThemeName, readonly [typeof lightTheme, typeof lightShadows]>> = {\n light: [lightTheme, lightShadows],\n 'high-contrast': [highContrastTheme, highContrastShadows],\n}\n\nconst styles = css.create({\n root: {\n display: 'contents',\n color: colors.text,\n },\n // Sibling overlay where floating popups (Combobox, Menu, Tooltip) portal to.\n // Lives inside ThemeProvider so theme tokens cascade. Fixed + inset 0 so\n // popups can position freely with viewport coords; pointer-events: none lets\n // clicks fall through except where children re-enable them.\n portalMount: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n pointerEvents: 'none',\n // Above Dialog (1001) so popups inside dialogs render on top.\n zIndex: 1100,\n },\n})\n\n// react-strict-dom's style prop rejects Theme<VarGroup<{named keys}>> because the\n// concrete VarGroup lacks the generic index signature. This is a known typing gap.\ntype DivStyle = Parameters<typeof html.div>[0]['style']\n\nconst PortalMountContext = createContext<HTMLElement | null>(null)\n\nexport function usePortalMount(): HTMLElement | null {\n return useContext(PortalMountContext)\n}\n\nexport function ThemeProvider({theme = 'dark', children}: ThemeProviderProps) {\n const overrides = themeMap[theme]\n const themeStyles = [overrides?.[0], overrides?.[1], styles.root] as DivStyle\n const [mount, setMount] = useState<HTMLElement | null>(null)\n\n return (\n <html.div data-theme={theme} style={themeStyles}>\n <PortalMountContext.Provider value={mount}>{children}</PortalMountContext.Provider>\n <html.div ref={setMount} data-portal-mount style={styles.portalMount} />\n </html.div>\n )\n}\n","import {type ReactNode, useRef, useId, useEffect, useLayoutEffect, useState} from 'react'\nimport {createPortal} from 'react-dom'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {ComboboxContext, useCombobox} from './ComboboxContext'\nimport {useComboboxRoot} from './useComboboxRoot'\nimport {usePortalMount} from '../ThemeProvider/ThemeProvider'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n inputValue?: string\n onInputChange?: (value: string) => void\n initialLabels?: Record<string, string>\n children: ReactNode\n}\n\nfunction Root({\n name,\n defaultValue,\n value,\n onValueChange,\n inputValue,\n onInputChange,\n initialLabels,\n children,\n}: RootProps) {\n const {ctx, rootRef} = useComboboxRoot({\n defaultValue,\n value,\n onValueChange,\n inputValue,\n onInputChange,\n initialLabels,\n })\n\n return (\n <ComboboxContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {name && <html.input type=\"hidden\" name={name} value={ctx.value ?? ''} />}\n {children}\n </html.div>\n </ComboboxContext.Provider>\n )\n}\n\n// --- Input ---\nfunction Input({placeholder, children}: {placeholder?: string; children?: ReactNode}) {\n const {open, openPopup, close, inputValue, setInputValue, listboxId, highlightedId, inputRef} =\n useCombobox()\n const localRef = useRef<HTMLInputElement>(null)\n const [focused, setFocused] = useState(false)\n\n useEffect(() => {\n inputRef.current = localRef.current\n })\n\n return (\n <html.div style={[styles.inputWrapper, focused && styles.inputWrapperFocused]}>\n <html.input\n ref={localRef}\n type=\"text\"\n role={'combobox' as 'listbox'}\n value={inputValue}\n placeholder={placeholder}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={highlightedId ?? undefined}\n aria-autocomplete={'list' as 'none'}\n autoComplete=\"off\"\n style={styles.input}\n onFocus={() => {\n setFocused(true)\n openPopup()\n }}\n onBlur={() => {\n setFocused(false)\n // Delay close to allow item click to register\n setTimeout(close, 150)\n }}\n onChange={(e: any) => {\n setInputValue(e.target.value)\n if (!open) openPopup()\n }}\n />\n {children}\n </html.div>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({children}: {children?: ReactNode}) {\n const {open, openPopup, close, inputRef} = useCombobox()\n\n return (\n <html.button\n type=\"button\"\n tabIndex={-1}\n aria-label={open ? 'Close' : 'Open'}\n onClick={() => {\n if (open) {\n close()\n } else {\n openPopup()\n }\n inputRef.current?.focus()\n }}\n style={styles.trigger}\n >\n {children ?? (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n )}\n </html.button>\n )\n}\n\n// --- Popup ---\n// Rendered into the ThemeProvider portal mount and positioned with viewport\n// coordinates so it escapes ancestor `overflow: hidden` / `transform`\n// containing blocks (notably Dialog and Drawer).\nfunction Popup({children}: {children: ReactNode}) {\n const {open, listboxId, rootRef} = useCombobox()\n const mount = usePortalMount()\n const [coords, setCoords] = useState<{top: number; left: number; width: number} | null>(null)\n\n // Measure the root each time the popup opens, and re-measure on scroll/resize\n // so the dropdown follows the input. Capture-phase scroll listener catches\n // scroll on any ancestor (e.g. Dialog body).\n useLayoutEffect(() => {\n if (!open) {\n setCoords(null)\n return\n }\n const update = () => {\n const el = rootRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n // Position immediately below the input with a small gap. `xs` token = 4px.\n setCoords({top: rect.bottom + 4, left: rect.left, width: rect.width})\n }\n update()\n window.addEventListener('resize', update)\n window.addEventListener('scroll', update, true)\n return () => {\n window.removeEventListener('resize', update)\n window.removeEventListener('scroll', update, true)\n }\n }, [open, rootRef])\n\n if (!open || !coords) return null\n\n const node = (\n <html.div\n id={listboxId}\n role=\"listbox\"\n style={[styles.popup, styles.popupPosition(coords.top, coords.left, coords.width)]}\n >\n {children}\n </html.div>\n )\n\n // SSR / pre-mount fallback: render inline (will be invisible under\n // overflow:hidden parents but won't crash). Once the mount is available,\n // portal into it.\n return mount ? createPortal(node, mount) : node\n}\n\n// --- Item ---\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value: itemValue, children}: ItemProps) {\n const {\n value: selectedValue,\n setValue,\n inputValue,\n labels,\n registerLabel,\n highlightedId,\n setHighlightedId,\n registerItem,\n } = useCombobox()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isSelected = selectedValue === itemValue\n const isHighlighted = highlightedId === id\n\n // Filter: check if this item matches the input\n const label = labels[itemValue] ?? itemValue\n const query = inputValue.toLowerCase()\n const isVisible = !query || label.toLowerCase().includes(query)\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n const text = el.textContent\n if (text) registerLabel(itemValue, text)\n }, [itemValue, registerLabel])\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, itemValue, el)\n }, [id, itemValue, registerItem])\n\n if (!isVisible) return null\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n onClick={() => setValue(itemValue)}\n onPointerEnter={() => setHighlightedId(id)}\n style={[\n styles.item,\n isSelected && styles.itemSelected,\n isHighlighted && styles.itemHighlighted,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- ItemText ---\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.span>{children}</html.span>\n}\n\n// --- Empty ---\nfunction Empty({children}: {children: ReactNode}) {\n const {open, inputValue, labels} = useCombobox()\n\n if (!open) return null\n\n // Check if any items are visible\n const query = inputValue.toLowerCase()\n const hasVisibleItems = query\n ? Object.values(labels).some((label) => label.toLowerCase().includes(query))\n : true\n\n if (hasVisibleItems) return null\n\n return <html.div style={styles.empty}>{children}</html.div>\n}\n\nexport const Combobox = {\n Root,\n Input,\n Trigger,\n Popup,\n Item,\n ItemText,\n Empty,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n },\n value: {\n color: colors.text,\n },\n placeholder: {\n color: colors.textMuted,\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n color: colors.textMuted,\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n // The portal mount is pointer-events: none, so re-enable here to catch\n // outside clicks that close the popup.\n pointerEvents: 'auto',\n },\n popup: {\n // Position is `fixed` and top/left/minWidth are applied inline by Popup\n // (computed from the trigger's bounding rect) so the dropdown escapes any\n // ancestor with `overflow: hidden` / `transform` (notably inside a Dialog).\n position: 'fixed',\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 120,\n maxHeight: 280,\n overflowY: 'auto',\n zIndex: 50,\n // Re-enable pointer events: the portal mount is pointer-events: none.\n pointerEvents: 'auto',\n },\n popupPosition: (top: number, left: number, minWidth: number) => ({\n top,\n left,\n minWidth,\n }),\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n itemSelected: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n hidden: {\n display: 'none',\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SelectContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n value: string | null\n setValue: (value: string) => void\n labels: Record<string, string>\n registerLabel: (value: string, label: string) => void\n listboxId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, value: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const SelectContext = createContext<SelectContextValue | null>(null)\n\nexport function useSelect() {\n const ctx = useContext(SelectContext)\n if (!ctx) throw new Error('Select compound components must be used within Select.Root')\n return ctx\n}\n","import {useState, useCallback, useMemo, useRef, useId, useEffect} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {SelectContextValue} from './SelectContext'\n\ninterface UseSelectRootOptions {\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n}\n\nexport function useSelectRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\n initialLabels,\n}: UseSelectRootOptions) {\n const [value, setValue] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange,\n )\n const [open, setOpen] = useState(false)\n const [labels, setLabels] = useState<Record<string, string>>(initialLabels ?? {})\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const listboxId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, {value: string; element: HTMLElement}>())\n const orderRef = useRef<string[]>([])\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n const items = itemsRef.current\n const order = orderRef.current\n let found: string | null = null\n for (const id of order) {\n const item = items.get(id)\n if (item && item.value === value) {\n found = id\n break\n }\n }\n setHighlightedId(found ?? (order.length > 0 ? order[0] : null))\n } else {\n setHighlightedId(null)\n }\n return !prev\n })\n }, [value])\n\n const registerLabel = useCallback((v: string, label: string) => {\n setLabels((prev) => {\n if (prev[v] === label) return prev\n return {...prev, [v]: label}\n })\n }, [])\n\n const registerItem = useCallback((id: string, itemValue: string, element: HTMLElement) => {\n itemsRef.current.set(id, {value: itemValue, element})\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)?.element\n const elB = map.get(b)?.element\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n const items = itemsRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n setHighlightedId((prev) => {\n if (prev) {\n const item = items.get(prev)\n if (item) {\n setValue(item.value)\n close()\n }\n }\n return prev\n })\n break\n }\n case 'Escape':\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close, setValue])\n\n const ctx: SelectContextValue = useMemo(\n () => ({\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }),\n [\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n ],\n )\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect, useLayoutEffect, useState} from 'react'\nimport {createPortal} from 'react-dom'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {SelectContext, useSelect} from './SelectContext'\nimport {useSelectRoot} from './useSelectRoot'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {usePortalMount} from '../ThemeProvider/ThemeProvider'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n children: ReactNode\n}\n\nfunction Root({name, defaultValue, value, onValueChange, initialLabels, children}: RootProps) {\n const {ctx, rootRef} = useSelectRoot({defaultValue, value, onValueChange, initialLabels})\n\n return (\n <SelectContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {name && <html.input type=\"hidden\" name={name} value={ctx.value ?? ''} />}\n {children}\n </html.div>\n </SelectContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({\n children,\n 'aria-label': ariaLabel,\n}: {\n children: ReactNode\n 'aria-label'?: string\n}) {\n const {open, toggle, listboxId, highlightedId, triggerRef} = useSelect()\n const localRef = useRef<HTMLButtonElement>(null)\n // Inside a <Field.Root>, adopt its controlId so <Field.Label for={controlId}>\n // labels the trigger (a labelable <button>) — no manual aria-label needed; and\n // surface the field's description/error + invalid state, mirroring <Input>.\n const fieldCtx = useFieldContext()\n const describedBy = fieldCtx\n ? `${fieldCtx.descriptionId} ${fieldCtx.invalid ? fieldCtx.errorId : ''}`.trim()\n : undefined\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n return (\n <html.button\n ref={localRef}\n id={fieldCtx?.controlId}\n type=\"button\"\n role={'combobox' as 'listbox'}\n onClick={toggle}\n aria-label={ariaLabel}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={highlightedId ?? undefined}\n aria-describedby={describedBy || undefined}\n aria-invalid={fieldCtx?.invalid || undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Value ---\nfunction Value({placeholder}: {placeholder?: string}) {\n const {value, labels} = useSelect()\n const display = value ? (labels[value] ?? value) : null\n\n return (\n <html.span style={display ? styles.value : styles.placeholder}>\n {display ?? placeholder}\n </html.span>\n )\n}\n\n// --- Icon ---\nfunction Icon({children}: {children?: ReactNode}) {\n return (\n <html.span style={styles.icon}>\n {children ?? (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n )}\n </html.span>\n )\n}\n\n// --- Popup ---\n// Rendered into the ThemeProvider portal mount and positioned with viewport\n// coordinates (measured off the trigger) so it escapes ancestor\n// `overflow: hidden` / `transform` containing blocks (notably Dialog/Drawer).\n// The listbox stays mounted while closed (display: none) so Items can register\n// their labels from DOM text before the popup is ever opened.\nfunction Popup({children}: {children: ReactNode}) {\n const {open, close, listboxId, triggerRef} = useSelect()\n const mount = usePortalMount()\n const [coords, setCoords] = useState<{top: number; left: number; width: number} | null>(null)\n\n // Measure the trigger when the popup opens, and re-measure on scroll/resize so\n // the dropdown follows it. Capture-phase scroll catches scroll on any ancestor\n // (e.g. a Dialog body).\n useLayoutEffect(() => {\n if (!open) return\n const update = () => {\n const el = triggerRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n // `xs` token = 4px gap below the trigger.\n setCoords({top: rect.bottom + 4, left: rect.left, width: rect.width})\n }\n update()\n window.addEventListener('resize', update)\n window.addEventListener('scroll', update, true)\n return () => {\n window.removeEventListener('resize', update)\n window.removeEventListener('scroll', update, true)\n }\n }, [open, triggerRef])\n\n const node = (\n <>\n {open && <html.div style={styles.backdrop} onClick={close} />}\n <html.div\n id={listboxId}\n role=\"listbox\"\n aria-hidden={!open}\n style={[\n styles.popup,\n (!open || !coords) && styles.hidden,\n coords && styles.popupPosition(coords.top, coords.left, coords.width),\n ]}\n >\n {children}\n </html.div>\n </>\n )\n\n // SSR / pre-mount fallback: render inline (hidden under overflow parents but\n // won't crash). Once the mount exists, portal into it.\n return mount ? createPortal(node, mount) : node\n}\n\n// --- Item ---\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value: itemValue, children}: ItemProps) {\n const {\n value: selectedValue,\n setValue,\n close,\n registerLabel,\n highlightedId,\n setHighlightedId,\n registerItem,\n } = useSelect()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isSelected = selectedValue === itemValue\n const isHighlighted = highlightedId === id\n\n // Register label from DOM text content (works with both string and JSX children)\n useEffect(() => {\n const el = ref.current\n if (!el) return\n const text = el.textContent\n if (text) registerLabel(itemValue, text)\n }, [itemValue, registerLabel])\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, itemValue, el)\n }, [id, itemValue, registerItem])\n\n const handleClick = () => {\n setValue(itemValue)\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[\n styles.item,\n isSelected && styles.itemSelected,\n isHighlighted && styles.itemHighlighted,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- ItemText ---\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.span>{children}</html.span>\n}\n\nexport const Select = {\n Root,\n Trigger,\n Value,\n Icon,\n Popup,\n Item,\n ItemText,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 0,\n },\n group: {\n display: 'flex',\n flexDirection: 'column',\n },\n groupTrigger: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.xs,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n fontWeight: typography.fontWeightSemibold,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.05em',\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n cursor: 'pointer',\n transitionProperty: 'color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n groupTriggerActive: {\n color: colors.text,\n },\n chevron: {\n display: 'inline-flex',\n alignItems: 'center',\n transitionProperty: 'transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n chevronOpen: {\n transform: 'rotate(90deg)',\n },\n // Static (non-collapsible) section — see SideNav.Section.\n section: {\n display: 'flex',\n flexDirection: 'column',\n },\n sectionLabel: {\n paddingTop: spacing.md,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n fontWeight: typography.fontWeightSemibold,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.06em',\n color: colors.textMuted,\n },\n item: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: '6px',\n paddingBottom: '6px',\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightNormal,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 0,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'color, background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n textAlign: 'left' as const,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n },\n itemActive: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n backgroundColor: colors.bgCardHover,\n },\n // Active indicator — a bar at the rail's left edge that grows in on select.\n marker: {\n position: 'absolute',\n left: 0,\n top: '50%',\n width: '3px',\n height: 0,\n transform: 'translateY(-50%)',\n borderTopRightRadius: radii.full,\n borderBottomRightRadius: radii.full,\n backgroundColor: colors.accent,\n transitionProperty: 'height',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n markerActive: {\n height: '18px',\n },\n itemIcon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n width: '18px',\n height: '18px',\n },\n itemLabel: {\n flexGrow: 1,\n minWidth: 0,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SideNavContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n expandedGroups: Set<string>\n toggleGroup: (group: string) => void\n /** Idempotent expand (add-only) — used by auto-expand/defaultExpanded so a\n * group that qualifies twice (e.g. defaultExpanded AND holding the active\n * item) doesn't get toggled back closed. `toggleGroup` stays for user clicks. */\n expandGroup: (group: string) => void\n registerItem: (value: string) => () => void\n orderRef: React.RefObject<string[]>\n}\n\nexport const SideNavContext = createContext<SideNavContextValue | null>(null)\n\nexport function useSideNav() {\n const ctx = useContext(SideNavContext)\n if (!ctx) throw new Error('SideNav compound components must be used within SideNav.Root')\n return ctx\n}\n","import {type ReactNode, useState, useCallback, useRef, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {SideNavContext, useSideNav} from './SideNavContext'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n}\n\nfunction Root({children, value: controlledValue, defaultValue, onValueChange}: RootProps) {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const [expandedGroups, setExpandedGroups] = useState<Set<string>>(new Set())\n const orderRef = useRef<string[]>([])\n\n const toggleGroup = useCallback((group: string) => {\n setExpandedGroups((prev) => {\n const next = new Set(prev)\n if (next.has(group)) {\n next.delete(group)\n } else {\n next.add(group)\n }\n return next\n })\n }, [])\n\n // Idempotent expand — never closes an already-open group. The mount effects\n // in Group (defaultExpanded + auto-expand-active) use this instead of\n // toggleGroup so a group that qualifies on both counts stays open rather than\n // being toggled open-then-closed.\n const expandGroup = useCallback((group: string) => {\n setExpandedGroups((prev) => {\n if (prev.has(group)) return prev\n const next = new Set(prev)\n next.add(group)\n return next\n })\n }, [])\n\n const registerItem = useCallback((value: string) => {\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n return (\n <SideNavContext.Provider\n value={{\n activeValue,\n onSelect,\n expandedGroups,\n toggleGroup,\n expandGroup,\n registerItem,\n orderRef,\n }}\n >\n <html.nav role=\"navigation\" style={styles.root}>\n {children}\n </html.nav>\n </SideNavContext.Provider>\n )\n}\n\n// --- Group ---\n\ninterface GroupProps {\n children: ReactNode\n label: string\n groupKey?: string\n defaultExpanded?: boolean\n}\n\nfunction Group({children, label, groupKey, defaultExpanded}: GroupProps) {\n const key = groupKey ?? label\n const {expandedGroups, toggleGroup, expandGroup, activeValue} = useSideNav()\n const isExpanded = expandedGroups.has(key)\n const groupRef = useRef<HTMLDivElement>(null)\n\n // Auto-expand if this group contains the active item. Uses expandGroup (not\n // toggleGroup) so it never races the defaultExpanded effect into a closed\n // state when the active item lives in a defaultExpanded group.\n useEffect(() => {\n if (!activeValue || expandedGroups.has(key)) return\n const el = groupRef.current\n if (!el) return\n const activeBtn = el.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n if (activeBtn) {\n expandGroup(key)\n }\n }, [activeValue, key, expandedGroups, expandGroup])\n\n // Expand on first render if defaultExpanded (idempotent add, not a toggle).\n useEffect(() => {\n if (defaultExpanded) {\n expandGroup(key)\n }\n // Only run on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const hasActiveChild = (() => {\n if (!activeValue || !groupRef.current) return false\n return !!groupRef.current.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n })()\n\n return (\n <html.div ref={groupRef} style={styles.group}>\n <html.button\n type=\"button\"\n onClick={() => toggleGroup(key)}\n style={[styles.groupTrigger, hasActiveChild && styles.groupTriggerActive]}\n aria-expanded={isExpanded}\n >\n <html.span style={[styles.chevron, isExpanded && styles.chevronOpen]}>\n <svg\n width={10}\n height={10}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n </html.span>\n {label}\n </html.button>\n {isExpanded && children}\n </html.div>\n )\n}\n\n// --- Section ---\n\ninterface SectionProps {\n children: ReactNode\n label: string\n}\n\n/**\n * A static, non-collapsible grouping: an always-visible uppercase header with\n * its items below. Unlike `Group` there is no chevron, toggle, or hidden state\n * — use it when every section should stay open at a glance (a flat menu with\n * labelled regions rather than an accordion).\n */\nfunction Section({children, label}: SectionProps) {\n return (\n <html.div style={styles.section}>\n <html.div style={styles.sectionLabel}>{label}</html.div>\n {children}\n </html.div>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n children: ReactNode\n /** Optional leading glyph (e.g. a design-system `<Icon />`). Inherits the\n * item's text color, so it turns accent when the item is active. */\n icon?: ReactNode\n}\n\nfunction Item({value, children, icon}: ItemProps) {\n const {activeValue, onSelect, registerItem} = useSideNav()\n const isActive = activeValue === value\n\n useEffect(() => {\n return registerItem(value)\n }, [value, registerItem])\n\n return (\n <html.button\n type=\"button\"\n data-nav-value={value}\n onClick={() => onSelect(value)}\n style={[styles.item, isActive && styles.itemActive]}\n aria-current={isActive ? 'page' : undefined}\n >\n <html.span aria-hidden style={[styles.marker, isActive && styles.markerActive]} />\n {icon ? (\n <html.span aria-hidden style={styles.itemIcon}>\n {icon}\n </html.span>\n ) : null}\n <html.span style={styles.itemLabel}>{children}</html.span>\n </html.button>\n )\n}\n\nexport const SideNav = {\n Root,\n Group,\n Section,\n Item,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nconst spin = css.keyframes({\n '0%': {transform: 'rotate(0deg)'},\n '100%': {transform: 'rotate(360deg)'},\n})\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n spinner: {\n borderRadius: '50%',\n borderStyle: 'solid',\n borderColor: colors.border,\n borderTopColor: colors.accent,\n animationName: spin,\n animationDuration: '0.6s',\n animationTimingFunction: 'linear',\n animationIterationCount: 'infinite',\n },\n sm: {\n width: 16,\n height: 16,\n borderWidth: 2,\n },\n md: {\n width: 24,\n height: 24,\n borderWidth: 2,\n },\n lg: {\n width: 40,\n height: 40,\n borderWidth: 3,\n },\n srOnly: {\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n },\n})\n","import {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\n\ninterface SpinnerProps {\n size?: SpinnerSize\n label?: string\n}\n\nconst sizeMap = {\n sm: styles.sm,\n md: styles.md,\n lg: styles.lg,\n} as const\n\nexport function Spinner({size = 'md', label = 'Loading'}: SpinnerProps) {\n return (\n <html.div role=\"status\" style={styles.root}>\n <html.div style={[styles.spinner, sizeMap[size]]} aria-hidden />\n <html.span style={styles.srOnly}>{label}</html.span>\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {easing} from '@duro-app/tokens/tokens/motion.css'\n\nconst enter = css.keyframes({\n from: {opacity: 0, transform: 'translateY(10px)'},\n to: {opacity: 1, transform: 'translateY(0)'},\n})\n\nexport const styles = css.create({\n // Fixed, viewport-anchored stack. Portaled into the ThemeProvider mount so it\n // layers above dialogs; the container itself is click-through, each toast\n // re-enables pointer events.\n region: {\n position: 'fixed',\n bottom: spacing.lg,\n left: 0,\n right: 0,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n pointerEvents: 'none',\n },\n toast: {\n pointerEvents: 'auto',\n boxSizing: 'border-box',\n width: '100%',\n maxWidth: 440,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderLeftWidth: 3,\n backgroundColor: colors.bgCard,\n boxShadow: shadows.lg,\n color: colors.text,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n animationName: {\n default: enter,\n '@media (prefers-reduced-motion: reduce)': 'none',\n },\n animationDuration: '160ms',\n animationTimingFunction: easing.easeOut,\n },\n success: {borderLeftColor: colors.successBorder},\n error: {borderLeftColor: colors.errorBorder},\n info: {borderLeftColor: colors.infoBorder},\n\n iconWrap: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: 1,\n },\n iconSuccess: {color: colors.successText},\n iconError: {color: colors.errorText},\n iconInfo: {color: colors.infoText},\n\n content: {\n flex: 1,\n minWidth: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n },\n message: {\n color: colors.text,\n },\n action: {\n alignSelf: 'flex-start',\n marginTop: 2,\n padding: 0,\n borderWidth: 0,\n backgroundColor: 'transparent',\n color: colors.accent,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n textDecorationLine: 'underline',\n cursor: 'pointer',\n outlineStyle: {default: 'none', ':focus-visible': 'solid'},\n outlineWidth: 2,\n outlineColor: colors.accent,\n outlineOffset: 2,\n borderRadius: radii.sm,\n },\n closeBtn: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 2,\n marginTop: -1,\n borderWidth: 0,\n backgroundColor: 'transparent',\n color: {default: colors.textMuted, ':hover': colors.text},\n cursor: 'pointer',\n borderRadius: radii.sm,\n outlineStyle: {default: 'none', ':focus-visible': 'solid'},\n outlineWidth: 2,\n outlineColor: colors.accent,\n outlineOffset: 1,\n },\n})\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useSyncExternalStore,\n type ReactNode,\n} from 'react'\nimport {createPortal} from 'react-dom'\nimport {html} from 'react-strict-dom'\nimport {Icon, type IconName} from '../Icon'\nimport {usePortalMount} from '../ThemeProvider/ThemeProvider'\nimport {styles} from './styles.css'\n\nexport type ToastVariant = 'success' | 'error' | 'info'\n\nexport interface ToastAction {\n label: string\n onClick: () => void\n}\n\nexport interface ToastOptions {\n /** Visual + semantic tone. Errors announce assertively and linger longer. */\n variant?: ToastVariant\n message: ReactNode\n /** Optional single action, e.g. Undo. Runs, then dismisses the toast. */\n action?: ToastAction\n /** Auto-dismiss delay in ms. `0` (or negative) keeps it until dismissed. */\n duration?: number\n}\n\nexport interface ToastContextValue {\n /** Show a toast; returns its id so it can be dismissed programmatically. */\n toast: (opts: ToastOptions) => string\n dismiss: (id: string) => void\n}\n\ninterface ToastEntry {\n id: string\n variant: ToastVariant\n message: ReactNode\n action?: ToastAction\n duration: number\n}\n\ninterface ToastStore {\n subscribe: (cb: () => void) => () => void\n getSnapshot: () => readonly ToastEntry[]\n add: (opts: ToastOptions) => string\n remove: (id: string) => void\n}\n\nconst DEFAULT_DURATION: Record<ToastVariant, number> = {\n success: 5000,\n info: 5000,\n error: 8000,\n}\n\nfunction createToastStore(): ToastStore {\n let entries: ToastEntry[] = []\n let seq = 0\n const listeners = new Set<() => void>()\n const notify = () => listeners.forEach((l) => l())\n\n return {\n subscribe: (cb) => {\n listeners.add(cb)\n return () => listeners.delete(cb)\n },\n getSnapshot: () => entries,\n add: (opts) => {\n const variant = opts.variant ?? 'info'\n const id = `toast-${++seq}`\n const duration = opts.duration ?? DEFAULT_DURATION[variant]\n entries = [...entries, {id, variant, message: opts.message, action: opts.action, duration}]\n notify()\n return id\n },\n remove: (id) => {\n const next = entries.filter((e) => e.id !== id)\n if (next.length !== entries.length) {\n entries = next\n notify()\n }\n },\n }\n}\n\nconst variantIcon: Record<ToastVariant, IconName> = {\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n info: 'info-circle-filled',\n}\nconst variantIconStyle = {\n success: styles.iconSuccess,\n error: styles.iconError,\n info: styles.iconInfo,\n} as const\n\nconst ToastContext = createContext<ToastContextValue | null>(null)\n\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastContext)\n if (!ctx) throw new Error('useToast must be used within a <ToastProvider>')\n return ctx\n}\n\nfunction ToastItem({entry, onDismiss}: {entry: ToastEntry; onDismiss: (id: string) => void}) {\n const {id, variant, message, action, duration} = entry\n\n useEffect(() => {\n if (duration <= 0) return\n const timer = setTimeout(() => onDismiss(id), duration)\n return () => clearTimeout(timer)\n }, [id, duration, onDismiss])\n\n return (\n <html.div\n role={variant === 'error' ? 'alert' : 'status'}\n aria-live={variant === 'error' ? 'assertive' : 'polite'}\n style={[styles.toast, styles[variant]]}\n >\n <html.div style={[styles.iconWrap, variantIconStyle[variant]]}>\n <Icon name={variantIcon[variant]} size={18} />\n </html.div>\n <html.div style={styles.content}>\n <html.div style={styles.message}>{message}</html.div>\n {action ? (\n <html.button\n type=\"button\"\n style={styles.action}\n onClick={() => {\n action.onClick()\n onDismiss(id)\n }}\n >\n {action.label}\n </html.button>\n ) : null}\n </html.div>\n <html.button\n type=\"button\"\n aria-label=\"Dismiss\"\n style={styles.closeBtn}\n onClick={() => onDismiss(id)}\n >\n <Icon name=\"x-circle\" size={16} />\n </html.button>\n </html.div>\n )\n}\n\nexport function ToastProvider({children}: {children: ReactNode}) {\n const storeRef = useRef<ToastStore>(null)\n if (storeRef.current === null) {\n storeRef.current = createToastStore()\n }\n const store = storeRef.current\n\n const entries = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot)\n const mount = usePortalMount()\n\n const value = useMemo<ToastContextValue>(\n () => ({\n toast: (opts) => store.add(opts),\n dismiss: (id) => store.remove(id),\n }),\n [store],\n )\n\n const dismiss = useCallback((id: string) => store.remove(id), [store])\n\n const region = (\n <html.div role=\"region\" aria-label=\"Notifications\" style={styles.region}>\n {entries.map((entry) => (\n <ToastItem key={entry.id} entry={entry} onDismiss={dismiss} />\n ))}\n </html.div>\n )\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n {mount ? createPortal(region, mount) : region}\n </ToastContext.Provider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: spacing.md,\n },\n error: {\n color: colors.error,\n },\n success: {\n color: colors.success,\n },\n warning: {\n color: colors.warning,\n },\n info: {\n color: colors.info,\n },\n muted: {\n color: colors.textMuted,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type StatusIconName = Extract<\n IconName,\n 'x-circle' | 'check-circle' | 'check-done' | 'clock' | 'forbidden'\n>\nexport type StatusIconVariant = 'error' | 'success' | 'warning' | 'info' | 'muted'\n\ninterface StatusIconProps {\n name: StatusIconName\n size?: number\n variant?: StatusIconVariant\n}\n\nexport function StatusIcon({name, size = 48, variant = 'muted'}: StatusIconProps) {\n return (\n <html.div style={[styles.root, styles[variant]]}>\n <Icon name={name} size={size} />\n </html.div>\n )\n}\n","import {createContext, useContext} from 'react'\n\nexport interface TagGroupContextValue {\n values: string[]\n addTag: (value: string) => void\n removeTag: (value: string) => void\n editable: boolean\n setEditable: (v: boolean) => void\n disabled: boolean\n validate?: (value: string) => true | string\n focusedIndex: number\n setFocusedIndex: (index: number) => void\n inputRef: React.RefObject<HTMLInputElement | null>\n gridId: string\n name?: string\n}\n\nexport const TagGroupContext = createContext<TagGroupContextValue | null>(null)\n\nexport function useTagGroup(): TagGroupContextValue | null {\n return useContext(TagGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightNormal,\n lineHeight: 1,\n borderRadius: 4,\n whiteSpace: 'nowrap',\n minWidth: 0,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n sizeMd: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.ms,\n paddingRight: spacing.ms,\n fontSize: typography.fontSizeSm,\n },\n sizeSm: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n // Opt-in wrapping for long identifier-style labels. Overrides the base\n // nowrap so the text breaks within its container (e.g. a table cell)\n // instead of overflowing into the next column. `anywhere` also lets the\n // tag shrink below its content's intrinsic width so a flex/grid parent can\n // actually give it a narrow track.\n wrap: {\n whiteSpace: 'normal',\n overflowWrap: 'anywhere',\n lineHeight: 1.35,\n textAlign: 'start',\n },\n // Reduce right padding when removable to keep visual balance with the button\n removableMd: {\n paddingRight: spacing.sm,\n },\n removableSm: {\n paddingRight: spacing.xs,\n },\n default: {\n backgroundColor: {\n default: colors.bg,\n ':hover': colors.bgCardHover,\n },\n color: colors.text,\n },\n success: {\n backgroundColor: colors.successBg,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n color: colors.warningText,\n },\n error: {\n backgroundColor: colors.errorBg,\n color: colors.errorText,\n },\n info: {\n backgroundColor: colors.infoBg,\n color: colors.infoText,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n removeButton: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 0,\n borderWidth: 0,\n backgroundColor: 'transparent',\n color: 'inherit',\n cursor: 'pointer',\n borderRadius: radii.full,\n opacity: {\n default: 0.6,\n ':hover': 1,\n },\n outlineWidth: 0,\n },\n removeButtonDisabled: {\n cursor: 'not-allowed',\n opacity: 0.4,\n },\n})\n","import {type ReactNode, useCallback, useRef} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useTagGroup} from '../TagGroup/TagGroupContext'\nimport {styles} from './styles.css'\n\nexport type TagVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type TagSize = 'sm' | 'md'\n\ninterface TagProps {\n /** Value identifier — required when used inside TagGroup */\n value?: string\n variant?: TagVariant\n size?: TagSize\n /** Show remove button. Auto-derived from TagGroup context when inside one. */\n removable?: boolean\n /** Called when remove button is clicked. Auto-wired to TagGroup when inside one. */\n onRemove?: () => void\n disabled?: boolean\n /**\n * Allow the label to wrap / break instead of staying on one line. Tags are\n * `white-space: nowrap` by default (they read as pills); set this for long\n * identifier-style values (e.g. `lldap.group.member.remove`) sitting in a\n * constrained column, so they break within their cell instead of leaking\n * into the next one.\n */\n wrap?: boolean\n children: ReactNode\n}\n\nconst sizeMap = {\n sm: styles.sizeSm,\n md: styles.sizeMd,\n} as const\n\nconst removableSizeMap = {\n sm: styles.removableSm,\n md: styles.removableMd,\n} as const\n\nexport function Tag({\n value,\n variant = 'default',\n size = 'md',\n removable: removableProp,\n onRemove: onRemoveProp,\n disabled: disabledProp = false,\n wrap = false,\n children,\n}: TagProps) {\n const group = useTagGroup()\n const contentRef = useRef<HTMLElement>(null)\n\n const isGrouped = group !== null\n const disabled = disabledProp || (group?.disabled ?? false)\n const removable = removableProp ?? (isGrouped ? group.editable : false)\n\n const onRemove = useCallback(() => {\n if (disabled) return\n if (onRemoveProp) {\n onRemoveProp()\n } else if (isGrouped && value !== undefined) {\n group.removeTag(value)\n }\n }, [disabled, onRemoveProp, isGrouped, value, group])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return\n if ((e.key === 'Backspace' || e.key === 'Delete') && removable) {\n e.preventDefault()\n onRemove()\n }\n // Arrow key navigation delegated to TagGroup via context\n if (isGrouped && (e.key === 'ArrowLeft' || e.key === 'ArrowRight')) {\n e.preventDefault()\n const idx = value !== undefined ? group.values.indexOf(value) : -1\n if (e.key === 'ArrowLeft' && idx > 0) {\n group.setFocusedIndex(idx - 1)\n } else if (e.key === 'ArrowRight') {\n if (idx < group.values.length - 1) {\n group.setFocusedIndex(idx + 1)\n } else {\n // Move focus to input\n group.inputRef.current?.focus()\n group.setFocusedIndex(-1)\n }\n }\n }\n },\n [disabled, removable, onRemove, isGrouped, value, group],\n )\n\n const removeLabel = contentRef.current?.textContent\n ? `Remove ${contentRef.current.textContent}`\n : 'Remove'\n\n const tagContent = (\n <>\n <html.span ref={contentRef} {...(isGrouped ? {role: 'gridcell' as any} : {})}>\n {children}\n </html.span>\n {removable && (\n <html.span {...(isGrouped ? {role: 'gridcell' as any} : {})}>\n <html.button\n type=\"button\"\n aria-label={removeLabel}\n disabled={disabled}\n onClick={(e) => {\n ;(e as any).stopPropagation?.()\n onRemove()\n }}\n tabIndex={-1}\n style={[styles.removeButton, disabled && styles.removeButtonDisabled]}\n >\n <svg\n width={size === 'sm' ? 10 : 12}\n height={size === 'sm' ? 10 : 12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n >\n <path\n d=\"M3 3l6 6M9 3l-6 6\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n </html.span>\n )}\n </>\n )\n\n return (\n <html.span\n {...(isGrouped ? {role: 'row' as any} : {})}\n tabIndex={isGrouped ? 0 : undefined}\n onKeyDown={isGrouped ? (handleKeyDown as any) : undefined}\n style={[\n styles.base,\n sizeMap[size],\n removable && removableSizeMap[size],\n styles[variant],\n disabled && styles.disabled,\n wrap && styles.wrap,\n ]}\n >\n {tagContent}\n </html.span>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n container: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n containerError: {},\n containerDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n // Static display (no Input) — no gap needed\n containerStatic: {\n gap: 0,\n },\n list: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: spacing.xs,\n alignItems: 'center',\n },\n input: {\n width: '100%',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':focus': colors.accent,\n },\n borderRadius: radii.sm,\n backgroundColor: colors.bg,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n minHeight: 40,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus': 1,\n },\n boxSizing: 'border-box',\n },\n inputError: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n liveRegion: {\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n },\n})\n","import {\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {TagGroupContext, type TagGroupContextValue} from './TagGroupContext'\nimport {styles} from './styles.css'\n\n// ---------------------------------------------------------------------------\n// Local context accessor (non-throwing, returns null)\n// ---------------------------------------------------------------------------\n\nfunction useTagGroupCtx() {\n return useContext(TagGroupContext)\n}\n\n// ---------------------------------------------------------------------------\n// TagGroup.Root\n// ---------------------------------------------------------------------------\n\ninterface RootProps {\n value?: string[]\n defaultValue?: string[]\n onValueChange?: (values: string[]) => void\n /** Validate a value before adding. Return `true` if valid, or an error string. */\n onValidate?: (value: string) => true | string\n disabled?: boolean\n /** Form field name — renders hidden inputs for each tag value */\n name?: string\n 'aria-label'?: string\n children: ReactNode\n}\n\nfunction Root({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n onValidate,\n disabled: disabledProp = false,\n name,\n 'aria-label': ariaLabel,\n children,\n}: RootProps) {\n const gridId = useId()\n const fieldCtx = useFieldContext()\n const [values, setValues] = useControllableValue(controlledValue, defaultValue, onValueChange)\n const [focusedIndex, setFocusedIndex] = useState(-1)\n const [editable, setEditable] = useState(false)\n const [announcement, setAnnouncement] = useState('')\n const inputRef = useRef<HTMLInputElement>(null)\n\n const disabled = disabledProp || (fieldCtx?.disabled ?? false)\n const isInvalid = fieldCtx?.invalid ?? false\n\n const addTag = useCallback(\n (value: string) => {\n const trimmed = value.trim()\n if (!trimmed) return\n if (values.includes(trimmed)) return\n if (onValidate) {\n const result = onValidate(trimmed)\n if (result !== true) return\n }\n setValues([...values, trimmed])\n setAnnouncement(`Added ${trimmed}`)\n },\n [values, setValues, onValidate],\n )\n\n const removeTag = useCallback(\n (value: string) => {\n const idx = values.indexOf(value)\n if (idx === -1) return\n const next = values.filter((v) => v !== value)\n setValues(next)\n setAnnouncement(`Removed ${value}`)\n\n // Focus management: move to next tag, or previous, or input\n if (next.length === 0) {\n inputRef.current?.focus()\n setFocusedIndex(-1)\n } else if (idx >= next.length) {\n setFocusedIndex(next.length - 1)\n } else {\n setFocusedIndex(idx)\n }\n },\n [values, setValues],\n )\n\n // Focus the tag at focusedIndex when it changes\n useEffect(() => {\n if (focusedIndex >= 0 && focusedIndex < values.length) {\n const container = document.getElementById(gridId)\n if (!container) return\n const rows = container.querySelectorAll('[role=\"row\"]')\n const target = rows[focusedIndex] as HTMLElement | undefined\n target?.focus()\n }\n }, [focusedIndex, gridId, values.length])\n\n const ctx = useMemo<TagGroupContextValue>(\n () => ({\n values,\n addTag,\n removeTag,\n editable,\n setEditable,\n disabled,\n validate: onValidate,\n focusedIndex,\n setFocusedIndex,\n inputRef,\n gridId,\n name,\n }),\n [values, addTag, removeTag, editable, disabled, onValidate, focusedIndex, gridId, name],\n )\n\n return (\n <TagGroupContext.Provider value={ctx}>\n <html.div style={styles.root} aria-label={ariaLabel}>\n <html.div\n style={[\n styles.container,\n !editable && styles.containerStatic,\n isInvalid && styles.containerError,\n disabled && styles.containerDisabled,\n ]}\n aria-describedby={\n fieldCtx\n ? `${fieldCtx.descriptionId} ${fieldCtx.invalid ? fieldCtx.errorId : ''}`.trim()\n : undefined\n }\n aria-invalid={isInvalid || undefined}\n >\n {children}\n </html.div>\n\n {/* Hidden inputs for form submission */}\n {name && values.map((v) => <html.input key={v} type=\"hidden\" name={name} value={v} />)}\n\n {/* Live region for screen reader announcements */}\n <html.div role=\"status\" aria-live=\"polite\" aria-atomic style={styles.liveRegion}>\n {announcement}\n </html.div>\n </html.div>\n </TagGroupContext.Provider>\n )\n}\n\n// ---------------------------------------------------------------------------\n// TagGroup.List\n// ---------------------------------------------------------------------------\n\ninterface ListProps {\n children: ReactNode\n 'aria-label'?: string\n}\n\nfunction List({children, 'aria-label': ariaLabel}: ListProps) {\n const ctx = useTagGroupCtx()\n\n return (\n <html.div role={'grid' as any} aria-label={ariaLabel} id={ctx?.gridId} style={styles.list}>\n {children}\n </html.div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// TagGroup.Input\n// ---------------------------------------------------------------------------\n\ninterface InputProps {\n placeholder?: string\n}\n\nfunction Input({placeholder}: InputProps) {\n const ctx = useTagGroupCtx()\n const [inputValue, setInputValue] = useState('')\n const localRef = useRef<HTMLInputElement>(null)\n\n // Sync local ref with context inputRef\n useEffect(() => {\n if (ctx?.inputRef) {\n ;(ctx.inputRef as React.MutableRefObject<HTMLInputElement | null>).current = localRef.current\n }\n })\n\n // Register as editable on mount\n useEffect(() => {\n ctx?.setEditable(true)\n return () => ctx?.setEditable(false)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n const commitValueRef = useRef<(raw: string) => boolean>(() => false)\n commitValueRef.current = (raw: string) => {\n const trimmed = raw.trim()\n if (!trimmed || !ctx) return false\n ctx.addTag(trimmed)\n setInputValue('')\n return true\n }\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const el = localRef.current\n if (!el) return\n\n function handleKeyDown(e: KeyboardEvent) {\n if (!ctx) return\n const target = e.target as HTMLInputElement\n\n if (e.key === 'Enter' || e.key === ',' || e.key === ';') {\n e.preventDefault()\n commitValueRef.current(target.value)\n return\n }\n\n if (e.key === 'Tab' && target.value.trim()) {\n e.preventDefault()\n commitValueRef.current(target.value)\n return\n }\n\n if (e.key === 'Backspace' && !target.value && ctx.values.length > 0) {\n e.preventDefault()\n ctx.removeTag(ctx.values[ctx.values.length - 1])\n return\n }\n\n if (e.key === 'ArrowLeft' && (target.selectionStart ?? 0) === 0 && ctx.values.length > 0) {\n e.preventDefault()\n ctx.setFocusedIndex(ctx.values.length - 1)\n return\n }\n\n if (e.key === 'Escape') {\n setInputValue('')\n }\n }\n\n function handlePaste(e: ClipboardEvent) {\n if (!ctx) return\n const text = e.clipboardData?.getData('text') ?? ''\n const items = text\n .split(/[\\n,;]+/)\n .map((s) => s.trim())\n .filter(Boolean)\n if (items.length > 1) {\n e.preventDefault()\n for (const item of items) {\n ctx.addTag(item)\n }\n }\n }\n\n function handleFocus() {\n ctx?.setFocusedIndex(-1)\n }\n\n el.addEventListener('keydown', handleKeyDown)\n el.addEventListener('paste', handlePaste)\n el.addEventListener('focus', handleFocus)\n return () => {\n el.removeEventListener('keydown', handleKeyDown)\n el.removeEventListener('paste', handlePaste)\n el.removeEventListener('focus', handleFocus)\n }\n }, [ctx])\n\n return (\n <html.input\n ref={localRef as React.Ref<HTMLInputElement>}\n type=\"text\"\n value={inputValue}\n onChange={(e: any) => setInputValue(e.target.value)}\n placeholder={placeholder}\n disabled={ctx?.disabled}\n style={styles.input}\n />\n )\n}\n\n// ---------------------------------------------------------------------------\n// Namespace export\n// ---------------------------------------------------------------------------\n\nexport const TagGroup = {\n Root,\n List,\n Input,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n rootVertical: {\n flexDirection: 'row',\n },\n list: {\n display: 'flex',\n flexDirection: 'row',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n gap: spacing.xs,\n // Positioning context for the sliding indicator.\n position: 'relative',\n },\n listVertical: {\n flexDirection: 'column',\n borderBottomWidth: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n gap: 0,\n },\n tab: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderBottomWidth: 2,\n borderBottomStyle: 'solid',\n borderBottomColor: 'transparent',\n cursor: 'pointer',\n transitionProperty: 'color, border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': -2,\n },\n },\n tabVertical: {\n justifyContent: 'flex-start',\n borderBottomWidth: 0,\n borderRightWidth: 2,\n borderRightStyle: 'solid',\n borderRightColor: 'transparent',\n },\n tabActiveHorizontal: {\n color: colors.text,\n borderBottomColor: colors.accent,\n },\n tabActiveVertical: {\n color: colors.text,\n borderRightColor: colors.accent,\n },\n // Applied to the active tab once JS drives the sliding indicator: drop the\n // per-tab accent border so the single sliding bar is the only underline\n // (avoids a double line and an instant-pop that would undercut the slide).\n tabIndicatorActive: {\n borderBottomColor: 'transparent',\n borderRightColor: 'transparent',\n },\n // --- Sliding active indicator (positioned by measuring the active tab) ---\n indicator: {\n position: 'absolute',\n backgroundColor: colors.accent,\n pointerEvents: 'none',\n transitionProperty: 'transform, width, height',\n transitionDuration: duration.base,\n transitionTimingFunction: easing.easeOut,\n },\n indicatorHorizontal: {\n bottom: -1,\n left: 0,\n height: 2,\n },\n indicatorVertical: {\n right: -1,\n top: 0,\n width: 2,\n },\n // Dynamic transform/size from the measured active tab (StyleX dynamic style:\n // simple identifier params only).\n indicatorOffsetH: (offset: number, size: number) => ({\n transform: `translateX(${offset}px)`,\n width: size,\n }),\n indicatorOffsetV: (offset: number, size: number) => ({\n transform: `translateY(${offset}px)`,\n height: size,\n }),\n tabDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n color: colors.textMuted,\n },\n panel: {\n paddingTop: spacing.md,\n },\n panelVertical: {\n paddingTop: 0,\n paddingLeft: spacing.md,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport interface TabsContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n orientation: Orientation\n registerTab: (value: string, disabled: boolean) => () => void\n tabsRef: React.RefObject<Map<string, boolean>>\n orderRef: React.RefObject<string[]>\n // True once the List has measured the active tab and is driving a sliding\n // indicator. Tabs suppress their own accent border while it's true so the\n // single sliding bar is the only underline; it stays false without JS\n // (SSR / no-hydration), where the per-tab border is the graceful fallback.\n indicatorActive: boolean\n setIndicatorActive: (active: boolean) => void\n}\n\nexport const TabsContext = createContext<TabsContextValue | null>(null)\n\nexport function useTabs() {\n const ctx = useContext(TabsContext)\n if (!ctx) throw new Error('Tabs compound components must be used within Tabs.Root')\n return ctx\n}\n","import {useCallback, useRef, useState} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {Orientation, TabsContextValue} from './TabsContext'\n\ninterface UseTabsRootOptions {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: Orientation\n}\n\nexport function useTabsRoot({\n value: controlledValue,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: UseTabsRootOptions): TabsContextValue {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const tabsRef = useRef(new Map<string, boolean>())\n const orderRef = useRef<string[]>([])\n const [indicatorActive, setIndicatorActive] = useState(false)\n\n const registerTab = useCallback((value: string, disabled: boolean) => {\n tabsRef.current.set(value, disabled)\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n tabsRef.current.delete(value)\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n return {\n activeValue,\n onSelect,\n orientation,\n registerTab,\n tabsRef,\n orderRef,\n indicatorActive,\n setIndicatorActive,\n }\n}\n","import {type ReactNode, useRef, useId, useEffect, useLayoutEffect, useState} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {TabsContext, useTabs} from './TabsContext'\nimport {useTabsRoot} from './useTabsRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n}\n\nfunction Root({\n children,\n value,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: RootProps) {\n const ctx = useTabsRoot({value, defaultValue, onValueChange, orientation})\n\n return (\n <TabsContext.Provider value={ctx}>\n <html.div style={[styles.root, orientation === 'vertical' && styles.rootVertical]}>\n {children}\n </html.div>\n </TabsContext.Provider>\n )\n}\n\n// --- List ---\n\ninterface ListProps {\n children: ReactNode\n}\n\nfunction List({children}: ListProps) {\n const {orientation, activeValue, onSelect, tabsRef, orderRef, setIndicatorActive} = useTabs()\n const listRef = useRef<HTMLDivElement>(null)\n const [indicator, setIndicator] = useState<{offset: number; size: number} | null>(null)\n\n // Measure the active tab and drive the sliding indicator. useLayoutEffect so\n // the first position is set before paint (the indicator element mounts already\n // in place — no slide-in from zero; only later tab changes animate). Observes\n // the active tab (its own size, e.g. a changing \"(3)\" count) and the list\n // (container resize / reflow). A non-active sibling resizing while you're on\n // another tab is the one case not caught; it self-corrects on the next\n // selection or resize.\n useLayoutEffect(() => {\n const list = listRef.current\n if (!list || !activeValue) {\n setIndicator(null)\n setIndicatorActive(false)\n return\n }\n const el = list.querySelector<HTMLElement>(`[data-tab-value=\"${CSS.escape(activeValue)}\"]`)\n if (!el) {\n setIndicator(null)\n setIndicatorActive(false)\n return\n }\n const measure = () => {\n setIndicator(\n orientation === 'horizontal'\n ? {offset: el.offsetLeft, size: el.offsetWidth}\n : {offset: el.offsetTop, size: el.offsetHeight},\n )\n setIndicatorActive(true)\n }\n measure()\n const ro = new ResizeObserver(measure)\n ro.observe(el)\n ro.observe(list)\n return () => ro.disconnect()\n }, [activeValue, orientation, setIndicatorActive])\n\n useEffect(() => {\n const el = listRef.current\n if (!el) return\n\n function handleKeyDown(this: HTMLElement, e: KeyboardEvent) {\n const order = orderRef.current\n const tabs = tabsRef.current\n if (order.length === 0) return\n const listEl = this\n\n const prevKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp'\n const nextKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown'\n\n let targetValue: string | null = null\n\n switch (e.key) {\n case nextKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : -1\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx + i) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case prevKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : 0\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx - i + order.length) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'Home': {\n e.preventDefault()\n for (const val of order) {\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'End': {\n e.preventDefault()\n for (let i = order.length - 1; i >= 0; i--) {\n if (!tabs.get(order[i])) {\n targetValue = order[i]\n break\n }\n }\n break\n }\n }\n\n if (targetValue) {\n onSelect(targetValue)\n // Focus the newly activated tab button\n const tabEl = listEl.querySelector(\n `[data-tab-value=\"${targetValue}\"]`,\n ) as HTMLElement | null\n tabEl?.focus()\n }\n }\n\n el.addEventListener('keydown', handleKeyDown)\n return () => el.removeEventListener('keydown', handleKeyDown)\n }, [orientation, activeValue, onSelect, tabsRef, orderRef])\n\n return (\n <html.div\n ref={listRef}\n role=\"tablist\"\n aria-orientation={orientation}\n style={[styles.list, orientation === 'vertical' && styles.listVertical]}\n >\n {children}\n {indicator && (\n <html.div\n aria-hidden\n style={[\n styles.indicator,\n orientation === 'horizontal' ? styles.indicatorHorizontal : styles.indicatorVertical,\n orientation === 'horizontal'\n ? styles.indicatorOffsetH(indicator.offset, indicator.size)\n : styles.indicatorOffsetV(indicator.offset, indicator.size),\n ]}\n />\n )}\n </html.div>\n )\n}\n\n// --- Tab ---\n\ninterface TabProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Tab({value, disabled = false, children}: TabProps) {\n const {activeValue, onSelect, orientation, registerTab, indicatorActive} = useTabs()\n const isActive = activeValue === value\n const tabId = useId()\n const panelId = `${tabId}-panel`\n\n useEffect(() => {\n return registerTab(value, disabled)\n }, [value, disabled, registerTab])\n\n const handleClick = () => {\n if (!disabled) {\n onSelect(value)\n }\n }\n\n return (\n <html.button\n type=\"button\"\n role=\"tab\"\n id={tabId}\n aria-selected={isActive}\n aria-controls={panelId}\n aria-disabled={disabled || undefined}\n data-tab-value={value}\n tabIndex={isActive ? 0 : -1}\n onClick={handleClick}\n style={[\n styles.tab,\n orientation === 'vertical' && styles.tabVertical,\n isActive &&\n (orientation === 'vertical' ? styles.tabActiveVertical : styles.tabActiveHorizontal),\n isActive && indicatorActive && styles.tabIndicatorActive,\n disabled && styles.tabDisabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Panel ---\n\ninterface PanelProps {\n value: string\n children: ReactNode\n}\n\nfunction Panel({value, children}: PanelProps) {\n const {activeValue, orientation} = useTabs()\n\n if (activeValue !== value) return null\n\n return (\n <html.div\n role=\"tabpanel\"\n style={[styles.panel, orientation === 'vertical' && styles.panelVertical]}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tabs = {\n Root,\n List,\n Tab,\n Panel,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n resize: 'vertical' as const,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {styles} from './styles.css'\n\ntype StrictTextareaProps = React.ComponentProps<typeof html.textarea>\n\nexport type TextareaVariant = 'default' | 'error'\n\ninterface TextareaProps {\n variant?: TextareaVariant\n name?: string\n placeholder?: string\n required?: boolean\n rows?: number\n value?: string\n defaultValue?: string\n disabled?: boolean\n autoFocus?: boolean\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLTextAreaElement>\n}\n\nexport function Textarea({\n variant = 'default',\n name,\n placeholder,\n required,\n rows = 3,\n value,\n defaultValue,\n disabled,\n autoFocus,\n onChange,\n onBlur,\n ref,\n}: TextareaProps) {\n const ctx = useFieldContext()\n\n const fieldCtx = ctx?.field\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveDisabled = disabled ?? ctx?.disabled\n const effectiveVariant = ctx?.invalid ? 'error' : variant\n\n const extraProps: Record<string, unknown> = {}\n if (autoFocus) extraProps.autoFocus = true\n\n return (\n <html.textarea\n id={ctx?.controlId}\n name={effectiveName}\n placeholder={placeholder}\n required={required}\n rows={rows}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={effectiveDisabled}\n aria-describedby={\n ctx ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() : undefined\n }\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={effectiveOnChange as StrictTextareaProps['onChange']}\n onBlur={effectiveOnBlur as StrictTextareaProps['onBlur']}\n ref={effectiveRef as React.Ref<HTMLTextAreaElement>}\n style={[styles.base, styles[effectiveVariant]]}\n {...extraProps}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n button: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: spacing.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.sm,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.text,\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n },\n})\n","import {\n createContext,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {Icon, type IconName} from '../Icon/Icon'\nimport {ThemeProvider, type ThemeName} from '../ThemeProvider/ThemeProvider'\nimport {styles} from './styles.css'\n\n/**\n * The user's *preference*. `'system'` follows the OS `prefers-color-scheme`;\n * the others pin a concrete {@link ThemeName}. Resolves to a ThemeName via\n * {@link useColorMode}().theme.\n */\nexport type ColorModePreference = 'system' | ThemeName\n\nconst PREFERENCES: readonly ColorModePreference[] = ['system', 'light', 'dark', 'high-contrast']\n\nconst ICON: Record<ColorModePreference, IconName> = {\n system: 'monitor',\n light: 'sun',\n dark: 'moon',\n 'high-contrast': 'contrast',\n}\n\nconst LABEL: Record<ColorModePreference, string> = {\n system: 'system',\n light: 'light',\n dark: 'dark',\n 'high-contrast': 'high contrast',\n}\n\ninterface ColorModeContextValue {\n /** The user's chosen preference. */\n preference: ColorModePreference\n /** The concrete theme the preference resolves to (system → OS scheme). */\n theme: ThemeName\n /** Set the preference explicitly. */\n setPreference: (preference: ColorModePreference) => void\n /** Advance to the next preference in {@link modes} (wraps). */\n cycle: () => void\n /** The cycle order used by `cycle()` and the toggle. */\n modes: readonly ColorModePreference[]\n}\n\nconst ColorModeContext = createContext<ColorModeContextValue | null>(null)\n\n/**\n * Read the active color mode. Throws if used outside a {@link ColorModeProvider}.\n */\nexport function useColorMode(): ColorModeContextValue {\n const ctx = useContext(ColorModeContext)\n if (!ctx) {\n throw new Error('useColorMode must be used within a <ColorModeProvider>')\n }\n return ctx\n}\n\nconst canUseDom =\n !isNative && typeof window !== 'undefined' && typeof window.matchMedia === 'function'\n\nfunction isPreference(value: unknown): value is ColorModePreference {\n return typeof value === 'string' && (PREFERENCES as readonly string[]).includes(value)\n}\n\nfunction readStored(key: string | null): ColorModePreference | null {\n if (!key || isNative || typeof window === 'undefined') return null\n try {\n const raw = window.localStorage.getItem(key)\n return isPreference(raw) ? raw : null\n } catch {\n // Private mode / blocked storage — degrade to no persistence.\n return null\n }\n}\n\nfunction writeStored(key: string | null, value: ColorModePreference): void {\n if (!key || isNative || typeof window === 'undefined') return\n try {\n window.localStorage.setItem(key, value)\n } catch {\n /* ignore */\n }\n}\n\ninterface ColorModeProviderProps {\n children: ReactNode\n /** Initial preference (uncontrolled). Default `'system'`. For SSR with no\n * hydration flash, pass the value you persisted server-side (e.g. a cookie). */\n defaultPreference?: ColorModePreference\n /** Controlled preference — when set, the provider does not own the state. */\n preference?: ColorModePreference\n /** Fired whenever the preference changes (controlled or not). */\n onPreferenceChange?: (preference: ColorModePreference) => void\n /** Cycle order for `cycle()` / `<ColorModeToggle>`. Default `['light', 'dark']`. */\n modes?: readonly ColorModePreference[]\n /** localStorage key for persistence; `null` disables it. Default `'duro-color-mode'`. */\n storageKey?: string | null\n /** Wrap children in the DS `ThemeProvider` with the resolved theme. Default `true`.\n * Set `false` to drive your own ThemeProvider from `useColorMode().theme`. */\n applyTheme?: boolean\n}\n\n/**\n * Owns color-mode state, resolves `'system'` against the OS scheme, persists the\n * choice, and (by default) applies the resolved theme via `ThemeProvider`.\n * Pair with {@link ColorModeToggle} or read state via {@link useColorMode}.\n */\nexport function ColorModeProvider({\n children,\n defaultPreference = 'system',\n preference: controlled,\n onPreferenceChange,\n modes = ['light', 'dark'],\n storageKey = 'duro-color-mode',\n applyTheme = true,\n}: ColorModeProviderProps) {\n const [internal, setInternal] = useState<ColorModePreference>(controlled ?? defaultPreference)\n const preference = controlled ?? internal\n\n // Hydrate from storage AFTER mount (not in the initializer) so the first\n // client render matches the server and React doesn't warn about a mismatch.\n useEffect(() => {\n if (controlled !== undefined) return\n const stored = readStored(storageKey)\n if (stored) setInternal(stored)\n // Only on mount / when the key changes.\n }, [controlled, storageKey])\n\n const setPreference = useCallback(\n (next: ColorModePreference) => {\n if (controlled === undefined) setInternal(next)\n writeStored(storageKey, next)\n onPreferenceChange?.(next)\n },\n [controlled, storageKey, onPreferenceChange],\n )\n\n // Track the OS scheme so `'system'` stays live. The initial value MUST be the\n // SSR-stable default ('dark', what the server renders without a DOM) so the\n // first client render matches the server — reading matchMedia in the\n // initializer would diverge (server 'dark' vs client's real scheme) and trip\n // a hydration mismatch. The effect reconciles to the real scheme after mount.\n const [systemTheme, setSystemTheme] = useState<'light' | 'dark'>('dark')\n useEffect(() => {\n if (!canUseDom) return\n const mq = window.matchMedia('(prefers-color-scheme: dark)')\n const onChange = () => setSystemTheme(mq.matches ? 'dark' : 'light')\n onChange()\n mq.addEventListener('change', onChange)\n return () => mq.removeEventListener('change', onChange)\n }, [])\n\n const theme: ThemeName = preference === 'system' ? systemTheme : preference\n\n const cycle = useCallback(() => {\n const i = modes.indexOf(preference)\n const next = modes[(i + 1) % modes.length] ?? modes[0]\n if (next) setPreference(next)\n }, [modes, preference, setPreference])\n\n const value = useMemo<ColorModeContextValue>(\n () => ({preference, theme, setPreference, cycle, modes}),\n [preference, theme, setPreference, cycle, modes],\n )\n\n return (\n <ColorModeContext.Provider value={value}>\n {applyTheme ? <ThemeProvider theme={theme}>{children}</ThemeProvider> : children}\n </ColorModeContext.Provider>\n )\n}\n\ninterface ColorModeToggleProps {\n /** Icon size in px. Default `20`. */\n size?: number\n /** Override the announced label (otherwise auto-generated from current/next). */\n 'aria-label'?: string\n}\n\n/**\n * A compact icon button that cycles the color-mode preference through the\n * provider's `modes`. The glyph reflects the current preference\n * (sun/moon/monitor/contrast). Must be inside a {@link ColorModeProvider}.\n */\nexport function ColorModeToggle({size = 20, 'aria-label': ariaLabel}: ColorModeToggleProps) {\n const {preference, cycle, modes} = useColorMode()\n const i = modes.indexOf(preference)\n const next = modes[(i + 1) % modes.length] ?? modes[0] ?? preference\n const label = ariaLabel ?? `Color mode: ${LABEL[preference]}. Switch to ${LABEL[next]}.`\n\n return (\n <html.button type=\"button\" aria-label={label} onClick={cycle} style={styles.button}>\n <Icon name={ICON[preference]} size={size} />\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n error: {\n color: colors.errorText,\n },\n success: {\n color: colors.successText,\n },\n warning: {\n color: colors.warningText,\n },\n\n // Weight overrides\n weightNormal: {\n fontWeight: typography.fontWeightNormal,\n },\n weightMedium: {\n fontWeight: typography.fontWeightMedium,\n },\n weightSemibold: {\n fontWeight: typography.fontWeightSemibold,\n },\n weightBold: {\n fontWeight: typography.fontWeightBold,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n\n // Truncate. minWidth: 0 lets a truncating Text actually shrink inside a\n // flex/grid container — without it, the default `min-width: auto` would\n // keep the element at its content width, so text-overflow: ellipsis would\n // never trigger and the text would just overflow the parent instead.\n truncate: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type TextVariant = 'bodySm' | 'bodyMd' | 'bodyLg' | 'caption' | 'label' | 'code' | 'overline'\nexport type TextColor = 'default' | 'muted' | 'accent' | 'error' | 'success' | 'warning'\n\ninterface TextProps {\n variant?: TextVariant\n color?: TextColor\n weight?: 'normal' | 'medium' | 'semibold' | 'bold'\n align?: 'start' | 'center' | 'end'\n truncate?: boolean\n as?: 'span' | 'p' | 'div'\n children: ReactNode\n}\n\nconst weightMap = {\n normal: styles.weightNormal,\n medium: styles.weightMedium,\n semibold: styles.weightSemibold,\n bold: styles.weightBold,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Text({\n variant = 'bodyMd',\n color = 'default',\n weight,\n align,\n truncate,\n as = 'span',\n children,\n}: TextProps) {\n const style = [\n typePresets[variant],\n styles[color],\n weight && weightMap[weight],\n align && alignMap[align],\n truncate && styles.truncate,\n ]\n\n if (as === 'p') return <html.p style={style}>{children}</html.p>\n if (as === 'div') return <html.div style={style}>{children}</html.div>\n return <html.span style={style}>{children}</html.span>\n}\n","import {createContext, useContext} from 'react'\nimport type {ToggleSize} from '../Toggle/Toggle'\n\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport interface ToggleGroupContextValue {\n value: string[]\n toggle: (itemValue: string) => void\n disabled: boolean\n orientation: Orientation\n size: ToggleSize\n}\n\nexport const ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null)\n\nexport function useToggleGroup() {\n return useContext(ToggleGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 1,\n borderStyle: 'solid',\n cursor: 'pointer',\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightMedium,\n transitionProperty: 'background-color, border-color, color, opacity',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n },\n sizeDefault: {\n padding: `${spacing.sm} ${spacing.md}`,\n fontSize: typography.fontSizeSm,\n borderRadius: radii.sm,\n gap: spacing.sm,\n },\n sizeSmall: {\n padding: `${spacing.xs} ${spacing.sm}`,\n fontSize: typography.fontSizeXs,\n borderRadius: radii.sm,\n gap: spacing.xs,\n },\n unpressed: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n color: colors.textMuted,\n },\n pressed: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n borderColor: colors.accent,\n color: colors.accentContrast,\n },\n grouped: {\n borderWidth: 0,\n borderRadius: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n // Override any borderColor set by pressed state — dividers always use border token\n borderColor: colors.border,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n})\n","import {type ReactNode, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {useToggleGroup} from '../ToggleGroup/ToggleGroupContext'\nimport {styles} from './styles.css'\n\nexport type ToggleSize = 'default' | 'small'\n\ninterface ToggleProps {\n /** Controlled pressed state (standalone usage). */\n pressed?: boolean\n /** Initial pressed state (uncontrolled, standalone usage). */\n defaultPressed?: boolean\n /** Callback fired when the pressed state changes (standalone usage). */\n onPressedChange?: (pressed: boolean) => void\n /** Unique value when used inside a ToggleGroup. */\n value?: string\n /** Prevents user interaction. */\n disabled?: boolean\n /** Size variant (overridden by ToggleGroup when grouped). */\n size?: ToggleSize\n 'aria-label'?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function Toggle({\n pressed: controlledPressed,\n defaultPressed = false,\n onPressedChange,\n value,\n disabled: disabledProp = false,\n size: sizeProp = 'default',\n 'aria-label': ariaLabel,\n children,\n}: ToggleProps) {\n const group = useToggleGroup()\n\n // When inside a ToggleGroup, derive pressed state from group context\n const groupPressed = group && value !== undefined ? group.value.includes(value) : undefined\n const isGrouped = group !== null\n const disabled = disabledProp || (group?.disabled ?? false)\n const size = group?.size ?? sizeProp\n\n const [standalonePressed, setStandalonePressed] = useControllableValue(\n controlledPressed,\n defaultPressed,\n onPressedChange,\n )\n\n const pressed = groupPressed ?? standalonePressed\n\n const handleClick = useCallback(() => {\n if (disabled) return\n if (isGrouped && value !== undefined) {\n group.toggle(value)\n } else {\n setStandalonePressed(!pressed)\n }\n }, [disabled, isGrouped, value, group, pressed, setStandalonePressed])\n\n return (\n <html.button\n type=\"button\"\n aria-pressed={pressed}\n aria-label={ariaLabel}\n disabled={disabled}\n onClick={handleClick}\n data-pressed={pressed ? '' : undefined}\n style={[\n styles.base,\n sizeMap[size],\n pressed ? styles.pressed : styles.unpressed,\n isGrouped && styles.grouped,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n overflow: 'hidden',\n },\n vertical: {\n flexDirection: 'column',\n },\n})\n","import {type ReactNode, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {ToggleSize} from '../Toggle/Toggle'\nimport {ToggleGroupContext, type Orientation} from './ToggleGroupContext'\nimport {styles} from './styles.css'\n\ninterface ToggleGroupProps {\n /** Controlled value — array of pressed item values. */\n value?: string[]\n /** Initial value (uncontrolled). */\n defaultValue?: string[]\n /** Callback fired when the set of pressed values changes. */\n onValueChange?: (value: string[]) => void\n /** When false, at most one item can be pressed at a time. */\n multiple?: boolean\n /** Prevents interaction with all items. */\n disabled?: boolean\n /** Layout direction. */\n orientation?: Orientation\n /** Size applied to all child toggles. */\n size?: ToggleSize\n children: ReactNode\n}\n\nexport function ToggleGroup({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n multiple = false,\n disabled = false,\n orientation = 'horizontal',\n size = 'default',\n children,\n}: ToggleGroupProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const toggle = useCallback(\n (itemValue: string) => {\n const nextPressed = !value.includes(itemValue)\n let next: string[]\n if (multiple) {\n next = nextPressed ? [...value, itemValue] : value.filter((v) => v !== itemValue)\n } else {\n next = nextPressed ? [itemValue] : []\n }\n setValue(next)\n },\n [value, multiple, setValue],\n )\n\n return (\n <ToggleGroupContext.Provider value={{value, toggle, disabled, orientation, size}}>\n <html.div\n role=\"toolbar\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'vertical' && styles.vertical]}\n >\n {children}\n </html.div>\n </ToggleGroupContext.Provider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n popup: {\n position: 'absolute',\n zIndex: 50,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n },\n top: {\n bottom: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginBottom: spacing.xs,\n },\n bottom: {\n top: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginTop: spacing.xs,\n },\n left: {\n right: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginRight: spacing.xs,\n },\n right: {\n left: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginLeft: spacing.xs,\n },\n})\n","import {\n type ReactNode,\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n useId,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ntype Placement = 'top' | 'bottom' | 'left' | 'right'\n\ninterface TooltipContextValue {\n open: boolean\n show: () => void\n hide: () => void\n tooltipId: string\n placement: Placement\n}\n\nconst TooltipContext = createContext<TooltipContextValue | null>(null)\n\nfunction useTooltip() {\n const ctx = useContext(TooltipContext)\n if (!ctx) throw new Error('Tooltip compound components must be used within Tooltip.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n content: ReactNode\n placement?: Placement\n delay?: number\n}\n\nfunction Root({children, content, placement = 'top', delay = 300}: RootProps) {\n const [open, setOpen] = useState(false)\n const tooltipId = useId()\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const show = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = setTimeout(() => setOpen(true), delay)\n }, [delay])\n\n const hide = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = null\n setOpen(false)\n }, [])\n\n return (\n <TooltipContext.Provider value={{open, show, hide, tooltipId, placement}}>\n <html.div style={styles.root}>\n {children}\n {open && (\n <html.div id={tooltipId} role=\"tooltip\" style={[styles.popup, styles[placement]]}>\n {content}\n </html.div>\n )}\n </html.div>\n </TooltipContext.Provider>\n )\n}\n\n// --- Trigger ---\n\ninterface TriggerProps {\n children: ReactNode\n}\n\nfunction Trigger({children}: TriggerProps) {\n const {open, show, hide, tooltipId} = useTooltip()\n\n return (\n <html.div\n onPointerEnter={show}\n onPointerLeave={hide}\n onFocus={show}\n onBlur={hide}\n aria-describedby={open ? tooltipId : undefined}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tooltip = {\n Root,\n Trigger,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n rootDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n track: {\n position: 'relative',\n width: 36,\n height: 20,\n borderRadius: radii.full,\n borderWidth: 0,\n padding: 0,\n cursor: 'inherit',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n flexShrink: 0,\n },\n trackUnchecked: {\n backgroundColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n trackChecked: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n },\n thumb: {\n position: 'absolute',\n top: 2,\n left: 2,\n width: 16,\n height: 16,\n borderRadius: radii.full,\n backgroundColor: '#fff',\n transitionProperty: 'transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n thumbChecked: {\n transform: 'translateX(16px)',\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import {type ReactNode, useCallback, useRef} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {styles} from './styles.css'\n\ninterface SwitchProps {\n /** Controlled checked state. */\n checked?: boolean\n /** Initial checked state (uncontrolled). */\n defaultChecked?: boolean\n /** Callback fired when the checked state changes. */\n onCheckedChange?: (checked: boolean) => void\n /** Prevents user interaction. */\n disabled?: boolean\n /** Form field name for the hidden input. */\n name?: string\n /** Value submitted when checked. */\n value?: string\n /** Label content rendered beside the switch. */\n children?: ReactNode\n}\n\nexport function Switch({\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n disabled = false,\n name,\n value,\n children,\n}: SwitchProps) {\n const [checked, setChecked] = useControllableValue(\n controlledChecked,\n defaultChecked,\n onCheckedChange,\n )\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleClick = useCallback(() => {\n if (disabled) return\n setChecked(!checked)\n // Keep hidden input in sync for form submission\n if (inputRef.current) {\n inputRef.current.checked = !checked\n }\n }, [disabled, checked, setChecked])\n\n return (\n <html.label\n style={[styles.root, isNative && styles.nativeFlex, disabled && styles.rootDisabled]}\n >\n {!isNative && (\n // Web: hidden real checkbox carries a11y + form submission. RSD has no\n // <input type=checkbox> on native, so it's omitted there and the\n // button below carries the switch role instead.\n <html.input\n ref={inputRef}\n type=\"checkbox\"\n role=\"switch\"\n name={name}\n value={value}\n checked={controlledChecked !== undefined ? controlledChecked : undefined}\n defaultChecked={controlledChecked === undefined ? defaultChecked : undefined}\n disabled={disabled}\n aria-checked={checked}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n onCheckedChange?.(e.target.checked)\n }}\n style={styles.input}\n />\n )}\n <html.button\n type=\"button\"\n tabIndex={-1}\n aria-hidden={isNative ? undefined : true}\n role={isNative ? 'switch' : undefined}\n aria-checked={isNative ? checked : undefined}\n disabled={disabled}\n onClick={handleClick}\n style={[styles.track, checked ? styles.trackChecked : styles.trackUnchecked]}\n >\n <html.span style={[styles.thumb, checked && styles.thumbChecked]} />\n </html.button>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'column',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignStretch: {alignItems: 'stretch'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpacingKey = 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl'\n\ninterface StackProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'stretch'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n stretch: styles.alignStretch,\n} as const\n\nexport function Stack({gap = 'md', align = 'stretch', children}: StackProps) {\n return <html.div style={[styles.base, gapMap[gap], alignMap[align]]}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignBaseline: {alignItems: 'baseline'},\n alignStretch: {alignItems: 'stretch'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface InlineProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'baseline' | 'stretch'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n baseline: styles.alignBaseline,\n stretch: styles.alignStretch,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Inline({gap = 'sm', align = 'center', justify = 'start', children}: InlineProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface ClusterProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Cluster({gap = 'sm', align = 'start', justify = 'start', children}: ClusterProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'grid',\n },\n col1: {gridTemplateColumns: '1fr'},\n col2: {gridTemplateColumns: 'repeat(2, 1fr)'},\n col3: {gridTemplateColumns: 'repeat(3, 1fr)'},\n col4: {gridTemplateColumns: 'repeat(4, 1fr)'},\n col5: {gridTemplateColumns: 'repeat(5, 1fr)'},\n col6: {gridTemplateColumns: 'repeat(6, 1fr)'},\n autoFit: (minWidth: string) => ({\n gridTemplateColumns: `repeat(auto-fill, minmax(${minWidth}, 1fr))`,\n }),\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface GridProps {\n gap?: SpacingKey\n columns?: 1 | 2 | 3 | 4 | 5 | 6\n minColumnWidth?: string\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst columnsMap = {\n 1: styles.col1,\n 2: styles.col2,\n 3: styles.col3,\n 4: styles.col4,\n 5: styles.col5,\n 6: styles.col6,\n} as const\n\nexport function Grid({gap = 'md', columns, minColumnWidth, children}: GridProps) {\n const columnStyle = minColumnWidth\n ? styles.autoFit(minColumnWidth)\n : columns\n ? columnsMap[columns]\n : undefined\n\n return <html.div style={[styles.base, gapMap[gap], columnStyle]}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {layoutSpacing} from '@duro-app/tokens/tokens/layout-spacing.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n width: '100%',\n },\n container: {\n width: '100%',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n // Max-width presets\n maxSm: {maxWidth: 600},\n maxMd: {maxWidth: 800},\n maxLg: {maxWidth: 1200},\n // Horizontal padding\n padSm: {paddingLeft: layoutSpacing.containerSm, paddingRight: layoutSpacing.containerSm},\n padMd: {paddingLeft: layoutSpacing.containerMd, paddingRight: layoutSpacing.containerMd},\n padLg: {paddingLeft: layoutSpacing.containerLg, paddingRight: layoutSpacing.containerLg},\n // Vertical spacing\n headerPadding: {paddingTop: spacing.lg},\n mainPadding: {paddingTop: spacing.xl, paddingBottom: spacing.xl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type PageShellMaxWidth = 'sm' | 'md' | 'lg' | 'full'\nexport type PageShellPadding = 'sm' | 'md' | 'lg'\n\ninterface PageShellProps {\n /** Max-width preset: sm (600), md (800), lg (1200), full (none). Default: 'lg' */\n maxWidth?: PageShellMaxWidth\n /** Horizontal padding preset. Default: 'md' (24px) */\n padding?: PageShellPadding\n /** Header element rendered above the main content with same constraints */\n header?: ReactNode\n children: ReactNode\n}\n\nconst maxWidthMap = {\n sm: styles.maxSm,\n md: styles.maxMd,\n lg: styles.maxLg,\n full: null,\n} as const\n\nconst paddingMap = {\n sm: styles.padSm,\n md: styles.padMd,\n lg: styles.padLg,\n} as const\n\nexport function PageShell({maxWidth = 'lg', padding = 'md', header, children}: PageShellProps) {\n const mw = maxWidthMap[maxWidth]\n const pad = paddingMap[padding]\n\n return (\n <html.div style={styles.root}>\n {header != null && (\n <html.header style={[styles.container, styles.maxLg, pad, styles.headerPadding]}>\n {header}\n </html.header>\n )}\n <html.main style={[styles.container, mw, pad, styles.mainPadding]}>{children}</html.main>\n </html.div>\n )\n}\n","import {useRef, useState, useEffect} from 'react'\n\nexport type ContainerSize = 'compact' | 'default' | 'spacious'\n\ninterface UseContainerQueryOptions {\n compactBelow?: number\n spaciousAbove?: number\n}\n\nexport function useContainerQuery<T extends HTMLElement = HTMLElement>(\n options: UseContainerQueryOptions = {},\n): {\n ref: React.RefObject<T | null>\n size: ContainerSize\n} {\n const {compactBelow = 480, spaciousAbove = 768} = options\n const ref = useRef<T | null>(null)\n const [size, setSize] = useState<ContainerSize>('default')\n\n useEffect(() => {\n const element = ref.current\n if (!element) return\n\n let rafId: number | null = null\n\n const observer = new ResizeObserver((entries) => {\n if (rafId !== null) cancelAnimationFrame(rafId)\n\n rafId = requestAnimationFrame(() => {\n const entry = entries[0]\n if (!entry) return\n\n const width = entry.contentBoxSize?.[0]?.inlineSize ?? entry.contentRect.width\n\n if (width < compactBelow) {\n setSize('compact')\n } else if (width >= spaciousAbove) {\n setSize('spacious')\n } else {\n setSize('default')\n }\n })\n })\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n if (rafId !== null) cancelAnimationFrame(rafId)\n }\n }, [compactBelow, spaciousAbove])\n\n return {ref, size}\n}\n"],"names":["createActionBarStore","entries","listeners","Set","notify","forEach","l","subscribe","cb","add","delete","getSnapshot","push","id","render","update","map","e","remove","filter","ActionBarContext","createContext","ActionBarProvider","children","storeRef","useRef","current","store","useSyncExternalStore","topEntry","length","jsxs","useActionBarStack","$","_c","useContext","useId","t0","some","register","t1","unregister","t2","bb0","t3","entries_0","isTop","t4","managed","styles","overlay","$$css","overlayEmphasized","selectedCount","selectedCountEmphasized","actions","closeButton","closeButtonEmphasized","separator","separatorEmphasized","ActionBarContent","selectedItemCount","selectedLabel","isEmphasized","onClearSelection","dismissible","undefined","countStr","label","t5","t6","t7","t8","jsx","_rsdMerge","_rsdDefaultStyles","span","t9","t10","div","t11","t12","button","t13","ActionBarInner","props","stack","isActive","renderBar","useEffect","ActionBar","strokeIcons","Fragment","clock","forbidden","shield","lock","key","layers","repeat","database","route","menu","users","mail","plug","pin","sun","moon","monitor","contrast","filledIcons","Icon","name","size","filled","base","iconWrap","content","error","success","warning","info","defaultIcons","resolveIcon","icon","variant","Alert","resolvedIcon","isNative","sizeMd","sizeSm","default","nativeFlex","sizeMap","sm","md","Badge","sizeDefault","sizeSmall","primary","secondary","link","inverseSecondary","danger","fullWidth","disabled","small","Button","type","onClick","ariaLabel","horizontal","vertical","alignStart","alignCenter","alignEnd","verticalAlignStart","verticalAlignCenter","verticalAlignEnd","gapXs","gapSm","gapMd","gapMap","xs","horizontalAlignMap","start","center","end","verticalAlignMap","ButtonGroup","orientation","align","gap","isVertical","alignStyle","Callout","elevated","outlined","interactive","sizeCompact","sizeFull","header","compact","full","Card","root","rootDisabled","box","boxUnchecked","boxChecked","input","Checkbox","value","checked","controlledChecked","defaultChecked","onChange","isControlled","internalChecked","setInternalChecked","useState","isChecked","target","handleChange","next","t14","opacity","t15","Symbol","for","t16","t17","t18","t19","useControllableValue","controlledValue","defaultValue","internal","setInternal","v","setValue","rootHorizontal","CheckboxGroupContext","useCheckboxGroup","ctx","Error","Root","onValueChange","itemValue","onToggle","Item","itemDisabled","groupValue","groupDisabled","includes","isDisabled","CheckboxGroup","FieldContext","useFieldContext","invalid","ColorInput","required","onBlur","ref","fieldCtx","field","effectiveName","effectiveValue","String","effectiveOnChange","effectiveOnBlur","effectiveRef","effectiveDisabled","controlId","descriptionId","errorId","trim","backdrop","backdropOpen","backdropClosing","viewport","popup","popupOpen","popupClosing","lg","title","description","body","footer","inlineWrapper","reducedMotion","DialogContext","useDialog","open","controlledOpen","defaultOpen","onOpenChange","dismissable","closeAnimationDuration","internalOpen","setInternalOpen","closing","setClosing","closingTimerRef","popupRef","isOpen","titleId","clearTimeout","requestOpen","setTimeout","requestClose","onKeyDown","stopPropagation","document","addEventListener","removeEventListener","prev","style","overflow","Trigger","Portal","handleBackdropClick","Header","Title","h2","Description","p","Body","Footer","Close","Dialog","InputGroupContext","useInputGroupContext","inGroup","mono","Input","font","placeholder","readOnly","minLength","maxLength","min","max","step","inputMode","list","pattern","autoComplete","autoFocus","ariaDescribedby","groupCtx","effectiveVariant","describedBy","extraProps","FormContext","useFormContext","rootSide","labelSide","fieldContent","necessityIcon","necessityLabel","formCtx","ControlledRoot","StaticRoot","labelPosition","invalidProp","control","useRHFFormContext","fieldState","useController","effectiveLabelPosition","effectiveNecessityIndicator","necessityIndicator","message","errorMessage","FieldLayout","labelNode","rest","Children","child","isValidElement","Label","isSide","indicator","Field","ConfirmDialog","confirmPhrase","promptLabel","cancelLabel","confirmSlot","onConfirm","confirmLabel","typed","setTyped","satisfied","handleOpenChange","wrapper","wrapperOpenSm","wrapperCloseSm","wrapperOpenMd","wrapperCloseMd","contentSm","contentMd","slideIn","slideOut","bodyPadded","DetailPanelContext","useDetailPanel","present","setPresent","panelRef","previousFocusRef","labelId","setLabelId","activeElement","focus","el","useCallback","registerTitle","unregisterTitle","wrapperOpenMap","wrapperCloseMap","Content","padded","DetailPanel","viewportRight","viewportLeft","viewportBottom","panel","panelHorizontal","panelVertical","panelLeftBorder","slideInRight","slideOutRight","slideInLeft","slideOutLeft","slideInBottom","slideOutBottom","DISMISS_THRESHOLD","VELOCITY_THRESHOLD","DISMISS_DURATION","OPPOSITE_MAX_OVERSCROLL","useSwipeDismiss","anchor","enabled","onDismiss","startX","startY","currentX","currentY","startTime","swiping","panelSize","stateRef","isHorizontal","state","dx","getMovement","movement","panelEl","Number","dataset","progress","sign","transform","closest","previousElementSibling","Math","absMovement","abs","overscroll","shadowSpread","round","boxShadow","applyTransform","resetStyles","_temp","panelEl_1","dismissTransform","transition","backdrop_1","dismissed","done","once","animateDismiss","animateSnapBack","_temp2","handlePointerDown","rect","getBoundingClientRect","state_0","clientX","clientY","Date","now","width","height","setPointerCapture","pointerId","animation","handlePointerMove","e_0","state_1","dx_0","dy","sqrt","preventDefault","movement_0","handlePointerUp","_e","state_2","movement_1","elapsed","velocity","handlePointerCancel","state_3","handleTouchMove","e_1","passive","panelEl_2","backdrop_2","cleanup","panelEl_0","backdrop_0","DrawerContext","useDrawer","swipeDismiss","requestCloseImmediate","slideInMap","right","left","bottom","slideOutMap","viewportAnchorMap","swipeEnabled","t20","Drawer","action","EmptyState","typePresets","bodySm","bodyMd","bodyLg","caption","code","overline","headingSm","headingMd","headingLg","headingXl","displaySm","displayMd","displayLg","muted","accent","defaultVariantMap","alignMap","Heading","level","color","resolvedVariant","h1","h3","h4","h5","h6","item","itemSelected","text","empty","ListContext","selectionMode","useList","selected","ItemText","Actions","Empty","List","Text","formStyles","Form","schema","defaultValues","onSubmit","validationErrors","effectTsResolver","resolver","mode","reValidateMode","methods","useForm","prevErrorKeysRef","prevKeys","nextKeys","Object","keys","clearErrors","key_0","setError","formRef","errors","firstField","setFocus","onInvalid","handleSubmit","form","FormProvider","legend","gapMs","gapLg","gapXl","ms","xl","Legend","Fieldset","addon","addonStart","addonEnd","addonClickable","addonDisabled","dynamicStyles","minWidth","val","Addon","position","positionStyle","InputGroup","LinkButton","href","rel","a","bordered","Panel","circle","circleUnchecked","circleChecked","dot","RadioGroupContext","useRadioGroup","onSelect","handleClick","RadioGroup","scrollbar","scrollbarVertical","scrollbarHorizontal","scrollbarHidden","scrollbarVisible","thumb","viewportMaxHeight","maxHeight","thumbVertical","thumbHorizontal","ScrollAreaContext","useScrollArea","useScrollAreaRoot","viewportId","viewportRef","contentRef","scrollTop","setScrollTop","scrollLeft","setScrollLeft","scrollHeight","setScrollHeight","scrollWidth","setScrollWidth","clientHeight","setClientHeight","clientWidth","setClientWidth","scrolling","setScrolling","scrollTimerRef","vp","handleScroll","vp_0","observer","ResizeObserver","observe","disconnect","vp_1","Viewport","Scrollbar","maxScroll","scrollOffset","valueNow","Thumb","draggingRef","startPosRef","startScrollRef","thumbSizePercent","trackSize","thumbPixelSize","thumbOffset","thumbStyle","delta","scrollRatio","scrollDelta","ScrollArea","inputWrapper","inputWrapperFocused","trigger","itemHighlighted","itemHidden","hidden","popupPosition","top","ComboboxContext","useCombobox","useComboboxRoot","inputValue","controlledInputValue","onInputChange","initialLabels","initial","internalInputValue","setInternalInputValue","setInputValue","setOpen","labels","setLabels","highlightedId","setHighlightedId","listboxId","rootRef","inputRef","Map","itemsRef","orderRef","close","items","order","found","get","openPopup","selectValue","v_0","label_0","registerLabel","id_0","itemValue_0","element","set","ids","sort","b","elA","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","i","registerItem","query","toLowerCase","id_1","item_0","getVisibleOrder","handleKeyDown","visibleOrder","bb137","prev_2","idx_0","indexOf","idx","prev_1","prev_0","item_1","scrollIntoView","block","lightTheme","xjvd03b","lightShadows","x13v825q","highContrastTheme","highContrastShadows","themeMap","light","portalMount","PortalMountContext","usePortalMount","ThemeProvider","theme","overrides","themeStyles","mount","setMount","localRef","focused","setFocused","Popup","coords","setCoords","window","useLayoutEffect","node","createPortal","selectedValue","isSelected","isHighlighted","isVisible","textContent","el_0","values","Combobox","SelectContext","useSelect","useSelectRoot","triggerRef","toggle","order_0","items_0","bb86","prev_3","Value","display","Select","group","groupTrigger","groupTriggerActive","chevron","chevronOpen","section","sectionLabel","itemActive","marker","markerActive","itemIcon","itemLabel","SideNavContext","useSideNav","activeValue","expandedGroups","setExpandedGroups","has","toggleGroup","group_0","next_0","expandGroup","nav","Group","groupKey","defaultExpanded","isExpanded","groupRef","querySelector","hasActiveChild","Section","SideNav","spinner","srOnly","Spinner","region","toast","iconSuccess","iconError","iconInfo","closeBtn","DEFAULT_DURATION","createToastStore","seq","opts","duration","variantIcon","variantIconStyle","ToastContext","useToast","ToastItem","entry","timer","ToastProvider","useMemo","dismiss","StatusIcon","TagGroupContext","useTagGroup","wrap","removableMd","removableSm","removeButton","removeButtonDisabled","removableSizeMap","Tag","removable","removableProp","onRemove","onRemoveProp","disabledProp","isGrouped","editable","removeTag","setFocusedIndex","removeLabel","tagContent","role","container","containerError","containerDisabled","containerStatic","liveRegion","useTagGroupCtx","onValidate","gridId","setValues","focusedIndex","setEditable","announcement","setAnnouncement","isInvalid","trimmed","addTag","value_0","getElementById","querySelectorAll","validate","commitValueRef","raw","selectionStart","handlePaste","clipboardData","getData","split","s","Boolean","handleFocus","TagGroup","rootVertical","listVertical","tab","tabVertical","tabActiveHorizontal","tabActiveVertical","tabIndicatorActive","indicatorHorizontal","indicatorVertical","indicatorOffsetH","offset","indicatorOffsetV","tabDisabled","TabsContext","useTabs","useTabsRoot","tabsRef","indicatorActive","setIndicatorActive","registerTab","listRef","setIndicator","CSS","escape","measure","offsetLeft","offsetWidth","offsetTop","offsetHeight","ro","tabs","listEl","prevKey","nextKey","targetValue","currentIdx","Tab","tabId","panelId","Tabs","Textarea","rows","textarea","PREFERENCES","ICON","system","dark","LABEL","ColorModeContext","useColorMode","canUseDom","matchMedia","isPreference","readStored","localStorage","getItem","writeStored","setItem","ColorModeProvider","defaultPreference","preference","controlled","onPreferenceChange","modes","storageKey","applyTheme","stored","setPreference","systemTheme","setSystemTheme","mq","matches","cycle","ColorModeToggle","weightNormal","weightMedium","weightSemibold","weightBold","truncate","weightMap","normal","medium","semibold","bold","weight","as","ToggleGroupContext","useToggleGroup","unpressed","pressed","grouped","Toggle","controlledPressed","defaultPressed","onPressedChange","sizeProp","groupPressed","standalonePressed","setStandalonePressed","ToggleGroup","multiple","nextPressed","TooltipContext","useTooltip","placement","delay","tooltipId","timerRef","show","hide","Tooltip","track","trackUnchecked","trackChecked","thumbChecked","Switch","onCheckedChange","setChecked","alignStretch","gapXxl","gapXxxl","xxl","xxxl","stretch","Stack","alignBaseline","justifyStart","justifyCenter","justifyEnd","justifyBetween","baseline","justifyMap","between","Inline","justify","Cluster","col1","col2","col3","col4","col5","col6","autoFit","columnsMap","Grid","columns","minColumnWidth","columnStyle","maxSm","maxMd","maxLg","padSm","padMd","padLg","headerPadding","mainPadding","maxWidthMap","paddingMap","PageShell","maxWidth","padding","mw","pad","main","useContainerQuery","options","compactBelow","spaciousAbove","setSize","rafId","cancelAnimationFrame","requestAnimationFrame","contentBoxSize","inlineSize","contentRect"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/ActionBar/ActionBarProvider.tsx","../src/components/ActionBar/styles.css.ts","../src/components/ActionBar/ActionBar.tsx","../src/components/Icon/Icon.tsx","../src/components/Alert/styles.css.ts","../src/components/Alert/Alert.tsx","../src/platform.ts","../src/components/Badge/styles.css.ts","../src/components/Badge/Badge.tsx","../src/components/Button/styles.css.ts","../src/components/Button/Button.tsx","../src/components/ButtonGroup/styles.css.ts","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Callout/styles.css.ts","../src/components/Callout/Callout.tsx","../src/components/Card/styles.css.ts","../src/components/Card/Card.tsx","../src/components/Checkbox/styles.css.ts","../src/components/Checkbox/Checkbox.tsx","../src/hooks/useControllableValue.ts","../src/components/CheckboxGroup/styles.css.ts","../src/components/CheckboxGroup/CheckboxGroup.tsx","../src/components/Field/FieldContext.ts","../src/components/ColorInput/styles.css.ts","../src/components/ColorInput/ColorInput.tsx","../src/components/Dialog/styles.css.ts","../src/components/Dialog/Dialog.tsx","../src/components/InputGroup/InputGroupContext.ts","../src/components/Input/styles.css.ts","../src/components/Input/Input.tsx","../src/components/Form/FormContext.ts","../src/components/Field/styles.css.ts","../src/components/Field/Field.tsx","../src/components/ConfirmDialog/ConfirmDialog.tsx","../src/components/DetailPanel/styles.css.ts","../src/components/DetailPanel/DetailPanel.tsx","../src/components/Drawer/styles.css.ts","../src/components/Drawer/useSwipeDismiss.ts","../src/components/Drawer/Drawer.tsx","../src/components/EmptyState/styles.css.ts","../src/components/EmptyState/EmptyState.tsx","../../tokens/src/tokens/type-presets.css.ts","../src/components/Heading/styles.css.ts","../src/components/Heading/Heading.tsx","../src/components/List/styles.css.ts","../src/components/List/List.tsx","../src/components/Form/Form.tsx","../src/components/Fieldset/styles.css.ts","../src/components/Fieldset/Fieldset.tsx","../src/components/InputGroup/styles.css.ts","../src/components/InputGroup/InputGroup.tsx","../src/components/LinkButton/styles.css.ts","../src/components/LinkButton/LinkButton.tsx","../src/components/Panel/styles.css.ts","../src/components/Panel/Panel.tsx","../src/components/RadioGroup/styles.css.ts","../src/components/RadioGroup/RadioGroup.tsx","../src/components/ScrollArea/styles.css.ts","../src/components/ScrollArea/ScrollAreaContext.ts","../src/components/ScrollArea/useScrollAreaRoot.ts","../src/components/ScrollArea/ScrollArea.tsx","../src/components/Combobox/styles.css.ts","../src/components/Combobox/ComboboxContext.ts","../src/components/Combobox/useComboboxRoot.ts","../../tokens/src/themes/light.css.ts","../../tokens/src/themes/high-contrast.css.ts","../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/Combobox/Combobox.tsx","../src/components/Select/styles.css.ts","../src/components/Select/SelectContext.ts","../src/components/Select/useSelectRoot.ts","../src/components/Select/Select.tsx","../src/components/SideNav/styles.css.ts","../src/components/SideNav/SideNavContext.ts","../src/components/SideNav/SideNav.tsx","../src/components/Spinner/styles.css.ts","../src/components/Spinner/Spinner.tsx","../src/components/Toast/styles.css.ts","../src/components/Toast/ToastProvider.tsx","../src/components/StatusIcon/styles.css.ts","../src/components/StatusIcon/StatusIcon.tsx","../src/components/TagGroup/TagGroupContext.ts","../src/components/Tag/styles.css.ts","../src/components/Tag/Tag.tsx","../src/components/TagGroup/styles.css.ts","../src/components/TagGroup/TagGroup.tsx","../src/components/Tabs/styles.css.ts","../src/components/Tabs/TabsContext.ts","../src/components/Tabs/useTabsRoot.ts","../src/components/Tabs/Tabs.tsx","../src/components/Textarea/styles.css.ts","../src/components/Textarea/Textarea.tsx","../src/components/ColorMode/styles.css.ts","../src/components/ColorMode/ColorMode.tsx","../src/components/Text/styles.css.ts","../src/components/Text/Text.tsx","../src/components/ToggleGroup/ToggleGroupContext.ts","../src/components/Toggle/styles.css.ts","../src/components/Toggle/Toggle.tsx","../src/components/ToggleGroup/styles.css.ts","../src/components/ToggleGroup/ToggleGroup.tsx","../src/components/Tooltip/styles.css.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Switch/styles.css.ts","../src/components/Switch/Switch.tsx","../src/components/Stack/styles.css.ts","../src/components/Stack/Stack.tsx","../src/components/Inline/styles.css.ts","../src/components/Inline/Inline.tsx","../src/components/Cluster/styles.css.ts","../src/components/Cluster/Cluster.tsx","../src/components/Grid/styles.css.ts","../src/components/Grid/Grid.tsx","../src/components/PageShell/styles.css.ts","../src/components/PageShell/PageShell.tsx","../src/hooks/useContainerQuery.ts"],"sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useSyncExternalStore,\n type ReactNode,\n} from 'react'\n\ninterface ActionBarEntry {\n id: string\n render: () => ReactNode\n}\n\ninterface ActionBarStore {\n subscribe: (cb: () => void) => () => void\n getSnapshot: () => readonly ActionBarEntry[]\n push: (id: string, render: () => ReactNode) => void\n update: (id: string, render: () => ReactNode) => void\n remove: (id: string) => void\n}\n\nfunction createActionBarStore(): ActionBarStore {\n let entries: ActionBarEntry[] = []\n const listeners = new Set<() => void>()\n\n const notify = () => listeners.forEach((l) => l())\n\n return {\n subscribe: (cb) => {\n listeners.add(cb)\n return () => listeners.delete(cb)\n },\n getSnapshot: () => entries,\n push: (id, render) => {\n entries = [...entries, {id, render}]\n notify()\n },\n update: (id, render) => {\n entries = entries.map((e) => (e.id === id ? {id, render} : e))\n notify()\n },\n remove: (id) => {\n entries = entries.filter((e) => e.id !== id)\n notify()\n },\n }\n}\n\nconst ActionBarContext = createContext<ActionBarStore | null>(null)\n\nexport function ActionBarProvider({children}: {children: ReactNode}) {\n const storeRef = useRef<ActionBarStore>(null)\n if (storeRef.current === null) {\n storeRef.current = createActionBarStore()\n }\n const store = storeRef.current\n\n const entries = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot)\n const topEntry = entries.length > 0 ? entries[entries.length - 1] : null\n\n return (\n <ActionBarContext.Provider value={store}>\n {children}\n {topEntry?.render()}\n </ActionBarContext.Provider>\n )\n}\n\nexport function useActionBarStack() {\n const store = useContext(ActionBarContext)\n const id = useId()\n\n const register = useCallback(\n (render: () => ReactNode) => {\n if (!store) return\n const entries = store.getSnapshot()\n if (entries.some((e) => e.id === id)) {\n store.update(id, render)\n } else {\n store.push(id, render)\n }\n },\n [store, id],\n )\n\n const unregister = useCallback(() => {\n store?.remove(id)\n }, [store, id])\n\n const isTop = useMemo(() => {\n if (!store) return false\n const entries = store.getSnapshot()\n return entries.length > 0 && entries[entries.length - 1].id === id\n }, [store, id])\n\n return {id, register, unregister, managed: store !== null, isTop}\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n overlay: {\n position: 'fixed',\n bottom: spacing.lg,\n left: '50%',\n transform: 'translateX(-50%)',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.md,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n boxShadow: shadows.lg,\n zIndex: 50,\n maxWidth: 'calc(100vw - 48px)',\n },\n overlayOffset: (bottom: number) => ({\n bottom,\n }),\n overlayEmphasized: {\n backgroundColor: colors.accent,\n borderColor: colors.accent,\n },\n selectedCount: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n fontFamily: typography.fontFamily,\n color: colors.text,\n whiteSpace: 'nowrap',\n },\n selectedCountEmphasized: {\n color: colors.accentContrast,\n },\n actions: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.sm,\n },\n closeButton: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 28,\n height: 28,\n padding: 0,\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderRadius: radii.sm,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n cursor: 'pointer',\n transitionProperty: 'color, background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 2,\n },\n },\n closeButtonEmphasized: {\n color: {\n default: colors.accentContrast,\n ':hover': colors.accentContrast,\n },\n opacity: {\n default: 0.7,\n ':hover': 1,\n },\n },\n separator: {\n width: 1,\n alignSelf: 'stretch',\n backgroundColor: colors.border,\n marginTop: spacing.xs,\n marginBottom: spacing.xs,\n },\n separatorEmphasized: {\n backgroundColor: colors.accentContrast,\n opacity: 0.3,\n },\n})\n","import {useEffect, useCallback, type ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useActionBarStack} from './ActionBarProvider'\nimport {styles} from './styles.css'\n\nexport interface ActionBarProps {\n /** Number of selected items, or 'all'. Hidden when 0. */\n selectedItemCount: number | 'all'\n /** Label for the selection count. Receives the count string. */\n selectedLabel?: (count: string) => string\n /** Whether to use emphasized (accent) styling. */\n isEmphasized?: boolean\n /** Called when the clear/close button is pressed. */\n onClearSelection: () => void\n /** Whether the bar can be dismissed. When false, the close button is hidden. @default true */\n dismissible?: boolean\n /**\n * Distance in px between the bar and the bottom of the viewport, for hosts\n * with their own bottom chrome (zoom controls, players) the bar must clear.\n * Defaults to the spacing.lg token.\n */\n bottomOffset?: number\n /** Action buttons to display. */\n children: ReactNode\n}\n\nfunction ActionBarContent({\n selectedItemCount,\n selectedLabel,\n isEmphasized = false,\n onClearSelection,\n dismissible = true,\n bottomOffset,\n children,\n}: ActionBarProps) {\n const countStr = selectedItemCount === 'all' ? 'All' : `${selectedItemCount}`\n const label = selectedLabel ? selectedLabel(countStr) : `${countStr} selected`\n\n return (\n <html.div\n role=\"toolbar\"\n aria-label={label}\n style={[\n styles.overlay,\n bottomOffset != null && styles.overlayOffset(bottomOffset),\n isEmphasized && styles.overlayEmphasized,\n ]}\n >\n <html.span style={[styles.selectedCount, isEmphasized && styles.selectedCountEmphasized]}>\n {label}\n </html.span>\n <html.div style={[styles.separator, isEmphasized && styles.separatorEmphasized]} />\n <html.div style={styles.actions}>{children}</html.div>\n {dismissible && (\n <html.button\n type=\"button\"\n aria-label=\"Clear selection\"\n onClick={onClearSelection}\n style={[styles.closeButton, isEmphasized && styles.closeButtonEmphasized]}\n >\n <svg width={10} height={10} viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M1 1l8 8M9 1l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )}\n </html.div>\n )\n}\n\nfunction ActionBarInner(props: ActionBarProps) {\n const {selectedItemCount} = props\n const stack = useActionBarStack()\n const isActive = selectedItemCount !== 0\n\n const renderBar = useCallback(() => <ActionBarContent {...props} />, [props])\n\n useEffect(() => {\n if (!stack.managed) return\n if (isActive) {\n stack.register(renderBar)\n } else {\n stack.unregister()\n }\n return () => stack.unregister()\n }, [stack, isActive, renderBar])\n\n // If no provider, fall back to standalone rendering\n if (!stack.managed) {\n if (!isActive) return null\n return <ActionBarContent {...props} />\n }\n\n // Managed by provider — rendering happens there\n return null\n}\n\nexport const ActionBar = ActionBarInner\n","import type {ReactNode} from 'react'\n\nexport type IconName =\n | 'x-circle'\n | 'check-circle'\n | 'check-done'\n | 'clock'\n | 'forbidden'\n | 'info-circle'\n | 'alert-triangle'\n | 'shield'\n | 'lock'\n | 'key'\n // Navigation / wayfinding glyphs\n | 'map'\n | 'layers'\n | 'repeat'\n | 'database'\n | 'shield-check'\n | 'route'\n | 'git-branch'\n | 'menu'\n | 'pin'\n // Infrastructure / inventory glyphs\n | 'server'\n | 'hard-drive'\n | 'box'\n | 'image'\n | 'tag'\n | 'pie-chart'\n // People / access / admin glyphs\n | 'users'\n | 'user-plus'\n | 'mail'\n | 'file-text'\n | 'plug'\n // Color-mode glyphs\n | 'sun'\n | 'moon'\n | 'monitor'\n | 'contrast'\n // Filled variants (solid shape with cutout symbol)\n | 'info-circle-filled'\n | 'alert-triangle-filled'\n | 'check-circle-filled'\n | 'x-circle-filled'\n | 'shield-filled'\n | 'lock-filled'\n\n/** Stroke-based icons (Feather/Lucide style) */\nconst strokeIcons: Partial<Record<IconName, ReactNode>> = {\n 'x-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </>\n ),\n 'check-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"16 10 11 15 8 12\" />\n </>\n ),\n 'check-done': (\n <>\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22 4 12 14.01 9 11.01\" />\n </>\n ),\n clock: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </>\n ),\n forbidden: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\" />\n </>\n ),\n 'info-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </>\n ),\n 'alert-triangle': (\n <>\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </>\n ),\n shield: <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />,\n lock: (\n <>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </>\n ),\n key: (\n <>\n <path d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.78 7.78 5.5 5.5 0 0 1 7.78-7.78zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\" />\n </>\n ),\n // ---- navigation / wayfinding ----\n map: (\n <>\n <polygon points=\"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"18\" />\n <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"22\" />\n </>\n ),\n layers: (\n <>\n <polygon points=\"12 2 2 7 12 12 22 7 12 2\" />\n <polyline points=\"2 17 12 22 22 17\" />\n <polyline points=\"2 12 12 17 22 12\" />\n </>\n ),\n // Two crossing arrows — exchange / interface flows.\n repeat: (\n <>\n <polyline points=\"17 1 21 5 17 9\" />\n <path d=\"M3 11V9a4 4 0 0 1 4-4h14\" />\n <polyline points=\"7 23 3 19 7 15\" />\n <path d=\"M21 13v2a4 4 0 0 1-4 4H3\" />\n </>\n ),\n database: (\n <>\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\" />\n <path d=\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\" />\n </>\n ),\n 'shield-check': (\n <>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <polyline points=\"9 12 11 14 15 10\" />\n </>\n ),\n // Milestone path — roadmap / itinerary.\n route: (\n <>\n <circle cx=\"6\" cy=\"19\" r=\"3\" />\n <path d=\"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15\" />\n <circle cx=\"18\" cy=\"5\" r=\"3\" />\n </>\n ),\n 'git-branch': (\n <>\n <line x1=\"6\" y1=\"3\" x2=\"6\" y2=\"15\" />\n <circle cx=\"18\" cy=\"6\" r=\"3\" />\n <circle cx=\"6\" cy=\"18\" r=\"3\" />\n <path d=\"M18 9a9 9 0 0 1-9 9\" />\n </>\n ),\n menu: (\n <>\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </>\n ),\n // ---- infrastructure / inventory ----\n // Two stacked rack units — hosts, nodes, machines.\n server: (\n <>\n <rect x=\"2\" y=\"2\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\" />\n <rect x=\"2\" y=\"14\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\" />\n <line x1=\"6\" y1=\"6\" x2=\"6.01\" y2=\"6\" />\n <line x1=\"6\" y1=\"18\" x2=\"6.01\" y2=\"18\" />\n </>\n ),\n // Disk enclosure — volumes, persistent storage.\n 'hard-drive': (\n <>\n <line x1=\"22\" y1=\"12\" x2=\"2\" y2=\"12\" />\n <path d=\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\" />\n <line x1=\"6\" y1=\"16\" x2=\"6.01\" y2=\"16\" />\n <line x1=\"10\" y1=\"16\" x2=\"10.01\" y2=\"16\" />\n </>\n ),\n // Isometric crate — a deployable unit of work.\n box: (\n <>\n <path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\" />\n <polyline points=\"3.27 6.96 12 12.01 20.73 6.96\" />\n <line x1=\"12\" y1=\"22.08\" x2=\"12\" y2=\"12\" />\n </>\n ),\n // Picture frame — container images, artefacts.\n image: (\n <>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\" />\n <polyline points=\"21 15 16 10 5 21\" />\n </>\n ),\n // Luggage tag — labels, annotations, metadata.\n tag: (\n <>\n <path d=\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\" />\n <line x1=\"7\" y1=\"7\" x2=\"7.01\" y2=\"7\" />\n </>\n ),\n // Share of a whole — quotas, budgets, utilisation.\n 'pie-chart': (\n <>\n <path d=\"M21.21 15.89A10 10 0 1 1 8 2.83\" />\n <path d=\"M22 12A10 10 0 0 0 12 2v10z\" />\n </>\n ),\n // ---- people / access / admin ----\n users: (\n <>\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\" />\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" />\n </>\n ),\n 'user-plus': (\n <>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\n <circle cx=\"8.5\" cy=\"7\" r=\"4\" />\n <line x1=\"20\" y1=\"8\" x2=\"20\" y2=\"14\" />\n <line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\" />\n </>\n ),\n mail: (\n <>\n <path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\" />\n <polyline points=\"22,6 12,13 2,6\" />\n </>\n ),\n 'file-text': (\n <>\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\n <polyline points=\"10 9 9 9 8 9\" />\n </>\n ),\n plug: (\n <>\n <path d=\"M12 22v-5\" />\n <path d=\"M9 8V2\" />\n <path d=\"M15 8V2\" />\n <path d=\"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z\" />\n </>\n ),\n pin: (\n <>\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"22\" />\n <path d=\"M9 10.76V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v6.76a2 2 0 0 0 .55 1.38l1.68 1.78A1 1 0 0 1 16.5 16h-9a1 1 0 0 1-.73-1.68l1.68-1.78A2 2 0 0 0 9 10.76z\" />\n </>\n ),\n // ---- color mode ----\n sun: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"5\" />\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" />\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" />\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" />\n <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" />\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" />\n <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" />\n <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\n </>\n ),\n moon: <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />,\n monitor: (\n <>\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\" />\n <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\" />\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\" />\n </>\n ),\n // Circle, half solid — high-contrast / mode indicator.\n contrast: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 2a10 10 0 0 1 0 20z\" fill=\"currentColor\" stroke=\"none\" />\n </>\n ),\n}\n\n/**\n * Filled icons — solid shape with evenodd cutout for the inner symbol.\n * The cutout reveals the background color, so they work on any theme.\n * Uses fill=\"currentColor\" only, no stroke.\n */\nconst filledIcons: Partial<Record<IconName, ReactNode>> = {\n // Filled circle with \"i\" cutout (dot + line)\n 'info-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-.75 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0zM11 11a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0v-5z\"\n />\n ),\n // Filled triangle with \"!\" cutout\n 'alert-triangle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM11 10a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0v-3zm.25 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0z\"\n />\n ),\n // Filled circle with checkmark cutout\n 'check-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm4.707 8.707a1 1 0 0 0-1.414-1.414L11 13.586l-2.293-2.293a1 1 0 0 0-1.414 1.414l3 3a1 1 0 0 0 1.414 0l5-5z\"\n />\n ),\n // Filled circle with X cutout\n 'x-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zM9.707 8.293a1 1 0 0 0-1.414 1.414L10.586 12l-2.293 2.293a1 1 0 1 0 1.414 1.414L12 13.414l2.293 2.293a1 1 0 0 0 1.414-1.414L13.414 12l2.293-2.293a1 1 0 0 0-1.414-1.414L12 10.586 9.707 8.293z\"\n />\n ),\n // Filled shield with checkmark cutout\n 'shield-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 1L3 5v7c0 6.5 8.5 10.5 9 10.73.5-.23 9-4.23 9-10.73V5l-9-4zm3.707 8.707a1 1 0 0 0-1.414-1.414L11 11.586l-1.293-1.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4z\"\n />\n ),\n // Filled lock body with stroke shackle\n 'lock-filled': (\n <>\n <path\n d=\"M7 11V7a5 5 0 0 1 10 0v4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n </>\n ),\n}\n\ninterface IconProps {\n name: IconName\n size?: number\n}\n\nexport function Icon({name, size = 24}: IconProps) {\n const filled = filledIcons[name]\n if (filled) {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" width={size} height={size}>\n {filled}\n </svg>\n )\n }\n\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width={size}\n height={size}\n >\n {strokeIcons[name]}\n </svg>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n },\n iconWrap: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: 1,\n },\n content: {\n flex: 1,\n minWidth: 0,\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type AlertVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<AlertVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface AlertProps {\n variant?: AlertVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n children: ReactNode\n}\n\nfunction resolveIcon(icon: AlertProps['icon'], variant: AlertVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={18} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={18} />\n return icon\n}\n\nexport function Alert({variant = 'info', icon, children}: AlertProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div role=\"alert\" style={[styles.base, styles[variant]]}>\n {resolvedIcon ? (\n <>\n <html.div style={styles.iconWrap}>{resolvedIcon}</html.div>\n <html.div style={styles.content}>{children}</html.div>\n </>\n ) : (\n children\n )}\n </html.div>\n )\n}\n","/**\n * Platform flag resolved by the bundler's platform extensions: web bundlers\n * (Vite/Rollup) read THIS file (`isNative = false`); Metro reads\n * `platform.native.ts` (`isNative = true`) on React Native / Expo.\n *\n * It lets shared components layer a native-only style override without\n * importing `react-native` on web (the DS web build has no react-native).\n * Typed `boolean` (not the `false` literal) so `isNative && styles.x` stays a\n * `false | Style` union in style arrays rather than narrowing to `false`.\n */\nexport const isNative: boolean = false\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightMedium,\n lineHeight: 1,\n borderRadius: radii.full,\n whiteSpace: 'nowrap',\n },\n sizeMd: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n sizeSm: {\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n fontSize: '0.625rem',\n },\n default: {\n backgroundColor: colors.bgCardHover,\n color: colors.textMuted,\n },\n success: {\n backgroundColor: colors.successBg,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n color: colors.warningText,\n },\n error: {\n backgroundColor: colors.errorBg,\n color: colors.errorText,\n },\n info: {\n backgroundColor: colors.infoBg,\n color: colors.infoText,\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {styles} from './styles.css'\n\nexport type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type BadgeSize = 'sm' | 'md'\n\ninterface BadgeProps {\n variant?: BadgeVariant\n size?: BadgeSize\n children: ReactNode\n}\n\nconst sizeMap = {\n sm: styles.sizeSm,\n md: styles.sizeMd,\n} as const\n\nexport function Badge({variant = 'default', size = 'md', children}: BadgeProps) {\n return (\n <html.span style={[styles.base, isNative && styles.nativeFlex, sizeMap[size], styles[variant]]}>\n {children}\n </html.span>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, color, opacity, transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n textDecoration: 'none',\n whiteSpace: 'nowrap',\n // Tactile press feedback. The scale is suppressed under reduced motion (and\n // duration.fast collapses to 0ms there too), so it's inert for those users.\n transform: {\n default: 'scale(1)',\n ':active': {\n default: 'scale(0.97)',\n '@media (prefers-reduced-motion: reduce)': 'scale(1)',\n },\n },\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 2,\n },\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n ':active': colors.accentHover,\n },\n borderColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderColor: colors.border,\n color: colors.textMuted,\n },\n link: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n color: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n textDecoration: {\n default: 'none',\n ':hover': 'underline',\n },\n paddingLeft: 0,\n paddingRight: 0,\n },\n inverseSecondary: {\n backgroundColor: {\n default: 'rgba(0, 0, 0, 0.10)',\n ':hover': 'rgba(0, 0, 0, 0.18)',\n },\n borderColor: {\n default: 'rgba(0, 0, 0, 0.55)',\n ':hover': 'rgba(0, 0, 0, 0.70)',\n },\n color: colors.accentContrast,\n },\n danger: {\n backgroundColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n ':active': colors.errorHover,\n },\n borderColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n },\n color: colors.errorContrast,\n },\n fullWidth: {\n width: '100%',\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {styles} from './styles.css'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'inverseSecondary' | 'link' | 'danger'\nexport type ButtonSize = 'default' | 'small'\n\ninterface ButtonProps {\n variant?: ButtonVariant\n size?: ButtonSize\n fullWidth?: boolean\n disabled?: boolean\n type?: 'button' | 'submit'\n onClick?: () => void\n /** Accessible name override — e.g. for buttons whose visible text isn't unique. */\n 'aria-label'?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function Button({\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n disabled = false,\n type = 'button',\n onClick,\n 'aria-label': ariaLabel,\n children,\n}: ButtonProps) {\n return (\n <html.button\n type={type}\n disabled={disabled}\n onClick={onClick}\n aria-label={ariaLabel}\n style={[\n styles.base,\n isNative && styles.nativeFlex,\n sizeMap[size],\n styles[variant],\n fullWidth && styles.fullWidth,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n },\n horizontal: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n vertical: {\n flexDirection: 'column',\n },\n alignStart: {justifyContent: 'flex-start'},\n alignCenter: {justifyContent: 'center'},\n alignEnd: {justifyContent: 'flex-end'},\n verticalAlignStart: {alignItems: 'flex-start'},\n verticalAlignCenter: {alignItems: 'center'},\n verticalAlignEnd: {alignItems: 'flex-end'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMd: {gap: spacing.md},\n disabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport interface ButtonGroupProps {\n children: ReactNode\n /** Layout direction. Default: 'horizontal' */\n orientation?: 'horizontal' | 'vertical'\n /** Alignment within container. Default: 'start' */\n align?: 'start' | 'end' | 'center'\n /** Disable all buttons in group */\n disabled?: boolean\n /** Gap between buttons. Default: 'sm' */\n gap?: 'xs' | 'sm' | 'md'\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n md: styles.gapMd,\n} as const\n\nconst horizontalAlignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nconst verticalAlignMap = {\n start: styles.verticalAlignStart,\n center: styles.verticalAlignCenter,\n end: styles.verticalAlignEnd,\n} as const\n\nexport function ButtonGroup({\n children,\n orientation = 'horizontal',\n align = 'start',\n disabled = false,\n gap = 'sm',\n}: ButtonGroupProps) {\n const isVertical = orientation === 'vertical'\n const alignStyle = isVertical ? verticalAlignMap[align] : horizontalAlignMap[align]\n\n return (\n <html.div\n role=\"group\"\n style={[\n styles.base,\n isVertical ? styles.vertical : styles.horizontal,\n gapMap[gap],\n alignStyle,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n },\n // Vertically centres the icon with the message — the right default for the\n // short, single/two-line messages callouts usually carry.\n alignCenter: {\n alignItems: 'center',\n },\n // Aligns the icon to the first line — for long, multi-paragraph messages.\n alignStart: {\n alignItems: 'flex-start',\n },\n icon: {\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n content: {\n flexGrow: 1,\n minWidth: 0,\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type CalloutVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<CalloutVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface CalloutProps {\n variant?: CalloutVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n /**\n * Vertical alignment of the icon against the message. `center` (default)\n * suits short single/two-line messages; `start` aligns the icon to the first\n * line for long multi-paragraph content.\n */\n align?: 'center' | 'start'\n children: ReactNode\n}\n\nfunction resolveIcon(icon: CalloutProps['icon'], variant: CalloutVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={36} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={36} />\n return icon\n}\n\nexport function Callout({variant = 'info', icon, align = 'center', children}: CalloutProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div\n role=\"note\"\n style={[\n styles.base,\n styles[variant],\n align === 'center' ? styles.alignCenter : styles.alignStart,\n ]}\n >\n {resolvedIcon && <html.span style={styles.icon}>{resolvedIcon}</html.span>}\n <html.div style={styles.content}>{children}</html.div>\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n },\n // Variants\n elevated: {\n borderRadius: radii.lg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n },\n outlined: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n filled: {\n borderRadius: radii.md,\n },\n interactive: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n backgroundColor: {\n default: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n // Lift on hover; suppressed under reduced motion so there's no positional\n // shift (the token duration also collapses to 0ms there).\n transform: {\n default: 'translateY(0)',\n ':hover': {\n default: 'translateY(-2px)',\n '@media (prefers-reduced-motion: reduce)': 'translateY(0)',\n },\n },\n },\n // Sizes (padding)\n sizeDefault: {\n padding: spacing.lg,\n },\n sizeCompact: {\n padding: spacing.md,\n },\n sizeFull: {\n padding: spacing.xl,\n },\n // Header\n header: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n marginBottom: spacing.md,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type CardVariant = 'elevated' | 'outlined' | 'filled' | 'interactive'\nexport type CardSize = 'default' | 'compact' | 'full'\n\ninterface CardProps {\n variant?: CardVariant\n size?: CardSize\n header?: string\n onClick?: () => void\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n compact: styles.sizeCompact,\n full: styles.sizeFull,\n} as const\n\nexport function Card({\n variant = 'outlined',\n size = 'default',\n header,\n onClick,\n children,\n}: CardProps) {\n return (\n <html.div onClick={onClick} style={[styles.base, styles[variant], sizeMap[size]]}>\n {header && <html.div style={styles.header}>{header}</html.div>}\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n rootDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n box: {\n width: 18,\n height: 18,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.xs,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n transitionProperty: 'background-color, border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n boxUnchecked: {\n backgroundColor: colors.bg,\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n boxChecked: {\n backgroundColor: colors.accent,\n borderColor: colors.accent,\n },\n // Native-only checkmark: a small box showing just its right + bottom border,\n // rotated 45° into a tick. Pure CSS (RSD translates the transform string to\n // an RN transform), so no SVG / react-native-svg weight reaches web.\n checkmark: {\n width: 5,\n height: 9,\n borderRightWidth: 2,\n borderRightStyle: 'solid',\n borderRightColor: colors.accentContrast,\n borderBottomWidth: 2,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.accentContrast,\n transform: 'rotate(45deg)',\n marginTop: -2,\n },\n checkmarkVisible: {\n opacity: 1,\n },\n checkmarkHidden: {\n opacity: 0,\n },\n // Native label text — RN <Text> doesn't inherit color/size from the button\n // ancestor the way web inherits from <label>, so set it explicitly.\n labelText: {\n fontSize: typography.fontSizeSm,\n color: colors.text,\n },\n // Strip the default button chrome RSD gives <button> on native (border/bg/\n // padding mimic the browser default) so the row matches the web checkbox.\n nativeButton: {\n borderWidth: 0,\n backgroundColor: 'transparent',\n padding: 0,\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` (on both .root and .box); web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import {type ReactNode, useState, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {styles} from './styles.css'\n\ninterface CheckboxProps {\n name?: string\n value?: string\n checked?: boolean\n defaultChecked?: boolean\n disabled?: boolean\n /** Accessible label when no visible label (children) is provided. */\n 'aria-label'?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n children?: ReactNode\n}\n\nexport function Checkbox({\n name,\n value,\n checked: controlledChecked,\n defaultChecked = false,\n disabled = false,\n 'aria-label': ariaLabel,\n onChange,\n children,\n}: CheckboxProps) {\n const isControlled = controlledChecked !== undefined\n const [internalChecked, setInternalChecked] = useState(defaultChecked)\n const isChecked = isControlled ? controlledChecked : internalChecked\n\n // Web: the real <input type=checkbox> drives toggling, a11y and form submit.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(e.target.checked)\n }\n onChange?.(e)\n },\n [isControlled, onChange],\n )\n\n // Native: RSD only makes <button> pressable and has no <input type=checkbox>,\n // so the whole row is a button and we synthesize the change payload that\n // consumers read (e.target.checked).\n const handlePress = useCallback(() => {\n if (disabled) return\n const next = !isChecked\n if (!isControlled) {\n setInternalChecked(next)\n }\n onChange?.({\n target: {checked: next, name, value},\n } as unknown as React.ChangeEvent<HTMLInputElement>)\n }, [disabled, isChecked, isControlled, onChange, name, value])\n\n if (isNative) {\n return (\n <html.button\n type=\"button\"\n onClick={handlePress}\n disabled={disabled}\n role=\"checkbox\"\n aria-checked={isChecked}\n aria-label={!children ? ariaLabel : undefined}\n style={[\n styles.root,\n styles.nativeFlex,\n styles.nativeButton,\n disabled && styles.rootDisabled,\n ]}\n >\n <html.div\n style={[\n styles.box,\n styles.nativeFlex,\n isChecked ? styles.boxChecked : styles.boxUnchecked,\n ]}\n >\n {/* CSS-border checkmark (rotated right+bottom borders) — no SVG, no\n react-native-svg dep, so nothing is added to the web bundle. */}\n <html.div\n style={[styles.checkmark, isChecked ? styles.checkmarkVisible : styles.checkmarkHidden]}\n />\n </html.div>\n {children && <html.span style={styles.labelText}>{children}</html.span>}\n </html.button>\n )\n }\n\n return (\n <html.label style={[styles.root, disabled && styles.rootDisabled]}>\n <html.input\n type=\"checkbox\"\n name={name}\n value={value}\n checked={isControlled ? controlledChecked : undefined}\n defaultChecked={!isControlled ? defaultChecked : undefined}\n disabled={disabled}\n aria-label={!children ? ariaLabel : undefined}\n onChange={handleChange}\n style={styles.input}\n />\n <html.span\n style={[styles.box, isChecked ? styles.boxChecked : styles.boxUnchecked]}\n aria-hidden\n >\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n style={{opacity: isChecked ? 1 : 0}}\n >\n <polyline\n points=\"2.5 6 5 8.5 9.5 3.5\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {useState, useCallback} from 'react'\n\nexport function useControllableValue<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void,\n) {\n const [internal, setInternal] = useState(defaultValue)\n const value = controlledValue !== undefined ? controlledValue : internal\n const setValue = useCallback(\n (v: T) => {\n if (controlledValue === undefined) setInternal(v)\n onChange?.(v)\n },\n [controlledValue, onChange],\n )\n return [value, setValue] as const\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n rootHorizontal: {\n flexDirection: 'row',\n },\n})\n","import {type ReactNode, createContext, useContext, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {Checkbox} from '../Checkbox/Checkbox'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ninterface CheckboxGroupContextValue {\n value: string[]\n onToggle: (itemValue: string, checked: boolean) => void\n disabled: boolean\n}\n\nconst CheckboxGroupContext = createContext<CheckboxGroupContextValue | null>(null)\n\nfunction useCheckboxGroup() {\n const ctx = useContext(CheckboxGroupContext)\n if (!ctx) {\n throw new Error('CheckboxGroup.Item must be used within CheckboxGroup.Root')\n }\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n value?: string[]\n defaultValue?: string[]\n onValueChange?: (value: string[]) => void\n orientation?: 'horizontal' | 'vertical'\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Root({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n orientation = 'vertical',\n disabled = false,\n children,\n}: RootProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const onToggle = useCallback(\n (itemValue: string, checked: boolean) => {\n if (disabled) return\n const next = checked ? [...value, itemValue] : value.filter((v) => v !== itemValue)\n setValue(next)\n },\n [disabled, value, setValue],\n )\n\n return (\n <CheckboxGroupContext.Provider value={{value, onToggle, disabled}}>\n <html.div\n role=\"group\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'horizontal' && styles.rootHorizontal]}\n >\n {children}\n </html.div>\n </CheckboxGroupContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Item({value, disabled: itemDisabled = false, children}: ItemProps) {\n const {value: groupValue, onToggle, disabled: groupDisabled} = useCheckboxGroup()\n const isChecked = groupValue.includes(value)\n const isDisabled = groupDisabled || itemDisabled\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onToggle(value, e.target.checked)\n },\n [value, onToggle],\n )\n\n return (\n <Checkbox value={value} checked={isChecked} disabled={isDisabled} onChange={handleChange}>\n {children}\n </Checkbox>\n )\n}\n\nexport const CheckboxGroup = {\n Root,\n Item,\n}\n","import {createContext, useContext} from 'react'\nimport type {LabelPosition, NecessityIndicator} from '../Form/FormContext'\n\ninterface FieldContextValue {\n controlId: string\n descriptionId: string\n errorId: string\n invalid: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n necessityIndicator?: NecessityIndicator\n field?: {\n value: unknown\n onChange: (...event: unknown[]) => void\n onBlur: () => void\n ref: React.RefCallback<unknown>\n name: string\n }\n errorMessage?: string\n}\n\nexport type {FieldContextValue}\n\nexport const FieldContext = createContext<FieldContextValue | null>(null)\n\nexport function useFieldContext() {\n return useContext(FieldContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n width: 44,\n height: 34,\n padding: 2,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.sm,\n cursor: 'pointer',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: 1,\n },\n invalid: {\n borderColor: colors.error,\n },\n disabled: {\n cursor: 'not-allowed',\n opacity: 0.5,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {styles} from './styles.css'\n\ninterface ColorInputProps {\n /** Hex color, controlled (e.g. \"#cfc8ba\"). */\n value?: string\n defaultValue?: string\n name?: string\n /** Explicit id — overrides the Field-context controlId when set. */\n id?: string\n disabled?: boolean\n required?: boolean\n /** Accessible name when there is no associated <Field.Label>. */\n 'aria-label'?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLInputElement>\n}\n\n/**\n * A styled native `<input type=\"color\">` swatch. Mirrors <Input>'s native\n * surface (value/defaultValue/name/onChange/ref/disabled/required) and adopts\n * the parent <Field.Root> context (controlId for label association, value/\n * onChange when bound to a Form, invalid border, disabled) — so it drops into a\n * <Field> exactly like <Input>. The text <Input> can't render type=color, hence\n * a dedicated leaf.\n */\nexport function ColorInput({\n value,\n defaultValue,\n name,\n id,\n disabled,\n required,\n 'aria-label': ariaLabel,\n onChange,\n onBlur,\n ref,\n}: ColorInputProps) {\n const ctx = useFieldContext()\n const fieldCtx = ctx?.field\n\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveDisabled = disabled ?? ctx?.disabled\n\n return (\n <html.input\n type=\"color\"\n id={id ?? ctx?.controlId}\n name={effectiveName}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={effectiveDisabled}\n required={required}\n aria-label={ariaLabel}\n aria-invalid={ctx?.invalid || undefined}\n aria-describedby={\n ctx\n ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() || undefined\n : undefined\n }\n onChange={effectiveOnChange as React.ComponentProps<typeof html.input>['onChange']}\n onBlur={effectiveOnBlur as React.ComponentProps<typeof html.input>['onBlur']}\n ref={effectiveRef as React.Ref<HTMLInputElement>}\n style={[styles.base, ctx?.invalid && styles.invalid, effectiveDisabled && styles.disabled]}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n // --- Backdrop ---\n backdrop: {\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n zIndex: 1000,\n },\n backdropOpen: {\n opacity: 1,\n animationName: css.keyframes({\n from: {opacity: 0},\n to: {opacity: 1},\n }),\n animationDuration: '180ms',\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n backdropClosing: {\n opacity: 0,\n animationName: css.keyframes({\n from: {opacity: 1},\n to: {opacity: 0},\n }),\n animationDuration: '140ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Viewport (centering container) ---\n viewport: {\n position: 'fixed',\n inset: 0,\n zIndex: 1001,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: spacing.lg,\n // Allow clicking backdrop through viewport when clicking outside popup\n pointerEvents: 'none',\n },\n\n // --- Popup ---\n popup: {\n position: 'relative',\n backgroundColor: colors.bgCard,\n borderRadius: radii.lg,\n boxShadow: shadows.lg,\n width: '100%',\n maxHeight: '85vh',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n pointerEvents: 'auto',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n popupOpen: {\n opacity: 1,\n animationName: css.keyframes({\n from: {\n opacity: 0,\n transform: 'scale(0.97) translateY(8px)',\n },\n to: {\n opacity: 1,\n transform: 'scale(1) translateY(0)',\n },\n }),\n animationDuration: '180ms',\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n popupClosing: {\n opacity: 0,\n animationName: css.keyframes({\n from: {\n opacity: 1,\n transform: 'scale(1) translateY(0)',\n },\n to: {\n opacity: 0,\n transform: 'scale(0.97) translateY(8px)',\n },\n }),\n animationDuration: '140ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Sizes ---\n sm: {maxWidth: 400},\n md: {maxWidth: 520},\n lg: {maxWidth: 680},\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n gap: spacing.md,\n },\n\n // --- Title ---\n title: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n },\n\n // --- Description ---\n description: {\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n },\n\n // --- Body ---\n body: {\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n overflowY: 'auto',\n flex: 1,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: radii.sm,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n\n // --- Inline wrapper (for Trigger / Close children) ---\n inlineWrapper: {\n display: 'inline-flex',\n },\n\n // --- Reduced motion ---\n reducedMotion: {\n animationDuration: '1ms',\n },\n})\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type DialogSize = 'sm' | 'md' | 'lg'\n\n// --- Context ---\n\ninterface DialogContextValue {\n open: boolean\n closing: boolean\n dismissable: boolean\n requestOpen: () => void\n requestClose: () => void\n titleId: string\n descriptionId: string\n popupRef: RefObject<HTMLDivElement | null>\n}\n\nconst DialogContext = createContext<DialogContextValue | null>(null)\n\nfunction useDialog() {\n const ctx = useContext(DialogContext)\n if (!ctx) throw new Error('Dialog compound components must be used within Dialog.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when dialog open state changes */\n onOpenChange?: (open: boolean) => void\n /** Whether clicking backdrop closes the dialog. Default: true */\n dismissable?: boolean\n /** Duration of the close animation in ms. Default: 140 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n dismissable = true,\n closeAnimationDuration = 140,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const popupRef = useRef<HTMLDivElement>(null)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const titleId = useId()\n const descriptionId = useId()\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n closingTimerRef.current = null\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, closeAnimationDuration)\n }, [isControlled, onOpenChange, closeAnimationDuration])\n\n // If controlled open goes false externally, trigger close animation\n useEffect(() => {\n if (isControlled && !controlledOpen && !closing) {\n // Already closed, nothing to animate\n }\n }, [isControlled, controlledOpen, closing])\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n // Handle Escape key\n useEffect(() => {\n if (!isOpen && !closing) return\n if (!dismissable) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [isOpen, closing, dismissable, requestClose])\n\n // Lock body scroll when open\n useEffect(() => {\n if (isOpen || closing) {\n const prev = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = prev\n }\n }\n }, [isOpen, closing])\n\n return (\n <DialogContext.Provider\n value={{\n open: isOpen || closing,\n closing,\n dismissable,\n requestOpen,\n requestClose,\n titleId,\n descriptionId,\n popupRef,\n }}\n >\n {children}\n </DialogContext.Provider>\n )\n}\n\n// --- Trigger ---\n\ninterface TriggerProps {\n children: ReactNode\n}\n\nfunction Trigger({children}: TriggerProps) {\n const {requestOpen} = useDialog()\n\n return (\n <html.div onClick={requestOpen} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n}\n\n// --- Portal (renders backdrop + viewport + popup) ---\n\ninterface PortalProps {\n children: ReactNode\n size?: DialogSize\n}\n\nfunction Portal({children, size = 'md'}: PortalProps) {\n const {open, closing, dismissable, requestClose, titleId, descriptionId, popupRef} = useDialog()\n\n const handleBackdropClick = useCallback(() => {\n if (dismissable) {\n requestClose()\n }\n }, [dismissable, requestClose])\n\n if (!open) return null\n\n return (\n <>\n {/* Backdrop — click to dismiss */}\n <html.div\n style={[\n styles.backdrop,\n closing && styles.backdropClosing,\n !closing && styles.backdropOpen,\n ]}\n aria-hidden\n onClick={handleBackdropClick}\n />\n\n {/* Viewport (centering container, pointer-events: none) */}\n <html.div style={styles.viewport}>\n <html.div\n ref={popupRef}\n role=\"dialog\"\n aria-modal={true}\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n style={[\n styles.popup,\n styles[size],\n closing && styles.popupClosing,\n !closing && styles.popupOpen,\n ]}\n >\n {children}\n </html.div>\n </html.div>\n </>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId} = useDialog()\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Description ---\n\nfunction Description({children}: {children: ReactNode}) {\n const {descriptionId} = useDialog()\n return (\n <html.p id={descriptionId} style={styles.description}>\n {children}\n </html.p>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n return <html.div style={styles.body}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDialog()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const Dialog = {\n Root,\n Trigger,\n Portal,\n Header,\n Title,\n Description,\n Body,\n Footer,\n Close,\n}\n","import {createContext, useContext} from 'react'\n\ninterface InputGroupContextValue {\n inGroup: boolean\n}\n\nexport const InputGroupContext = createContext<InputGroupContextValue | null>(null)\n\nexport function useInputGroupContext() {\n return useContext(InputGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n inGroup: {\n borderWidth: 0,\n borderRadius: 0,\n outlineWidth: 0,\n },\n // orthogonal to variant (default/error) — composes on top so a mono field\n // still shows its error border. For slugs, identifiers, hashes.\n mono: {\n fontFamily: typography.fontFamilyMono,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {useInputGroupContext} from '../InputGroup/InputGroupContext'\nimport {styles} from './styles.css'\n\ntype StrictInputProps = React.ComponentProps<typeof html.input>\nexport type InputType = NonNullable<StrictInputProps['type']>\n\nexport type InputVariant = 'default' | 'error'\n\ninterface InputProps {\n variant?: InputVariant\n /** Orthogonal to variant — `mono` keeps the error border but uses the\n * monospace family (slugs, identifiers, hashes). */\n font?: 'mono'\n type?: InputType\n /** Explicit id — overrides the Field-context controlId when set (e.g. a\n * control used outside a Field that still needs a stable id). */\n id?: string\n name?: string\n placeholder?: string\n required?: boolean\n readOnly?: boolean\n minLength?: number\n maxLength?: number\n /** Numeric/range hints — forwarded to the native input (date/number/etc). */\n min?: string | number\n max?: string | number\n step?: string | number\n inputMode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'\n /** id of a <datalist> for native typeahead. */\n list?: string\n pattern?: string\n autoComplete?:\n | 'on'\n | 'off'\n | 'email'\n | 'username'\n | 'current-password'\n | 'new-password'\n | 'name'\n | 'tel'\n | 'url'\n value?: string\n defaultValue?: string\n disabled?: boolean\n autoFocus?: boolean\n /** Accessible name when there's no associated <Field.Label>. */\n 'aria-label'?: string\n /** Extra describedby ids (merged with the Field context's, if any). */\n 'aria-describedby'?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLInputElement>\n}\n\nexport function Input({\n variant = 'default',\n font,\n type = 'text',\n id,\n name,\n placeholder,\n required,\n readOnly,\n minLength,\n maxLength,\n min,\n max,\n step,\n inputMode,\n list,\n pattern,\n autoComplete,\n value,\n defaultValue,\n disabled,\n autoFocus,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedby,\n onChange,\n onBlur,\n ref,\n}: InputProps) {\n const ctx = useFieldContext()\n const groupCtx = useInputGroupContext()\n\n const fieldCtx = ctx?.field\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveDisabled = disabled ?? ctx?.disabled\n const effectiveVariant = ctx?.invalid ? 'error' : variant\n // Field context owns describedby (description + error); fall back to the\n // explicit prop only when standalone.\n const describedBy = ctx\n ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim()\n : ariaDescribedby\n\n // react-strict-dom omits some web-only props from its types, but the\n // underlying DOM element supports them. Type-assert to pass them through.\n const extraProps: Record<string, unknown> = {}\n if (pattern !== undefined) extraProps.pattern = pattern\n if (autoFocus) extraProps.autoFocus = true\n if (readOnly) extraProps.readOnly = true\n if (maxLength !== undefined) extraProps.maxLength = maxLength\n if (min !== undefined) extraProps.min = min\n if (max !== undefined) extraProps.max = max\n if (step !== undefined) extraProps.step = step\n if (inputMode !== undefined) extraProps.inputMode = inputMode\n if (list !== undefined) extraProps.list = list\n if (ariaLabel !== undefined) extraProps['aria-label'] = ariaLabel\n\n return (\n <html.input\n id={id ?? ctx?.controlId}\n type={type}\n name={effectiveName}\n placeholder={placeholder}\n required={required}\n minLength={minLength}\n autoComplete={autoComplete}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={effectiveDisabled}\n aria-describedby={describedBy || undefined}\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={effectiveOnChange as StrictInputProps['onChange']}\n onBlur={effectiveOnBlur as StrictInputProps['onBlur']}\n ref={effectiveRef as React.Ref<HTMLInputElement>}\n style={[\n styles.base,\n styles[effectiveVariant],\n font === 'mono' && styles.mono,\n groupCtx?.inGroup && styles.inGroup,\n ]}\n {...extraProps}\n />\n )\n}\n","import {createContext, useContext} from 'react'\n\nexport type LabelPosition = 'top' | 'side'\nexport type NecessityIndicator = 'icon' | 'label' | false\n\nexport interface FormContextValue {\n disabled: boolean\n labelPosition: LabelPosition\n necessityIndicator: NecessityIndicator\n}\n\nexport const FormContext = createContext<FormContextValue | null>(null)\n\nexport function useFormContext() {\n return useContext(FormContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n },\n rootSide: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.md,\n },\n label: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: colors.text,\n },\n labelSide: {\n minWidth: 120,\n paddingTop: spacing.sm,\n flexShrink: 0,\n },\n description: {\n fontSize: typography.fontSizeXs,\n color: colors.textMuted,\n },\n error: {\n fontSize: typography.fontSizeXs,\n color: colors.errorText,\n },\n fieldContent: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n flex: 1,\n minWidth: 0,\n },\n necessityIcon: {\n color: colors.error,\n },\n necessityLabel: {\n color: colors.textMuted,\n fontWeight: typography.fontWeightNormal,\n fontSize: typography.fontSizeXs,\n },\n})\n","import {type ReactNode, Children, isValidElement, useId, useMemo} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useFormContext as useRHFFormContext, useController} from 'react-hook-form'\nimport {FieldContext, useFieldContext} from './FieldContext'\nimport {useFormContext} from '../Form/FormContext'\nimport type {LabelPosition, NecessityIndicator} from '../Form/FormContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n invalid?: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n children: ReactNode\n}\n\nfunction Root({name, ...props}: RootProps) {\n const formCtx = useFormContext()\n if (name && formCtx) {\n return <ControlledRoot name={name} formCtx={formCtx} {...props} />\n }\n return <StaticRoot {...props} />\n}\n\n// Always calls useController — no conditional hooks\nfunction ControlledRoot({\n name,\n formCtx,\n invalid: invalidProp = false,\n required,\n disabled,\n labelPosition,\n children,\n}: {\n name: string\n formCtx: NonNullable<ReturnType<typeof useFormContext>>\n invalid?: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n children: ReactNode\n}) {\n const id = useId()\n const {control} = useRHFFormContext()\n const {field, fieldState} = useController({control, name})\n const invalid = invalidProp || !!fieldState.error\n\n const effectiveDisabled = disabled ?? formCtx.disabled\n const effectiveLabelPosition = labelPosition ?? formCtx.labelPosition\n const effectiveNecessityIndicator = formCtx.necessityIndicator\n\n const ctx = useMemo(\n () => ({\n controlId: `${id}-control`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n invalid,\n required,\n disabled: effectiveDisabled,\n labelPosition: effectiveLabelPosition,\n necessityIndicator: effectiveNecessityIndicator,\n field: {\n value: field.value,\n onChange: field.onChange,\n onBlur: field.onBlur,\n ref: field.ref,\n name: field.name,\n },\n errorMessage: fieldState.error?.message,\n }),\n [\n id,\n invalid,\n required,\n effectiveDisabled,\n effectiveLabelPosition,\n effectiveNecessityIndicator,\n field.value,\n field.onChange,\n field.onBlur,\n field.ref,\n field.name,\n fieldState.error,\n ],\n )\n\n return (\n <FieldContext.Provider value={ctx}>\n <FieldLayout labelPosition={effectiveLabelPosition}>{children}</FieldLayout>\n </FieldContext.Provider>\n )\n}\n\n// Current behavior, no RHF dependency\nfunction StaticRoot({\n invalid = false,\n required,\n disabled,\n labelPosition = 'top',\n children,\n}: {\n invalid?: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n children: ReactNode\n}) {\n const id = useId()\n const ctx = useMemo(\n () => ({\n controlId: `${id}-control`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n invalid,\n required,\n disabled,\n labelPosition,\n }),\n [id, invalid, required, disabled, labelPosition],\n )\n\n return (\n <FieldContext.Provider value={ctx}>\n <FieldLayout labelPosition={labelPosition}>{children}</FieldLayout>\n </FieldContext.Provider>\n )\n}\n\n// --- FieldLayout ---\n// When labelPosition is 'side', separates Label from other children\n// and wraps the non-label children in a content column.\nfunction FieldLayout({\n labelPosition,\n children,\n}: {\n labelPosition: LabelPosition\n children: ReactNode\n}) {\n if (labelPosition !== 'side') {\n return <html.div style={styles.root}>{children}</html.div>\n }\n\n let labelNode: ReactNode = null\n const rest: ReactNode[] = []\n\n Children.forEach(children, (child) => {\n if (isValidElement(child) && child.type === Label && !labelNode) {\n labelNode = child\n } else {\n rest.push(child)\n }\n })\n\n return (\n <html.div style={styles.rootSide}>\n {labelNode}\n <html.div style={styles.fieldContent}>{rest}</html.div>\n </html.div>\n )\n}\n\n// --- Label ---\ninterface LabelProps {\n children: ReactNode\n}\n\nfunction Label({children}: LabelProps) {\n const ctx = useFieldContext()\n const isSide = ctx?.labelPosition === 'side'\n const indicator = ctx?.necessityIndicator\n\n return (\n <html.label for={ctx?.controlId} style={[styles.label, isSide && styles.labelSide]}>\n {children}\n {indicator === 'icon' && ctx?.required && (\n <html.span style={styles.necessityIcon} aria-hidden={true}>\n {' *'}\n </html.span>\n )}\n {indicator === 'label' && (\n <html.span style={styles.necessityLabel}>\n {ctx?.required ? ' (required)' : ' (optional)'}\n </html.span>\n )}\n </html.label>\n )\n}\n\n// --- Description ---\ninterface DescriptionProps {\n children: ReactNode\n}\n\nfunction Description({children}: DescriptionProps) {\n const ctx = useFieldContext()\n return (\n <html.span id={ctx?.descriptionId} style={styles.description}>\n {children}\n </html.span>\n )\n}\n\n// --- Error ---\ninterface ErrorProps {\n children?: ReactNode\n}\n\nfunction Error({children}: ErrorProps) {\n const ctx = useFieldContext()\n const content = children ?? ctx?.errorMessage\n if (!ctx?.invalid && !content) return null\n\n return (\n <html.span id={ctx?.errorId} role=\"alert\" style={styles.error}>\n {content}\n </html.span>\n )\n}\n\nexport const Field = {\n Root,\n Label,\n Description,\n Error,\n}\n","import {type ReactNode, useState} from 'react'\nimport {Dialog} from '../Dialog/Dialog'\nimport {Button} from '../Button/Button'\nimport {Input} from '../Input/Input'\nimport {Field} from '../Field/Field'\n\ntype DialogSize = 'sm' | 'md' | 'lg'\n\ninterface ConfirmDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: ReactNode\n /** Warning / cascade body. */\n children?: ReactNode\n /** When set, the confirm action stays DISABLED until the user types this\n * exact phrase (org name, slug…). The typed value is a client-side gate\n * only — it is never submitted. */\n confirmPhrase?: string\n /** Prompt shown above the phrase input. */\n promptLabel?: ReactNode\n cancelLabel?: ReactNode\n /**\n * App-owned confirm control. Receives whether the phrase gate is satisfied,\n * so the app can render its OWN <Button type=\"submit\"> INSIDE its form\n * (e.g. a react-router fetcher.Form with hidden intent fields) — the DS does\n * NOT own the submit, avoiding a fight with the app's form flow. Takes\n * precedence over onConfirm/confirmLabel.\n */\n confirmSlot?: (gate: {satisfied: boolean}) => ReactNode\n /** Simple case (no app form): the DS renders a danger Button calling this. */\n onConfirm?: () => void\n confirmLabel?: ReactNode\n size?: DialogSize\n}\n\n/**\n * Generic destructive-confirmation dialog: layout + an optional type-a-phrase\n * gate. The DS owns the shell and the gate; the APP owns the actual submit\n * (via `confirmSlot`) so it composes with form libraries instead of forcing a\n * callback. Domain warning text goes in `children`.\n */\nexport function ConfirmDialog({\n open,\n onOpenChange,\n title,\n children,\n confirmPhrase,\n promptLabel,\n cancelLabel = 'Cancel',\n confirmSlot,\n onConfirm,\n confirmLabel = 'Confirm',\n size = 'sm',\n}: ConfirmDialogProps) {\n const [typed, setTyped] = useState('')\n const satisfied = !confirmPhrase || typed.trim() === confirmPhrase\n\n const handleOpenChange = (next: boolean) => {\n if (!next) setTyped('') // reset the gate when the dialog closes\n onOpenChange(next)\n }\n\n return (\n <Dialog.Root open={open} onOpenChange={handleOpenChange}>\n <Dialog.Portal size={size}>\n <Dialog.Header>\n <Dialog.Title>{title}</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n {children}\n {confirmPhrase ? (\n <Field.Root>\n {promptLabel ? <Field.Label>{promptLabel}</Field.Label> : null}\n <Input\n font=\"mono\"\n value={typed}\n onChange={(e) => setTyped(e.target.value)}\n autoFocus\n aria-label=\"confirmation phrase\"\n />\n </Field.Root>\n ) : null}\n </Dialog.Body>\n <Dialog.Footer>\n <Button variant=\"secondary\" onClick={() => handleOpenChange(false)}>\n {cancelLabel}\n </Button>\n {confirmSlot ? (\n confirmSlot({satisfied})\n ) : onConfirm ? (\n <Button variant=\"danger\" disabled={!satisfied} onClick={onConfirm}>\n {confirmLabel}\n </Button>\n ) : null}\n </Dialog.Footer>\n </Dialog.Portal>\n </Dialog.Root>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\n// The \"Apple ease\" curves and the 280ms open now live in the shared motion\n// tokens (easing.easeOut/easeIn, duration.slow). The 220ms close is specific to\n// this panel's exit, so it stays local.\nconst CLOSE_DURATION = '220ms'\n\nexport const styles = css.create({\n // --- Outer wrapper: animates width from 0 → target ---\n wrapper: {\n overflow: 'hidden',\n flexShrink: 0,\n position: 'relative',\n },\n\n // --- Wrapper open/close: SM (360px) ---\n wrapperOpenSm: {\n animationName: css.keyframes({\n from: {width: 0},\n to: {width: 360},\n }),\n animationDuration: duration.slow,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n wrapperCloseSm: {\n animationName: css.keyframes({\n from: {width: 360},\n to: {width: 0},\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Wrapper open/close: MD (480px) ---\n wrapperOpenMd: {\n animationName: css.keyframes({\n from: {width: 0},\n to: {width: 480},\n }),\n animationDuration: duration.slow,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n wrapperCloseMd: {\n animationName: css.keyframes({\n from: {width: 480},\n to: {width: 0},\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Content panel ---\n content: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: colors.bgCard,\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n boxShadow: shadows.sm,\n position: 'relative',\n },\n\n // Content must maintain its target width even while wrapper is narrower\n contentSm: {width: 360},\n contentMd: {width: 480},\n\n // --- Content slide + fade animations ---\n slideIn: {\n animationName: css.keyframes({\n from: {\n transform: 'translateX(40px)',\n opacity: 0,\n },\n to: {\n transform: 'translateX(0)',\n opacity: 1,\n },\n }),\n animationDuration: duration.slow,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOut: {\n animationName: css.keyframes({\n from: {\n transform: 'translateX(0)',\n opacity: 1,\n },\n to: {\n transform: 'translateX(40px)',\n opacity: 0,\n },\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n gap: spacing.md,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n\n // --- Title ---\n title: {\n fontSize: 18,\n fontWeight: 600,\n lineHeight: 1.4,\n color: colors.text,\n margin: 0,\n flex: 1,\n minWidth: 0,\n },\n\n // --- Body ---\n body: {\n flex: 1,\n overflowY: 'auto',\n // Minimal inset prevents child borders from touching panel structural borders\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n },\n bodyPadded: {\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: 8,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n\n inlineWrapper: {\n display: 'inline-flex',\n },\n})\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type DetailPanelSize = 'sm' | 'md'\n\n// --- Context ---\n\ninterface DetailPanelContextValue {\n present: boolean\n closing: boolean\n requestOpen: () => void\n requestClose: () => void\n titleId: string\n labelId: string | undefined\n registerTitle: (id: string) => void\n unregisterTitle: () => void\n panelRef: RefObject<HTMLDivElement | null>\n}\n\nconst DetailPanelContext = createContext<DetailPanelContextValue | null>(null)\n\nfunction useDetailPanel() {\n const ctx = useContext(DetailPanelContext)\n if (!ctx) throw new Error('DetailPanel compound components must be used within DetailPanel.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Duration of the close animation in ms. Default: 220 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n closeAnimationDuration = 220,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [present, setPresent] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const panelRef = useRef<HTMLDivElement>(null)\n const previousFocusRef = useRef<Element | null>(null)\n\n const titleId = useId()\n const [labelId, setLabelId] = useState<string | undefined>(undefined)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n // Sync presence with open state\n useEffect(() => {\n if (isOpen && !present) {\n setPresent(true)\n setClosing(false)\n } else if (!isOpen && present && !closing) {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n setPresent(false)\n closingTimerRef.current = null\n }, closeAnimationDuration)\n }\n }, [isOpen, present, closing, closeAnimationDuration])\n\n // Focus management: move focus on open, restore on close\n useEffect(() => {\n if (present && !closing) {\n previousFocusRef.current = document.activeElement\n panelRef.current?.focus()\n }\n }, [present]) // eslint-disable-line react-hooks/exhaustive-deps -- only on present change\n\n useEffect(() => {\n if (!present && previousFocusRef.current) {\n const el = previousFocusRef.current as HTMLElement\n if (typeof el.focus === 'function') {\n el.focus()\n }\n previousFocusRef.current = null\n }\n }, [present])\n\n // ESC handler\n useEffect(() => {\n if (!present || closing) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [present, closing]) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n setClosing(false)\n }\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, [isControlled, onOpenChange])\n\n const registerTitle = useCallback((id: string) => {\n setLabelId(id)\n }, [])\n\n const unregisterTitle = useCallback(() => {\n setLabelId(undefined)\n }, [])\n\n return (\n <DetailPanelContext.Provider\n value={{\n present,\n closing,\n requestOpen,\n requestClose,\n titleId,\n labelId,\n registerTitle,\n unregisterTitle,\n panelRef,\n }}\n >\n {children}\n </DetailPanelContext.Provider>\n )\n}\n\n// --- Content ---\n\ninterface ContentProps {\n children: ReactNode\n /** Width of the panel. Default: 'sm' (360px) */\n size?: DetailPanelSize\n /** Accessible name for the complementary landmark */\n label: string\n}\n\nconst wrapperOpenMap = {\n sm: styles.wrapperOpenSm,\n md: styles.wrapperOpenMd,\n} as const\n\nconst wrapperCloseMap = {\n sm: styles.wrapperCloseSm,\n md: styles.wrapperCloseMd,\n} as const\n\nfunction Content({children, size = 'sm', label}: ContentProps) {\n const {present, closing, labelId, panelRef} = useDetailPanel()\n\n if (!present) return null\n\n return (\n <html.div style={[styles.wrapper, closing ? wrapperCloseMap[size] : wrapperOpenMap[size]]}>\n <html.div\n ref={panelRef}\n role=\"complementary\"\n aria-label={!labelId ? label : undefined}\n aria-labelledby={labelId || undefined}\n tabIndex={-1}\n style={[\n styles.content,\n size === 'sm' ? styles.contentSm : styles.contentMd,\n closing ? styles.slideOut : styles.slideIn,\n ]}\n >\n {children}\n </html.div>\n </html.div>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId, registerTitle, unregisterTitle} = useDetailPanel()\n\n useEffect(() => {\n registerTitle(titleId)\n return () => unregisterTitle()\n }, [titleId, registerTitle, unregisterTitle])\n\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Body ---\n\ninterface BodyProps {\n children: ReactNode\n /** Adds inner padding. Default: true */\n padded?: boolean\n}\n\nfunction Body({children, padded = true}: BodyProps) {\n return <html.div style={[styles.body, padded && styles.bodyPadded]}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDetailPanel()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const DetailPanel = {\n Root,\n Content,\n Header,\n Title,\n Body,\n Footer,\n Close,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n // --- Backdrop ---\n backdrop: {\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n zIndex: 1000,\n },\n backdropOpen: {\n animationName: css.keyframes({\n from: {opacity: 0},\n to: {opacity: 1},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n backdropClosing: {\n animationName: css.keyframes({\n from: {opacity: 1},\n to: {opacity: 0},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Viewport (positioning container) ---\n viewport: {\n position: 'fixed',\n inset: 0,\n zIndex: 1001,\n display: 'flex',\n pointerEvents: 'none',\n },\n\n // Right anchor (desktop default)\n viewportRight: {\n justifyContent: 'flex-end',\n alignItems: 'stretch',\n },\n // Left anchor\n viewportLeft: {\n justifyContent: 'flex-start',\n alignItems: 'stretch',\n },\n // Bottom anchor (mobile default)\n viewportBottom: {\n justifyContent: 'stretch',\n alignItems: 'flex-end',\n },\n\n // --- Panel ---\n panel: {\n position: 'relative',\n backgroundColor: colors.bgCard,\n boxShadow: shadows.lg,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n pointerEvents: 'auto',\n borderWidth: 0,\n touchAction: 'none',\n },\n\n // Panel sizing per anchor\n panelHorizontal: {\n width: '100%',\n height: '100%',\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n },\n panelVertical: {\n width: '100%',\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n borderTopLeftRadius: radii.lg,\n borderTopRightRadius: radii.lg,\n maxHeight: '85vh',\n },\n panelLeftBorder: {\n borderLeftWidth: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n\n // --- Panel widths (horizontal anchors) ---\n sm: {maxWidth: 360},\n md: {maxWidth: 480},\n lg: {maxWidth: 640},\n\n // --- Slide animations: Right ---\n slideInRight: {\n animationName: css.keyframes({\n from: {transform: 'translateX(100%)'},\n to: {transform: 'translateX(0)'},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOutRight: {\n animationName: css.keyframes({\n from: {transform: 'translateX(0)'},\n to: {transform: 'translateX(100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Slide animations: Left ---\n slideInLeft: {\n animationName: css.keyframes({\n from: {transform: 'translateX(-100%)'},\n to: {transform: 'translateX(0)'},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOutLeft: {\n animationName: css.keyframes({\n from: {transform: 'translateX(0)'},\n to: {transform: 'translateX(-100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Slide animations: Bottom ---\n slideInBottom: {\n animationName: css.keyframes({\n from: {transform: 'translateY(100%)'},\n to: {transform: 'translateY(0)'},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOutBottom: {\n animationName: css.keyframes({\n from: {transform: 'translateY(0)'},\n to: {transform: 'translateY(100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n gap: spacing.md,\n },\n\n // --- Title ---\n title: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n },\n\n // --- Description ---\n description: {\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n },\n\n // --- Body ---\n body: {\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n overflowY: 'auto',\n flex: 1,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: radii.sm,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n\n // --- Inline wrapper ---\n inlineWrapper: {\n display: 'inline-flex',\n },\n})\n","import {useRef, useCallback, useEffect} from 'react'\nimport type {DrawerAnchor} from './Drawer'\n\n/** Threshold: fraction of panel size the user must drag to dismiss */\nconst DISMISS_THRESHOLD = 0.3\n\n/** Minimum velocity (px/ms) to dismiss even below threshold */\nconst VELOCITY_THRESHOLD = 0.5\n\n/** Duration for the dismiss slide-out animation (ms) */\nconst DISMISS_DURATION = 160\n\n/**\n * Max pixels the panel visually \"grows\" when dragged in the opposite direction.\n * iOS-style: panel stays anchored to its edge, doesn't translate.\n * Instead we show a subtle shadow/scale hint capped at this value.\n */\nconst OPPOSITE_MAX_OVERSCROLL = 12\n\ninterface UseSwipeDismissOptions {\n anchor: DrawerAnchor\n enabled: boolean\n onDismiss: () => void\n panelRef: React.RefObject<HTMLDivElement | null>\n}\n\ninterface SwipeState {\n startX: number\n startY: number\n currentX: number\n currentY: number\n startTime: number\n swiping: boolean\n panelSize: number\n}\n\n/**\n * Hook that adds swipe-to-dismiss gesture to a drawer panel.\n *\n * Dismiss direction: panel follows finger 1:1, backdrop fades.\n * Opposite direction: iOS-style — panel stays anchored, shows subtle\n * overscroll feedback (box-shadow intensifies), then snaps back.\n */\nexport function useSwipeDismiss({anchor, enabled, onDismiss, panelRef}: UseSwipeDismissOptions) {\n const stateRef = useRef<SwipeState>({\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n startTime: 0,\n swiping: false,\n panelSize: 0,\n })\n\n const isHorizontal = anchor === 'left' || anchor === 'right'\n\n /** Returns positive = dismiss direction, negative = opposite */\n const getMovement = useCallback(\n (state: SwipeState) => {\n if (isHorizontal) {\n const dx = state.currentX - state.startX\n return anchor === 'right' ? dx : -dx\n }\n return state.currentY - state.startY\n },\n [anchor, isHorizontal],\n )\n\n const applyTransform = useCallback(\n (movement: number, panelEl: HTMLDivElement) => {\n const size = Number(panelEl.dataset.panelSize) || 1\n\n if (movement >= 0) {\n // Dismiss direction — 1:1 tracking\n const progress = movement / size\n\n if (isHorizontal) {\n const sign = anchor === 'right' ? 1 : -1\n panelEl.style.transform = `translateX(${sign * movement}px)`\n } else {\n panelEl.style.transform = `translateY(${movement}px)`\n }\n\n // Fade backdrop proportionally\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.opacity = String(Math.max(0, 1 - progress))\n }\n } else {\n // Opposite direction — iOS behavior:\n // Panel stays anchored (no translate). Show subtle overscroll via box-shadow.\n // Diminishing resistance: asymptotically approaches OPPOSITE_MAX_OVERSCROLL.\n const absMovement = Math.abs(movement)\n const overscroll = (absMovement / (absMovement + size * 0.5)) * OPPOSITE_MAX_OVERSCROLL\n const shadowSpread = Math.round(overscroll)\n\n panelEl.style.transform = ''\n panelEl.style.boxShadow =\n shadowSpread > 0 ? `0 0 ${shadowSpread * 2}px ${shadowSpread}px rgba(0, 0, 0, 0.15)` : ''\n }\n },\n [anchor, isHorizontal],\n )\n\n /** Reset all inline styles (snap back) */\n const resetStyles = useCallback((panelEl: HTMLDivElement) => {\n panelEl.style.transform = ''\n panelEl.style.boxShadow = ''\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.opacity = ''\n }\n }, [])\n\n /** Animate to fully dismissed position, then call onDismiss */\n const animateDismiss = useCallback(\n (panelEl: HTMLDivElement) => {\n const dismissTransform = isHorizontal\n ? `translateX(${anchor === 'right' ? '100%' : '-100%'})`\n : 'translateY(100%)'\n\n panelEl.style.transition = `transform ${DISMISS_DURATION}ms ease-in`\n panelEl.style.transform = dismissTransform\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.transition = `opacity ${DISMISS_DURATION}ms ease-in`\n backdrop.style.opacity = '0'\n }\n\n // When the slide-out transition finishes, just call onDismiss.\n // Do NOT reset inline styles before unmount — that causes a 1-frame flash\n // where the panel appears at its original position. React will unmount the\n // DOM node entirely, so the inline styles don't need cleanup.\n let dismissed = false\n const done = () => {\n if (dismissed) return\n dismissed = true\n onDismiss()\n }\n panelEl.addEventListener('transitionend', done, {once: true})\n setTimeout(done, DISMISS_DURATION + 50)\n },\n [anchor, isHorizontal, onDismiss],\n )\n\n /** Animate snap-back for dismiss-direction undershoot */\n const animateSnapBack = useCallback((panelEl: HTMLDivElement) => {\n panelEl.style.transition = 'transform 200ms cubic-bezier(0.25, 1, 0.5, 1)'\n panelEl.style.transform = ''\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.transition = 'opacity 200ms cubic-bezier(0.25, 1, 0.5, 1)'\n backdrop.style.opacity = ''\n }\n\n const cleanup = () => {\n panelEl.style.transition = ''\n if (backdrop) backdrop.style.transition = ''\n }\n panelEl.addEventListener('transitionend', cleanup, {once: true})\n setTimeout(cleanup, 250)\n }, [])\n\n useEffect(() => {\n if (!enabled) return\n const panel = panelRef.current\n if (!panel) return\n\n function handlePointerDown(e: PointerEvent) {\n if (e.button !== 0) return\n const target = e.target as HTMLElement\n if (target.closest('button, a, input, textarea, select, [role=\"button\"]')) {\n return\n }\n\n const rect = panel!.getBoundingClientRect()\n const state = stateRef.current\n state.startX = e.clientX\n state.startY = e.clientY\n state.currentX = e.clientX\n state.currentY = e.clientY\n state.startTime = Date.now()\n state.swiping = false\n state.panelSize = isHorizontal ? rect.width : rect.height\n\n panel!.dataset.panelSize = String(state.panelSize)\n panel!.setPointerCapture(e.pointerId)\n\n // Freeze CSS animation — we take over positioning.\n // Never restore it; the panel is already at its final resting position.\n panel!.style.animation = 'none'\n }\n\n function handlePointerMove(e: PointerEvent) {\n const state = stateRef.current\n if (state.startTime === 0) return\n\n state.currentX = e.clientX\n state.currentY = e.clientY\n\n const dx = Math.abs(state.currentX - state.startX)\n const dy = Math.abs(state.currentY - state.startY)\n\n if (!state.swiping) {\n const totalMovement = Math.sqrt(dx * dx + dy * dy)\n if (totalMovement < 8) return\n\n if (isHorizontal && dx > dy) {\n state.swiping = true\n } else if (!isHorizontal && dy > dx) {\n state.swiping = true\n } else {\n // Wrong axis — abort gesture\n state.startTime = 0\n return\n }\n }\n\n if (state.swiping) {\n e.preventDefault()\n const movement = getMovement(state)\n applyTransform(movement, panel!)\n }\n }\n\n function handlePointerUp(_e: PointerEvent) {\n const state = stateRef.current\n if (state.startTime === 0) return\n\n const movement = getMovement(state)\n const elapsed = Date.now() - state.startTime\n const velocity = movement / elapsed\n\n state.startTime = 0\n\n if (!state.swiping) {\n return\n }\n\n state.swiping = false\n\n if (movement <= 0) {\n // Was dragging in opposite direction — just reset (no translate was applied)\n resetStyles(panel!)\n return\n }\n\n const fraction = movement / state.panelSize\n const shouldDismiss = fraction > DISMISS_THRESHOLD || velocity > VELOCITY_THRESHOLD\n\n if (shouldDismiss) {\n animateDismiss(panel!)\n } else {\n animateSnapBack(panel!)\n }\n }\n\n function handlePointerCancel() {\n const state = stateRef.current\n state.startTime = 0\n state.swiping = false\n resetStyles(panel!)\n }\n\n panel.addEventListener('pointerdown', handlePointerDown)\n panel.addEventListener('pointermove', handlePointerMove)\n panel.addEventListener('pointerup', handlePointerUp)\n panel.addEventListener('pointercancel', handlePointerCancel)\n\n function handleTouchMove(e: TouchEvent) {\n if (stateRef.current.swiping) {\n e.preventDefault()\n }\n }\n panel.addEventListener('touchmove', handleTouchMove, {passive: false})\n\n return () => {\n panel.removeEventListener('pointerdown', handlePointerDown)\n panel.removeEventListener('pointermove', handlePointerMove)\n panel.removeEventListener('pointerup', handlePointerUp)\n panel.removeEventListener('pointercancel', handlePointerCancel)\n panel.removeEventListener('touchmove', handleTouchMove)\n }\n }, [\n enabled,\n panelRef,\n anchor,\n isHorizontal,\n getMovement,\n applyTransform,\n resetStyles,\n animateSnapBack,\n animateDismiss,\n ])\n}\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {useSwipeDismiss} from './useSwipeDismiss'\n\n// --- Types ---\n\nexport type DrawerAnchor = 'right' | 'left' | 'bottom'\nexport type DrawerSize = 'sm' | 'md' | 'lg'\n\n// --- Context ---\n\ninterface DrawerContextValue {\n open: boolean\n closing: boolean\n anchor: DrawerAnchor\n dismissable: boolean\n swipeDismiss: boolean\n requestOpen: () => void\n requestClose: () => void\n /** Close immediately without CSS animation (used by swipe dismiss which handles its own exit animation) */\n requestCloseImmediate: () => void\n titleId: string\n descriptionId: string\n panelRef: RefObject<HTMLDivElement | null>\n}\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null)\n\nfunction useDrawer() {\n const ctx = useContext(DrawerContext)\n if (!ctx) throw new Error('Drawer compound components must be used within Drawer.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when drawer open state changes */\n onOpenChange?: (open: boolean) => void\n /** Which edge the drawer slides from. Default: 'right' */\n anchor?: DrawerAnchor\n /** Whether clicking backdrop or pressing Escape closes the drawer. Default: true */\n dismissable?: boolean\n /** Whether swipe gesture dismisses the drawer. Default: true */\n swipeDismiss?: boolean\n /** Duration of the close animation in ms. Default: 160 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n anchor = 'right',\n dismissable = true,\n swipeDismiss = true,\n closeAnimationDuration = 160,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const panelRef = useRef<HTMLDivElement>(null)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const titleId = useId()\n const descriptionId = useId()\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n closingTimerRef.current = null\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, closeAnimationDuration)\n }, [isControlled, onOpenChange, closeAnimationDuration])\n\n const requestCloseImmediate = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, [isControlled, onOpenChange])\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n // Handle Escape key\n useEffect(() => {\n if (!isOpen && !closing) return\n if (!dismissable) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [isOpen, closing, dismissable, requestClose])\n\n // Lock body scroll when open\n useEffect(() => {\n if (isOpen || closing) {\n const prev = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = prev\n }\n }\n }, [isOpen, closing])\n\n return (\n <DrawerContext.Provider\n value={{\n open: isOpen || closing,\n closing,\n anchor,\n dismissable,\n swipeDismiss,\n requestOpen,\n requestClose,\n requestCloseImmediate,\n titleId,\n descriptionId,\n panelRef,\n }}\n >\n {children}\n </DrawerContext.Provider>\n )\n}\n\n// --- Trigger ---\n\nfunction Trigger({children}: {children: ReactNode}) {\n const {requestOpen} = useDrawer()\n\n return (\n <html.div onClick={requestOpen} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n}\n\n// --- Portal ---\n\ninterface PortalProps {\n children: ReactNode\n size?: DrawerSize\n}\n\n// Slide animation maps\nconst slideInMap = {\n right: styles.slideInRight,\n left: styles.slideInLeft,\n bottom: styles.slideInBottom,\n} as const\n\nconst slideOutMap = {\n right: styles.slideOutRight,\n left: styles.slideOutLeft,\n bottom: styles.slideOutBottom,\n} as const\n\nconst viewportAnchorMap = {\n right: styles.viewportRight,\n left: styles.viewportLeft,\n bottom: styles.viewportBottom,\n} as const\n\nfunction Portal({children, size = 'md'}: PortalProps) {\n const {\n open,\n closing,\n anchor,\n dismissable,\n swipeDismiss: swipeEnabled,\n requestClose,\n requestCloseImmediate,\n titleId,\n descriptionId,\n panelRef,\n } = useDrawer()\n\n const handleBackdropClick = useCallback(() => {\n if (dismissable) {\n requestClose()\n }\n }, [dismissable, requestClose])\n\n // Swipe-to-dismiss — uses immediate close since the hook handles its own exit animation\n useSwipeDismiss({\n anchor,\n enabled: swipeEnabled && open && !closing,\n onDismiss: requestCloseImmediate,\n panelRef,\n })\n\n if (!open) return null\n\n const isHorizontal = anchor === 'left' || anchor === 'right'\n\n return (\n <>\n {/* Backdrop — click to dismiss */}\n <html.div\n style={[\n styles.backdrop,\n closing && styles.backdropClosing,\n !closing && styles.backdropOpen,\n ]}\n aria-hidden\n onClick={handleBackdropClick}\n />\n\n {/* Viewport */}\n <html.div style={[styles.viewport, viewportAnchorMap[anchor]]} data-drawer-viewport=\"\">\n <html.div\n ref={panelRef}\n role=\"dialog\"\n aria-modal={true}\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n style={[\n styles.panel,\n isHorizontal && styles.panelHorizontal,\n isHorizontal && styles[size],\n !isHorizontal && styles.panelVertical,\n anchor === 'left' && styles.panelLeftBorder,\n closing && slideOutMap[anchor],\n !closing && slideInMap[anchor],\n ]}\n >\n {children}\n </html.div>\n </html.div>\n </>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId} = useDrawer()\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Description ---\n\nfunction Description({children}: {children: ReactNode}) {\n const {descriptionId} = useDrawer()\n return (\n <html.p id={descriptionId} style={styles.description}>\n {children}\n </html.p>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n return <html.div style={styles.body}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDrawer()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const Drawer = {\n Root,\n Trigger,\n Portal,\n Header,\n Title,\n Description,\n Body,\n Footer,\n Close,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n textAlign: 'center',\n },\n message: {\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n lineHeight: typography.lineHeight,\n },\n action: {\n marginTop: spacing.sm,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\ninterface EmptyStateProps {\n message: string\n icon?: ReactNode\n action?: ReactNode\n}\n\nexport function EmptyState({message, icon, action}: EmptyStateProps) {\n return (\n <html.div style={styles.root}>\n {icon}\n <html.p style={styles.message}>{message}</html.p>\n {action && <html.div style={styles.action}>{action}</html.div>}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {typography, typeScale} from './typography.css'\n\nexport const typePresets = css.create({\n // Body\n bodySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize4,\n lineHeight: typeScale.lineHeight4,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize5,\n lineHeight: typeScale.lineHeight5,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n\n // UI\n caption: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingWide,\n },\n label: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightMedium,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n code: {\n fontFamily: typography.fontFamilyMono,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n overline: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingWide,\n textTransform: 'uppercase' as const,\n },\n\n // Heading\n headingSm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize6,\n lineHeight: typeScale.lineHeight6,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize7,\n lineHeight: typeScale.lineHeight7,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize8,\n lineHeight: typeScale.lineHeight8,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingXl: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize9,\n lineHeight: typeScale.lineHeight9,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n\n // Display (fluid)\n displaySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displaySm,\n lineHeight: 1.2,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayMd,\n lineHeight: 1.15,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayLg,\n lineHeight: 1.1,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type HeadingVariant =\n | 'displayLg'\n | 'displayMd'\n | 'displaySm'\n | 'headingXl'\n | 'headingLg'\n | 'headingMd'\n | 'headingSm'\n\ninterface HeadingProps {\n level: 1 | 2 | 3 | 4 | 5 | 6\n variant?: HeadingVariant\n color?: 'default' | 'muted' | 'accent'\n align?: 'start' | 'center' | 'end'\n children: ReactNode\n}\n\nconst defaultVariantMap: Record<number, HeadingVariant> = {\n 1: 'headingXl',\n 2: 'headingLg',\n 3: 'headingMd',\n 4: 'headingSm',\n 5: 'headingSm',\n 6: 'headingSm',\n}\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Heading({level, variant, color = 'default', align, children}: HeadingProps) {\n const resolvedVariant = variant ?? defaultVariantMap[level]\n const style = [typePresets[resolvedVariant], styles[color], align && alignMap[align]]\n\n if (level === 1) return <html.h1 style={style}>{children}</html.h1>\n if (level === 2) return <html.h2 style={style}>{children}</html.h2>\n if (level === 3) return <html.h3 style={style}>{children}</html.h3>\n if (level === 4) return <html.h4 style={style}>{children}</html.h4>\n if (level === 5) return <html.h5 style={style}>{children}</html.h5>\n return <html.h6 style={style}>{children}</html.h6>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // --- Root ---\n root: {\n display: 'flex',\n flexDirection: 'column',\n margin: 0,\n padding: 0,\n },\n\n // --- Item ---\n item: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.ms,\n paddingRight: spacing.ms,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: '120ms',\n cursor: 'default',\n },\n itemSelected: {\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCardHover,\n },\n },\n itemDisabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n itemLast: {\n borderBottomWidth: 0,\n },\n\n // --- Item content area (text + description) ---\n content: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n minWidth: 0,\n },\n\n // --- Primary text ---\n text: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n // --- Description text ---\n description: {\n fontSize: typography.fontSizeXs,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n // --- Actions slot ---\n actions: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.xs,\n flexShrink: 0,\n },\n\n // --- Empty state ---\n empty: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n color: colors.textMuted,\n fontSize: typography.fontSizeSm,\n },\n})\n","import {type ReactNode, createContext, useContext} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type ListSelectionMode = 'none' | 'single' | 'multiple'\n\n// --- Context ---\n\ninterface ListContextValue {\n selectionMode: ListSelectionMode\n}\n\nconst ListContext = createContext<ListContextValue>({selectionMode: 'none'})\n\nfunction useList() {\n return useContext(ListContext)\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Selection mode: 'none' (default), 'single', or 'multiple' */\n selectionMode?: ListSelectionMode\n /** Accessible label for the list */\n 'aria-label'?: string\n}\n\nfunction Root({children, selectionMode = 'none', 'aria-label': ariaLabel}: RootProps) {\n return (\n <ListContext.Provider value={{selectionMode}}>\n <html.div role=\"list\" aria-label={ariaLabel} style={styles.root}>\n {children}\n </html.div>\n </ListContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n children: ReactNode\n /** Whether this item is selected */\n selected?: boolean\n /** Whether this item is disabled */\n disabled?: boolean\n /** Click handler for the item */\n onClick?: () => void\n}\n\nfunction Item({children, selected, disabled, onClick}: ItemProps) {\n const {selectionMode} = useList()\n const isSelectable = selectionMode !== 'none'\n\n return (\n <html.div\n role=\"listitem\"\n aria-selected={isSelectable ? selected : undefined}\n aria-disabled={disabled || undefined}\n onClick={disabled ? undefined : onClick}\n style={[styles.item, selected && styles.itemSelected, disabled && styles.itemDisabled]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Content: wraps primary text + description ---\n\nfunction Content({children}: {children: ReactNode}) {\n return <html.div style={styles.content}>{children}</html.div>\n}\n\n// --- Text: primary label ---\n\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.p style={styles.text}>{children}</html.p>\n}\n\n// --- Description: secondary text ---\n\nfunction Description({children}: {children: ReactNode}) {\n return <html.p style={styles.description}>{children}</html.p>\n}\n\n// --- Actions: slot for buttons, badges, etc. ---\n\nfunction Actions({children}: {children: ReactNode}) {\n return <html.div style={styles.actions}>{children}</html.div>\n}\n\n// --- Empty: placeholder when list has no items ---\n\nfunction Empty({children}: {children: ReactNode}) {\n return (\n <html.div role=\"listitem\" style={styles.empty}>\n {children}\n </html.div>\n )\n}\n\n// --- Export ---\n\nexport const List = {\n Root,\n Item,\n Content,\n Text: ItemText,\n Description,\n Actions,\n Empty,\n}\n","import {type ReactNode, useCallback, useEffect, useMemo, useRef} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {\n useForm,\n FormProvider,\n type UseFormReturn,\n type DefaultValues,\n type FieldValues,\n type FieldErrors,\n type Path,\n} from 'react-hook-form'\nimport {effectTsResolver} from '@hookform/resolvers/effect-ts'\nimport type {Schema} from 'effect'\nimport {FormContext, type LabelPosition, type NecessityIndicator} from './FormContext'\n\nexport interface FormProps<T extends FieldValues> {\n schema: Schema.Schema<T>\n defaultValues: DefaultValues<T>\n onSubmit: (data: T) => void | Promise<void>\n disabled?: boolean\n labelPosition?: LabelPosition\n necessityIndicator?: NecessityIndicator\n validationErrors?: Partial<Record<Path<T>, string>>\n children: ReactNode | ((methods: UseFormReturn<T>) => ReactNode)\n}\n\nconst formStyles = css.create({\n disabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n})\n\nexport function Form<T extends FieldValues>({\n schema,\n defaultValues,\n onSubmit,\n disabled = false,\n labelPosition = 'top',\n necessityIndicator = false,\n validationErrors,\n children,\n}: FormProps<T>) {\n const methods = useForm<T>({\n resolver: effectTsResolver(schema),\n defaultValues,\n mode: 'onTouched',\n reValidateMode: 'onChange',\n })\n\n // Sync server-side validation errors into RHF\n const prevErrorKeysRef = useRef<string[]>([])\n useEffect(() => {\n const prevKeys = prevErrorKeysRef.current\n const nextKeys = validationErrors ? Object.keys(validationErrors) : []\n\n // Clear errors that were removed\n for (const key of prevKeys) {\n if (!nextKeys.includes(key)) {\n methods.clearErrors(key as Path<T>)\n }\n }\n\n // Set new errors\n if (validationErrors) {\n for (const [key, message] of Object.entries(validationErrors)) {\n if (message) {\n methods.setError(key as Path<T>, {type: 'server', message: message as string})\n }\n }\n }\n\n prevErrorKeysRef.current = nextKeys\n }, [validationErrors, methods])\n\n const formRef = useRef<HTMLFormElement>(null)\n\n const onInvalid = useCallback(\n (errors: FieldErrors<T>) => {\n const firstField = Object.keys(errors)[0]\n if (firstField) {\n methods.setFocus(firstField as Path<T>)\n }\n },\n [methods],\n )\n\n const handleSubmit = useCallback(\n (e: Event) => {\n e.preventDefault()\n void methods.handleSubmit(onSubmit, onInvalid)()\n },\n [methods, onSubmit, onInvalid],\n )\n\n useEffect(() => {\n const el = formRef.current\n if (!el) return\n el.addEventListener('submit', handleSubmit)\n return () => el.removeEventListener('submit', handleSubmit)\n }, [handleSubmit])\n\n const formCtx = useMemo(\n () => ({disabled, labelPosition, necessityIndicator}),\n [disabled, labelPosition, necessityIndicator],\n )\n\n return (\n <FormProvider {...methods}>\n <FormContext.Provider value={formCtx}>\n <html.form\n ref={formRef}\n aria-disabled={disabled || undefined}\n style={disabled && formStyles.disabled}\n >\n {typeof children === 'function' ? children(methods) : children}\n </html.form>\n </FormContext.Provider>\n </FormProvider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n // Reset native fieldset chrome\n borderWidth: 0,\n margin: 0,\n padding: 0,\n minWidth: 0,\n },\n legend: {\n // Reset native legend quirks\n padding: 0,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: colors.text,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type FieldsetGap = 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl'\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n} as const\n\n// --- Root ---\ninterface RootProps {\n /** Disables all form controls within the fieldset */\n disabled?: boolean\n /** Gap between child elements */\n gap?: FieldsetGap\n children: ReactNode\n}\n\nfunction Root({disabled = false, gap = 'md', children}: RootProps) {\n return (\n <html.div\n role=\"group\"\n aria-disabled={disabled || undefined}\n style={[styles.root, gapMap[gap], disabled && styles.disabled]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Legend ---\ninterface LegendProps {\n children: ReactNode\n}\n\nfunction Legend({children}: LegendProps) {\n return <html.span style={styles.legend}>{children}</html.span>\n}\n\nexport const Fieldset = {\n Root,\n Legend,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n wrapper: {\n display: 'flex',\n alignItems: 'stretch',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':focus-within': colors.accent,\n },\n borderRadius: radii.sm,\n overflow: 'hidden',\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n addon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n backgroundColor: colors.bgCardHover,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n userSelect: 'none',\n borderWidth: 0,\n },\n addonStart: {\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n addonEnd: {\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n },\n addonClickable: {\n cursor: 'pointer',\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCard,\n ':active': colors.bg,\n },\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n addonDisabled: {\n opacity: 0.4,\n cursor: 'not-allowed',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import type {ReactNode} from 'react'\nimport {useMemo} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {InputGroupContext} from './InputGroupContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useMemo(() => ({inGroup: true}), [])\n\n return (\n <InputGroupContext.Provider value={ctx}>\n <html.div style={styles.wrapper}>{children}</html.div>\n </InputGroupContext.Provider>\n )\n}\n\n// --- Addon ---\nconst dynamicStyles = css.create({\n minWidth: (value: number | string) => ({minWidth: value}),\n})\n\ninterface AddonProps {\n position?: 'start' | 'end'\n onClick?: () => void\n disabled?: boolean\n /** Optional minimum width to prevent layout shift (e.g. Copy → Copied!) */\n minWidth?: number | string\n children: ReactNode\n}\n\nfunction Addon({position = 'end', onClick, disabled, minWidth, children}: AddonProps) {\n const positionStyle = position === 'start' ? styles.addonStart : styles.addonEnd\n const style = [\n styles.addon,\n isNative && styles.nativeFlex,\n positionStyle,\n onClick && !disabled && styles.addonClickable,\n disabled && styles.addonDisabled,\n minWidth != null && dynamicStyles.minWidth(minWidth),\n ]\n\n if (onClick) {\n return (\n <html.button type=\"button\" onClick={onClick} disabled={disabled} style={style}>\n {children}\n </html.button>\n )\n }\n\n return <html.span style={style}>{children}</html.span>\n}\n\nexport const InputGroup = {\n Root,\n Addon,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n cursor: 'pointer',\n textDecoration: 'none',\n transitionProperty: 'background-color, border-color, color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n color: colors.textMuted,\n },\n fullWidth: {\n width: '100%',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type LinkButtonVariant = 'primary' | 'secondary'\nexport type LinkButtonSize = 'default' | 'small'\n\ninterface LinkButtonProps {\n href: string\n variant?: LinkButtonVariant\n size?: LinkButtonSize\n fullWidth?: boolean\n target?: '_blank' | '_self'\n rel?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function LinkButton({\n href,\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n target,\n rel,\n children,\n}: LinkButtonProps) {\n return (\n <html.a\n href={href}\n target={target}\n rel={rel}\n style={[styles.base, sizeMap[size], styles[variant], fullWidth && styles.fullWidth]}\n >\n {children}\n </html.a>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: colors.bgCard,\n },\n bordered: {\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n gap: spacing.md,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n\n body: {\n flex: 1,\n overflowY: 'auto',\n // Minimal inset prevents child borders from touching panel structural borders\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n },\n bodyPadded: {\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n },\n\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Adds an outer border. Default: false */\n bordered?: boolean\n}\n\nfunction Root({children, bordered = false}: RootProps) {\n return <html.div style={[styles.root, bordered && styles.bordered]}>{children}</html.div>\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Body ---\n\ninterface BodyProps {\n children: ReactNode\n /** Adds inner padding. Default: true */\n padded?: boolean\n}\n\nfunction Body({children, padded = true}: BodyProps) {\n return <html.div style={[styles.body, padded && styles.bodyPadded]}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Export ---\n\nexport const Panel = {\n Root,\n Header,\n Body,\n Footer,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n rootHorizontal: {\n flexDirection: 'row',\n },\n item: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n itemDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n circle: {\n width: 18,\n height: 18,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.full,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n transitionProperty: 'background-color, border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n circleUnchecked: {\n backgroundColor: colors.bg,\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n circleChecked: {\n backgroundColor: colors.bg,\n borderColor: colors.accent,\n },\n dot: {\n width: 8,\n height: 8,\n borderRadius: radii.full,\n backgroundColor: colors.accent,\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n})\n","import {type ReactNode, createContext, useContext, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ninterface RadioGroupContextValue {\n value: string\n onSelect: (value: string) => void\n disabled: boolean\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null)\n\nfunction useRadioGroup() {\n const ctx = useContext(RadioGroupContext)\n if (!ctx) {\n throw new Error('RadioGroup.Item must be used within RadioGroup.Root')\n }\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Root({\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n orientation = 'vertical',\n disabled = false,\n children,\n}: RootProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const onSelect = useCallback(\n (itemValue: string) => {\n if (!disabled) {\n setValue(itemValue)\n }\n },\n [disabled, setValue],\n )\n\n return (\n <RadioGroupContext.Provider value={{value, onSelect, disabled}}>\n <html.div\n role=\"radiogroup\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'horizontal' && styles.rootHorizontal]}\n >\n {children}\n </html.div>\n </RadioGroupContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Item({value, disabled: itemDisabled = false, children}: ItemProps) {\n const {value: groupValue, onSelect, disabled: groupDisabled} = useRadioGroup()\n const isChecked = groupValue === value\n const isDisabled = groupDisabled || itemDisabled\n\n const handleClick = () => {\n if (!isDisabled) {\n onSelect(value)\n }\n }\n\n return (\n <html.label style={[styles.item, isDisabled && styles.itemDisabled]} onClick={handleClick}>\n <html.input\n type=\"radio\"\n value={value}\n checked={isChecked}\n disabled={isDisabled}\n onChange={() => onSelect(value)}\n style={styles.input}\n />\n <html.span\n style={[styles.circle, isChecked ? styles.circleChecked : styles.circleUnchecked]}\n aria-hidden\n >\n {isChecked && <html.span style={styles.dot} />}\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n\nexport const RadioGroup = {\n Root,\n Item,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n overflow: 'hidden',\n },\n viewport: {\n width: '100%',\n height: '100%',\n overflowX: 'auto',\n overflowY: 'auto',\n // Hide native scrollbar\n scrollbarWidth: 'none',\n },\n content: {\n minWidth: '100%',\n minHeight: '100%',\n },\n scrollbar: {\n position: 'absolute',\n zIndex: 1,\n display: 'flex',\n touchAction: 'none',\n userSelect: 'none',\n transitionProperty: 'opacity',\n transitionDuration: duration.base,\n transitionTimingFunction: easing.standard,\n },\n scrollbarVertical: {\n top: 0,\n right: 0,\n bottom: 0,\n width: 8,\n flexDirection: 'column',\n paddingTop: 2,\n paddingBottom: 2,\n paddingRight: 2,\n },\n scrollbarHorizontal: {\n left: 0,\n right: 0,\n bottom: 0,\n height: 8,\n flexDirection: 'row',\n paddingLeft: 2,\n paddingRight: 2,\n paddingBottom: 2,\n },\n scrollbarHidden: {\n opacity: 0,\n },\n scrollbarVisible: {\n opacity: 1,\n },\n thumb: {\n position: 'relative',\n flex: 1,\n backgroundColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.full,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n // Dynamic styles — simple identifier params only (StyleX constraint)\n viewportMaxHeight: (maxHeight: number | string) => ({\n maxHeight,\n }),\n thumbVertical: (height: string, transform: string) => ({\n height,\n transform,\n }),\n thumbHorizontal: (width: string, transform: string) => ({\n width,\n transform,\n }),\n})\n","import {createContext, useContext} from 'react'\n\nexport interface ScrollAreaContextValue {\n viewportRef: React.RefObject<HTMLDivElement | null>\n contentRef: React.RefObject<HTMLDivElement | null>\n viewportId: string\n scrollTop: number\n scrollLeft: number\n scrollHeight: number\n scrollWidth: number\n clientHeight: number\n clientWidth: number\n scrolling: boolean\n}\n\nexport const ScrollAreaContext = createContext<ScrollAreaContextValue | null>(null)\n\nexport function useScrollArea() {\n const ctx = useContext(ScrollAreaContext)\n if (!ctx) throw new Error('ScrollArea compound components must be used within ScrollArea.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useEffect, useId} from 'react'\nimport type {ScrollAreaContextValue} from './ScrollAreaContext'\n\nexport function useScrollAreaRoot(): ScrollAreaContextValue {\n const viewportId = useId()\n const viewportRef = useRef<HTMLDivElement | null>(null)\n const contentRef = useRef<HTMLDivElement | null>(null)\n const [scrollTop, setScrollTop] = useState(0)\n const [scrollLeft, setScrollLeft] = useState(0)\n const [scrollHeight, setScrollHeight] = useState(0)\n const [scrollWidth, setScrollWidth] = useState(0)\n const [clientHeight, setClientHeight] = useState(0)\n const [clientWidth, setClientWidth] = useState(0)\n const [scrolling, setScrolling] = useState(false)\n const scrollTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const handleScroll = useCallback(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n setScrollTop(vp.scrollTop)\n setScrollLeft(vp.scrollLeft)\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n setScrolling(true)\n\n if (scrollTimerRef.current) clearTimeout(scrollTimerRef.current)\n scrollTimerRef.current = setTimeout(() => setScrolling(false), 1000)\n }, [])\n\n // Observe viewport size changes\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n const observer = new ResizeObserver(() => {\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n })\n observer.observe(vp)\n // Initial measurement\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n\n return () => observer.disconnect()\n }, [])\n\n // Attach scroll listener directly to ensure we capture it\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n vp.addEventListener('scroll', handleScroll, {passive: true})\n return () => vp.removeEventListener('scroll', handleScroll)\n }, [handleScroll])\n\n return {\n viewportRef,\n contentRef,\n viewportId,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n scrolling,\n }\n}\n","import {type ReactNode, useRef, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {ScrollAreaContext, useScrollArea} from './ScrollAreaContext'\nimport {useScrollAreaRoot} from './useScrollAreaRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useScrollAreaRoot()\n\n return (\n <ScrollAreaContext.Provider value={ctx}>\n <html.div style={styles.root}>{children}</html.div>\n </ScrollAreaContext.Provider>\n )\n}\n\n// --- Viewport ---\n\ninterface ViewportProps {\n children: ReactNode\n maxHeight?: number | string\n}\n\nfunction Viewport({children, maxHeight}: ViewportProps) {\n const {viewportRef, viewportId} = useScrollArea()\n\n return (\n <html.div\n ref={viewportRef}\n id={viewportId}\n tabIndex={0}\n role=\"region\"\n aria-label=\"Scrollable content\"\n style={[styles.viewport, maxHeight != null && styles.viewportMaxHeight(maxHeight)]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Content ---\n\ninterface ContentProps {\n children: ReactNode\n}\n\nfunction Content({children}: ContentProps) {\n const {contentRef} = useScrollArea()\n return (\n <html.div ref={contentRef} style={styles.content}>\n {children}\n </html.div>\n )\n}\n\n// --- Scrollbar ---\n\ntype ScrollbarOrientation = 'vertical' | 'horizontal'\n\ninterface ScrollbarProps {\n orientation?: ScrollbarOrientation\n children: ReactNode\n}\n\nfunction Scrollbar({orientation = 'vertical', children}: ScrollbarProps) {\n const {\n viewportId,\n scrolling,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n } = useScrollArea()\n\n // Hide scrollbar when content fits\n const hasOverflow =\n orientation === 'vertical' ? scrollHeight > clientHeight : scrollWidth > clientWidth\n\n if (!hasOverflow) return null\n\n const isVertical = orientation === 'vertical'\n const maxScroll = isVertical ? scrollHeight - clientHeight : scrollWidth - clientWidth\n const scrollOffset = isVertical ? scrollTop : scrollLeft\n const valueNow = maxScroll > 0 ? Math.round((scrollOffset / maxScroll) * 100) : 0\n\n return (\n <html.div\n role=\"scrollbar\"\n aria-controls={viewportId}\n aria-orientation={orientation}\n aria-valuenow={valueNow}\n aria-valuemin={0}\n aria-valuemax={100}\n style={[\n styles.scrollbar,\n isVertical ? styles.scrollbarVertical : styles.scrollbarHorizontal,\n scrolling ? styles.scrollbarVisible : styles.scrollbarHidden,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Thumb ---\n\ninterface ThumbProps {\n orientation?: ScrollbarOrientation\n}\n\nfunction Thumb({orientation = 'vertical'}: ThumbProps) {\n const {viewportRef, scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth} =\n useScrollArea()\n const draggingRef = useRef(false)\n const startPosRef = useRef(0)\n const startScrollRef = useRef(0)\n\n const isVertical = orientation === 'vertical'\n\n const thumbSizePercent = isVertical\n ? Math.max((clientHeight / scrollHeight) * 100, 10)\n : Math.max((clientWidth / scrollWidth) * 100, 10)\n\n const maxScroll = isVertical ? scrollHeight - clientHeight : scrollWidth - clientWidth\n const trackSize = isVertical ? clientHeight : clientWidth\n const thumbPixelSize = (thumbSizePercent / 100) * trackSize\n const scrollOffset = isVertical ? scrollTop : scrollLeft\n const thumbOffset = maxScroll > 0 ? (scrollOffset / maxScroll) * (trackSize - thumbPixelSize) : 0\n\n const thumbStyle = isVertical\n ? styles.thumbVertical(`${thumbSizePercent}%`, `translateY(${thumbOffset}px)`)\n : styles.thumbHorizontal(`${thumbSizePercent}%`, `translateX(${thumbOffset}px)`)\n\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault()\n draggingRef.current = true\n startPosRef.current = isVertical ? e.clientY : e.clientX\n startScrollRef.current = isVertical\n ? (viewportRef.current?.scrollTop ?? 0)\n : (viewportRef.current?.scrollLeft ?? 0)\n ;(e.target as HTMLElement).setPointerCapture(e.pointerId)\n },\n [isVertical, viewportRef],\n )\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent) => {\n if (!draggingRef.current) return\n const vp = viewportRef.current\n if (!vp) return\n\n const delta = (isVertical ? e.clientY : e.clientX) - startPosRef.current\n const scrollRatio = maxScroll / (trackSize - thumbPixelSize)\n const scrollDelta = delta * scrollRatio\n\n if (isVertical) {\n vp.scrollTop = startScrollRef.current + scrollDelta\n } else {\n vp.scrollLeft = startScrollRef.current + scrollDelta\n }\n },\n [isVertical, maxScroll, trackSize, thumbPixelSize, viewportRef],\n )\n\n const handlePointerUp = useCallback(() => {\n draggingRef.current = false\n }, [])\n\n return (\n <html.div\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n style={[styles.thumb, thumbStyle]}\n />\n )\n}\n\nexport const ScrollArea = {\n Root,\n Viewport,\n Content,\n Scrollbar,\n Thumb,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n inputWrapper: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n borderRadius: radii.sm,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n },\n inputWrapperFocused: {\n borderColor: colors.accent,\n },\n input: {\n flex: 1,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: 'transparent',\n borderWidth: 0,\n outline: 'none',\n minWidth: 0,\n },\n trigger: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n backgroundColor: 'transparent',\n borderWidth: 0,\n color: colors.textMuted,\n cursor: 'pointer',\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n // Position is `fixed` and the top/left/width are applied inline by Popup\n // (computed from the root's bounding rect) so the dropdown can escape any\n // ancestor with `overflow: hidden` or `transform` (e.g. inside a Dialog).\n position: 'fixed',\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n maxHeight: 200,\n overflowY: 'auto',\n // Re-enable pointer events: the portal mount is pointer-events: none so\n // clicks fall through except on the popup itself.\n pointerEvents: 'auto',\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n itemSelected: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n itemHidden: {\n display: 'none',\n },\n empty: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n },\n hidden: {\n display: 'none',\n },\n // Dynamic position — applied at runtime from the input's bounding rect.\n popupPosition: (top: number, left: number, width: number) => ({\n top,\n left,\n width,\n }),\n})\n","import {createContext, useContext} from 'react'\n\nexport interface ComboboxContextValue {\n open: boolean\n openPopup: () => void\n close: () => void\n value: string | null\n setValue: (value: string) => void\n inputValue: string\n setInputValue: (value: string) => void\n labels: Record<string, string>\n registerLabel: (value: string, label: string) => void\n listboxId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, value: string, element: HTMLElement) => () => void\n inputRef: React.RefObject<HTMLInputElement | null>\n rootRef: React.RefObject<HTMLDivElement | null>\n}\n\nexport const ComboboxContext = createContext<ComboboxContextValue | null>(null)\n\nexport function useCombobox() {\n const ctx = useContext(ComboboxContext)\n if (!ctx) throw new Error('Combobox compound components must be used within Combobox.Root')\n return ctx\n}\n","import {useState, useCallback, useMemo, useRef, useId, useEffect} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {ComboboxContextValue} from './ComboboxContext'\n\ninterface UseComboboxRootOptions {\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n inputValue?: string\n onInputChange?: (value: string) => void\n initialLabels?: Record<string, string>\n}\n\nexport function useComboboxRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\n inputValue: controlledInputValue,\n onInputChange,\n initialLabels,\n}: UseComboboxRootOptions) {\n const [value, setValue] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange,\n )\n // Seed the visible text from the initially-selected value's label, so a\n // defaultValue/value shows its label on mount — and so the reconcile effect\n // below doesn't see \"value set but input empty\" and wipe the selection.\n const [internalInputValue, setInternalInputValue] = useState<string>(() => {\n const initial = controlledValue ?? defaultValue\n return initial ? (initialLabels?.[initial] ?? '') : ''\n })\n const inputValue = controlledInputValue !== undefined ? controlledInputValue : internalInputValue\n const setInputValue = useCallback(\n (v: string) => {\n if (controlledInputValue === undefined) setInternalInputValue(v)\n onInputChange?.(v)\n },\n [controlledInputValue, onInputChange],\n )\n\n const [open, setOpen] = useState(false)\n const [labels, setLabels] = useState<Record<string, string>>(initialLabels ?? {})\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const listboxId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const itemsRef = useRef(new Map<string, {value: string; element: HTMLElement}>())\n const orderRef = useRef<string[]>([])\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n }, [])\n\n const openPopup = useCallback(() => {\n setOpen(true)\n // Highlight the selected item or first visible item\n const items = itemsRef.current\n const order = orderRef.current\n let found: string | null = null\n for (const id of order) {\n const item = items.get(id)\n if (item && item.value === value) {\n found = id\n break\n }\n }\n setHighlightedId(found ?? (order.length > 0 ? order[0] : null))\n }, [value])\n\n const selectValue = useCallback(\n (itemValue: string) => {\n setValue(itemValue)\n // Set input to show the selected label\n const label = labels[itemValue] ?? itemValue\n setInputValue(label)\n close()\n inputRef.current?.focus()\n },\n [setValue, labels, setInputValue, close],\n )\n\n const registerLabel = useCallback((v: string, label: string) => {\n setLabels((prev) => {\n if (prev[v] === label) return prev\n return {...prev, [v]: label}\n })\n }, [])\n\n const registerItem = useCallback((id: string, itemValue: string, element: HTMLElement) => {\n itemsRef.current.set(id, {value: itemValue, element})\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)?.element\n const elB = map.get(b)?.element\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Get visible items (those matching the filter)\n const getVisibleOrder = useCallback(() => {\n const query = inputValue.toLowerCase()\n if (!query) return orderRef.current\n return orderRef.current.filter((id) => {\n const item = itemsRef.current.get(id)\n if (!item) return false\n const label = labels[item.value] ?? item.value\n return label.toLowerCase().includes(query)\n })\n }, [inputValue, labels])\n\n // Keyboard navigation\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const visibleOrder = getVisibleOrder()\n if (visibleOrder.length === 0 && e.key !== 'Escape' && e.key !== 'Tab') return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n if (!open) {\n setOpen(true)\n return\n }\n setHighlightedId((prev) => {\n const idx = prev ? visibleOrder.indexOf(prev) : -1\n return visibleOrder[(idx + 1) % visibleOrder.length] ?? null\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? visibleOrder.indexOf(prev) : 0\n return visibleOrder[(idx - 1 + visibleOrder.length) % visibleOrder.length] ?? null\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(visibleOrder[0] ?? null)\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(visibleOrder[visibleOrder.length - 1] ?? null)\n break\n }\n case 'Enter': {\n e.preventDefault()\n setHighlightedId((prev) => {\n if (prev) {\n const item = itemsRef.current.get(prev)\n if (item) selectValue(item.value)\n } else if (!inputValue.trim()) {\n // Empty input + Enter = clear selection (reset to \"All\")\n selectValue('')\n }\n return prev\n })\n break\n }\n case 'Escape': {\n e.preventDefault()\n close()\n inputRef.current?.focus()\n break\n }\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close, selectValue, getVisibleOrder])\n\n // Scroll highlighted item into view\n useEffect(() => {\n if (!highlightedId) return\n const item = itemsRef.current.get(highlightedId)\n item?.element.scrollIntoView({block: 'nearest'})\n }, [highlightedId])\n\n // Reconcile input text with the committed value once the popup closes.\n // Three cases when transitioning from open → closed:\n // - inputValue is empty: user cleared the field, treat that as\n // \"remove the selection\" so the consumer's onValueChange fires\n // with null and downstream UI (e.g. dependent fields) can reset.\n // - inputValue doesn't match the selected label: user typed something\n // but didn't pick anything; restore the label so the visible text\n // and the committed value stay consistent.\n // - inputValue equals the selected label: nothing to do.\n useEffect(() => {\n if (open) return\n // Treat an empty value (null OR '') as \"no selection\" — nothing to\n // reconcile. Without this, a controlled value=\"\" (e.g. a table column\n // filter) fires setValue(null) every render → inline onValueChange →\n // parent state change → re-render → infinite \"Maximum update depth\" loop.\n if (!value) return\n if (inputValue === '') {\n setValue(null)\n return\n }\n if (labels[value] && inputValue !== labels[value]) {\n setInputValue(labels[value])\n }\n }, [open, value, labels, inputValue, setInputValue, setValue])\n\n const ctx: ComboboxContextValue = useMemo(\n () => ({\n open,\n openPopup,\n close,\n value,\n setValue: selectValue,\n inputValue,\n setInputValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n inputRef,\n rootRef,\n }),\n [\n open,\n openPopup,\n close,\n value,\n selectValue,\n inputValue,\n setInputValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n ],\n )\n\n return {ctx, rootRef}\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const lightTheme = css.createTheme(colors, {\n bg: '#ffffff',\n bgCard: '#f5f5f5',\n bgCardHover: '#ebebeb',\n text: '#1a1a1a',\n textMuted: '#4a4a4a',\n accent: '#1e40af',\n accentHover: '#1a3799',\n accentContrast: '#ffffff',\n border: '#d4d4d4',\n error: '#991b1b',\n errorHover: '#7f1d1d',\n errorBg: 'rgba(153, 27, 27, 0.08)',\n errorBorder: 'rgba(153, 27, 27, 0.3)',\n errorText: '#7f1d1d',\n errorContrast: '#ffffff',\n success: '#166534',\n successBg: 'rgba(22, 101, 52, 0.08)',\n successBorder: 'rgba(22, 101, 52, 0.3)',\n successText: '#14532d',\n warning: '#92400e',\n warningBg: 'rgba(146, 64, 14, 0.08)',\n warningBorder: 'rgba(146, 64, 14, 0.3)',\n warningText: '#78350f',\n info: '#1e40af',\n infoBg: 'rgba(30, 64, 175, 0.08)',\n infoBorder: 'rgba(30, 64, 175, 0.3)',\n infoText: '#1e40af',\n})\n\nexport const lightShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.08)',\n md: '0 4px 12px rgba(0, 0, 0, 0.12)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.16)',\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const highContrastTheme = css.createTheme(colors, {\n bg: '#000000',\n bgCard: '#111111',\n bgCardHover: '#1a1a1a',\n text: '#ffffff',\n textMuted: '#b0b0b0',\n accent: '#60a5fa',\n accentHover: '#93c5fd',\n accentContrast: '#000000',\n border: '#555555',\n error: '#f87171',\n errorHover: '#fca5a5',\n errorBg: 'rgba(248, 113, 113, 0.15)',\n errorBorder: 'rgba(248, 113, 113, 0.5)',\n errorText: '#fca5a5',\n errorContrast: '#000000',\n success: '#4ade80',\n successBg: 'rgba(74, 222, 128, 0.15)',\n successBorder: 'rgba(74, 222, 128, 0.5)',\n successText: '#86efac',\n warning: '#fcd34d',\n warningBg: 'rgba(252, 211, 77, 0.15)',\n warningBorder: 'rgba(252, 211, 77, 0.5)',\n warningText: '#fef08a',\n info: '#60a5fa',\n infoBg: 'rgba(96, 165, 250, 0.15)',\n infoBorder: 'rgba(96, 165, 250, 0.5)',\n infoText: '#bfdbfe',\n})\n\nexport const highContrastShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.6)',\n md: '0 4px 12px rgba(0, 0, 0, 0.7)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.8)',\n})\n","import {createContext, type ReactNode, useContext, useState} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {lightTheme, lightShadows} from '@duro-app/tokens/themes/light.css'\nimport {highContrastTheme, highContrastShadows} from '@duro-app/tokens/themes/high-contrast.css'\n\nexport type ThemeName = 'dark' | 'light' | 'high-contrast'\n\ninterface ThemeProviderProps {\n theme?: ThemeName\n children: ReactNode\n}\n\nconst themeMap: Partial<Record<ThemeName, readonly [typeof lightTheme, typeof lightShadows]>> = {\n light: [lightTheme, lightShadows],\n 'high-contrast': [highContrastTheme, highContrastShadows],\n}\n\nconst styles = css.create({\n root: {\n display: 'contents',\n color: colors.text,\n },\n // Sibling overlay where floating popups (Combobox, Menu, Tooltip) portal to.\n // Lives inside ThemeProvider so theme tokens cascade. Fixed + inset 0 so\n // popups can position freely with viewport coords; pointer-events: none lets\n // clicks fall through except where children re-enable them.\n portalMount: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n pointerEvents: 'none',\n // Above Dialog (1001) so popups inside dialogs render on top.\n zIndex: 1100,\n },\n})\n\n// react-strict-dom's style prop rejects Theme<VarGroup<{named keys}>> because the\n// concrete VarGroup lacks the generic index signature. This is a known typing gap.\ntype DivStyle = Parameters<typeof html.div>[0]['style']\n\nconst PortalMountContext = createContext<HTMLElement | null>(null)\n\nexport function usePortalMount(): HTMLElement | null {\n return useContext(PortalMountContext)\n}\n\nexport function ThemeProvider({theme = 'dark', children}: ThemeProviderProps) {\n const overrides = themeMap[theme]\n const themeStyles = [overrides?.[0], overrides?.[1], styles.root] as DivStyle\n const [mount, setMount] = useState<HTMLElement | null>(null)\n\n return (\n <html.div data-theme={theme} style={themeStyles}>\n <PortalMountContext.Provider value={mount}>{children}</PortalMountContext.Provider>\n <html.div ref={setMount} data-portal-mount style={styles.portalMount} />\n </html.div>\n )\n}\n","import {type ReactNode, useRef, useId, useEffect, useLayoutEffect, useState} from 'react'\nimport {createPortal} from 'react-dom'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {ComboboxContext, useCombobox} from './ComboboxContext'\nimport {useComboboxRoot} from './useComboboxRoot'\nimport {usePortalMount} from '../ThemeProvider/ThemeProvider'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n inputValue?: string\n onInputChange?: (value: string) => void\n initialLabels?: Record<string, string>\n children: ReactNode\n}\n\nfunction Root({\n name,\n defaultValue,\n value,\n onValueChange,\n inputValue,\n onInputChange,\n initialLabels,\n children,\n}: RootProps) {\n const {ctx, rootRef} = useComboboxRoot({\n defaultValue,\n value,\n onValueChange,\n inputValue,\n onInputChange,\n initialLabels,\n })\n\n return (\n <ComboboxContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {name && <html.input type=\"hidden\" name={name} value={ctx.value ?? ''} />}\n {children}\n </html.div>\n </ComboboxContext.Provider>\n )\n}\n\n// --- Input ---\nfunction Input({placeholder, children}: {placeholder?: string; children?: ReactNode}) {\n const {open, openPopup, close, inputValue, setInputValue, listboxId, highlightedId, inputRef} =\n useCombobox()\n const localRef = useRef<HTMLInputElement>(null)\n const [focused, setFocused] = useState(false)\n\n useEffect(() => {\n inputRef.current = localRef.current\n })\n\n return (\n <html.div style={[styles.inputWrapper, focused && styles.inputWrapperFocused]}>\n <html.input\n ref={localRef}\n type=\"text\"\n role={'combobox' as 'listbox'}\n value={inputValue}\n placeholder={placeholder}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={highlightedId ?? undefined}\n aria-autocomplete={'list' as 'none'}\n autoComplete=\"off\"\n style={styles.input}\n onFocus={() => {\n setFocused(true)\n openPopup()\n }}\n onBlur={() => {\n setFocused(false)\n // Delay close to allow item click to register\n setTimeout(close, 150)\n }}\n onChange={(e: any) => {\n setInputValue(e.target.value)\n if (!open) openPopup()\n }}\n />\n {children}\n </html.div>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({children}: {children?: ReactNode}) {\n const {open, openPopup, close, inputRef} = useCombobox()\n\n return (\n <html.button\n type=\"button\"\n tabIndex={-1}\n aria-label={open ? 'Close' : 'Open'}\n onClick={() => {\n if (open) {\n close()\n } else {\n openPopup()\n }\n inputRef.current?.focus()\n }}\n style={styles.trigger}\n >\n {children ?? (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n )}\n </html.button>\n )\n}\n\n// --- Popup ---\n// Rendered into the ThemeProvider portal mount and positioned with viewport\n// coordinates so it escapes ancestor `overflow: hidden` / `transform`\n// containing blocks (notably Dialog and Drawer).\nfunction Popup({children}: {children: ReactNode}) {\n const {open, listboxId, rootRef} = useCombobox()\n const mount = usePortalMount()\n const [coords, setCoords] = useState<{top: number; left: number; width: number} | null>(null)\n\n // Measure the root each time the popup opens, and re-measure on scroll/resize\n // so the dropdown follows the input. Capture-phase scroll listener catches\n // scroll on any ancestor (e.g. Dialog body).\n useLayoutEffect(() => {\n if (!open) {\n setCoords(null)\n return\n }\n const update = () => {\n const el = rootRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n // Position immediately below the input with a small gap. `xs` token = 4px.\n setCoords({top: rect.bottom + 4, left: rect.left, width: rect.width})\n }\n update()\n window.addEventListener('resize', update)\n window.addEventListener('scroll', update, true)\n return () => {\n window.removeEventListener('resize', update)\n window.removeEventListener('scroll', update, true)\n }\n }, [open, rootRef])\n\n if (!open || !coords) return null\n\n const node = (\n <html.div\n id={listboxId}\n role=\"listbox\"\n style={[styles.popup, styles.popupPosition(coords.top, coords.left, coords.width)]}\n >\n {children}\n </html.div>\n )\n\n // SSR / pre-mount fallback: render inline (will be invisible under\n // overflow:hidden parents but won't crash). Once the mount is available,\n // portal into it.\n return mount ? createPortal(node, mount) : node\n}\n\n// --- Item ---\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value: itemValue, children}: ItemProps) {\n const {\n value: selectedValue,\n setValue,\n inputValue,\n labels,\n registerLabel,\n highlightedId,\n setHighlightedId,\n registerItem,\n } = useCombobox()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isSelected = selectedValue === itemValue\n const isHighlighted = highlightedId === id\n\n // Filter: check if this item matches the input\n const label = labels[itemValue] ?? itemValue\n const query = inputValue.toLowerCase()\n const isVisible = !query || label.toLowerCase().includes(query)\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n const text = el.textContent\n if (text) registerLabel(itemValue, text)\n }, [itemValue, registerLabel])\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, itemValue, el)\n }, [id, itemValue, registerItem])\n\n if (!isVisible) return null\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n onClick={() => setValue(itemValue)}\n onPointerEnter={() => setHighlightedId(id)}\n style={[\n styles.item,\n isSelected && styles.itemSelected,\n isHighlighted && styles.itemHighlighted,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- ItemText ---\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.span>{children}</html.span>\n}\n\n// --- Empty ---\nfunction Empty({children}: {children: ReactNode}) {\n const {open, inputValue, labels} = useCombobox()\n\n if (!open) return null\n\n // Check if any items are visible\n const query = inputValue.toLowerCase()\n const hasVisibleItems = query\n ? Object.values(labels).some((label) => label.toLowerCase().includes(query))\n : true\n\n if (hasVisibleItems) return null\n\n return <html.div style={styles.empty}>{children}</html.div>\n}\n\nexport const Combobox = {\n Root,\n Input,\n Trigger,\n Popup,\n Item,\n ItemText,\n Empty,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n },\n value: {\n color: colors.text,\n },\n placeholder: {\n color: colors.textMuted,\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n color: colors.textMuted,\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n // The portal mount is pointer-events: none, so re-enable here to catch\n // outside clicks that close the popup.\n pointerEvents: 'auto',\n },\n popup: {\n // Position is `fixed` and top/left/minWidth are applied inline by Popup\n // (computed from the trigger's bounding rect) so the dropdown escapes any\n // ancestor with `overflow: hidden` / `transform` (notably inside a Dialog).\n position: 'fixed',\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 120,\n maxHeight: 280,\n overflowY: 'auto',\n zIndex: 50,\n // Re-enable pointer events: the portal mount is pointer-events: none.\n pointerEvents: 'auto',\n },\n popupPosition: (top: number, left: number, minWidth: number) => ({\n top,\n left,\n minWidth,\n }),\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n itemSelected: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n hidden: {\n display: 'none',\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SelectContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n value: string | null\n setValue: (value: string) => void\n labels: Record<string, string>\n registerLabel: (value: string, label: string) => void\n listboxId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, value: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const SelectContext = createContext<SelectContextValue | null>(null)\n\nexport function useSelect() {\n const ctx = useContext(SelectContext)\n if (!ctx) throw new Error('Select compound components must be used within Select.Root')\n return ctx\n}\n","import {useState, useCallback, useMemo, useRef, useId, useEffect} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {SelectContextValue} from './SelectContext'\n\ninterface UseSelectRootOptions {\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n}\n\nexport function useSelectRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\n initialLabels,\n}: UseSelectRootOptions) {\n const [value, setValue] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange,\n )\n const [open, setOpen] = useState(false)\n const [labels, setLabels] = useState<Record<string, string>>(initialLabels ?? {})\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const listboxId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, {value: string; element: HTMLElement}>())\n const orderRef = useRef<string[]>([])\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n const items = itemsRef.current\n const order = orderRef.current\n let found: string | null = null\n for (const id of order) {\n const item = items.get(id)\n if (item && item.value === value) {\n found = id\n break\n }\n }\n setHighlightedId(found ?? (order.length > 0 ? order[0] : null))\n } else {\n setHighlightedId(null)\n }\n return !prev\n })\n }, [value])\n\n const registerLabel = useCallback((v: string, label: string) => {\n setLabels((prev) => {\n if (prev[v] === label) return prev\n return {...prev, [v]: label}\n })\n }, [])\n\n const registerItem = useCallback((id: string, itemValue: string, element: HTMLElement) => {\n itemsRef.current.set(id, {value: itemValue, element})\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)?.element\n const elB = map.get(b)?.element\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n const items = itemsRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n setHighlightedId((prev) => {\n if (prev) {\n const item = items.get(prev)\n if (item) {\n setValue(item.value)\n close()\n }\n }\n return prev\n })\n break\n }\n case 'Escape':\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close, setValue])\n\n const ctx: SelectContextValue = useMemo(\n () => ({\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }),\n [\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n ],\n )\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect, useLayoutEffect, useState} from 'react'\nimport {createPortal} from 'react-dom'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {SelectContext, useSelect} from './SelectContext'\nimport {useSelectRoot} from './useSelectRoot'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {usePortalMount} from '../ThemeProvider/ThemeProvider'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n children: ReactNode\n}\n\nfunction Root({name, defaultValue, value, onValueChange, initialLabels, children}: RootProps) {\n const {ctx, rootRef} = useSelectRoot({defaultValue, value, onValueChange, initialLabels})\n\n return (\n <SelectContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {name && <html.input type=\"hidden\" name={name} value={ctx.value ?? ''} />}\n {children}\n </html.div>\n </SelectContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({\n children,\n 'aria-label': ariaLabel,\n}: {\n children: ReactNode\n 'aria-label'?: string\n}) {\n const {open, toggle, listboxId, highlightedId, triggerRef} = useSelect()\n const localRef = useRef<HTMLButtonElement>(null)\n // Inside a <Field.Root>, adopt its controlId so <Field.Label for={controlId}>\n // labels the trigger (a labelable <button>) — no manual aria-label needed; and\n // surface the field's description/error + invalid state, mirroring <Input>.\n const fieldCtx = useFieldContext()\n const describedBy = fieldCtx\n ? `${fieldCtx.descriptionId} ${fieldCtx.invalid ? fieldCtx.errorId : ''}`.trim()\n : undefined\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n return (\n <html.button\n ref={localRef}\n id={fieldCtx?.controlId}\n type=\"button\"\n role={'combobox' as 'listbox'}\n onClick={toggle}\n aria-label={ariaLabel}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={highlightedId ?? undefined}\n aria-describedby={describedBy || undefined}\n aria-invalid={fieldCtx?.invalid || undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Value ---\nfunction Value({placeholder}: {placeholder?: string}) {\n const {value, labels} = useSelect()\n const display = value ? (labels[value] ?? value) : null\n\n return (\n <html.span style={display ? styles.value : styles.placeholder}>\n {display ?? placeholder}\n </html.span>\n )\n}\n\n// --- Icon ---\nfunction Icon({children}: {children?: ReactNode}) {\n return (\n <html.span style={styles.icon}>\n {children ?? (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n )}\n </html.span>\n )\n}\n\n// --- Popup ---\n// Rendered into the ThemeProvider portal mount and positioned with viewport\n// coordinates (measured off the trigger) so it escapes ancestor\n// `overflow: hidden` / `transform` containing blocks (notably Dialog/Drawer).\n// The listbox stays mounted while closed (display: none) so Items can register\n// their labels from DOM text before the popup is ever opened.\nfunction Popup({children}: {children: ReactNode}) {\n const {open, close, listboxId, triggerRef} = useSelect()\n const mount = usePortalMount()\n const [coords, setCoords] = useState<{top: number; left: number; width: number} | null>(null)\n\n // Measure the trigger when the popup opens, and re-measure on scroll/resize so\n // the dropdown follows it. Capture-phase scroll catches scroll on any ancestor\n // (e.g. a Dialog body).\n useLayoutEffect(() => {\n if (!open) return\n const update = () => {\n const el = triggerRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n // `xs` token = 4px gap below the trigger.\n setCoords({top: rect.bottom + 4, left: rect.left, width: rect.width})\n }\n update()\n window.addEventListener('resize', update)\n window.addEventListener('scroll', update, true)\n return () => {\n window.removeEventListener('resize', update)\n window.removeEventListener('scroll', update, true)\n }\n }, [open, triggerRef])\n\n const node = (\n <>\n {open && <html.div style={styles.backdrop} onClick={close} />}\n <html.div\n id={listboxId}\n role=\"listbox\"\n aria-hidden={!open}\n style={[\n styles.popup,\n (!open || !coords) && styles.hidden,\n coords && styles.popupPosition(coords.top, coords.left, coords.width),\n ]}\n >\n {children}\n </html.div>\n </>\n )\n\n // SSR / pre-mount fallback: render inline (hidden under overflow parents but\n // won't crash). Once the mount exists, portal into it.\n return mount ? createPortal(node, mount) : node\n}\n\n// --- Item ---\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value: itemValue, children}: ItemProps) {\n const {\n value: selectedValue,\n setValue,\n close,\n registerLabel,\n highlightedId,\n setHighlightedId,\n registerItem,\n } = useSelect()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isSelected = selectedValue === itemValue\n const isHighlighted = highlightedId === id\n\n // Register label from DOM text content (works with both string and JSX children)\n useEffect(() => {\n const el = ref.current\n if (!el) return\n const text = el.textContent\n if (text) registerLabel(itemValue, text)\n }, [itemValue, registerLabel])\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, itemValue, el)\n }, [id, itemValue, registerItem])\n\n const handleClick = () => {\n setValue(itemValue)\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[\n styles.item,\n isSelected && styles.itemSelected,\n isHighlighted && styles.itemHighlighted,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- ItemText ---\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.span>{children}</html.span>\n}\n\nexport const Select = {\n Root,\n Trigger,\n Value,\n Icon,\n Popup,\n Item,\n ItemText,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 0,\n },\n group: {\n display: 'flex',\n flexDirection: 'column',\n },\n groupTrigger: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.xs,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n fontWeight: typography.fontWeightSemibold,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.05em',\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n cursor: 'pointer',\n transitionProperty: 'color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n groupTriggerActive: {\n color: colors.text,\n },\n chevron: {\n display: 'inline-flex',\n alignItems: 'center',\n transitionProperty: 'transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n chevronOpen: {\n transform: 'rotate(90deg)',\n },\n // The `role=\"group\"` wrapper around a Section's / an expanded Group's items.\n // Purely structural: it exists to carry the accessible name, so it must not\n // change how the items stack.\n items: {\n display: 'flex',\n flexDirection: 'column',\n },\n // Static (non-collapsible) section — see SideNav.Section.\n section: {\n display: 'flex',\n flexDirection: 'column',\n },\n sectionLabel: {\n paddingTop: spacing.md,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n fontWeight: typography.fontWeightSemibold,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.06em',\n color: colors.textMuted,\n },\n item: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: '6px',\n paddingBottom: '6px',\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightNormal,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 0,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'color, background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n textAlign: 'left' as const,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n },\n itemActive: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n backgroundColor: colors.bgCardHover,\n },\n // Active indicator — a bar at the rail's left edge that grows in on select.\n marker: {\n position: 'absolute',\n left: 0,\n top: '50%',\n width: '3px',\n height: 0,\n transform: 'translateY(-50%)',\n borderTopRightRadius: radii.full,\n borderBottomRightRadius: radii.full,\n backgroundColor: colors.accent,\n transitionProperty: 'height',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n markerActive: {\n height: '18px',\n },\n itemIcon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n width: '18px',\n height: '18px',\n },\n itemLabel: {\n flexGrow: 1,\n minWidth: 0,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SideNavContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n expandedGroups: Set<string>\n toggleGroup: (group: string) => void\n /** Idempotent expand (add-only) — used by auto-expand/defaultExpanded so a\n * group that qualifies twice (e.g. defaultExpanded AND holding the active\n * item) doesn't get toggled back closed. `toggleGroup` stays for user clicks. */\n expandGroup: (group: string) => void\n registerItem: (value: string) => () => void\n orderRef: React.RefObject<string[]>\n}\n\nexport const SideNavContext = createContext<SideNavContextValue | null>(null)\n\nexport function useSideNav() {\n const ctx = useContext(SideNavContext)\n if (!ctx) throw new Error('SideNav compound components must be used within SideNav.Root')\n return ctx\n}\n","import {type ReactNode, useState, useCallback, useRef, useEffect, useId} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {SideNavContext, useSideNav} from './SideNavContext'\n\n/**\n * SideNav has two ways to chunk a rail, and they are NOT interchangeable.\n *\n * `Section` — a labelled block that is always open. This is the DEFAULT for\n * primary navigation. A nav's job is to advertise where you can go; an\n * always-open list keeps the whole information architecture scannable and puts\n * every destination one click away. The uppercase label does the chunking work\n * on its own — you get the grouping benefit without hiding anything.\n *\n * `Group` — the same block behind a chevron (a disclosure). Collapsing costs\n * every destination inside it an extra click and hides it from scanning, so it\n * has to buy something back. It does when the region is:\n * • rare or advanced (\"Advanced\", \"Danger zone\", \"Legacy\") — disclose the\n * seldom-used, never the everyday;\n * • unbounded / data-driven (one entry per namespace, project, team) — you\n * cannot author-flatten a list whose length you don't control;\n * • one of many in a rail long enough (>~30 leaves) that a flat list stops\n * reading as an overview.\n * The healthy shape is a mix: flat Sections for the journey, one collapsed\n * Group at the bottom.\n *\n * Neither is a tree. Arbitrary-depth *data* browsing (a file tree, a\n * namespace → resource drill-down) needs `role=\"tree\"` with roving tabindex,\n * typeahead and aria-level — a different component, not a deeper SideNav.\n */\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n}\n\nfunction Root({children, value: controlledValue, defaultValue, onValueChange}: RootProps) {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const [expandedGroups, setExpandedGroups] = useState<Set<string>>(new Set())\n const orderRef = useRef<string[]>([])\n\n const toggleGroup = useCallback((group: string) => {\n setExpandedGroups((prev) => {\n const next = new Set(prev)\n if (next.has(group)) {\n next.delete(group)\n } else {\n next.add(group)\n }\n return next\n })\n }, [])\n\n // Idempotent expand — never closes an already-open group. The mount effects\n // in Group (defaultExpanded + auto-expand-active) use this instead of\n // toggleGroup so a group that qualifies on both counts stays open rather than\n // being toggled open-then-closed.\n const expandGroup = useCallback((group: string) => {\n setExpandedGroups((prev) => {\n if (prev.has(group)) return prev\n const next = new Set(prev)\n next.add(group)\n return next\n })\n }, [])\n\n const registerItem = useCallback((value: string) => {\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n return (\n <SideNavContext.Provider\n value={{\n activeValue,\n onSelect,\n expandedGroups,\n toggleGroup,\n expandGroup,\n registerItem,\n orderRef,\n }}\n >\n <html.nav role=\"navigation\" style={styles.root}>\n {children}\n </html.nav>\n </SideNavContext.Provider>\n )\n}\n\n// --- Group ---\n\ninterface GroupProps {\n children: ReactNode\n label: string\n groupKey?: string\n defaultExpanded?: boolean\n}\n\nfunction Group({children, label, groupKey, defaultExpanded}: GroupProps) {\n const key = groupKey ?? label\n const {expandedGroups, toggleGroup, expandGroup, activeValue} = useSideNav()\n const isExpanded = expandedGroups.has(key)\n const groupRef = useRef<HTMLDivElement>(null)\n const triggerId = useId()\n const panelId = useId()\n\n // Auto-expand if this group contains the active item. Uses expandGroup (not\n // toggleGroup) so it never races the defaultExpanded effect into a closed\n // state when the active item lives in a defaultExpanded group.\n useEffect(() => {\n if (!activeValue || expandedGroups.has(key)) return\n const el = groupRef.current\n if (!el) return\n const activeBtn = el.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n if (activeBtn) {\n expandGroup(key)\n }\n }, [activeValue, key, expandedGroups, expandGroup])\n\n // Expand on first render if defaultExpanded (idempotent add, not a toggle).\n useEffect(() => {\n if (defaultExpanded) {\n expandGroup(key)\n }\n // Only run on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const hasActiveChild = (() => {\n if (!activeValue || !groupRef.current) return false\n return !!groupRef.current.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n })()\n\n return (\n <html.div ref={groupRef} style={styles.group}>\n <html.button\n type=\"button\"\n id={triggerId}\n onClick={() => toggleGroup(key)}\n style={[styles.groupTrigger, hasActiveChild && styles.groupTriggerActive]}\n aria-expanded={isExpanded}\n aria-controls={isExpanded ? panelId : undefined}\n >\n <html.span style={[styles.chevron, isExpanded && styles.chevronOpen]}>\n <svg\n width={10}\n height={10}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n </html.span>\n {label}\n </html.button>\n {isExpanded ? (\n <html.div id={panelId} role=\"group\" aria-labelledby={triggerId} style={styles.items}>\n {children}\n </html.div>\n ) : null}\n </html.div>\n )\n}\n\n// --- Section ---\n\ninterface SectionProps {\n children: ReactNode\n label: string\n}\n\n/**\n * A static, non-collapsible grouping: an always-visible uppercase header with\n * its items below. Unlike `Group` there is no chevron, toggle, or hidden state.\n *\n * Reach for this first — see the note at the top of this file for when a\n * collapsible `Group` is the better call. The label is exposed as the group's\n * accessible name, so a screen reader announces \"Networking, group\" on the way\n * into its items instead of dropping the user into an undifferentiated run of\n * thirty buttons.\n */\nfunction Section({children, label}: SectionProps) {\n const labelId = useId()\n return (\n <html.div style={styles.section}>\n <html.div id={labelId} style={styles.sectionLabel}>\n {label}\n </html.div>\n <html.div role=\"group\" aria-labelledby={labelId} style={styles.items}>\n {children}\n </html.div>\n </html.div>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n children: ReactNode\n /** Optional leading glyph (e.g. a design-system `<Icon />`). Inherits the\n * item's text color, so it turns accent when the item is active. */\n icon?: ReactNode\n}\n\nfunction Item({value, children, icon}: ItemProps) {\n const {activeValue, onSelect, registerItem} = useSideNav()\n const isActive = activeValue === value\n\n useEffect(() => {\n return registerItem(value)\n }, [value, registerItem])\n\n return (\n <html.button\n type=\"button\"\n data-nav-value={value}\n onClick={() => onSelect(value)}\n style={[styles.item, isActive && styles.itemActive]}\n aria-current={isActive ? 'page' : undefined}\n >\n <html.span aria-hidden style={[styles.marker, isActive && styles.markerActive]} />\n {icon ? (\n <html.span aria-hidden style={styles.itemIcon}>\n {icon}\n </html.span>\n ) : null}\n <html.span style={styles.itemLabel}>{children}</html.span>\n </html.button>\n )\n}\n\nexport const SideNav = {\n Root,\n Group,\n Section,\n Item,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nconst spin = css.keyframes({\n '0%': {transform: 'rotate(0deg)'},\n '100%': {transform: 'rotate(360deg)'},\n})\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n spinner: {\n borderRadius: '50%',\n borderStyle: 'solid',\n borderColor: colors.border,\n borderTopColor: colors.accent,\n animationName: spin,\n animationDuration: '0.6s',\n animationTimingFunction: 'linear',\n animationIterationCount: 'infinite',\n },\n sm: {\n width: 16,\n height: 16,\n borderWidth: 2,\n },\n md: {\n width: 24,\n height: 24,\n borderWidth: 2,\n },\n lg: {\n width: 40,\n height: 40,\n borderWidth: 3,\n },\n srOnly: {\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n },\n})\n","import {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\n\ninterface SpinnerProps {\n size?: SpinnerSize\n label?: string\n}\n\nconst sizeMap = {\n sm: styles.sm,\n md: styles.md,\n lg: styles.lg,\n} as const\n\nexport function Spinner({size = 'md', label = 'Loading'}: SpinnerProps) {\n return (\n <html.div role=\"status\" style={styles.root}>\n <html.div style={[styles.spinner, sizeMap[size]]} aria-hidden />\n <html.span style={styles.srOnly}>{label}</html.span>\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {easing} from '@duro-app/tokens/tokens/motion.css'\n\nconst enter = css.keyframes({\n from: {opacity: 0, transform: 'translateY(10px)'},\n to: {opacity: 1, transform: 'translateY(0)'},\n})\n\nexport const styles = css.create({\n // Fixed, viewport-anchored stack. Portaled into the ThemeProvider mount so it\n // layers above dialogs; the container itself is click-through, each toast\n // re-enables pointer events.\n region: {\n position: 'fixed',\n bottom: spacing.lg,\n left: 0,\n right: 0,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n pointerEvents: 'none',\n },\n toast: {\n pointerEvents: 'auto',\n boxSizing: 'border-box',\n width: '100%',\n maxWidth: 440,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderLeftWidth: 3,\n backgroundColor: colors.bgCard,\n boxShadow: shadows.lg,\n color: colors.text,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n animationName: {\n default: enter,\n '@media (prefers-reduced-motion: reduce)': 'none',\n },\n animationDuration: '160ms',\n animationTimingFunction: easing.easeOut,\n },\n success: {borderLeftColor: colors.successBorder},\n error: {borderLeftColor: colors.errorBorder},\n info: {borderLeftColor: colors.infoBorder},\n\n iconWrap: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: 1,\n },\n iconSuccess: {color: colors.successText},\n iconError: {color: colors.errorText},\n iconInfo: {color: colors.infoText},\n\n content: {\n flex: 1,\n minWidth: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n },\n message: {\n color: colors.text,\n },\n action: {\n alignSelf: 'flex-start',\n marginTop: 2,\n padding: 0,\n borderWidth: 0,\n backgroundColor: 'transparent',\n color: colors.accent,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n textDecorationLine: 'underline',\n cursor: 'pointer',\n outlineStyle: {default: 'none', ':focus-visible': 'solid'},\n outlineWidth: 2,\n outlineColor: colors.accent,\n outlineOffset: 2,\n borderRadius: radii.sm,\n },\n closeBtn: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 2,\n marginTop: -1,\n borderWidth: 0,\n backgroundColor: 'transparent',\n color: {default: colors.textMuted, ':hover': colors.text},\n cursor: 'pointer',\n borderRadius: radii.sm,\n outlineStyle: {default: 'none', ':focus-visible': 'solid'},\n outlineWidth: 2,\n outlineColor: colors.accent,\n outlineOffset: 1,\n },\n})\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useSyncExternalStore,\n type ReactNode,\n} from 'react'\nimport {createPortal} from 'react-dom'\nimport {html} from 'react-strict-dom'\nimport {Icon, type IconName} from '../Icon'\nimport {usePortalMount} from '../ThemeProvider/ThemeProvider'\nimport {styles} from './styles.css'\n\nexport type ToastVariant = 'success' | 'error' | 'info'\n\nexport interface ToastAction {\n label: string\n onClick: () => void\n}\n\nexport interface ToastOptions {\n /** Visual + semantic tone. Errors announce assertively and linger longer. */\n variant?: ToastVariant\n message: ReactNode\n /** Optional single action, e.g. Undo. Runs, then dismisses the toast. */\n action?: ToastAction\n /** Auto-dismiss delay in ms. `0` (or negative) keeps it until dismissed. */\n duration?: number\n}\n\nexport interface ToastContextValue {\n /** Show a toast; returns its id so it can be dismissed programmatically. */\n toast: (opts: ToastOptions) => string\n dismiss: (id: string) => void\n}\n\ninterface ToastEntry {\n id: string\n variant: ToastVariant\n message: ReactNode\n action?: ToastAction\n duration: number\n}\n\ninterface ToastStore {\n subscribe: (cb: () => void) => () => void\n getSnapshot: () => readonly ToastEntry[]\n add: (opts: ToastOptions) => string\n remove: (id: string) => void\n}\n\nconst DEFAULT_DURATION: Record<ToastVariant, number> = {\n success: 5000,\n info: 5000,\n error: 8000,\n}\n\nfunction createToastStore(): ToastStore {\n let entries: ToastEntry[] = []\n let seq = 0\n const listeners = new Set<() => void>()\n const notify = () => listeners.forEach((l) => l())\n\n return {\n subscribe: (cb) => {\n listeners.add(cb)\n return () => listeners.delete(cb)\n },\n getSnapshot: () => entries,\n add: (opts) => {\n const variant = opts.variant ?? 'info'\n const id = `toast-${++seq}`\n const duration = opts.duration ?? DEFAULT_DURATION[variant]\n entries = [...entries, {id, variant, message: opts.message, action: opts.action, duration}]\n notify()\n return id\n },\n remove: (id) => {\n const next = entries.filter((e) => e.id !== id)\n if (next.length !== entries.length) {\n entries = next\n notify()\n }\n },\n }\n}\n\nconst variantIcon: Record<ToastVariant, IconName> = {\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n info: 'info-circle-filled',\n}\nconst variantIconStyle = {\n success: styles.iconSuccess,\n error: styles.iconError,\n info: styles.iconInfo,\n} as const\n\nconst ToastContext = createContext<ToastContextValue | null>(null)\n\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastContext)\n if (!ctx) throw new Error('useToast must be used within a <ToastProvider>')\n return ctx\n}\n\nfunction ToastItem({entry, onDismiss}: {entry: ToastEntry; onDismiss: (id: string) => void}) {\n const {id, variant, message, action, duration} = entry\n\n useEffect(() => {\n if (duration <= 0) return\n const timer = setTimeout(() => onDismiss(id), duration)\n return () => clearTimeout(timer)\n }, [id, duration, onDismiss])\n\n return (\n <html.div\n role={variant === 'error' ? 'alert' : 'status'}\n aria-live={variant === 'error' ? 'assertive' : 'polite'}\n style={[styles.toast, styles[variant]]}\n >\n <html.div style={[styles.iconWrap, variantIconStyle[variant]]}>\n <Icon name={variantIcon[variant]} size={18} />\n </html.div>\n <html.div style={styles.content}>\n <html.div style={styles.message}>{message}</html.div>\n {action ? (\n <html.button\n type=\"button\"\n style={styles.action}\n onClick={() => {\n action.onClick()\n onDismiss(id)\n }}\n >\n {action.label}\n </html.button>\n ) : null}\n </html.div>\n <html.button\n type=\"button\"\n aria-label=\"Dismiss\"\n style={styles.closeBtn}\n onClick={() => onDismiss(id)}\n >\n <Icon name=\"x-circle\" size={16} />\n </html.button>\n </html.div>\n )\n}\n\nexport function ToastProvider({children}: {children: ReactNode}) {\n const storeRef = useRef<ToastStore>(null)\n if (storeRef.current === null) {\n storeRef.current = createToastStore()\n }\n const store = storeRef.current\n\n const entries = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot)\n const mount = usePortalMount()\n\n const value = useMemo<ToastContextValue>(\n () => ({\n toast: (opts) => store.add(opts),\n dismiss: (id) => store.remove(id),\n }),\n [store],\n )\n\n const dismiss = useCallback((id: string) => store.remove(id), [store])\n\n const region = (\n <html.div role=\"region\" aria-label=\"Notifications\" style={styles.region}>\n {entries.map((entry) => (\n <ToastItem key={entry.id} entry={entry} onDismiss={dismiss} />\n ))}\n </html.div>\n )\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n {mount ? createPortal(region, mount) : region}\n </ToastContext.Provider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: spacing.md,\n },\n error: {\n color: colors.error,\n },\n success: {\n color: colors.success,\n },\n warning: {\n color: colors.warning,\n },\n info: {\n color: colors.info,\n },\n muted: {\n color: colors.textMuted,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type StatusIconName = Extract<\n IconName,\n 'x-circle' | 'check-circle' | 'check-done' | 'clock' | 'forbidden'\n>\nexport type StatusIconVariant = 'error' | 'success' | 'warning' | 'info' | 'muted'\n\ninterface StatusIconProps {\n name: StatusIconName\n size?: number\n variant?: StatusIconVariant\n}\n\nexport function StatusIcon({name, size = 48, variant = 'muted'}: StatusIconProps) {\n return (\n <html.div style={[styles.root, styles[variant]]}>\n <Icon name={name} size={size} />\n </html.div>\n )\n}\n","import {createContext, useContext} from 'react'\n\nexport interface TagGroupContextValue {\n values: string[]\n addTag: (value: string) => void\n removeTag: (value: string) => void\n editable: boolean\n setEditable: (v: boolean) => void\n disabled: boolean\n validate?: (value: string) => true | string\n focusedIndex: number\n setFocusedIndex: (index: number) => void\n inputRef: React.RefObject<HTMLInputElement | null>\n gridId: string\n name?: string\n}\n\nexport const TagGroupContext = createContext<TagGroupContextValue | null>(null)\n\nexport function useTagGroup(): TagGroupContextValue | null {\n return useContext(TagGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightNormal,\n lineHeight: 1,\n borderRadius: 4,\n whiteSpace: 'nowrap',\n minWidth: 0,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n sizeMd: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.ms,\n paddingRight: spacing.ms,\n fontSize: typography.fontSizeSm,\n },\n sizeSm: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n // Opt-in wrapping for long identifier-style labels. Overrides the base\n // nowrap so the text breaks within its container (e.g. a table cell)\n // instead of overflowing into the next column. `anywhere` also lets the\n // tag shrink below its content's intrinsic width so a flex/grid parent can\n // actually give it a narrow track.\n wrap: {\n whiteSpace: 'normal',\n overflowWrap: 'anywhere',\n lineHeight: 1.35,\n textAlign: 'start',\n },\n // Reduce right padding when removable to keep visual balance with the button\n removableMd: {\n paddingRight: spacing.sm,\n },\n removableSm: {\n paddingRight: spacing.xs,\n },\n default: {\n backgroundColor: {\n default: colors.bg,\n ':hover': colors.bgCardHover,\n },\n color: colors.text,\n },\n success: {\n backgroundColor: colors.successBg,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n color: colors.warningText,\n },\n error: {\n backgroundColor: colors.errorBg,\n color: colors.errorText,\n },\n info: {\n backgroundColor: colors.infoBg,\n color: colors.infoText,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n removeButton: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 0,\n borderWidth: 0,\n backgroundColor: 'transparent',\n color: 'inherit',\n cursor: 'pointer',\n borderRadius: radii.full,\n opacity: {\n default: 0.6,\n ':hover': 1,\n },\n outlineWidth: 0,\n },\n removeButtonDisabled: {\n cursor: 'not-allowed',\n opacity: 0.4,\n },\n})\n","import {type ReactNode, useCallback, useRef} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useTagGroup} from '../TagGroup/TagGroupContext'\nimport {styles} from './styles.css'\n\nexport type TagVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type TagSize = 'sm' | 'md'\n\ninterface TagProps {\n /** Value identifier — required when used inside TagGroup */\n value?: string\n variant?: TagVariant\n size?: TagSize\n /** Show remove button. Auto-derived from TagGroup context when inside one. */\n removable?: boolean\n /** Called when remove button is clicked. Auto-wired to TagGroup when inside one. */\n onRemove?: () => void\n disabled?: boolean\n /**\n * Allow the label to wrap / break instead of staying on one line. Tags are\n * `white-space: nowrap` by default (they read as pills); set this for long\n * identifier-style values (e.g. `lldap.group.member.remove`) sitting in a\n * constrained column, so they break within their cell instead of leaking\n * into the next one.\n */\n wrap?: boolean\n children: ReactNode\n}\n\nconst sizeMap = {\n sm: styles.sizeSm,\n md: styles.sizeMd,\n} as const\n\nconst removableSizeMap = {\n sm: styles.removableSm,\n md: styles.removableMd,\n} as const\n\nexport function Tag({\n value,\n variant = 'default',\n size = 'md',\n removable: removableProp,\n onRemove: onRemoveProp,\n disabled: disabledProp = false,\n wrap = false,\n children,\n}: TagProps) {\n const group = useTagGroup()\n const contentRef = useRef<HTMLElement>(null)\n\n const isGrouped = group !== null\n const disabled = disabledProp || (group?.disabled ?? false)\n const removable = removableProp ?? (isGrouped ? group.editable : false)\n\n const onRemove = useCallback(() => {\n if (disabled) return\n if (onRemoveProp) {\n onRemoveProp()\n } else if (isGrouped && value !== undefined) {\n group.removeTag(value)\n }\n }, [disabled, onRemoveProp, isGrouped, value, group])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return\n if ((e.key === 'Backspace' || e.key === 'Delete') && removable) {\n e.preventDefault()\n onRemove()\n }\n // Arrow key navigation delegated to TagGroup via context\n if (isGrouped && (e.key === 'ArrowLeft' || e.key === 'ArrowRight')) {\n e.preventDefault()\n const idx = value !== undefined ? group.values.indexOf(value) : -1\n if (e.key === 'ArrowLeft' && idx > 0) {\n group.setFocusedIndex(idx - 1)\n } else if (e.key === 'ArrowRight') {\n if (idx < group.values.length - 1) {\n group.setFocusedIndex(idx + 1)\n } else {\n // Move focus to input\n group.inputRef.current?.focus()\n group.setFocusedIndex(-1)\n }\n }\n }\n },\n [disabled, removable, onRemove, isGrouped, value, group],\n )\n\n const removeLabel = contentRef.current?.textContent\n ? `Remove ${contentRef.current.textContent}`\n : 'Remove'\n\n const tagContent = (\n <>\n <html.span ref={contentRef} {...(isGrouped ? {role: 'gridcell' as any} : {})}>\n {children}\n </html.span>\n {removable && (\n <html.span {...(isGrouped ? {role: 'gridcell' as any} : {})}>\n <html.button\n type=\"button\"\n aria-label={removeLabel}\n disabled={disabled}\n onClick={(e) => {\n ;(e as any).stopPropagation?.()\n onRemove()\n }}\n tabIndex={-1}\n style={[styles.removeButton, disabled && styles.removeButtonDisabled]}\n >\n <svg\n width={size === 'sm' ? 10 : 12}\n height={size === 'sm' ? 10 : 12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n >\n <path\n d=\"M3 3l6 6M9 3l-6 6\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n </html.span>\n )}\n </>\n )\n\n return (\n <html.span\n {...(isGrouped ? {role: 'row' as any} : {})}\n tabIndex={isGrouped ? 0 : undefined}\n onKeyDown={isGrouped ? (handleKeyDown as any) : undefined}\n style={[\n styles.base,\n sizeMap[size],\n removable && removableSizeMap[size],\n styles[variant],\n disabled && styles.disabled,\n wrap && styles.wrap,\n ]}\n >\n {tagContent}\n </html.span>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n container: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n containerError: {},\n containerDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n // Static display (no Input) — no gap needed\n containerStatic: {\n gap: 0,\n },\n list: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: spacing.xs,\n alignItems: 'center',\n },\n input: {\n width: '100%',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':focus': colors.accent,\n },\n borderRadius: radii.sm,\n backgroundColor: colors.bg,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n minHeight: 40,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus': 1,\n },\n boxSizing: 'border-box',\n },\n inputError: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n liveRegion: {\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n },\n})\n","import {\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {TagGroupContext, type TagGroupContextValue} from './TagGroupContext'\nimport {styles} from './styles.css'\n\n// ---------------------------------------------------------------------------\n// Local context accessor (non-throwing, returns null)\n// ---------------------------------------------------------------------------\n\nfunction useTagGroupCtx() {\n return useContext(TagGroupContext)\n}\n\n// ---------------------------------------------------------------------------\n// TagGroup.Root\n// ---------------------------------------------------------------------------\n\ninterface RootProps {\n value?: string[]\n defaultValue?: string[]\n onValueChange?: (values: string[]) => void\n /** Validate a value before adding. Return `true` if valid, or an error string. */\n onValidate?: (value: string) => true | string\n disabled?: boolean\n /** Form field name — renders hidden inputs for each tag value */\n name?: string\n 'aria-label'?: string\n children: ReactNode\n}\n\nfunction Root({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n onValidate,\n disabled: disabledProp = false,\n name,\n 'aria-label': ariaLabel,\n children,\n}: RootProps) {\n const gridId = useId()\n const fieldCtx = useFieldContext()\n const [values, setValues] = useControllableValue(controlledValue, defaultValue, onValueChange)\n const [focusedIndex, setFocusedIndex] = useState(-1)\n const [editable, setEditable] = useState(false)\n const [announcement, setAnnouncement] = useState('')\n const inputRef = useRef<HTMLInputElement>(null)\n\n const disabled = disabledProp || (fieldCtx?.disabled ?? false)\n const isInvalid = fieldCtx?.invalid ?? false\n\n const addTag = useCallback(\n (value: string) => {\n const trimmed = value.trim()\n if (!trimmed) return\n if (values.includes(trimmed)) return\n if (onValidate) {\n const result = onValidate(trimmed)\n if (result !== true) return\n }\n setValues([...values, trimmed])\n setAnnouncement(`Added ${trimmed}`)\n },\n [values, setValues, onValidate],\n )\n\n const removeTag = useCallback(\n (value: string) => {\n const idx = values.indexOf(value)\n if (idx === -1) return\n const next = values.filter((v) => v !== value)\n setValues(next)\n setAnnouncement(`Removed ${value}`)\n\n // Focus management: move to next tag, or previous, or input\n if (next.length === 0) {\n inputRef.current?.focus()\n setFocusedIndex(-1)\n } else if (idx >= next.length) {\n setFocusedIndex(next.length - 1)\n } else {\n setFocusedIndex(idx)\n }\n },\n [values, setValues],\n )\n\n // Focus the tag at focusedIndex when it changes\n useEffect(() => {\n if (focusedIndex >= 0 && focusedIndex < values.length) {\n const container = document.getElementById(gridId)\n if (!container) return\n const rows = container.querySelectorAll('[role=\"row\"]')\n const target = rows[focusedIndex] as HTMLElement | undefined\n target?.focus()\n }\n }, [focusedIndex, gridId, values.length])\n\n const ctx = useMemo<TagGroupContextValue>(\n () => ({\n values,\n addTag,\n removeTag,\n editable,\n setEditable,\n disabled,\n validate: onValidate,\n focusedIndex,\n setFocusedIndex,\n inputRef,\n gridId,\n name,\n }),\n [values, addTag, removeTag, editable, disabled, onValidate, focusedIndex, gridId, name],\n )\n\n return (\n <TagGroupContext.Provider value={ctx}>\n <html.div style={styles.root} aria-label={ariaLabel}>\n <html.div\n style={[\n styles.container,\n !editable && styles.containerStatic,\n isInvalid && styles.containerError,\n disabled && styles.containerDisabled,\n ]}\n aria-describedby={\n fieldCtx\n ? `${fieldCtx.descriptionId} ${fieldCtx.invalid ? fieldCtx.errorId : ''}`.trim()\n : undefined\n }\n aria-invalid={isInvalid || undefined}\n >\n {children}\n </html.div>\n\n {/* Hidden inputs for form submission */}\n {name && values.map((v) => <html.input key={v} type=\"hidden\" name={name} value={v} />)}\n\n {/* Live region for screen reader announcements */}\n <html.div role=\"status\" aria-live=\"polite\" aria-atomic style={styles.liveRegion}>\n {announcement}\n </html.div>\n </html.div>\n </TagGroupContext.Provider>\n )\n}\n\n// ---------------------------------------------------------------------------\n// TagGroup.List\n// ---------------------------------------------------------------------------\n\ninterface ListProps {\n children: ReactNode\n 'aria-label'?: string\n}\n\nfunction List({children, 'aria-label': ariaLabel}: ListProps) {\n const ctx = useTagGroupCtx()\n\n return (\n <html.div role={'grid' as any} aria-label={ariaLabel} id={ctx?.gridId} style={styles.list}>\n {children}\n </html.div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// TagGroup.Input\n// ---------------------------------------------------------------------------\n\ninterface InputProps {\n placeholder?: string\n}\n\nfunction Input({placeholder}: InputProps) {\n const ctx = useTagGroupCtx()\n const [inputValue, setInputValue] = useState('')\n const localRef = useRef<HTMLInputElement>(null)\n\n // Sync local ref with context inputRef\n useEffect(() => {\n if (ctx?.inputRef) {\n ;(ctx.inputRef as React.MutableRefObject<HTMLInputElement | null>).current = localRef.current\n }\n })\n\n // Register as editable on mount\n useEffect(() => {\n ctx?.setEditable(true)\n return () => ctx?.setEditable(false)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n const commitValueRef = useRef<(raw: string) => boolean>(() => false)\n commitValueRef.current = (raw: string) => {\n const trimmed = raw.trim()\n if (!trimmed || !ctx) return false\n ctx.addTag(trimmed)\n setInputValue('')\n return true\n }\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const el = localRef.current\n if (!el) return\n\n function handleKeyDown(e: KeyboardEvent) {\n if (!ctx) return\n const target = e.target as HTMLInputElement\n\n if (e.key === 'Enter' || e.key === ',' || e.key === ';') {\n e.preventDefault()\n commitValueRef.current(target.value)\n return\n }\n\n if (e.key === 'Tab' && target.value.trim()) {\n e.preventDefault()\n commitValueRef.current(target.value)\n return\n }\n\n if (e.key === 'Backspace' && !target.value && ctx.values.length > 0) {\n e.preventDefault()\n ctx.removeTag(ctx.values[ctx.values.length - 1])\n return\n }\n\n if (e.key === 'ArrowLeft' && (target.selectionStart ?? 0) === 0 && ctx.values.length > 0) {\n e.preventDefault()\n ctx.setFocusedIndex(ctx.values.length - 1)\n return\n }\n\n if (e.key === 'Escape') {\n setInputValue('')\n }\n }\n\n function handlePaste(e: ClipboardEvent) {\n if (!ctx) return\n const text = e.clipboardData?.getData('text') ?? ''\n const items = text\n .split(/[\\n,;]+/)\n .map((s) => s.trim())\n .filter(Boolean)\n if (items.length > 1) {\n e.preventDefault()\n for (const item of items) {\n ctx.addTag(item)\n }\n }\n }\n\n function handleFocus() {\n ctx?.setFocusedIndex(-1)\n }\n\n el.addEventListener('keydown', handleKeyDown)\n el.addEventListener('paste', handlePaste)\n el.addEventListener('focus', handleFocus)\n return () => {\n el.removeEventListener('keydown', handleKeyDown)\n el.removeEventListener('paste', handlePaste)\n el.removeEventListener('focus', handleFocus)\n }\n }, [ctx])\n\n return (\n <html.input\n ref={localRef as React.Ref<HTMLInputElement>}\n type=\"text\"\n value={inputValue}\n onChange={(e: any) => setInputValue(e.target.value)}\n placeholder={placeholder}\n disabled={ctx?.disabled}\n style={styles.input}\n />\n )\n}\n\n// ---------------------------------------------------------------------------\n// Namespace export\n// ---------------------------------------------------------------------------\n\nexport const TagGroup = {\n Root,\n List,\n Input,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n rootVertical: {\n flexDirection: 'row',\n },\n list: {\n display: 'flex',\n flexDirection: 'row',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n gap: spacing.xs,\n // Positioning context for the sliding indicator.\n position: 'relative',\n },\n listVertical: {\n flexDirection: 'column',\n borderBottomWidth: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n gap: 0,\n },\n tab: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderBottomWidth: 2,\n borderBottomStyle: 'solid',\n borderBottomColor: 'transparent',\n cursor: 'pointer',\n transitionProperty: 'color, border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': -2,\n },\n },\n tabVertical: {\n justifyContent: 'flex-start',\n borderBottomWidth: 0,\n borderRightWidth: 2,\n borderRightStyle: 'solid',\n borderRightColor: 'transparent',\n },\n tabActiveHorizontal: {\n color: colors.text,\n borderBottomColor: colors.accent,\n },\n tabActiveVertical: {\n color: colors.text,\n borderRightColor: colors.accent,\n },\n // Applied to the active tab once JS drives the sliding indicator: drop the\n // per-tab accent border so the single sliding bar is the only underline\n // (avoids a double line and an instant-pop that would undercut the slide).\n tabIndicatorActive: {\n borderBottomColor: 'transparent',\n borderRightColor: 'transparent',\n },\n // --- Sliding active indicator (positioned by measuring the active tab) ---\n indicator: {\n position: 'absolute',\n backgroundColor: colors.accent,\n pointerEvents: 'none',\n transitionProperty: 'transform, width, height',\n transitionDuration: duration.base,\n transitionTimingFunction: easing.easeOut,\n },\n indicatorHorizontal: {\n bottom: -1,\n left: 0,\n height: 2,\n },\n indicatorVertical: {\n right: -1,\n top: 0,\n width: 2,\n },\n // Dynamic transform/size from the measured active tab (StyleX dynamic style:\n // simple identifier params only).\n indicatorOffsetH: (offset: number, size: number) => ({\n transform: `translateX(${offset}px)`,\n width: size,\n }),\n indicatorOffsetV: (offset: number, size: number) => ({\n transform: `translateY(${offset}px)`,\n height: size,\n }),\n tabDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n color: colors.textMuted,\n },\n panel: {\n paddingTop: spacing.md,\n },\n panelVertical: {\n paddingTop: 0,\n paddingLeft: spacing.md,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport interface TabsContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n orientation: Orientation\n registerTab: (value: string, disabled: boolean) => () => void\n tabsRef: React.RefObject<Map<string, boolean>>\n orderRef: React.RefObject<string[]>\n // True once the List has measured the active tab and is driving a sliding\n // indicator. Tabs suppress their own accent border while it's true so the\n // single sliding bar is the only underline; it stays false without JS\n // (SSR / no-hydration), where the per-tab border is the graceful fallback.\n indicatorActive: boolean\n setIndicatorActive: (active: boolean) => void\n}\n\nexport const TabsContext = createContext<TabsContextValue | null>(null)\n\nexport function useTabs() {\n const ctx = useContext(TabsContext)\n if (!ctx) throw new Error('Tabs compound components must be used within Tabs.Root')\n return ctx\n}\n","import {useCallback, useRef, useState} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {Orientation, TabsContextValue} from './TabsContext'\n\ninterface UseTabsRootOptions {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: Orientation\n}\n\nexport function useTabsRoot({\n value: controlledValue,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: UseTabsRootOptions): TabsContextValue {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const tabsRef = useRef(new Map<string, boolean>())\n const orderRef = useRef<string[]>([])\n const [indicatorActive, setIndicatorActive] = useState(false)\n\n const registerTab = useCallback((value: string, disabled: boolean) => {\n tabsRef.current.set(value, disabled)\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n tabsRef.current.delete(value)\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n return {\n activeValue,\n onSelect,\n orientation,\n registerTab,\n tabsRef,\n orderRef,\n indicatorActive,\n setIndicatorActive,\n }\n}\n","import {type ReactNode, useRef, useId, useEffect, useLayoutEffect, useState} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {TabsContext, useTabs} from './TabsContext'\nimport {useTabsRoot} from './useTabsRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n}\n\nfunction Root({\n children,\n value,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: RootProps) {\n const ctx = useTabsRoot({value, defaultValue, onValueChange, orientation})\n\n return (\n <TabsContext.Provider value={ctx}>\n <html.div style={[styles.root, orientation === 'vertical' && styles.rootVertical]}>\n {children}\n </html.div>\n </TabsContext.Provider>\n )\n}\n\n// --- List ---\n\ninterface ListProps {\n children: ReactNode\n}\n\nfunction List({children}: ListProps) {\n const {orientation, activeValue, onSelect, tabsRef, orderRef, setIndicatorActive} = useTabs()\n const listRef = useRef<HTMLDivElement>(null)\n const [indicator, setIndicator] = useState<{offset: number; size: number} | null>(null)\n\n // Measure the active tab and drive the sliding indicator. useLayoutEffect so\n // the first position is set before paint (the indicator element mounts already\n // in place — no slide-in from zero; only later tab changes animate). Observes\n // the active tab (its own size, e.g. a changing \"(3)\" count) and the list\n // (container resize / reflow). A non-active sibling resizing while you're on\n // another tab is the one case not caught; it self-corrects on the next\n // selection or resize.\n useLayoutEffect(() => {\n const list = listRef.current\n if (!list || !activeValue) {\n setIndicator(null)\n setIndicatorActive(false)\n return\n }\n const el = list.querySelector<HTMLElement>(`[data-tab-value=\"${CSS.escape(activeValue)}\"]`)\n if (!el) {\n setIndicator(null)\n setIndicatorActive(false)\n return\n }\n const measure = () => {\n setIndicator(\n orientation === 'horizontal'\n ? {offset: el.offsetLeft, size: el.offsetWidth}\n : {offset: el.offsetTop, size: el.offsetHeight},\n )\n setIndicatorActive(true)\n }\n measure()\n const ro = new ResizeObserver(measure)\n ro.observe(el)\n ro.observe(list)\n return () => ro.disconnect()\n }, [activeValue, orientation, setIndicatorActive])\n\n useEffect(() => {\n const el = listRef.current\n if (!el) return\n\n function handleKeyDown(this: HTMLElement, e: KeyboardEvent) {\n const order = orderRef.current\n const tabs = tabsRef.current\n if (order.length === 0) return\n const listEl = this\n\n const prevKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp'\n const nextKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown'\n\n let targetValue: string | null = null\n\n switch (e.key) {\n case nextKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : -1\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx + i) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case prevKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : 0\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx - i + order.length) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'Home': {\n e.preventDefault()\n for (const val of order) {\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'End': {\n e.preventDefault()\n for (let i = order.length - 1; i >= 0; i--) {\n if (!tabs.get(order[i])) {\n targetValue = order[i]\n break\n }\n }\n break\n }\n }\n\n if (targetValue) {\n onSelect(targetValue)\n // Focus the newly activated tab button\n const tabEl = listEl.querySelector(\n `[data-tab-value=\"${targetValue}\"]`,\n ) as HTMLElement | null\n tabEl?.focus()\n }\n }\n\n el.addEventListener('keydown', handleKeyDown)\n return () => el.removeEventListener('keydown', handleKeyDown)\n }, [orientation, activeValue, onSelect, tabsRef, orderRef])\n\n return (\n <html.div\n ref={listRef}\n role=\"tablist\"\n aria-orientation={orientation}\n style={[styles.list, orientation === 'vertical' && styles.listVertical]}\n >\n {children}\n {indicator && (\n <html.div\n aria-hidden\n style={[\n styles.indicator,\n orientation === 'horizontal' ? styles.indicatorHorizontal : styles.indicatorVertical,\n orientation === 'horizontal'\n ? styles.indicatorOffsetH(indicator.offset, indicator.size)\n : styles.indicatorOffsetV(indicator.offset, indicator.size),\n ]}\n />\n )}\n </html.div>\n )\n}\n\n// --- Tab ---\n\ninterface TabProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Tab({value, disabled = false, children}: TabProps) {\n const {activeValue, onSelect, orientation, registerTab, indicatorActive} = useTabs()\n const isActive = activeValue === value\n const tabId = useId()\n const panelId = `${tabId}-panel`\n\n useEffect(() => {\n return registerTab(value, disabled)\n }, [value, disabled, registerTab])\n\n const handleClick = () => {\n if (!disabled) {\n onSelect(value)\n }\n }\n\n return (\n <html.button\n type=\"button\"\n role=\"tab\"\n id={tabId}\n aria-selected={isActive}\n aria-controls={panelId}\n aria-disabled={disabled || undefined}\n data-tab-value={value}\n tabIndex={isActive ? 0 : -1}\n onClick={handleClick}\n style={[\n styles.tab,\n orientation === 'vertical' && styles.tabVertical,\n isActive &&\n (orientation === 'vertical' ? styles.tabActiveVertical : styles.tabActiveHorizontal),\n isActive && indicatorActive && styles.tabIndicatorActive,\n disabled && styles.tabDisabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Panel ---\n\ninterface PanelProps {\n value: string\n children: ReactNode\n}\n\nfunction Panel({value, children}: PanelProps) {\n const {activeValue, orientation} = useTabs()\n\n if (activeValue !== value) return null\n\n return (\n <html.div\n role=\"tabpanel\"\n style={[styles.panel, orientation === 'vertical' && styles.panelVertical]}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tabs = {\n Root,\n List,\n Tab,\n Panel,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n resize: 'vertical' as const,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {styles} from './styles.css'\n\ntype StrictTextareaProps = React.ComponentProps<typeof html.textarea>\n\nexport type TextareaVariant = 'default' | 'error'\n\ninterface TextareaProps {\n variant?: TextareaVariant\n name?: string\n placeholder?: string\n required?: boolean\n rows?: number\n value?: string\n defaultValue?: string\n disabled?: boolean\n autoFocus?: boolean\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLTextAreaElement>\n}\n\nexport function Textarea({\n variant = 'default',\n name,\n placeholder,\n required,\n rows = 3,\n value,\n defaultValue,\n disabled,\n autoFocus,\n onChange,\n onBlur,\n ref,\n}: TextareaProps) {\n const ctx = useFieldContext()\n\n const fieldCtx = ctx?.field\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveDisabled = disabled ?? ctx?.disabled\n const effectiveVariant = ctx?.invalid ? 'error' : variant\n\n const extraProps: Record<string, unknown> = {}\n if (autoFocus) extraProps.autoFocus = true\n\n return (\n <html.textarea\n id={ctx?.controlId}\n name={effectiveName}\n placeholder={placeholder}\n required={required}\n rows={rows}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={effectiveDisabled}\n aria-describedby={\n ctx ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() : undefined\n }\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={effectiveOnChange as StrictTextareaProps['onChange']}\n onBlur={effectiveOnBlur as StrictTextareaProps['onBlur']}\n ref={effectiveRef as React.Ref<HTMLTextAreaElement>}\n style={[styles.base, styles[effectiveVariant]]}\n {...extraProps}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n button: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: spacing.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.sm,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.text,\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n },\n})\n","import {\n createContext,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {Icon, type IconName} from '../Icon/Icon'\nimport {ThemeProvider, type ThemeName} from '../ThemeProvider/ThemeProvider'\nimport {styles} from './styles.css'\n\n/**\n * The user's *preference*. `'system'` follows the OS `prefers-color-scheme`;\n * the others pin a concrete {@link ThemeName}. Resolves to a ThemeName via\n * {@link useColorMode}().theme.\n */\nexport type ColorModePreference = 'system' | ThemeName\n\nconst PREFERENCES: readonly ColorModePreference[] = ['system', 'light', 'dark', 'high-contrast']\n\nconst ICON: Record<ColorModePreference, IconName> = {\n system: 'monitor',\n light: 'sun',\n dark: 'moon',\n 'high-contrast': 'contrast',\n}\n\nconst LABEL: Record<ColorModePreference, string> = {\n system: 'system',\n light: 'light',\n dark: 'dark',\n 'high-contrast': 'high contrast',\n}\n\ninterface ColorModeContextValue {\n /** The user's chosen preference. */\n preference: ColorModePreference\n /** The concrete theme the preference resolves to (system → OS scheme). */\n theme: ThemeName\n /** Set the preference explicitly. */\n setPreference: (preference: ColorModePreference) => void\n /** Advance to the next preference in {@link modes} (wraps). */\n cycle: () => void\n /** The cycle order used by `cycle()` and the toggle. */\n modes: readonly ColorModePreference[]\n}\n\nconst ColorModeContext = createContext<ColorModeContextValue | null>(null)\n\n/**\n * Read the active color mode. Throws if used outside a {@link ColorModeProvider}.\n */\nexport function useColorMode(): ColorModeContextValue {\n const ctx = useContext(ColorModeContext)\n if (!ctx) {\n throw new Error('useColorMode must be used within a <ColorModeProvider>')\n }\n return ctx\n}\n\nconst canUseDom =\n !isNative && typeof window !== 'undefined' && typeof window.matchMedia === 'function'\n\nfunction isPreference(value: unknown): value is ColorModePreference {\n return typeof value === 'string' && (PREFERENCES as readonly string[]).includes(value)\n}\n\nfunction readStored(key: string | null): ColorModePreference | null {\n if (!key || isNative || typeof window === 'undefined') return null\n try {\n const raw = window.localStorage.getItem(key)\n return isPreference(raw) ? raw : null\n } catch {\n // Private mode / blocked storage — degrade to no persistence.\n return null\n }\n}\n\nfunction writeStored(key: string | null, value: ColorModePreference): void {\n if (!key || isNative || typeof window === 'undefined') return\n try {\n window.localStorage.setItem(key, value)\n } catch {\n /* ignore */\n }\n}\n\ninterface ColorModeProviderProps {\n children: ReactNode\n /** Initial preference (uncontrolled). Default `'system'`. For SSR with no\n * hydration flash, pass the value you persisted server-side (e.g. a cookie). */\n defaultPreference?: ColorModePreference\n /** Controlled preference — when set, the provider does not own the state. */\n preference?: ColorModePreference\n /** Fired whenever the preference changes (controlled or not). */\n onPreferenceChange?: (preference: ColorModePreference) => void\n /** Cycle order for `cycle()` / `<ColorModeToggle>`. Default `['light', 'dark']`. */\n modes?: readonly ColorModePreference[]\n /** localStorage key for persistence; `null` disables it. Default `'duro-color-mode'`. */\n storageKey?: string | null\n /** Wrap children in the DS `ThemeProvider` with the resolved theme. Default `true`.\n * Set `false` to drive your own ThemeProvider from `useColorMode().theme`. */\n applyTheme?: boolean\n}\n\n/**\n * Owns color-mode state, resolves `'system'` against the OS scheme, persists the\n * choice, and (by default) applies the resolved theme via `ThemeProvider`.\n * Pair with {@link ColorModeToggle} or read state via {@link useColorMode}.\n */\nexport function ColorModeProvider({\n children,\n defaultPreference = 'system',\n preference: controlled,\n onPreferenceChange,\n modes = ['light', 'dark'],\n storageKey = 'duro-color-mode',\n applyTheme = true,\n}: ColorModeProviderProps) {\n const [internal, setInternal] = useState<ColorModePreference>(controlled ?? defaultPreference)\n const preference = controlled ?? internal\n\n // Hydrate from storage AFTER mount (not in the initializer) so the first\n // client render matches the server and React doesn't warn about a mismatch.\n useEffect(() => {\n if (controlled !== undefined) return\n const stored = readStored(storageKey)\n if (stored) setInternal(stored)\n // Only on mount / when the key changes.\n }, [controlled, storageKey])\n\n const setPreference = useCallback(\n (next: ColorModePreference) => {\n if (controlled === undefined) setInternal(next)\n writeStored(storageKey, next)\n onPreferenceChange?.(next)\n },\n [controlled, storageKey, onPreferenceChange],\n )\n\n // Track the OS scheme so `'system'` stays live. The initial value MUST be the\n // SSR-stable default ('dark', what the server renders without a DOM) so the\n // first client render matches the server — reading matchMedia in the\n // initializer would diverge (server 'dark' vs client's real scheme) and trip\n // a hydration mismatch. The effect reconciles to the real scheme after mount.\n const [systemTheme, setSystemTheme] = useState<'light' | 'dark'>('dark')\n useEffect(() => {\n if (!canUseDom) return\n const mq = window.matchMedia('(prefers-color-scheme: dark)')\n const onChange = () => setSystemTheme(mq.matches ? 'dark' : 'light')\n onChange()\n mq.addEventListener('change', onChange)\n return () => mq.removeEventListener('change', onChange)\n }, [])\n\n const theme: ThemeName = preference === 'system' ? systemTheme : preference\n\n const cycle = useCallback(() => {\n const i = modes.indexOf(preference)\n const next = modes[(i + 1) % modes.length] ?? modes[0]\n if (next) setPreference(next)\n }, [modes, preference, setPreference])\n\n const value = useMemo<ColorModeContextValue>(\n () => ({preference, theme, setPreference, cycle, modes}),\n [preference, theme, setPreference, cycle, modes],\n )\n\n return (\n <ColorModeContext.Provider value={value}>\n {applyTheme ? <ThemeProvider theme={theme}>{children}</ThemeProvider> : children}\n </ColorModeContext.Provider>\n )\n}\n\ninterface ColorModeToggleProps {\n /** Icon size in px. Default `20`. */\n size?: number\n /** Override the announced label (otherwise auto-generated from current/next). */\n 'aria-label'?: string\n}\n\n/**\n * A compact icon button that cycles the color-mode preference through the\n * provider's `modes`. The glyph reflects the current preference\n * (sun/moon/monitor/contrast). Must be inside a {@link ColorModeProvider}.\n */\nexport function ColorModeToggle({size = 20, 'aria-label': ariaLabel}: ColorModeToggleProps) {\n const {preference, cycle, modes} = useColorMode()\n const i = modes.indexOf(preference)\n const next = modes[(i + 1) % modes.length] ?? modes[0] ?? preference\n const label = ariaLabel ?? `Color mode: ${LABEL[preference]}. Switch to ${LABEL[next]}.`\n\n return (\n <html.button type=\"button\" aria-label={label} onClick={cycle} style={styles.button}>\n <Icon name={ICON[preference]} size={size} />\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n error: {\n color: colors.errorText,\n },\n success: {\n color: colors.successText,\n },\n warning: {\n color: colors.warningText,\n },\n\n // Weight overrides\n weightNormal: {\n fontWeight: typography.fontWeightNormal,\n },\n weightMedium: {\n fontWeight: typography.fontWeightMedium,\n },\n weightSemibold: {\n fontWeight: typography.fontWeightSemibold,\n },\n weightBold: {\n fontWeight: typography.fontWeightBold,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n\n // Truncate. minWidth: 0 lets a truncating Text actually shrink inside a\n // flex/grid container — without it, the default `min-width: auto` would\n // keep the element at its content width, so text-overflow: ellipsis would\n // never trigger and the text would just overflow the parent instead.\n truncate: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type TextVariant = 'bodySm' | 'bodyMd' | 'bodyLg' | 'caption' | 'label' | 'code' | 'overline'\nexport type TextColor = 'default' | 'muted' | 'accent' | 'error' | 'success' | 'warning'\n\ninterface TextProps {\n variant?: TextVariant\n color?: TextColor\n weight?: 'normal' | 'medium' | 'semibold' | 'bold'\n align?: 'start' | 'center' | 'end'\n truncate?: boolean\n as?: 'span' | 'p' | 'div'\n children: ReactNode\n}\n\nconst weightMap = {\n normal: styles.weightNormal,\n medium: styles.weightMedium,\n semibold: styles.weightSemibold,\n bold: styles.weightBold,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Text({\n variant = 'bodyMd',\n color = 'default',\n weight,\n align,\n truncate,\n as = 'span',\n children,\n}: TextProps) {\n const style = [\n typePresets[variant],\n styles[color],\n weight && weightMap[weight],\n align && alignMap[align],\n truncate && styles.truncate,\n ]\n\n if (as === 'p') return <html.p style={style}>{children}</html.p>\n if (as === 'div') return <html.div style={style}>{children}</html.div>\n return <html.span style={style}>{children}</html.span>\n}\n","import {createContext, useContext} from 'react'\nimport type {ToggleSize} from '../Toggle/Toggle'\n\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport interface ToggleGroupContextValue {\n value: string[]\n toggle: (itemValue: string) => void\n disabled: boolean\n orientation: Orientation\n size: ToggleSize\n}\n\nexport const ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null)\n\nexport function useToggleGroup() {\n return useContext(ToggleGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 1,\n borderStyle: 'solid',\n cursor: 'pointer',\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightMedium,\n transitionProperty: 'background-color, border-color, color, opacity',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n },\n sizeDefault: {\n padding: `${spacing.sm} ${spacing.md}`,\n fontSize: typography.fontSizeSm,\n borderRadius: radii.sm,\n gap: spacing.sm,\n },\n sizeSmall: {\n padding: `${spacing.xs} ${spacing.sm}`,\n fontSize: typography.fontSizeXs,\n borderRadius: radii.sm,\n gap: spacing.xs,\n },\n unpressed: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n color: colors.textMuted,\n },\n pressed: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n borderColor: colors.accent,\n color: colors.accentContrast,\n },\n grouped: {\n borderWidth: 0,\n borderRadius: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n // Override any borderColor set by pressed state — dividers always use border token\n borderColor: colors.border,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n})\n","import {type ReactNode, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {useToggleGroup} from '../ToggleGroup/ToggleGroupContext'\nimport {styles} from './styles.css'\n\nexport type ToggleSize = 'default' | 'small'\n\ninterface ToggleProps {\n /** Controlled pressed state (standalone usage). */\n pressed?: boolean\n /** Initial pressed state (uncontrolled, standalone usage). */\n defaultPressed?: boolean\n /** Callback fired when the pressed state changes (standalone usage). */\n onPressedChange?: (pressed: boolean) => void\n /** Unique value when used inside a ToggleGroup. */\n value?: string\n /** Prevents user interaction. */\n disabled?: boolean\n /** Size variant (overridden by ToggleGroup when grouped). */\n size?: ToggleSize\n 'aria-label'?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function Toggle({\n pressed: controlledPressed,\n defaultPressed = false,\n onPressedChange,\n value,\n disabled: disabledProp = false,\n size: sizeProp = 'default',\n 'aria-label': ariaLabel,\n children,\n}: ToggleProps) {\n const group = useToggleGroup()\n\n // When inside a ToggleGroup, derive pressed state from group context\n const groupPressed = group && value !== undefined ? group.value.includes(value) : undefined\n const isGrouped = group !== null\n const disabled = disabledProp || (group?.disabled ?? false)\n const size = group?.size ?? sizeProp\n\n const [standalonePressed, setStandalonePressed] = useControllableValue(\n controlledPressed,\n defaultPressed,\n onPressedChange,\n )\n\n const pressed = groupPressed ?? standalonePressed\n\n const handleClick = useCallback(() => {\n if (disabled) return\n if (isGrouped && value !== undefined) {\n group.toggle(value)\n } else {\n setStandalonePressed(!pressed)\n }\n }, [disabled, isGrouped, value, group, pressed, setStandalonePressed])\n\n return (\n <html.button\n type=\"button\"\n aria-pressed={pressed}\n aria-label={ariaLabel}\n disabled={disabled}\n onClick={handleClick}\n data-pressed={pressed ? '' : undefined}\n style={[\n styles.base,\n sizeMap[size],\n pressed ? styles.pressed : styles.unpressed,\n isGrouped && styles.grouped,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n overflow: 'hidden',\n },\n vertical: {\n flexDirection: 'column',\n },\n})\n","import {type ReactNode, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {ToggleSize} from '../Toggle/Toggle'\nimport {ToggleGroupContext, type Orientation} from './ToggleGroupContext'\nimport {styles} from './styles.css'\n\ninterface ToggleGroupProps {\n /** Controlled value — array of pressed item values. */\n value?: string[]\n /** Initial value (uncontrolled). */\n defaultValue?: string[]\n /** Callback fired when the set of pressed values changes. */\n onValueChange?: (value: string[]) => void\n /** When false, at most one item can be pressed at a time. */\n multiple?: boolean\n /** Prevents interaction with all items. */\n disabled?: boolean\n /** Layout direction. */\n orientation?: Orientation\n /** Size applied to all child toggles. */\n size?: ToggleSize\n children: ReactNode\n}\n\nexport function ToggleGroup({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n multiple = false,\n disabled = false,\n orientation = 'horizontal',\n size = 'default',\n children,\n}: ToggleGroupProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const toggle = useCallback(\n (itemValue: string) => {\n const nextPressed = !value.includes(itemValue)\n let next: string[]\n if (multiple) {\n next = nextPressed ? [...value, itemValue] : value.filter((v) => v !== itemValue)\n } else {\n next = nextPressed ? [itemValue] : []\n }\n setValue(next)\n },\n [value, multiple, setValue],\n )\n\n return (\n <ToggleGroupContext.Provider value={{value, toggle, disabled, orientation, size}}>\n <html.div\n role=\"toolbar\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'vertical' && styles.vertical]}\n >\n {children}\n </html.div>\n </ToggleGroupContext.Provider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n popup: {\n position: 'absolute',\n zIndex: 50,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n },\n top: {\n bottom: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginBottom: spacing.xs,\n },\n bottom: {\n top: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginTop: spacing.xs,\n },\n left: {\n right: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginRight: spacing.xs,\n },\n right: {\n left: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginLeft: spacing.xs,\n },\n})\n","import {\n type ReactNode,\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n useId,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ntype Placement = 'top' | 'bottom' | 'left' | 'right'\n\ninterface TooltipContextValue {\n open: boolean\n show: () => void\n hide: () => void\n tooltipId: string\n placement: Placement\n}\n\nconst TooltipContext = createContext<TooltipContextValue | null>(null)\n\nfunction useTooltip() {\n const ctx = useContext(TooltipContext)\n if (!ctx) throw new Error('Tooltip compound components must be used within Tooltip.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n content: ReactNode\n placement?: Placement\n delay?: number\n}\n\nfunction Root({children, content, placement = 'top', delay = 300}: RootProps) {\n const [open, setOpen] = useState(false)\n const tooltipId = useId()\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const show = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = setTimeout(() => setOpen(true), delay)\n }, [delay])\n\n const hide = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = null\n setOpen(false)\n }, [])\n\n return (\n <TooltipContext.Provider value={{open, show, hide, tooltipId, placement}}>\n <html.div style={styles.root}>\n {children}\n {open && (\n <html.div id={tooltipId} role=\"tooltip\" style={[styles.popup, styles[placement]]}>\n {content}\n </html.div>\n )}\n </html.div>\n </TooltipContext.Provider>\n )\n}\n\n// --- Trigger ---\n\ninterface TriggerProps {\n children: ReactNode\n}\n\nfunction Trigger({children}: TriggerProps) {\n const {open, show, hide, tooltipId} = useTooltip()\n\n return (\n <html.div\n onPointerEnter={show}\n onPointerLeave={hide}\n onFocus={show}\n onBlur={hide}\n aria-describedby={open ? tooltipId : undefined}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tooltip = {\n Root,\n Trigger,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n rootDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n track: {\n position: 'relative',\n width: 36,\n height: 20,\n borderRadius: radii.full,\n borderWidth: 0,\n padding: 0,\n cursor: 'inherit',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n flexShrink: 0,\n },\n trackUnchecked: {\n backgroundColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n trackChecked: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n },\n thumb: {\n position: 'absolute',\n top: 2,\n left: 2,\n width: 16,\n height: 16,\n borderRadius: radii.full,\n backgroundColor: '#fff',\n transitionProperty: 'transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n thumbChecked: {\n transform: 'translateX(16px)',\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import {type ReactNode, useCallback, useRef} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {styles} from './styles.css'\n\ninterface SwitchProps {\n /** Controlled checked state. */\n checked?: boolean\n /** Initial checked state (uncontrolled). */\n defaultChecked?: boolean\n /** Callback fired when the checked state changes. */\n onCheckedChange?: (checked: boolean) => void\n /** Prevents user interaction. */\n disabled?: boolean\n /** Form field name for the hidden input. */\n name?: string\n /** Value submitted when checked. */\n value?: string\n /** Label content rendered beside the switch. */\n children?: ReactNode\n}\n\nexport function Switch({\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n disabled = false,\n name,\n value,\n children,\n}: SwitchProps) {\n const [checked, setChecked] = useControllableValue(\n controlledChecked,\n defaultChecked,\n onCheckedChange,\n )\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleClick = useCallback(() => {\n if (disabled) return\n setChecked(!checked)\n // Keep hidden input in sync for form submission\n if (inputRef.current) {\n inputRef.current.checked = !checked\n }\n }, [disabled, checked, setChecked])\n\n return (\n <html.label\n style={[styles.root, isNative && styles.nativeFlex, disabled && styles.rootDisabled]}\n >\n {!isNative && (\n // Web: hidden real checkbox carries a11y + form submission. RSD has no\n // <input type=checkbox> on native, so it's omitted there and the\n // button below carries the switch role instead.\n <html.input\n ref={inputRef}\n type=\"checkbox\"\n role=\"switch\"\n name={name}\n value={value}\n checked={controlledChecked !== undefined ? controlledChecked : undefined}\n defaultChecked={controlledChecked === undefined ? defaultChecked : undefined}\n disabled={disabled}\n aria-checked={checked}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n onCheckedChange?.(e.target.checked)\n }}\n style={styles.input}\n />\n )}\n <html.button\n type=\"button\"\n tabIndex={-1}\n aria-hidden={isNative ? undefined : true}\n role={isNative ? 'switch' : undefined}\n aria-checked={isNative ? checked : undefined}\n disabled={disabled}\n onClick={handleClick}\n style={[styles.track, checked ? styles.trackChecked : styles.trackUnchecked]}\n >\n <html.span style={[styles.thumb, checked && styles.thumbChecked]} />\n </html.button>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'column',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignStretch: {alignItems: 'stretch'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpacingKey = 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl'\n\ninterface StackProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'stretch'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n stretch: styles.alignStretch,\n} as const\n\nexport function Stack({gap = 'md', align = 'stretch', children}: StackProps) {\n return <html.div style={[styles.base, gapMap[gap], alignMap[align]]}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignBaseline: {alignItems: 'baseline'},\n alignStretch: {alignItems: 'stretch'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface InlineProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'baseline' | 'stretch'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n baseline: styles.alignBaseline,\n stretch: styles.alignStretch,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Inline({gap = 'sm', align = 'center', justify = 'start', children}: InlineProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface ClusterProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Cluster({gap = 'sm', align = 'start', justify = 'start', children}: ClusterProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'grid',\n },\n col1: {gridTemplateColumns: '1fr'},\n col2: {gridTemplateColumns: 'repeat(2, 1fr)'},\n col3: {gridTemplateColumns: 'repeat(3, 1fr)'},\n col4: {gridTemplateColumns: 'repeat(4, 1fr)'},\n col5: {gridTemplateColumns: 'repeat(5, 1fr)'},\n col6: {gridTemplateColumns: 'repeat(6, 1fr)'},\n autoFit: (minWidth: string) => ({\n gridTemplateColumns: `repeat(auto-fill, minmax(${minWidth}, 1fr))`,\n }),\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface GridProps {\n gap?: SpacingKey\n columns?: 1 | 2 | 3 | 4 | 5 | 6\n minColumnWidth?: string\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst columnsMap = {\n 1: styles.col1,\n 2: styles.col2,\n 3: styles.col3,\n 4: styles.col4,\n 5: styles.col5,\n 6: styles.col6,\n} as const\n\nexport function Grid({gap = 'md', columns, minColumnWidth, children}: GridProps) {\n const columnStyle = minColumnWidth\n ? styles.autoFit(minColumnWidth)\n : columns\n ? columnsMap[columns]\n : undefined\n\n return <html.div style={[styles.base, gapMap[gap], columnStyle]}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {layoutSpacing} from '@duro-app/tokens/tokens/layout-spacing.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n width: '100%',\n },\n container: {\n width: '100%',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n // Max-width presets\n maxSm: {maxWidth: 600},\n maxMd: {maxWidth: 800},\n maxLg: {maxWidth: 1200},\n // Horizontal padding\n padSm: {paddingLeft: layoutSpacing.containerSm, paddingRight: layoutSpacing.containerSm},\n padMd: {paddingLeft: layoutSpacing.containerMd, paddingRight: layoutSpacing.containerMd},\n padLg: {paddingLeft: layoutSpacing.containerLg, paddingRight: layoutSpacing.containerLg},\n // Vertical spacing\n headerPadding: {paddingTop: spacing.lg},\n mainPadding: {paddingTop: spacing.xl, paddingBottom: spacing.xl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type PageShellMaxWidth = 'sm' | 'md' | 'lg' | 'full'\nexport type PageShellPadding = 'sm' | 'md' | 'lg'\n\ninterface PageShellProps {\n /** Max-width preset: sm (600), md (800), lg (1200), full (none). Default: 'lg' */\n maxWidth?: PageShellMaxWidth\n /** Horizontal padding preset. Default: 'md' (24px) */\n padding?: PageShellPadding\n /** Header element rendered above the main content with same constraints */\n header?: ReactNode\n children: ReactNode\n}\n\nconst maxWidthMap = {\n sm: styles.maxSm,\n md: styles.maxMd,\n lg: styles.maxLg,\n full: null,\n} as const\n\nconst paddingMap = {\n sm: styles.padSm,\n md: styles.padMd,\n lg: styles.padLg,\n} as const\n\nexport function PageShell({maxWidth = 'lg', padding = 'md', header, children}: PageShellProps) {\n const mw = maxWidthMap[maxWidth]\n const pad = paddingMap[padding]\n\n return (\n <html.div style={styles.root}>\n {header != null && (\n <html.header style={[styles.container, styles.maxLg, pad, styles.headerPadding]}>\n {header}\n </html.header>\n )}\n <html.main style={[styles.container, mw, pad, styles.mainPadding]}>{children}</html.main>\n </html.div>\n )\n}\n","import {useRef, useState, useEffect} from 'react'\n\nexport type ContainerSize = 'compact' | 'default' | 'spacious'\n\ninterface UseContainerQueryOptions {\n compactBelow?: number\n spaciousAbove?: number\n}\n\nexport function useContainerQuery<T extends HTMLElement = HTMLElement>(\n options: UseContainerQueryOptions = {},\n): {\n ref: React.RefObject<T | null>\n size: ContainerSize\n} {\n const {compactBelow = 480, spaciousAbove = 768} = options\n const ref = useRef<T | null>(null)\n const [size, setSize] = useState<ContainerSize>('default')\n\n useEffect(() => {\n const element = ref.current\n if (!element) return\n\n let rafId: number | null = null\n\n const observer = new ResizeObserver((entries) => {\n if (rafId !== null) cancelAnimationFrame(rafId)\n\n rafId = requestAnimationFrame(() => {\n const entry = entries[0]\n if (!entry) return\n\n const width = entry.contentBoxSize?.[0]?.inlineSize ?? entry.contentRect.width\n\n if (width < compactBelow) {\n setSize('compact')\n } else if (width >= spaciousAbove) {\n setSize('spacious')\n } else {\n setSize('default')\n }\n })\n })\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n if (rafId !== null) cancelAnimationFrame(rafId)\n }\n }, [compactBelow, spaciousAbove])\n\n return {ref, size}\n}\n"],"names":["createActionBarStore","entries","listeners","Set","notify","forEach","l","subscribe","cb","add","delete","getSnapshot","push","id","render","update","map","e","remove","filter","ActionBarContext","createContext","ActionBarProvider","children","storeRef","useRef","current","store","useSyncExternalStore","topEntry","length","jsxs","useActionBarStack","$","_c","useContext","useId","t0","some","register","t1","unregister","t2","bb0","t3","entries_0","isTop","t4","managed","styles","overlay","$$css","overlayOffset","bottom","val","undefined","overlayEmphasized","selectedCount","selectedCountEmphasized","actions","closeButton","closeButtonEmphasized","separator","separatorEmphasized","ActionBarContent","selectedItemCount","selectedLabel","isEmphasized","onClearSelection","dismissible","bottomOffset","countStr","label","t5","t6","t7","t8","t9","jsx","_rsdMerge","_rsdDefaultStyles","span","t10","t11","div","t12","t13","button","t14","ActionBarInner","props","stack","isActive","renderBar","useEffect","ActionBar","strokeIcons","Fragment","clock","forbidden","shield","lock","key","layers","repeat","database","route","menu","server","box","image","tag","users","mail","plug","pin","sun","moon","monitor","contrast","filledIcons","Icon","name","size","filled","base","iconWrap","content","error","success","warning","info","defaultIcons","resolveIcon","icon","variant","Alert","resolvedIcon","isNative","sizeMd","sizeSm","default","nativeFlex","sizeMap","sm","md","Badge","sizeDefault","sizeSmall","primary","secondary","link","inverseSecondary","danger","fullWidth","disabled","small","Button","type","onClick","ariaLabel","horizontal","vertical","alignStart","alignCenter","alignEnd","verticalAlignStart","verticalAlignCenter","verticalAlignEnd","gapXs","gapSm","gapMd","gapMap","xs","horizontalAlignMap","start","center","end","verticalAlignMap","ButtonGroup","orientation","align","gap","isVertical","alignStyle","Callout","elevated","outlined","interactive","sizeCompact","sizeFull","header","compact","full","Card","root","rootDisabled","boxUnchecked","boxChecked","input","Checkbox","value","checked","controlledChecked","defaultChecked","onChange","isControlled","internalChecked","setInternalChecked","useState","isChecked","target","handleChange","next","opacity","t15","Symbol","for","t16","t17","t18","t19","useControllableValue","controlledValue","defaultValue","internal","setInternal","v","setValue","rootHorizontal","CheckboxGroupContext","useCheckboxGroup","ctx","Error","Root","onValueChange","itemValue","onToggle","Item","itemDisabled","groupValue","groupDisabled","includes","isDisabled","CheckboxGroup","FieldContext","useFieldContext","invalid","ColorInput","required","onBlur","ref","fieldCtx","field","effectiveName","effectiveValue","String","effectiveOnChange","effectiveOnBlur","effectiveRef","effectiveDisabled","controlId","descriptionId","errorId","trim","backdrop","backdropOpen","backdropClosing","viewport","popup","popupOpen","popupClosing","lg","title","description","body","footer","inlineWrapper","reducedMotion","DialogContext","useDialog","open","controlledOpen","defaultOpen","onOpenChange","dismissable","closeAnimationDuration","internalOpen","setInternalOpen","closing","setClosing","closingTimerRef","popupRef","isOpen","titleId","clearTimeout","requestOpen","setTimeout","requestClose","onKeyDown","stopPropagation","document","addEventListener","removeEventListener","prev","style","overflow","Trigger","Portal","handleBackdropClick","Header","Title","h2","Description","p","Body","Footer","Close","Dialog","InputGroupContext","useInputGroupContext","inGroup","mono","Input","font","placeholder","readOnly","minLength","maxLength","min","max","step","inputMode","list","pattern","autoComplete","autoFocus","ariaDescribedby","groupCtx","effectiveVariant","describedBy","extraProps","FormContext","useFormContext","rootSide","labelSide","fieldContent","necessityIcon","necessityLabel","formCtx","ControlledRoot","StaticRoot","labelPosition","invalidProp","control","useRHFFormContext","fieldState","useController","effectiveLabelPosition","effectiveNecessityIndicator","necessityIndicator","message","errorMessage","FieldLayout","labelNode","rest","Children","child","isValidElement","Label","isSide","indicator","Field","ConfirmDialog","confirmPhrase","promptLabel","cancelLabel","confirmSlot","onConfirm","confirmLabel","typed","setTyped","satisfied","handleOpenChange","wrapper","wrapperOpenSm","wrapperCloseSm","wrapperOpenMd","wrapperCloseMd","contentSm","contentMd","slideIn","slideOut","bodyPadded","DetailPanelContext","useDetailPanel","present","setPresent","panelRef","previousFocusRef","labelId","setLabelId","activeElement","focus","el","useCallback","registerTitle","unregisterTitle","wrapperOpenMap","wrapperCloseMap","Content","padded","DetailPanel","viewportRight","viewportLeft","viewportBottom","panel","panelHorizontal","panelVertical","panelLeftBorder","slideInRight","slideOutRight","slideInLeft","slideOutLeft","slideInBottom","slideOutBottom","DISMISS_THRESHOLD","VELOCITY_THRESHOLD","DISMISS_DURATION","OPPOSITE_MAX_OVERSCROLL","useSwipeDismiss","anchor","enabled","onDismiss","startX","startY","currentX","currentY","startTime","swiping","panelSize","stateRef","isHorizontal","state","dx","getMovement","movement","panelEl","Number","dataset","progress","sign","transform","closest","previousElementSibling","Math","absMovement","abs","overscroll","shadowSpread","round","boxShadow","applyTransform","resetStyles","_temp","panelEl_1","dismissTransform","transition","backdrop_1","dismissed","done","once","animateDismiss","animateSnapBack","_temp2","handlePointerDown","rect","getBoundingClientRect","state_0","clientX","clientY","Date","now","width","height","setPointerCapture","pointerId","animation","handlePointerMove","e_0","state_1","dx_0","dy","sqrt","preventDefault","movement_0","handlePointerUp","_e","state_2","movement_1","elapsed","velocity","handlePointerCancel","state_3","handleTouchMove","e_1","passive","panelEl_2","backdrop_2","cleanup","panelEl_0","backdrop_0","DrawerContext","useDrawer","swipeDismiss","requestCloseImmediate","slideInMap","right","left","slideOutMap","viewportAnchorMap","swipeEnabled","t20","Drawer","action","EmptyState","typePresets","bodySm","bodyMd","bodyLg","caption","code","overline","headingSm","headingMd","headingLg","headingXl","displaySm","displayMd","displayLg","muted","accent","defaultVariantMap","alignMap","Heading","level","color","resolvedVariant","h1","h3","h4","h5","h6","item","itemSelected","text","empty","ListContext","selectionMode","useList","selected","ItemText","Actions","Empty","List","Text","formStyles","Form","schema","defaultValues","onSubmit","validationErrors","effectTsResolver","resolver","mode","reValidateMode","methods","useForm","prevErrorKeysRef","prevKeys","nextKeys","Object","keys","clearErrors","key_0","setError","formRef","errors","firstField","setFocus","onInvalid","handleSubmit","form","FormProvider","legend","gapMs","gapLg","gapXl","ms","xl","Legend","Fieldset","addon","addonStart","addonEnd","addonClickable","addonDisabled","dynamicStyles","minWidth","Addon","position","positionStyle","InputGroup","LinkButton","href","rel","a","bordered","Panel","circle","circleUnchecked","circleChecked","dot","RadioGroupContext","useRadioGroup","onSelect","handleClick","RadioGroup","scrollbar","scrollbarVertical","scrollbarHorizontal","scrollbarHidden","scrollbarVisible","thumb","viewportMaxHeight","maxHeight","thumbVertical","thumbHorizontal","ScrollAreaContext","useScrollArea","useScrollAreaRoot","viewportId","viewportRef","contentRef","scrollTop","setScrollTop","scrollLeft","setScrollLeft","scrollHeight","setScrollHeight","scrollWidth","setScrollWidth","clientHeight","setClientHeight","clientWidth","setClientWidth","scrolling","setScrolling","scrollTimerRef","vp","handleScroll","vp_0","observer","ResizeObserver","observe","disconnect","vp_1","Viewport","Scrollbar","maxScroll","scrollOffset","valueNow","Thumb","draggingRef","startPosRef","startScrollRef","thumbSizePercent","trackSize","thumbPixelSize","thumbOffset","thumbStyle","delta","scrollRatio","scrollDelta","ScrollArea","inputWrapper","inputWrapperFocused","trigger","itemHighlighted","itemHidden","hidden","popupPosition","top","ComboboxContext","useCombobox","useComboboxRoot","inputValue","controlledInputValue","onInputChange","initialLabels","initial","internalInputValue","setInternalInputValue","setInputValue","setOpen","labels","setLabels","highlightedId","setHighlightedId","listboxId","rootRef","inputRef","Map","itemsRef","orderRef","close","items","order","found","get","openPopup","selectValue","v_0","label_0","registerLabel","id_0","itemValue_0","element","set","ids","sort","b","elA","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","i","registerItem","query","toLowerCase","id_1","item_0","getVisibleOrder","handleKeyDown","visibleOrder","bb137","prev_2","idx_0","indexOf","idx","prev_1","prev_0","item_1","scrollIntoView","block","lightTheme","xjvd03b","lightShadows","x13v825q","highContrastTheme","highContrastShadows","themeMap","light","portalMount","PortalMountContext","usePortalMount","ThemeProvider","theme","overrides","themeStyles","mount","setMount","localRef","focused","setFocused","Popup","coords","setCoords","window","useLayoutEffect","node","createPortal","selectedValue","isSelected","isHighlighted","isVisible","textContent","el_0","values","Combobox","SelectContext","useSelect","useSelectRoot","triggerRef","toggle","order_0","items_0","bb86","prev_3","Value","display","Select","group","groupTrigger","groupTriggerActive","chevron","chevronOpen","section","sectionLabel","itemActive","marker","markerActive","itemIcon","itemLabel","SideNavContext","useSideNav","activeValue","expandedGroups","setExpandedGroups","has","toggleGroup","group_0","next_0","expandGroup","nav","Group","groupKey","defaultExpanded","isExpanded","groupRef","triggerId","panelId","querySelector","hasActiveChild","Section","SideNav","spinner","srOnly","Spinner","region","toast","iconSuccess","iconError","iconInfo","closeBtn","DEFAULT_DURATION","createToastStore","seq","opts","duration","variantIcon","variantIconStyle","ToastContext","useToast","ToastItem","entry","timer","ToastProvider","useMemo","dismiss","StatusIcon","TagGroupContext","useTagGroup","wrap","removableMd","removableSm","removeButton","removeButtonDisabled","removableSizeMap","Tag","removable","removableProp","onRemove","onRemoveProp","disabledProp","isGrouped","editable","removeTag","setFocusedIndex","removeLabel","tagContent","role","container","containerError","containerDisabled","containerStatic","liveRegion","useTagGroupCtx","onValidate","gridId","setValues","focusedIndex","setEditable","announcement","setAnnouncement","isInvalid","trimmed","addTag","value_0","getElementById","querySelectorAll","validate","commitValueRef","raw","selectionStart","handlePaste","clipboardData","getData","split","s","Boolean","handleFocus","TagGroup","rootVertical","listVertical","tab","tabVertical","tabActiveHorizontal","tabActiveVertical","tabIndicatorActive","indicatorHorizontal","indicatorVertical","indicatorOffsetH","offset","indicatorOffsetV","tabDisabled","TabsContext","useTabs","useTabsRoot","tabsRef","indicatorActive","setIndicatorActive","registerTab","listRef","setIndicator","CSS","escape","measure","offsetLeft","offsetWidth","offsetTop","offsetHeight","ro","tabs","listEl","prevKey","nextKey","targetValue","currentIdx","Tab","tabId","Tabs","Textarea","rows","textarea","PREFERENCES","ICON","system","dark","LABEL","ColorModeContext","useColorMode","canUseDom","matchMedia","isPreference","readStored","localStorage","getItem","writeStored","setItem","ColorModeProvider","defaultPreference","preference","controlled","onPreferenceChange","modes","storageKey","applyTheme","stored","setPreference","systemTheme","setSystemTheme","mq","matches","cycle","ColorModeToggle","weightNormal","weightMedium","weightSemibold","weightBold","truncate","weightMap","normal","medium","semibold","bold","weight","as","ToggleGroupContext","useToggleGroup","unpressed","pressed","grouped","Toggle","controlledPressed","defaultPressed","onPressedChange","sizeProp","groupPressed","standalonePressed","setStandalonePressed","ToggleGroup","multiple","nextPressed","TooltipContext","useTooltip","placement","delay","tooltipId","timerRef","show","hide","Tooltip","track","trackUnchecked","trackChecked","thumbChecked","Switch","onCheckedChange","setChecked","alignStretch","gapXxl","gapXxxl","xxl","xxxl","stretch","Stack","alignBaseline","justifyStart","justifyCenter","justifyEnd","justifyBetween","baseline","justifyMap","between","Inline","justify","Cluster","col1","col2","col3","col4","col5","col6","autoFit","columnsMap","Grid","columns","minColumnWidth","columnStyle","maxSm","maxMd","maxLg","padSm","padMd","padLg","headerPadding","mainPadding","maxWidthMap","paddingMap","PageShell","maxWidth","padding","mw","pad","main","useContainerQuery","options","compactBelow","spaciousAbove","setSize","rafId","cancelAnimationFrame","requestAnimationFrame","contentBoxSize","inlineSize","contentRect"],"mappings":"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"}