@duro-app/ui 0.45.0 → 0.46.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 (31) hide show
  1. package/dist/components/Table/FromTanstack.d.ts +1 -4
  2. package/dist/components/Table/FromTanstack.d.ts.map +1 -1
  3. package/dist/components/Table/Table.d.ts +2 -10
  4. package/dist/components/Table/Table.d.ts.map +1 -1
  5. package/dist/components/Table/Table.stories.d.ts +1 -0
  6. package/dist/components/Table/Table.stories.d.ts.map +1 -1
  7. package/dist/components/Tag/Tag.d.ts +9 -1
  8. package/dist/components/Tag/Tag.d.ts.map +1 -1
  9. package/dist/components/Tag/Tag.stories.d.ts +1 -0
  10. package/dist/components/Tag/Tag.stories.d.ts.map +1 -1
  11. package/dist/components/Tag/styles.css.d.ts +7 -0
  12. package/dist/components/Tag/styles.css.d.ts.map +1 -1
  13. package/dist/components/VirtualTable/VirtualTable.d.ts +12 -1
  14. package/dist/components/VirtualTable/VirtualTable.d.ts.map +1 -1
  15. package/dist/components/VirtualTable/VirtualTable.stories.d.ts +1 -0
  16. package/dist/components/VirtualTable/VirtualTable.stories.d.ts.map +1 -1
  17. package/dist/components/VirtualTable/styles.css.d.ts +40 -0
  18. package/dist/components/VirtualTable/styles.css.d.ts.map +1 -1
  19. package/dist/index.css +1 -1
  20. package/dist/index.js +2189 -2090
  21. package/dist/index.js.map +1 -1
  22. package/package.json +2 -2
  23. package/src/components/Table/FromTanstack.tsx +0 -5
  24. package/src/components/Table/Table.stories.tsx +61 -4
  25. package/src/components/Table/Table.tsx +67 -22
  26. package/src/components/Tag/Tag.stories.tsx +22 -0
  27. package/src/components/Tag/Tag.tsx +10 -0
  28. package/src/components/Tag/styles.css.ts +12 -0
  29. package/src/components/VirtualTable/VirtualTable.stories.tsx +29 -0
  30. package/src/components/VirtualTable/VirtualTable.tsx +152 -58
  31. package/src/components/VirtualTable/styles.css.ts +43 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.6_react-dom@19.2.4_react@19.2.4__react-native@0.84._1278be21509893d955b57d0db9435779/node_modules/react-strict-dom/dist/web/runtime.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-compiler-runtime.production.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-compiler-runtime.development.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/compiler-runtime.js","../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/Menu/styles.css.ts","../src/components/Menu/MenuContext.ts","../src/components/Menu/useMenuRoot.ts","../src/components/Menu/Menu.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","../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.6_react-dom@19.2.4_react@19.2.4__react-native@0.84._1278be21509893d955b57d0db9435779/node_modules/react-strict-dom/dist/web/index.js","../src/components/Table/styles.css.ts","../src/components/Table/Pagination.tsx","../src/components/Table/SortIndicator.tsx","../src/components/Table/ColumnFilter.tsx","../src/components/Table/SortChip.tsx","../src/components/Table/FromTanstack.tsx","../src/components/Table/Table.tsx","../src/components/VirtualTable/styles.css.ts","../src/components/VirtualTable/VirtualTable.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":["/**\n * @license react-strict-dom\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\nimport * as stylex from '@stylexjs/stylex';\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a = styles.inline;\nconst article = styles.block;\nconst aside = styles.block;\nconst b = styles.inline;\nconst bdi = styles.inline;\nconst bdo = styles.inline;\nconst blockquote = styles.block;\nconst br = null;\nconst button = [styles.inlineblock, styles.button];\nconst code = [styles.inline, styles.codePre];\nconst del = null;\nconst div = styles.block;\nconst em = styles.inline;\nconst fieldset = styles.block;\nconst footer = styles.block;\nconst form = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header = styles.block;\nconst hr = [styles.block, styles.hr];\nconst i = styles.inline;\nconst img = styles.img;\nconst input = [styles.inlineblock, styles.input];\nconst ins = null;\nconst kbd = null;\nconst label = styles.inline;\nconst li = styles.block;\nconst main = styles.block;\nconst mark = styles.inline;\nconst nav = styles.block;\nconst ol = [styles.list, styles.block];\nconst optgroup = null;\nconst option = null;\nconst p = styles.block;\nconst pre = [styles.block, styles.codePre];\nconst s = null;\nconst section = styles.block;\nconst select = styles.inlineblock;\nconst span = styles.inline;\nconst strong = [styles.inline, styles.strong];\nconst sub = styles.inline;\nconst sup = styles.inline;\nconst textarea = [styles.inlineblock, styles.textarea];\nconst u = null;\nconst ul = [styles.list, styles.block];\nconst defaultStyles = {\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n};\n\nexport { defaultStyles, merge };\n","/**\n * @license React\n * react-compiler-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nexports.c = function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n};\n","/**\n * @license React\n * react-compiler-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n var ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n exports.c = function (size) {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher.useMemoCache(size);\n };\n })();\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-compiler-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-compiler-runtime.development.js');\n}\n","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, 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 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: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color',\n transitionDuration: duration.fast,\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: 'absolute',\n top: '100%',\n left: 0,\n marginTop: spacing.xs,\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: 160,\n zIndex: 50,\n },\n popupEnd: {\n left: 'auto',\n right: 0,\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 itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n linkItem: {\n textDecoration: 'none',\n color: {\n default: colors.text,\n ':hover': colors.text,\n },\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface MenuContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n menuId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null)\n\nexport function useMenu() {\n const ctx = useContext(MenuContext)\n if (!ctx) throw new Error('Menu compound components must be used within Menu.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useId, useEffect} from 'react'\nimport type {MenuContextValue} from './MenuContext'\n\nexport function useMenuRoot() {\n const [open, setOpen] = useState(false)\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const menuId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, HTMLElement>())\n const orderRef = useRef<string[]>([])\n const needsInitialHighlightRef = useRef(false)\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n needsInitialHighlightRef.current = true\n } else {\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n }\n return !prev\n })\n }, [])\n\n // Highlight the first item after items register on open.\n // Child effects (item registration) run before this parent effect,\n // so orderRef is populated by the time this runs.\n useEffect(() => {\n if (open && needsInitialHighlightRef.current) {\n needsInitialHighlightRef.current = false\n const order = orderRef.current\n if (order.length > 0) {\n setHighlightedId(order[0])\n }\n }\n }, [open])\n\n const registerItem = useCallback((id: string, element: HTMLElement) => {\n itemsRef.current.set(id, element)\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)\n const elB = map.get(b)\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 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 const items = itemsRef.current\n setHighlightedId((prev) => {\n if (prev) {\n const el = items.get(prev)\n el?.click()\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])\n\n const ctx: MenuContextValue = {\n open,\n toggle,\n close,\n menuId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {MenuContext, useMenu} from './MenuContext'\nimport {useMenuRoot} from './useMenuRoot'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const {ctx, rootRef} = useMenuRoot()\n\n return (\n <MenuContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {children}\n </html.div>\n </MenuContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({children}: {children: ReactNode}) {\n const {open, toggle, menuId, triggerRef} = useMenu()\n const localRef = useRef<HTMLButtonElement>(null)\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 type=\"button\"\n onClick={toggle}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n aria-controls={open ? menuId : undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Popup ---\ninterface PopupProps {\n children: ReactNode\n align?: 'start' | 'end'\n}\n\nfunction Popup({children, align = 'start'}: PopupProps) {\n const {open, close, menuId, highlightedId} = useMenu()\n\n if (!open) return null\n\n return (\n <>\n <html.div style={styles.backdrop} onClick={close} />\n <html.div\n id={menuId}\n role=\"menu\"\n aria-activedescendant={highlightedId ?? undefined}\n style={[styles.popup, align === 'end' && styles.popupEnd]}\n >\n {children}\n </html.div>\n </>\n )\n}\n\n// --- Item ---\ninterface ItemProps {\n onClick?: () => void\n children: ReactNode\n}\n\nfunction Item({onClick, children}: ItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n const handleClick = () => {\n onClick?.()\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"menuitem\"\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- LinkItem ---\ninterface LinkItemProps {\n href: string\n children: ReactNode\n}\n\nfunction LinkItem({href, children}: LinkItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLAnchorElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n return (\n <html.a\n ref={ref}\n id={id}\n href={href}\n onClick={close}\n role=\"menuitem\"\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, styles.linkItem, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.a>\n )\n}\n\nexport const Menu = {\n Root,\n Trigger,\n Popup,\n Item,\n LinkItem,\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 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 // 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 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 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 ]}\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","/**\n * @license react-strict-dom\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\nimport { jsx } from 'react/jsx-runtime';\nimport * as stylex from '@stylexjs/stylex';\nexport { stylex as css };\n\nconst loggedMessages = {};\nfunction errorMsg(msg) {\n if (process.env.NODE_ENV !== 'test' && loggedMessages[msg]) {\n return;\n }\n loggedMessages[msg] = true;\n console.error(`[error] React Strict DOM: ${msg}`);\n}\n\nconst strictAttributeSet = new Set(['alt', 'aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colindextext', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowindextext', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'autoCapitalize', 'autoComplete', 'autoFocus', 'checked', 'children', 'crossOrigin', 'decoding', 'defaultChecked', 'defaultValue', 'dir', 'disabled', 'download', 'draggable', 'elementTiming', 'enterKeyHint', 'fetchPriority', 'for', 'height', 'hidden', 'href', 'id', 'inert', 'inputMode', 'label', 'lang', 'loading', 'max', 'maxLength', 'min', 'minLength', 'multiple', 'name', 'onAuxClick', 'onBeforeInput', 'onBlur', 'onChange', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onError', 'onFocus', 'onFocusIn', 'onFocusOut', 'onFullscreenChange', 'onFullscreenError', 'onGotPointerCapture', 'onInput', 'onInvalid', 'onKeyDown', 'onKeyUp', 'onLoad', 'onLostPointerCapture', 'onPaste', 'onPointerCancel', 'onPointerDown', 'onPointerEnter', 'onPointerLeave', 'onPointerMove', 'onPointerOut', 'onPointerOver', 'onPointerUp', 'onScroll', 'onSelect', 'onSelectionChange', 'onWheel', 'placeholder', 'readOnly', 'referrerPolicy', 'rel', 'required', 'role', 'rows', 'selected', 'spellCheck', 'src', 'srcSet', 'step', 'style', 'tabIndex', 'target', 'type', 'value', 'width', 'suppressHydrationWarning', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart']);\nfunction isPropAllowed(key) {\n return strictAttributeSet.has(key) || key.indexOf('data-') > -1;\n}\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nfunction validateStrictProps(props) {\n Object.keys(props).forEach(key => {\n const isValid = isPropAllowed(key);\n if (!isValid) {\n errorMsg(`invalid prop \"${key}\"`);\n delete props[key];\n }\n });\n}\nfunction createStrictDOMComponent(TagName, defaultStyle) {\n const debugStyle = {\n $$css: true,\n 'debug::name': `html-${TagName}`\n };\n function Component({\n ref,\n ...props\n }) {\n const {\n for: htmlFor,\n style,\n ...restProps\n } = props;\n const hostProps = restProps;\n validateStrictProps(hostProps);\n if (htmlFor != null) {\n hostProps.htmlFor = htmlFor;\n }\n if (props.role != null) {\n hostProps.role = props.role === 'none' ? 'presentation' : props.role;\n }\n if (TagName === 'button') {\n hostProps.type = hostProps.type ? hostProps.type : 'button';\n } else if (TagName === 'input' || TagName === 'textarea') {\n hostProps.dir = hostProps.dir ? hostProps.dir : 'auto';\n }\n const hostStyleProps = merge([debugStyle, defaultStyle, style]);\n const element = jsx(TagName, {\n ...hostProps,\n ...hostStyleProps,\n ref: ref\n });\n return element;\n }\n Component.displayName = `html.${TagName}`;\n return Component;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a$1 = styles.inline;\nconst article$1 = styles.block;\nconst aside$1 = styles.block;\nconst b$1 = styles.inline;\nconst bdi$1 = styles.inline;\nconst bdo$1 = styles.inline;\nconst blockquote$1 = styles.block;\nconst br$1 = null;\nconst button$1 = [styles.inlineblock, styles.button];\nconst code$1 = [styles.inline, styles.codePre];\nconst del$1 = null;\nconst div$1 = styles.block;\nconst em$1 = styles.inline;\nconst fieldset$1 = styles.block;\nconst footer$1 = styles.block;\nconst form$1 = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header$1 = styles.block;\nconst hr$1 = [styles.block, styles.hr];\nconst i$1 = styles.inline;\nconst img$1 = styles.img;\nconst input$1 = [styles.inlineblock, styles.input];\nconst ins$1 = null;\nconst kbd$1 = null;\nconst label$1 = styles.inline;\nconst li$1 = styles.block;\nconst main$1 = styles.block;\nconst mark$1 = styles.inline;\nconst nav$1 = styles.block;\nconst ol$1 = [styles.list, styles.block];\nconst optgroup$1 = null;\nconst option$1 = null;\nconst p$1 = styles.block;\nconst pre$1 = [styles.block, styles.codePre];\nconst s$1 = null;\nconst section$1 = styles.block;\nconst select$1 = styles.inlineblock;\nconst span$1 = styles.inline;\nconst strong$1 = [styles.inline, styles.strong];\nconst sub$1 = styles.inline;\nconst sup$1 = styles.inline;\nconst textarea$1 = [styles.inlineblock, styles.textarea];\nconst u$1 = null;\nconst ul$1 = [styles.list, styles.block];\nconst defaultStyles = {\n a: a$1,\n article: article$1,\n aside: aside$1,\n b: b$1,\n bdi: bdi$1,\n bdo: bdo$1,\n blockquote: blockquote$1,\n br: br$1,\n button: button$1,\n code: code$1,\n del: del$1,\n div: div$1,\n em: em$1,\n fieldset: fieldset$1,\n footer: footer$1,\n form: form$1,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header$1,\n hr: hr$1,\n i: i$1,\n img: img$1,\n input: input$1,\n ins: ins$1,\n kbd: kbd$1,\n label: label$1,\n li: li$1,\n main: main$1,\n mark: mark$1,\n nav: nav$1,\n ol: ol$1,\n optgroup: optgroup$1,\n option: option$1,\n p: p$1,\n pre: pre$1,\n s: s$1,\n section: section$1,\n select: select$1,\n span: span$1,\n strong: strong$1,\n sub: sub$1,\n sup: sup$1,\n textarea: textarea$1,\n u: u$1,\n ul: ul$1\n};\n\nconst a = createStrictDOMComponent('a', defaultStyles.a);\nconst article = createStrictDOMComponent('article', defaultStyles.article);\nconst aside = createStrictDOMComponent('aside', defaultStyles.aside);\nconst b = createStrictDOMComponent('b', defaultStyles.b);\nconst bdi = createStrictDOMComponent('bdi', defaultStyles.bdi);\nconst bdo = createStrictDOMComponent('bdo', defaultStyles.bdo);\nconst blockquote = createStrictDOMComponent('blockquote', defaultStyles.blockquote);\nconst br = createStrictDOMComponent('br', defaultStyles.br);\nconst button = createStrictDOMComponent('button', defaultStyles.button);\nconst code = createStrictDOMComponent('code', defaultStyles.code);\nconst del = createStrictDOMComponent('del', defaultStyles.del);\nconst div = createStrictDOMComponent('div', defaultStyles.div);\nconst em = createStrictDOMComponent('em', defaultStyles.em);\nconst fieldset = createStrictDOMComponent('fieldset', defaultStyles.fieldset);\nconst footer = createStrictDOMComponent('footer', defaultStyles.footer);\nconst form = createStrictDOMComponent('form', defaultStyles.form);\nconst h1 = createStrictDOMComponent('h1', defaultStyles.h1);\nconst h2 = createStrictDOMComponent('h2', defaultStyles.h2);\nconst h3 = createStrictDOMComponent('h3', defaultStyles.h3);\nconst h4 = createStrictDOMComponent('h4', defaultStyles.h4);\nconst h5 = createStrictDOMComponent('h5', defaultStyles.h5);\nconst h6 = createStrictDOMComponent('h6', defaultStyles.h6);\nconst header = createStrictDOMComponent('header', defaultStyles.header);\nconst hr = createStrictDOMComponent('hr', defaultStyles.hr);\nconst i = createStrictDOMComponent('i', defaultStyles.i);\nconst img = createStrictDOMComponent('img', defaultStyles.img);\nconst input = createStrictDOMComponent('input', defaultStyles.input);\nconst ins = createStrictDOMComponent('ins', defaultStyles.ins);\nconst kbd = createStrictDOMComponent('kbd', defaultStyles.kbd);\nconst label = createStrictDOMComponent('label', defaultStyles.label);\nconst li = createStrictDOMComponent('li', defaultStyles.li);\nconst main = createStrictDOMComponent('main', defaultStyles.main);\nconst mark = createStrictDOMComponent('mark', defaultStyles.mark);\nconst nav = createStrictDOMComponent('nav', defaultStyles.nav);\nconst ol = createStrictDOMComponent('ol', defaultStyles.ol);\nconst optgroup = createStrictDOMComponent('optgroup', defaultStyles.optgroup);\nconst option = createStrictDOMComponent('option', defaultStyles.option);\nconst p = createStrictDOMComponent('p', defaultStyles.p);\nconst pre = createStrictDOMComponent('pre', defaultStyles.pre);\nconst s = createStrictDOMComponent('s', defaultStyles.s);\nconst section = createStrictDOMComponent('section', defaultStyles.section);\nconst select = createStrictDOMComponent('select', defaultStyles.select);\nconst span = createStrictDOMComponent('span', defaultStyles.span);\nconst strong = createStrictDOMComponent('strong', defaultStyles.strong);\nconst sub = createStrictDOMComponent('sub', defaultStyles.sub);\nconst sup = createStrictDOMComponent('sup', defaultStyles.sup);\nconst textarea = createStrictDOMComponent('textarea', defaultStyles.textarea);\nconst u = createStrictDOMComponent('u', defaultStyles.u);\nconst ul = createStrictDOMComponent('ul', defaultStyles.ul);\n\nvar html = /*#__PURE__*/Object.freeze({\n __proto__: null,\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: h1,\n h2: h2,\n h3: h3,\n h4: h4,\n h5: h5,\n h6: h6,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n});\n\nexport { html };\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\n// Container-query thresholds. Picked for typical 5-7 column admin tables —\n// see Table.stories.tsx \"Responsive\" for the visual reasoning. Defined\n// once here so it's clear they're a design-system constant, not a magic\n// number sprinkled across files.\nconst COMPACT_BP = '720px'\nconst STACK_BP = '440px'\n\nexport const styles = css.create({\n // Outer wrapper that hosts the @container query. Wraps SortChip + Root\n // + Pagination so all three react to the same width. Root itself does\n // NOT carry containerType — keeping a single query target per Table.\n //\n // @deprecated Use Table.Root's sortChip/pagination slot props instead.\n // This style backs the deprecated <Table.Container> wrapper.\n container: {\n containerType: 'inline-size',\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n\n // The same containment chrome, but applied by Root when responsive=true.\n // Mirrors `container` so consumers don't need to wrap manually.\n rootContainer: {\n containerType: 'inline-size',\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n\n // Applied when Row receives an `onClick` handler. Cursor signals clickability;\n // the :focus-visible outline meets WCAG 2.4.7 for keyboard navigation.\n clickableRow: {\n cursor: 'pointer',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: -2,\n },\n\n // Root — the single grid container for the table itself\n root: {\n display: 'grid',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n overflow: 'hidden',\n backgroundColor: colors.bgCard,\n fontFamily: typography.fontFamily,\n color: colors.text,\n },\n\n // Stack-mode override: the Root's grid collapses to a single column so\n // each Row spans full width and stacks vertically.\n // NOTE: gridTemplateColumns is intentionally absent here. It is handled by\n // gridColumnsResponsive() so that StyleX conflict resolution does not remove\n // the explicit column template (a later style with the same property key\n // always wins, so combining gridColumns + rootResponsive in one array would\n // silently drop the column template).\n rootResponsive: {\n // The card-list look needs the outer border to disappear in stack\n // mode — each row paints its own border.\n borderWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n backgroundColor: {\n default: colors.bgCard,\n [`@container (max-width: ${STACK_BP})`]: 'transparent',\n },\n overflow: {\n default: 'hidden',\n [`@container (max-width: ${STACK_BP})`]: 'visible',\n },\n rowGap: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n },\n\n // Header group — hidden entirely in stack mode\n header: {\n display: {\n default: 'grid',\n [`@container (max-width: ${STACK_BP})`]: 'none',\n },\n gridColumn: '1 / -1',\n gridTemplateColumns: 'subgrid',\n backgroundColor: colors.bgCard,\n },\n\n // Body group\n body: {\n display: 'grid',\n gridColumn: '1 / -1',\n gridTemplateColumns: 'subgrid',\n },\n\n // Row — spans all columns. In stack mode its template flips to 1fr so\n // children stack as grid items in a single column (we keep grid context\n // so cells with `gridColumn` overrides still compute).\n row: {\n display: 'grid',\n gridColumn: '1 / -1',\n gridTemplateColumns: {\n default: 'subgrid',\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n borderBottomWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n bodyRow: {\n backgroundColor: {\n default: 'transparent',\n [`@container (max-width: ${STACK_BP})`]: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n // Stack-mode card chrome\n padding: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n borderRadius: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: radii.sm,\n },\n borderWidth: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: 1,\n },\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n\n // Header cell — keeps headers on a single line in compact mode\n headerCell: {\n fontWeight: typography.fontWeightSemibold,\n color: colors.textMuted,\n textAlign: 'start',\n // Match the body cell: shrink inside the track + wrap, so header labels\n // don't overlap when many columns are cramped.\n minWidth: 0,\n overflowWrap: 'break-word',\n whiteSpace: {\n default: 'normal',\n [`@container (max-width: ${COMPACT_BP})`]: 'nowrap',\n },\n },\n\n // Body cell. Text wraps by default — preferring \"wrap to a 2nd line\" over\n // \"truncate with ellipsis\" matches BI/data-reporting conventions where\n // hiding content (even with a visual hint) is treated as data loss.\n // Consumers that explicitly want single-line truncation use Text's\n // `truncate` prop, which sets its own nowrap + overflow + ellipsis chain\n // on the Text element itself. Buttons and badges already enforce\n // `white-space: nowrap` internally, so they're unaffected by this\n // default. In stack mode the cell becomes a 2-column grid for\n // label / value.\n cell: {\n color: colors.text,\n display: {\n default: 'flex',\n [`@container (max-width: ${STACK_BP})`]: 'grid',\n },\n alignItems: 'center',\n // Always let the cell shrink inside its `minmax(0, 1fr)` track. Previously\n // this was `auto` in the default (wide) band on the assumption there's\n // \"enough room\" — but a table with many columns (or wide content) whose\n // combined intrinsic width exceeds the container then can't shrink, so\n // content spills its track and overlaps the next column. `0` + the\n // wrapping below keeps every cell inside its column at any width.\n minWidth: 0,\n overflow: {\n // Safety against pathological unbreakable content (long URLs,\n // dataless ids) at narrow widths.\n default: 'visible',\n [`@container (max-width: ${COMPACT_BP})`]: 'hidden',\n },\n whiteSpace: 'normal',\n // Break long unbreakable tokens (emails, UUIDs) so they wrap within the\n // column instead of forcing it wider / overflowing.\n overflowWrap: 'break-word',\n gridTemplateColumns: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: '1fr 2fr',\n },\n gap: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n },\n\n // Wrapper around a (non-actions) cell's value. A raw text node is an\n // anonymous flex item with `min-width: auto`, so it refuses to shrink and\n // overflows its column even when the cell itself can shrink. Giving the value\n // its own `min-width: 0` flex item lets the text wrap inside the column.\n cellValue: {\n minWidth: 0,\n flexGrow: 1,\n overflowWrap: 'break-word',\n },\n\n // Label rendered as a real <span> inside each cell. Display:none in\n // default/compact, shown only in stack — matches StyleX guidance to\n // prefer real elements over ::before/::after for non-shadow-DOM cases.\n cellLabel: {\n display: {\n default: 'none',\n [`@container (max-width: ${STACK_BP})`]: 'block',\n },\n color: colors.textMuted,\n fontWeight: typography.fontWeightMedium,\n fontSize: typography.fontSizeXs,\n },\n\n // Actions cell. In default/compact behaves like any cell. In stack\n // mode: full-width footer of the card, right-aligned, with a top\n // separator. Label span is suppressed in JSX (Cell does not render it\n // when isActions=true).\n cellActions: {\n gridTemplateColumns: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n justifyContent: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: 'flex-end',\n },\n marginTop: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n paddingTop: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n borderTopWidth: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: 1,\n },\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // Size: sm\n cellSm: {\n paddingTop: {\n default: spacing.xs,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.xs,\n },\n paddingBottom: {\n default: spacing.xs,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.xs,\n },\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n // Size: md\n cellMd: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: {\n default: spacing.md,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.sm,\n },\n paddingRight: {\n default: spacing.md,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.sm,\n },\n fontSize: typography.fontSizeSm,\n },\n\n // Variant: striped (even body rows). Suppressed in stack — cards have\n // their own surface and zebra-striping reads as a bug there.\n stripedEven: {\n backgroundColor: {\n default: colors.bgCardHover,\n [`@container (max-width: ${STACK_BP})`]: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n },\n\n // Variant: bordered (cells get side borders). Suppressed in stack.\n borderedCell: {\n borderRightWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n borderedCellLast: {\n borderRightWidth: 0,\n },\n\n // SortChip — visible only in stack mode\n sortChip: {\n display: {\n default: 'none',\n [`@container (max-width: ${STACK_BP})`]: 'inline-flex',\n },\n alignSelf: 'flex-start',\n },\n\n // --- JS-measured force-stack variants ---\n //\n // A container query can only test the container's WIDTH — it can't know\n // \"6 columns won't fit here\". So a dense table can be wider than STACK_BP\n // yet still crush every cell to a few characters. Table.Root measures the\n // container with a ResizeObserver and, when `width < columnCount ×\n // minColumnWidth`, sets `stacked` in context; each component then also\n // applies its `*Stacked` variant here. These mirror the values in the\n // `@container (max-width: ${STACK_BP})` branches above, so JS-forced and\n // CSS-driven stacking render identically. The @container base is kept as\n // the SSR-safe path for genuinely narrow (mobile) widths — no JS, no\n // hydration flash — while these handle the cramped medium-width case.\n rootStacked: {\n gridTemplateColumns: '1fr',\n borderWidth: 0,\n backgroundColor: 'transparent',\n overflow: 'visible',\n rowGap: spacing.sm,\n },\n headerStacked: {\n display: 'none',\n },\n rowStacked: {\n gridTemplateColumns: '1fr',\n borderBottomWidth: 0,\n },\n bodyRowStacked: {\n backgroundColor: {\n default: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n padding: spacing.sm,\n borderRadius: radii.sm,\n borderWidth: 1,\n },\n cellStacked: {\n display: 'grid',\n gridTemplateColumns: '1fr 2fr',\n gap: spacing.sm,\n },\n cellLabelStacked: {\n display: 'block',\n },\n cellActionsStacked: {\n gridTemplateColumns: '1fr',\n justifyContent: 'flex-end',\n marginTop: spacing.sm,\n paddingTop: spacing.sm,\n borderTopWidth: 1,\n },\n borderedCellStacked: {\n borderRightWidth: 0,\n },\n sortChipStacked: {\n display: 'inline-flex',\n },\n\n // Dynamic: grid columns applied on Root (non-responsive path only).\n gridColumns: (template: string) => ({\n gridTemplateColumns: template,\n }),\n\n // Dynamic: grid columns at three tiers (default / compact / stack) in\n // one style. Used instead of gridColumns() when responsive=true so that\n // every gridTemplateColumns rule lives in the same StyleX style object —\n // splitting them would let StyleX's conflict resolution drop the\n // earlier classes (the LAST style wins per property key).\n //\n // - default: balanced multi-column layout for desktop widths\n // - @container (max-width: COMPACT_BP): consumer-supplied \"compact\"\n // template, e.g. give a badge column max-content and let the action\n // column absorb the slack so its hint text fits on one line\n // - @container (max-width: STACK_BP): collapse to a single column so\n // each row becomes a card\n gridColumnsResponsive: (template: string, compactTemplate: string) => ({\n gridTemplateColumns: {\n default: template,\n [`@container (max-width: ${COMPACT_BP})`]: compactTemplate,\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n }),\n})\n","import type {Table} from '@tanstack/react-table'\nimport {html} from 'react-strict-dom'\nimport {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nconst styles = css.create({\n root: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.sm,\n },\n button: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: 6,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.text,\n fontSize: typography.fontSizeSm,\n cursor: 'pointer',\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n buttonDisabled: {\n opacity: 0.4,\n cursor: 'not-allowed',\n backgroundColor: 'transparent',\n },\n pageInfo: {\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n },\n})\n\ninterface PaginationProps<TData> {\n table: Table<TData>\n}\n\nexport function Pagination<TData>({table}: PaginationProps<TData>) {\n const {pageIndex, pageSize} = table.getState().pagination\n const pageCount = table.getPageCount()\n const totalRows = table.getFilteredRowModel().rows.length\n\n if (totalRows <= pageSize) return null\n\n return (\n <html.div style={styles.root}>\n <html.button\n style={[styles.button, !table.getCanPreviousPage() && styles.buttonDisabled]}\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Previous\n </html.button>\n <html.span style={styles.pageInfo}>\n {pageIndex + 1} / {pageCount}\n </html.span>\n <html.button\n style={[styles.button, !table.getCanNextPage() && styles.buttonDisabled]}\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n </html.button>\n </html.div>\n )\n}\n","import type {Column} from '@tanstack/react-table'\nimport {html} from 'react-strict-dom'\nimport {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nconst styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n marginLeft: 4,\n fontSize: 10,\n userSelect: 'none',\n // Hidden by default, shown on hover or when active\n opacity: 0,\n transitionProperty: 'opacity',\n transitionDuration: '120ms',\n },\n active: {\n opacity: 1,\n color: colors.accent,\n },\n inactive: {\n color: colors.textMuted,\n },\n})\n\ninterface SortIndicatorProps<TData> {\n column: Column<TData, unknown>\n}\n\n/**\n * Sort direction chevron for table column headers.\n *\n * - Shows \\u25B2 (asc), \\u25BC (desc), or \\u21C5 (unsorted)\n * - Hidden by default, visible on header hover or when actively sorted\n * - Clicking the header cell should call column.getToggleSortingHandler()\n *\n * The parent HeaderCell applies a :hover rule that sets child opacity to 1.\n */\nexport function SortIndicator<TData>({column}: SortIndicatorProps<TData>) {\n if (!column.getCanSort()) return null\n\n const sorted = column.getIsSorted()\n\n return (\n <html.span\n style={[styles.root, sorted ? styles.active : styles.inactive]}\n data-sort-indicator=\"\"\n >\n {sorted === 'asc' ? '\\u25B2' : sorted === 'desc' ? '\\u25BC' : '\\u21C5'}\n </html.span>\n )\n}\n","import type {Column} from '@tanstack/react-table'\nimport {html} from 'react-strict-dom'\nimport {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\nconst styles = css.create({\n input: {\n width: '100%',\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n marginTop: spacing.xs,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.xs,\n backgroundColor: colors.bg,\n color: colors.text,\n fontSize: typography.fontSizeXs,\n outline: 'none',\n },\n})\n\ninterface ColumnFilterProps<TData> {\n column: Column<TData, unknown>\n placeholder?: string\n}\n\nexport function ColumnFilter<TData>({column, placeholder}: ColumnFilterProps<TData>) {\n if (!column.getCanFilter()) return null\n\n const filterValue = (column.getFilterValue() as string) ?? ''\n\n return (\n <html.input\n style={styles.input}\n type=\"text\"\n value={filterValue}\n onChange={(e: any) => column.setFilterValue(e.target.value || undefined)}\n placeholder={placeholder ?? `Filter...`}\n />\n )\n}\n","import {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {Menu} from '../Menu/Menu'\n\nexport interface SortValue {\n readonly id: string\n readonly desc: boolean\n}\n\nexport interface SortChipProps {\n readonly options: ReadonlyArray<{readonly id: string; readonly label: string}>\n readonly value: SortValue | null\n readonly onChange: (next: SortValue | null) => void\n /** Visible label preceding the sort field, e.g. \"Sort by\". */\n readonly label?: string\n /**\n * Reveal the chip regardless of the container query. Injected by\n * `Table.Root` when it force-stacks a cramped medium-width table (headers\n * hidden but container wider than the mobile breakpoint, so the chip's own\n * `@container` rule hasn't fired). Not part of the public API.\n */\n readonly forceShow?: boolean\n}\n\n/**\n * Sort selector for stack-mode Tables. Hidden in default/compact via\n * `@container` query — see styles.sortChip. Consumers render this inside\n * a `Table.Container` so the same query target reaches it.\n *\n * The chip is a simple controlled wrapper around `Menu`. It does NOT\n * couple to @tanstack/react-table — the consumer wires `value` and\n * `onChange` from whatever sort state they manage.\n */\nexport function SortChip({\n options,\n value,\n onChange,\n label = 'Sort by',\n forceShow = false,\n}: SortChipProps) {\n const current = value ? options.find((o) => o.id === value.id) : null\n const triggerLabel = current ? `${label}: ${current.label} ${value!.desc ? '↓' : '↑'}` : label\n\n return (\n <html.div style={[styles.sortChip, forceShow && styles.sortChipStacked]}>\n <Menu.Root>\n <Menu.Trigger>{triggerLabel}</Menu.Trigger>\n <Menu.Popup>\n {options.map((opt) => {\n const isCurrent = value?.id === opt.id\n const nextDesc = isCurrent ? !value!.desc : false\n return (\n <Menu.Item key={opt.id} onClick={() => onChange({id: opt.id, desc: nextDesc})}>\n {opt.label}\n {isCurrent ? ` ${value!.desc ? '↓' : '↑'}` : ''}\n </Menu.Item>\n )\n })}\n {value !== null && <Menu.Item onClick={() => onChange(null)}>Clear sort</Menu.Item>}\n </Menu.Popup>\n </Menu.Root>\n </html.div>\n )\n}\nSortChip.displayName = 'SortChip'\n","import {type ReactNode} from 'react'\nimport {type Row, type Table as TanstackTable, flexRender} from '@tanstack/react-table'\nimport {\n Body,\n Cell,\n Header,\n HeaderCell,\n Root,\n Row as TableRow,\n type TableSize,\n type TableVariant,\n} from './Table'\nimport {Pagination} from './Pagination'\nimport {SortChip, type SortValue} from './SortChip'\n\n// ColumnMeta is augmented in `./tanstack-augmentation` so the types\n// register independently of whether the consumer imports FromTanstack.\n\n// Base props shared by both clickable and non-clickable variants.\ninterface FromTanstackBaseProps<TData> {\n readonly table: TanstackTable<TData>\n readonly variant?: TableVariant\n readonly size?: TableSize\n readonly responsive?: boolean\n /** Min comfortable column width (px) before the table cards up. Forwarded\n * to Table.Root — see its `minColumnWidth`. Default 128. */\n readonly minColumnWidth?: number\n /** Render a SortChip above the grid (stack-mode only). Options derive from\n * columns where `column.getCanSort()` returns true. Wires value/onChange\n * through the TanStack sorting state automatically. */\n readonly sortChip?: boolean\n /** Render Pagination below the grid. */\n readonly pagination?: boolean\n /** Key extractor; defaults to TanStack's row.id. */\n readonly rowKey?: (row: Row<TData>) => string\n}\n\n// Discriminated union: rowAriaLabel is required when onRowClick is set so\n// keyboard / screen-reader users always get an accessible name for the\n// interactive row.\nexport type FromTanstackProps<TData> = FromTanstackBaseProps<TData> &\n (\n | {\n readonly onRowClick: (row: Row<TData>) => void\n /** Accessible name for each clickable row. Required because the row's\n * visible cell content alone is rarely a useful accessible name. */\n readonly rowAriaLabel: (row: Row<TData>) => string\n }\n | {\n readonly onRowClick?: undefined\n readonly rowAriaLabel?: undefined\n }\n )\n\n/**\n * Renders a styled Table directly from a TanStack table instance.\n *\n * Labels for stack mode are derived in this order:\n * 1. `column.columnDef.meta?.stackLabel` (explicit override)\n * 2. `column.columnDef.header` when it's a string\n * 3. Empty (use only for the actions column or when meta.stackLabel is set)\n *\n * Mark the actions column with `meta: { isActions: true }` to apply the\n * stack-mode footer styling to its body cells.\n *\n * @example\n * <Table.FromTanstack table={tanstackTable} sortChip pagination onRowClick={(r) => nav(r)} />\n */\nexport function FromTanstack<TData>({\n table,\n variant = 'default',\n size = 'md',\n responsive = true,\n minColumnWidth,\n sortChip,\n pagination,\n rowKey,\n onRowClick,\n rowAriaLabel,\n}: FromTanstackProps<TData>) {\n const sortChipNode: ReactNode = sortChip ? buildSortChip(table) : undefined\n const paginationNode: ReactNode = pagination ? <Pagination table={table} /> : undefined\n\n return (\n <Root\n variant={variant}\n size={size}\n responsive={responsive}\n minColumnWidth={minColumnWidth}\n sortChip={sortChipNode}\n pagination={paginationNode}\n >\n <Header>\n {table.getHeaderGroups().map((group) => (\n <TableRow key={group.id}>\n {group.headers.map((header) => {\n const def = header.column.columnDef\n const meta = def.meta\n const labelFromHeader = typeof def.header === 'string' ? def.header : undefined\n const label = meta?.stackLabel ?? labelFromHeader ?? ''\n return (\n <HeaderCell\n key={header.id}\n label={label}\n aria-label={meta?.isActions ? label || 'Actions' : undefined}\n >\n {header.isPlaceholder ? null : flexRender(def.header, header.getContext())}\n </HeaderCell>\n )\n })}\n </TableRow>\n ))}\n </Header>\n <Body>\n {table.getRowModel().rows.map((row) => {\n const key = rowKey?.(row) ?? row.id\n // Row handles its own click/keyboard/focus affordance — no outer\n // wrapper, so the role=\"rowgroup\" → role=\"row\" ARIA hierarchy\n // stays intact, and clicks inside interactive cell content (e.g.\n // an action button) are correctly attributed to the inner widget.\n return (\n <TableRow\n key={key}\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n aria-label={rowAriaLabel?.(row)}\n >\n {row.getVisibleCells().map((cell) => (\n <Cell key={cell.id} isActions={cell.column.columnDef.meta?.isActions === true}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Cell>\n ))}\n </TableRow>\n )\n })}\n </Body>\n </Root>\n )\n}\nFromTanstack.displayName = 'FromTanstack'\n\n// --- helpers ---\n\nfunction buildSortChip<TData>(table: TanstackTable<TData>): ReactNode {\n const options = table\n .getAllColumns()\n .filter((c) => c.getCanSort())\n .map((c) => {\n const fromHeader = typeof c.columnDef.header === 'string' ? c.columnDef.header : c.id\n return {id: c.id, label: c.columnDef.meta?.stackLabel ?? fromHeader}\n })\n\n if (options.length === 0) return null\n\n const current = table.getState().sorting[0]\n const value: SortValue | null = current ? {id: current.id, desc: current.desc} : null\n\n return (\n <SortChip\n options={options}\n value={value}\n onChange={(next) => table.setSorting(next ? [{id: next.id, desc: next.desc}] : [])}\n />\n )\n}\n","import {\n type ReactElement,\n type ReactNode,\n type MutableRefObject,\n createContext,\n cloneElement,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n Children,\n isValidElement,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {Pagination} from './Pagination'\nimport {SortIndicator} from './SortIndicator'\nimport {ColumnFilter} from './ColumnFilter'\nimport {SortChip} from './SortChip'\n\n// --- Types ---\n\nexport type TableVariant = 'default' | 'striped' | 'bordered'\nexport type TableSize = 'sm' | 'md'\n\n// --- Context ---\n\ninterface TableContextValue {\n variant: TableVariant\n size: TableSize\n responsive: boolean\n /** Header labels indexed by column position. Populated synchronously by\n * extractColumnMeta() during Root render so SSR HTML carries them. */\n labels: ReadonlyArray<string>\n /** Mutable ref: header Row writes inferred template, Root reads it */\n inferredTemplateRef: MutableRefObject<string | null>\n /** JS-measured force-stack flag. True when Root's ResizeObserver finds the\n * container too narrow for its column count (cells would be crushed), so\n * every cell/row/header also applies its `*Stacked` variant. Independent\n * of the @container base, which still handles genuinely narrow widths. */\n stacked: boolean\n}\n\n// useLayoutEffect measures + commits the stack decision before the browser\n// paints, so a client-rendered narrow table shows cards on first frame\n// rather than flashing tabular. On the server it would warn (no layout), so\n// fall back to useEffect there — SSR always emits the non-stacked markup and\n// the @container CSS covers true mobile without JS.\nconst useIsoLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n\nconst TableContext = createContext<TableContextValue | null>(null)\n\nfunction useTable() {\n const ctx = useContext(TableContext)\n if (!ctx) throw new Error('Table compound components must be used within Table.Root')\n return ctx\n}\n\n// --- HeaderContext ---\n\nconst HeaderContext = createContext(false)\n\n// --- Dev-only warn registry ---\n//\n// One-shot per warning code per process: long-running dev sessions\n// shouldn't drown the console on every re-render of a misconfigured table.\nconst _IS_PROD = typeof process !== 'undefined' && process.env?.NODE_ENV === 'production'\nconst _devWarned = new Set<string>()\nfunction devWarnOnce(code: string, message: string) {\n if (_IS_PROD || _devWarned.has(code)) return\n _devWarned.add(code)\n // eslint-disable-next-line no-console\n console.warn(`[duro-app/ui Table] ${message}`)\n}\n\n// --- Container — owns the @container query target ---\n//\n// @deprecated Root sets up its own container query and accepts `sortChip`\n// / `pagination` as slot props. Container is kept exported as a passthrough\n// so existing call sites continue to work; new code should use Root alone.\n\nexport function Container({children}: {children: ReactNode}) {\n return <html.div style={styles.container}>{children}</html.div>\n}\n\n// --- Synchronous tree walk: widths + labels in document order ---\n//\n// Mirrors the pattern that was previously called extractTemplate(). Walks\n// the JSX tree, finds HeaderCell elements, captures their `width` and\n// `label` props (or extractText(children) fallback). Runs on every Root\n// render — cheap (small N, no DOM) — but worth memoising on `children`\n// reference if profiling flags it.\n\n// Shallow string-children extraction. We deliberately do NOT recurse into\n// child elements: an icon, tooltip trigger, or sort indicator nested inside\n// a HeaderCell would otherwise pollute the stack-mode label with its own\n// text content. JSX-only headers must set `label` explicitly.\nfunction extractText(node: ReactNode): string {\n let out = ''\n Children.forEach(node, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n out += String(child)\n }\n })\n return out\n}\n\n// Unwrap memo(...) / forwardRef(...) wrappers so JSX like\n// `<MemoizedHeaderCell ...>` still identifies as HeaderCell. Both wrappers\n// expose the inner component via a `.type` (memo) or `.render` (forwardRef)\n// property on the element-type descriptor. We walk both fields until we\n// reach a leaf, which is the underlying function/class component.\nfunction unwrapElementType(t: unknown): unknown {\n let current = t\n // Bounded loop — defensive cap against pathological infinite-nesting.\n for (let i = 0; i < 8 && current && typeof current === 'object'; i++) {\n const next =\n (current as {type?: unknown; render?: unknown}).type ?? (current as {render?: unknown}).render\n if (next == null) break\n current = next\n }\n return current\n}\n\nfunction extractColumnMeta(children: ReactNode): {\n template: string\n compactTemplate: string\n labels: string[]\n} {\n const widths: string[] = []\n const compactWidths: string[] = []\n const labels: string[] = []\n\n function walk(node: ReactNode) {\n Children.forEach(node, (child) => {\n if (!isValidElement(child)) return\n const props = child.props as Record<string, any>\n const unwrappedType = unwrapElementType(child.type)\n const displayName =\n (unwrappedType as {name?: string; displayName?: string} | null)?.displayName ||\n (unwrappedType as {name?: string} | null)?.name ||\n ''\n if (unwrappedType === HeaderCell || displayName === 'HeaderCell') {\n // Default to minmax(0, 1fr) instead of plain '1fr' so each column\n // can shrink below its content's min-content size. A plain '1fr'\n // track has an implicit min of `auto` (= min-content), which makes\n // the column refuse to shrink and the whole table overflow when a\n // cell's text is wider than 1/N of the container. With minmax(0,\n // 1fr), the cell's compact-mode `min-width: 0` + `overflow:\n // hidden` + `text-overflow: ellipsis` can actually truncate.\n const width = props.width || 'minmax(0, 1fr)'\n widths.push(width)\n // `compactWidth` lets the consumer switch to a content-aware\n // layout in the compact band while staying evenly distributed\n // at desktop. Falls back to `width` so columns that don't opt\n // in keep one template across both breakpoints.\n compactWidths.push(props.compactWidth || width)\n const explicit = typeof props.label === 'string' ? props.label : undefined\n const fallback = extractText(props.children).trim()\n const label = explicit ?? fallback\n if (!explicit && fallback === '' && props.children != null) {\n // Children are JSX with no string content — stack mode will render\n // an unlabeled cell. Tell the developer once.\n devWarnOnce(\n 'headerCell-missing-label',\n 'Table.HeaderCell with JSX children must set `label` for stack-mode rendering.',\n )\n }\n labels.push(label)\n } else if (props.children) {\n walk(props.children)\n }\n })\n }\n\n walk(children)\n return {\n template: widths.join(' '),\n compactTemplate: compactWidths.join(' '),\n labels,\n }\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n variant?: TableVariant\n size?: TableSize\n /** Opt out of responsive container-query behavior. Default true. */\n responsive?: boolean\n /**\n * Minimum comfortable width (px) for a single column. When responsive,\n * Root measures its container and switches to the stacked card layout as\n * soon as `containerWidth < columnCount × minColumnWidth` — i.e. before\n * cells get crushed, not only at the fixed mobile breakpoint. Raise it to\n * card up sooner, lower it to keep the grid at tighter widths. Default 128.\n */\n minColumnWidth?: number\n /**\n * Optional sort UI rendered above the grid. Visible only in stack mode\n * (SortChip carries its own `display: none → inline-flex` rule). Typical\n * value: `<Table.SortChip options={...} value={...} onChange={...} />`.\n */\n sortChip?: ReactNode\n /**\n * Optional pagination UI rendered below the grid. Typical value:\n * `<Table.Pagination table={tanstackTable} />`.\n */\n pagination?: ReactNode\n}\n\nexport function Root({\n children,\n variant = 'default',\n size = 'md',\n responsive = true,\n minColumnWidth = 128,\n sortChip,\n pagination,\n}: RootProps) {\n const inferredTemplateRef = useRef<string | null>(null)\n const {template, compactTemplate, labels} = extractColumnMeta(children)\n if (template) {\n inferredTemplateRef.current = template\n }\n\n // Content-aware stacking. A container query can't see the column count, so\n // measure the container and card up as soon as each column would fall\n // below `minColumnWidth`. Keyed on labels.length so it tracks the actual\n // number of columns. The @container base (styles.*: STACK_BP) still fires\n // independently for genuinely narrow widths without needing JS.\n const columnCount = labels.length\n const containerRef = useRef<HTMLDivElement>(null)\n const [stacked, setStacked] = useState(false)\n\n useIsoLayoutEffect(() => {\n if (!responsive || columnCount === 0) {\n setStacked(false)\n return\n }\n const el = containerRef.current\n if (!el || typeof ResizeObserver === 'undefined') return\n const threshold = columnCount * minColumnWidth\n const apply = (width: number) => setStacked(width > 0 && width < threshold)\n apply(el.getBoundingClientRect().width)\n const ro = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (!entry) return\n const box = entry.contentBoxSize?.[0]\n apply(box ? box.inlineSize : entry.contentRect.width)\n })\n ro.observe(el)\n return () => ro.disconnect()\n }, [responsive, columnCount, minColumnWidth])\n\n const grid = (\n <html.div\n role=\"table\"\n style={[\n styles.root,\n // When responsive, use gridColumnsResponsive so the explicit column\n // template and the stack-mode @container override live in one StyleX\n // style object. Splitting them across two styles (gridColumns +\n // rootResponsive) causes StyleX conflict resolution to drop the\n // column template because rootResponsive's gridTemplateColumns key\n // always wins as the later entry in the array.\n template\n ? responsive\n ? styles.gridColumnsResponsive(template, compactTemplate)\n : styles.gridColumns(template)\n : undefined,\n responsive && styles.rootResponsive,\n // Force-stack override — collapses the grid to one column. Applied\n // last so its gridTemplateColumns wins over gridColumnsResponsive.\n responsive && stacked && styles.rootStacked,\n ]}\n >\n {children}\n </html.div>\n )\n\n // The sort chip is normally revealed only by the @container query. When\n // JS force-stacks (headers hidden, but container wider than STACK_BP) the\n // chip's own query hasn't fired, so inject forceShow to reveal it.\n const sortChipEl =\n stacked && isValidElement(sortChip)\n ? cloneElement(sortChip as ReactElement<{forceShow?: boolean}>, {forceShow: true})\n : sortChip\n\n // Slots render unconditionally — `responsive=false` still wants its sort/\n // pagination chrome. Only the containerType:inline-size wrapper is\n // conditional, since it only matters when @container queries fire.\n const body = (\n <>\n {sortChipEl}\n {grid}\n {pagination}\n </>\n )\n\n return (\n <TableContext.Provider\n value={{variant, size, responsive, labels, inferredTemplateRef, stacked}}\n >\n {responsive ? (\n <html.div ref={containerRef} style={styles.rootContainer}>\n {body}\n </html.div>\n ) : (\n body\n )}\n </TableContext.Provider>\n )\n}\n\n// --- Header ---\n\nexport function Header({children}: {children: ReactNode}) {\n const {stacked} = useTable()\n return (\n <HeaderContext.Provider value={true}>\n <html.div role=\"rowgroup\" style={[styles.header, stacked && styles.headerStacked]}>\n {children}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\n// --- Body ---\n\nexport function Body({children}: {children: ReactNode}) {\n const {variant} = useTable()\n const childArray = Children.toArray(children) as ReactElement[]\n\n return (\n <HeaderContext.Provider value={false}>\n <html.div role=\"rowgroup\" style={styles.body}>\n {childArray.map((child, index) => {\n if (variant !== 'striped') return child\n // Key the provider by the child's React key (Children.toArray\n // guarantees one) so reordered rows carry their providers along\n // with them. Position is passed as the value because striping is\n // a positional concern even when row identity is stable.\n return (\n <RowIndexContext.Provider key={child.key ?? index} value={index}>\n {child}\n </RowIndexContext.Provider>\n )\n })}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\nconst RowIndexContext = createContext<number>(-1)\n\n// --- Row ---\n//\n// Always provides CellIndexContext, regardless of variant. Previously this\n// was only set up for `variant === 'bordered'`, which meant non-bordered\n// tables had every cell reading {index: 0} from the default — fine until\n// we needed to look up labels by column index.\n//\n// Interactive rows: pass `onClick` to make the row a navigation target.\n// The role stays `row` (per ARIA grid pattern) — we don't wrap in an outer\n// element with role=button, which would break the rowgroup → row hierarchy.\n// A click that originates inside an interactive descendant (button, link,\n// input, etc.) is treated as that descendant's click and does not fire\n// onClick — prevents double-fire when a row contains action buttons.\n\ninterface RowProps {\n children: ReactNode\n /** When set, the row becomes focusable + clickable. */\n onClick?: () => void\n /** Per-row accessible name — required when onClick is set, recommended otherwise. */\n 'aria-label'?: string\n}\n\n// Heuristic for \"clicking a descendant means the descendant, not the row\".\n// Matches the elements the WAI-ARIA grid pattern lists as \"widgets\" plus the\n// usual native focus-stealers.\nconst INTERACTIVE_SELECTOR =\n 'button, a, input, select, textarea, [role=\"button\"], [role=\"link\"], [role=\"checkbox\"], [role=\"menuitem\"], [role=\"switch\"], [role=\"tab\"], [contenteditable=\"true\"]'\n\nexport function Row({children, onClick, 'aria-label': ariaLabel}: RowProps) {\n const {variant, stacked} = useTable()\n const isHeader = useContext(HeaderContext)\n const rowIndex = useContext(RowIndexContext)\n const isEvenRow = rowIndex >= 0 && rowIndex % 2 === 1\n const childArray = Children.toArray(children) as ReactElement[]\n const isClickable = onClick !== undefined && !isHeader\n\n return (\n <html.div\n role=\"row\"\n tabIndex={isClickable ? 0 : undefined}\n aria-label={isClickable ? ariaLabel : undefined}\n onClick={\n isClickable\n ? (e) => {\n // react-strict-dom's typed click event omits `target`, but the\n // underlying SyntheticEvent still carries it. Cast through so\n // we can detect clicks that originate inside an interactive\n // descendant (action button, link, input) and let them be\n // attributed to that widget instead of the row.\n const target = (e as unknown as {target?: EventTarget | null}).target\n if (target instanceof Element && target.closest(INTERACTIVE_SELECTOR)) {\n return\n }\n onClick()\n }\n : undefined\n }\n onKeyDown={\n isClickable\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n onClick()\n }\n }\n : undefined\n }\n style={[\n styles.row,\n !isHeader && styles.bodyRow,\n !isHeader && variant === 'striped' && isEvenRow && styles.stripedEven,\n isClickable && styles.clickableRow,\n stacked && styles.rowStacked,\n // bodyRowStacked last so its card background wins over stripedEven.\n !isHeader && stacked && styles.bodyRowStacked,\n ]}\n >\n {childArray.map((child, index) => (\n // Key by the child's React key (Children.toArray assigns one) so a\n // reordered column carries its CellIndexContext provider along.\n // The positional `index` lives in the provider's value, not its key.\n <CellIndexContext.Provider\n key={child.key ?? index}\n value={{index, total: childArray.length}}\n >\n {child}\n </CellIndexContext.Provider>\n ))}\n </html.div>\n )\n}\n\nconst CellIndexContext = createContext<{index: number; total: number}>({index: 0, total: 0})\n\n// --- HeaderCell ---\n\nexport function HeaderCell({\n children,\n width: _width,\n compactWidth: _compactWidth,\n label: _label,\n isActions,\n 'aria-label': ariaLabel,\n}: {\n children?: ReactNode\n /** Column width at default (wide) viewport. CSS grid-template-columns\n * track value — e.g. '40px', '2fr', 'max-content'. Defaults to\n * 'minmax(0, 1fr)' so each column shares the row evenly and is free\n * to shrink below its content's intrinsic size. */\n width?: string\n /** Column width when the table's container drops into compact mode\n * (≤720px container). Use this to switch to a content-aware layout\n * at narrow widths — e.g. give a status badge `max-content` and the\n * action column `minmax(0, 2fr)` so it absorbs the slack — while\n * keeping evenly-distributed columns on wide screens. Defaults to the\n * same value as `width`. */\n compactWidth?: string\n /** Stack-mode label string. Optional when children is a plain string — the\n * text content is used as the label automatically. Required when children\n * contain JSX (icon + text, sort indicator, etc.). */\n label?: string\n /**\n * @deprecated Has no effect on HeaderCell. Pass `isActions` on the\n * matching `Table.Cell` instead — that's where the stack-mode footer\n * layout actually applies.\n */\n isActions?: boolean\n 'aria-label'?: string\n}) {\n if (isActions === true) {\n devWarnOnce(\n 'headerCell-isActions',\n 'HeaderCell `isActions` prop has no effect and is deprecated. Pass `isActions` on the matching Table.Cell instead.',\n )\n }\n const {size, variant} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n\n return (\n <html.div\n role=\"columnheader\"\n aria-label={ariaLabel}\n style={[\n styles.headerCell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n ]}\n >\n {children}\n </html.div>\n )\n}\nHeaderCell.displayName = 'HeaderCell'\n\n// --- Cell ---\n//\n// Renders the column-header label as a real <html.span>, hidden via\n// container query in non-stack modes. The span is omitted entirely when\n// isActions=true — actions footers don't show a label.\n\nexport function Cell({children, isActions}: {children: ReactNode; isActions?: boolean}) {\n const {size, variant, labels, responsive, stacked} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n const label = labels[index] ?? ''\n\n return (\n <html.div\n role=\"cell\"\n style={[\n styles.cell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n isActions && styles.cellActions,\n // Force-stack: cells become a label|value grid; the actions cell then\n // overrides its template to a single track and turns into the card's\n // right-aligned footer. Mirrors the @container (STACK_BP) branch, so\n // cellStacked applies for every cell and cellActionsStacked layers on\n // top for actions (its gridTemplateColumns wins as the later entry).\n stacked && styles.cellStacked,\n isActions && stacked && styles.cellActionsStacked,\n variant === 'bordered' && stacked && styles.borderedCellStacked,\n ]}\n >\n {responsive && !isActions && label !== '' ? (\n <html.span style={[styles.cellLabel, stacked && styles.cellLabelStacked]}>\n {label}\n </html.span>\n ) : null}\n {isActions ? children : <html.div style={styles.cellValue}>{children}</html.div>}\n </html.div>\n )\n}\n\n// --- Export ---\n\nimport {FromTanstack} from './FromTanstack'\n\nexport const Table = {\n /** @deprecated Wrap behaviour is built into Table.Root. Drop this wrapper from new code. */\n Container,\n Root,\n Header,\n Body,\n Row,\n HeaderCell,\n Cell,\n Pagination,\n SortIndicator,\n ColumnFilter,\n SortChip,\n /** Renders a styled Table directly from a TanStack table instance. */\n FromTanstack,\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 wrap: {\n position: 'relative',\n width: '100%',\n },\n scroll: {\n position: 'relative',\n width: '100%',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n backgroundColor: colors.bgCard,\n },\n // Dynamic: only virtualized lists get a capped, scrollable viewport.\n scrollMax: (maxHeight: number | string) => ({\n maxHeight,\n overflowY: 'auto',\n overscrollBehavior: 'contain',\n }),\n head: {\n position: 'sticky',\n top: 0,\n zIndex: 1,\n backgroundColor: colors.bgCard,\n },\n headRow: {\n display: 'flex',\n flexDirection: 'row',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n headCell: {\n display: 'flex',\n flexDirection: 'row',\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.03em',\n color: colors.textMuted,\n },\n headCellSortable: {\n cursor: 'pointer',\n userSelect: 'none',\n color: {default: colors.textMuted, ':hover': colors.text},\n },\n sortMark: {\n fontSize: typography.fontSizeXs,\n color: colors.accent,\n },\n bodyTotal: (height: number) => ({\n position: 'relative',\n width: '100%',\n height,\n }),\n row: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n rowClickable: {\n cursor: 'pointer',\n backgroundColor: {default: 'transparent', ':hover': colors.bgCardHover},\n },\n // Dynamic: absolute placement of a windowed row.\n rowAbsolute: (y: number) => ({\n position: 'absolute',\n top: 0,\n left: 0,\n transform: `translateY(${y}px)`,\n }),\n cell: {\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 overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n // Dynamic: proportional column width from the TanStack column size (fr-like).\n cellFlex: (size: number) => ({\n flexGrow: size,\n flexShrink: 1,\n flexBasis: 0,\n minWidth: 0,\n }),\n empty: {\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n textAlign: 'center' as const,\n color: colors.textMuted,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n },\n // Floating position indicator, pinned bottom-right of the viewport.\n pos: {\n position: 'absolute',\n right: spacing.sm,\n bottom: spacing.sm,\n paddingTop: 3,\n paddingBottom: 3,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n borderRadius: radii.full,\n backgroundColor: colors.bgCardHover,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n color: colors.textMuted,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n pointerEvents: 'none',\n },\n})\n","import {useEffect, useRef, useState, type ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n flexRender,\n type ColumnDef,\n type SortingState,\n type OnChangeFn,\n type Row,\n} from '@tanstack/react-table'\nimport {useVirtualizer} from '@tanstack/react-virtual'\nimport {styles} from './styles.css'\n\nexport interface VirtualTableRange {\n /** 1-based index of the first visible row (0 when empty). */\n from: number\n /** 1-based index of the last visible row (0 when empty). */\n to: number\n total: number\n /** 1-based page the first visible row falls in. */\n page: number\n pages: number\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface VirtualTableProps<TData> {\n data: TData[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnDef<TData, any>[]\n /** Controlled sorting (pairs with a SortChip in the caller). */\n sorting?: SortingState\n onSortingChange?: OnChangeFn<SortingState>\n getRowId?: (row: TData, index: number) => string\n onRowClick?: (row: TData) => void\n rowLabel?: (row: TData) => string\n /**\n * 1-based page to restore the scroll position to on mount (read from the URL\n * by the caller). Only meaningful when the list virtualizes.\n */\n initialPage?: number\n /**\n * Fired (debounced) when the top-visible page changes — wire it to the URL.\n * Only fires in the virtualized branch; small lists render in one scroll and\n * have no page concept.\n */\n onVisiblePageChange?: (range: VirtualTableRange) => void\n /** Build the floating position-indicator label (i18n stays with the caller). */\n rangeLabel?: (range: VirtualTableRange) => string\n /** Rows per \"page\" for the URL/indicator math. Default 50. */\n pageSize?: number\n /** Estimated row height for the virtualizer. Default 44. */\n estimateRowHeight?: number\n /** Max height of the scroll viewport once virtualized. Default '70vh'. */\n maxHeight?: number | string\n /** Render every row (no windowing) at or below this count. Default 150. */\n virtualizeThreshold?: number\n emptyLabel?: ReactNode\n}\n\n/**\n * A sortable data table that windows its rows above a threshold (default 150)\n * via @tanstack/react-virtual, keeps a floating position indicator, and reports\n * the visible page so the caller can mirror it in the URL. Below the threshold\n * it renders every row in one scroll (find-in-page + a11y intact) — no\n * pagination, no windowing. Web-only (uses DOM scroll measurement).\n *\n * URL-decoupled by design: pass `initialPage` (restore) and `onVisiblePageChange`\n * (persist); the component never touches the router itself.\n */\nexport function VirtualTable<TData>({\n data,\n columns,\n sorting,\n onSortingChange,\n getRowId,\n onRowClick,\n rowLabel,\n initialPage,\n onVisiblePageChange,\n rangeLabel,\n pageSize = 50,\n estimateRowHeight = 44,\n maxHeight = '70vh',\n virtualizeThreshold = 150,\n emptyLabel,\n}: VirtualTableProps<TData>) {\n // Support both controlled sorting (SortChip in the caller) and standalone use.\n const [internalSorting, setInternalSorting] = useState<SortingState>([])\n const sortingState = sorting ?? internalSorting\n const handleSortingChange = onSortingChange ?? setInternalSorting\n\n const table = useReactTable({\n data,\n columns,\n state: {sorting: sortingState},\n onSortingChange: handleSortingChange,\n getRowId,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n })\n\n const rows = table.getRowModel().rows\n const virtualize = rows.length > virtualizeThreshold\n\n const scrollRef = useRef<HTMLDivElement>(null)\n const rv = useVirtualizer({\n count: rows.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => estimateRowHeight,\n overscan: 12,\n })\n\n // Restore the scroll position from `initialPage` on mount, and suppress the\n // page-change callback briefly so that restore scroll doesn't immediately\n // report (and overwrite) the URL.\n const suppressWrite = useRef(true)\n useEffect(() => {\n if (!virtualize) {\n suppressWrite.current = false\n return\n }\n if (initialPage && initialPage > 1) {\n rv.scrollToIndex((initialPage - 1) * pageSize, {align: 'start'})\n }\n const id = setTimeout(() => {\n suppressWrite.current = false\n }, 300)\n return () => clearTimeout(id)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [virtualize])\n\n const vItems = rv.getVirtualItems()\n const firstIndex = vItems[0]?.index ?? 0\n const lastIndex = vItems.length ? vItems[vItems.length - 1].index : 0\n const pages = Math.max(1, Math.ceil(rows.length / pageSize))\n // page = which pageSize-sized block the top visible row is in, so it only\n // changes when you cross a boundary (no per-scroll-tick churn).\n const curPage = Math.floor(Math.max(0, firstIndex) / pageSize) + 1\n\n const range: VirtualTableRange = {\n from: rows.length ? firstIndex + 1 : 0,\n to: rows.length ? lastIndex + 1 : 0,\n total: rows.length,\n page: curPage,\n pages,\n }\n\n // Report the visible page so the caller can sync the URL. Fire once per\n // distinct page rather than debouncing a timer — `curPage` only changes at a\n // pageSize boundary (coarse), and react-virtual's frequent re-renders during\n // scroll/measurement would keep resetting a debounce timer so it never fires.\n // The `lastReported` guard prevents redundant calls; callers use replace, so\n // there's no history churn.\n const lastReported = useRef<number | null>(null)\n useEffect(() => {\n if (!virtualize || !onVisiblePageChange) return\n if (suppressWrite.current) {\n // Still in the mount-restore window — record the page so we don't emit a\n // spurious change once it clears, but don't call out.\n lastReported.current = curPage\n return\n }\n if (lastReported.current === curPage) return\n lastReported.current = curPage\n onVisiblePageChange({\n from: rows.length ? firstIndex + 1 : 0,\n to: rows.length ? lastIndex + 1 : 0,\n total: rows.length,\n page: curPage,\n pages,\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [curPage, virtualize])\n\n const renderRow = (\n row: Row<TData>,\n index: number,\n positioned?: ReturnType<typeof styles.rowAbsolute>,\n measureRef?: (node: Element | null) => void,\n ) => (\n <html.div\n key={row.id}\n ref={measureRef}\n data-index={index}\n role=\"row\"\n aria-label={rowLabel?.(row.original)}\n onClick={onRowClick ? () => onRowClick(row.original) : undefined}\n style={[styles.row, Boolean(onRowClick) && styles.rowClickable, positioned]}\n >\n {row.getVisibleCells().map((cell) => (\n <html.div\n key={cell.id}\n role=\"cell\"\n style={[styles.cell, styles.cellFlex(cell.column.getSize())]}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </html.div>\n ))}\n </html.div>\n )\n\n const label =\n rangeLabel?.(range) ?? (rows.length ? `${range.from}–${range.to} / ${range.total}` : '')\n\n return (\n <html.div style={styles.wrap}>\n <html.div\n ref={scrollRef}\n role=\"table\"\n style={[styles.scroll, virtualize && styles.scrollMax(maxHeight)]}\n >\n <html.div role=\"rowgroup\" style={styles.head}>\n {table.getHeaderGroups().map((headerGroup) => (\n <html.div key={headerGroup.id} role=\"row\" style={styles.headRow}>\n {headerGroup.headers.map((header) => {\n const col = header.column\n const sorted = col.getIsSorted()\n return (\n <html.div\n key={header.id}\n role=\"columnheader\"\n aria-sort={\n sorted === 'asc' ? 'ascending' : sorted === 'desc' ? 'descending' : undefined\n }\n onClick={col.getCanSort() ? col.getToggleSortingHandler() : undefined}\n style={[\n styles.headCell,\n col.getCanSort() && styles.headCellSortable,\n styles.cellFlex(header.getSize()),\n ]}\n >\n {header.isPlaceholder\n ? null\n : flexRender(col.columnDef.header, header.getContext())}\n {sorted ? (\n <html.span style={styles.sortMark}>{sorted === 'asc' ? '↑' : '↓'}</html.span>\n ) : null}\n </html.div>\n )\n })}\n </html.div>\n ))}\n </html.div>\n\n {rows.length === 0 ? (\n <html.div style={styles.empty}>{emptyLabel}</html.div>\n ) : (\n <html.div\n role=\"rowgroup\"\n style={virtualize ? styles.bodyTotal(rv.getTotalSize()) : undefined}\n >\n {virtualize\n ? vItems.map((vi) =>\n renderRow(\n rows[vi.index],\n vi.index,\n styles.rowAbsolute(vi.start),\n rv.measureElement,\n ),\n )\n : rows.map((row, i) => renderRow(row, i))}\n </html.div>\n )}\n </html.div>\n\n {virtualize && rows.length > 0 ? (\n <html.div aria-live=\"polite\" style={styles.pos}>\n {label}\n </html.div>\n ) : null}\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: '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":["styleq$1","styleq_2","cache","compiledKey","createStyleq","options","disableCache","disableMix","transform","definedProperties","className","inlineStyle","debugString","nextCache","styles","i","possibleStyle","_i","style","classNameChunk","cacheEntry","definedPropertiesChunk","prop","value","compiledKeyValue","weakMap","subStyle","_prop","_value","styleProps","styleq","optimizedStyleq","merge","dataStyleSrc","result","chunks","pathsMap","chunk","trimmed","path","line","a","button","div","form","heading","header","input","label","main","nav","p","span","textarea","defaultStyles","ReactSharedInternals","require$$0","reactCompilerRuntime_production","size","reactCompilerRuntime_development","dispatcher","compilerRuntimeModule","require$$1","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","overlay","$$css","overlayEmphasized","selectedCount","selectedCountEmphasized","actions","closeButton","closeButtonEmphasized","separator","separatorEmphasized","ActionBarContent","selectedItemCount","selectedLabel","isEmphasized","onClearSelection","dismissible","undefined","countStr","t5","t6","t7","t8","jsx","_rsdMerge","_rsdDefaultStyles","t9","t10","t11","t12","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","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","compact","full","Card","root","rootDisabled","box","boxUnchecked","boxChecked","Checkbox","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","overflow","Trigger","Portal","handleBackdropClick","Header","Title","h2","Description","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","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","FormProvider","legend","gapMs","gapLg","gapXl","ms","xl","Legend","Fieldset","addon","addonStart","addonEnd","addonClickable","addonDisabled","dynamicStyles","minWidth","val","Addon","position","positionStyle","InputGroup","LinkButton","href","rel","trigger","popupEnd","itemHighlighted","linkItem","MenuContext","useMenu","useMenuRoot","setOpen","highlightedId","setHighlightedId","menuId","rootRef","triggerRef","Map","itemsRef","orderRef","needsInitialHighlightRef","close","toggle","order","element","set","ids","sort","b","elA","get","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","registerItem","handleKeyDown","order_0","bb54","prev_2","idx_0","indexOf","idx","prev_1","items","prev_0","click","localRef","Popup","isHighlighted","handleClick","LinkItem","Menu","bordered","Panel","circle","circleUnchecked","circleChecked","dot","RadioGroupContext","useRadioGroup","onSelect","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","itemHidden","hidden","popupPosition","top","ComboboxContext","useCombobox","useComboboxRoot","inputValue","controlledInputValue","onInputChange","initialLabels","initial","internalInputValue","setInternalInputValue","setInputValue","labels","setLabels","listboxId","inputRef","found","openPopup","selectValue","v_0","label_0","registerLabel","id_0","itemValue_0","query","toLowerCase","id_1","item_0","getVisibleOrder","visibleOrder","bb137","item_1","scrollIntoView","block","lightTheme","xjvd03b","lightShadows","x13v825q","highContrastTheme","highContrastShadows","themeMap","light","portalMount","PortalMountContext","usePortalMount","ThemeProvider","theme","overrides","themeStyles","mount","setMount","focused","setFocused","coords","setCoords","window","useLayoutEffect","node","createPortal","selectedValue","isSelected","isVisible","textContent","el_0","values","Combobox","SelectContext","useSelect","useSelectRoot","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","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","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","addTag","value_0","getElementById","querySelectorAll","validate","commitValueRef","raw","selectionStart","handlePaste","clipboardData","getData","split","s","Boolean","handleFocus","TagGroup","loggedMessages","errorMsg","msg","strictAttributeSet","isPropAllowed","validateStrictProps","createStrictDOMComponent","TagName","defaultStyle","debugStyle","Component","htmlFor","restProps","hostProps","hostStyleProps","a$1","article$1","aside$1","b$1","bdi$1","bdo$1","blockquote$1","br$1","button$1","code$1","del$1","div$1","em$1","fieldset$1","footer$1","form$1","header$1","hr$1","i$1","img$1","input$1","ins$1","kbd$1","label$1","li$1","main$1","mark$1","nav$1","ol$1","optgroup$1","option$1","p$1","pre$1","s$1","section$1","select$1","span$1","strong$1","sub$1","sup$1","textarea$1","u$1","ul$1","article","aside","bdi","bdo","blockquote","br","del","em","fieldset","hr","img","ins","kbd","li","mark","ol","optgroup","option","pre","select","strong","sub","sup","u","ul","html","rootContainer","clickableRow","rootResponsive","row","bodyRow","headerCell","cell","cellValue","cellLabel","cellActions","cellSm","cellMd","stripedEven","borderedCell","borderedCellLast","sortChip","rootStacked","headerStacked","rowStacked","bodyRowStacked","cellStacked","cellLabelStacked","cellActionsStacked","borderedCellStacked","sortChipStacked","gridColumns","template","gridColumnsResponsive","compactTemplate","buttonDisabled","pageInfo","Pagination","table","getState","pageIndex","pageSize","pagination","getPageCount","pageCount","getFilteredRowModel","rows","getCanPreviousPage","previousPage","getCanNextPage","nextPage","active","inactive","SortIndicator","column","getCanSort","sorted","getIsSorted","ColumnFilter","getCanFilter","getFilterValue","filterValue","setFilterValue","SortChip","forceShow","find","o","triggerLabel","desc","opt","isCurrent","nextDesc","displayName","FromTanstack","responsive","minColumnWidth","rowKey","onRowClick","rowAriaLabel","buildSortChip","sortChipNode","paginationNode","getHeaderGroups","TableRow","getVisibleCells","_temp3","getRowModel","Cell","columnDef","meta","isActions","flexRender","getContext","headers","def","labelFromHeader","stackLabel","HeaderCell","isPlaceholder","getAllColumns","c","fromHeader","sorting","setSorting","useIsoLayoutEffect","TableContext","useTable","HeaderContext","_IS_PROD","process","env","NODE_ENV","_devWarned","devWarnOnce","console","warn","Container","extractText","out","unwrapElementType","t","extractColumnMeta","widths","compactWidths","walk","unwrappedType","compactWidth","explicit","fallback","join","inferredTemplateRef","columnCount","containerRef","stacked","setStacked","threshold","apply","ro","contentBoxSize","inlineSize","contentRect","grid","sortChipEl","cloneElement","T0","T1","childArray","toArray","Provider","index","RowIndexContext","INTERACTIVE_SELECTOR","Row","isHeader","rowIndex","isEvenRow","isClickable","Element","CellIndexContext","total","isLast","Table","_temp4","wrap","scroll","scrollMax","head","headRow","headCell","headCellSortable","sortMark","bodyTotal","rowClickable","rowAbsolute","y","cellFlex","pos","VirtualTable","data","columns","onSortingChange","getRowId","rowLabel","initialPage","onVisiblePageChange","rangeLabel","estimateRowHeight","virtualizeThreshold","emptyLabel","internalSorting","setInternalSorting","useReactTable","sortingState","getCoreRowModel","getSortedRowModel","virtualize","scrollRef","rv","useVirtualizer","count","getScrollElement","estimateSize","overscan","suppressWrite","scrollToIndex","vItems","getVirtualItems","firstIndex","lastIndex","pages","ceil","curPage","floor","range","from","to","page","lastReported","renderRow","positioned","measureRef","original","getSize","headerGroup","col","getToggleSortingHandler","getTotalSize","vi","measureElement","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","tabs","listEl","prevKey","nextKey","targetValue","currentIdx","Tab","tabId","panelId","Tabs","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","columnStyle","maxSm","maxMd","maxLg","padSm","padMd","padLg","headerPadding","mainPadding","maxWidthMap","paddingMap","PageShell","maxWidth","padding","mw","pad","useContainerQuery","compactBelow","spaciousAbove","setSize","rafId","cancelAnimationFrame","requestAnimationFrame"],"mappings":"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","x_google_ignoreList":[0,1,2,3,94]}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.6_react-dom@19.2.4_react@19.2.4__react-native@0.84._1278be21509893d955b57d0db9435779/node_modules/react-strict-dom/dist/web/runtime.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-compiler-runtime.production.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-compiler-runtime.development.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/compiler-runtime.js","../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/Menu/styles.css.ts","../src/components/Menu/MenuContext.ts","../src/components/Menu/useMenuRoot.ts","../src/components/Menu/Menu.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","../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.6_react-dom@19.2.4_react@19.2.4__react-native@0.84._1278be21509893d955b57d0db9435779/node_modules/react-strict-dom/dist/web/index.js","../src/components/Table/styles.css.ts","../src/components/Table/Pagination.tsx","../src/components/Table/SortIndicator.tsx","../src/components/Table/ColumnFilter.tsx","../src/components/Table/SortChip.tsx","../src/components/Table/FromTanstack.tsx","../src/components/Table/Table.tsx","../src/components/VirtualTable/styles.css.ts","../src/components/VirtualTable/VirtualTable.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":["/**\n * @license react-strict-dom\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\nimport * as stylex from '@stylexjs/stylex';\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a = styles.inline;\nconst article = styles.block;\nconst aside = styles.block;\nconst b = styles.inline;\nconst bdi = styles.inline;\nconst bdo = styles.inline;\nconst blockquote = styles.block;\nconst br = null;\nconst button = [styles.inlineblock, styles.button];\nconst code = [styles.inline, styles.codePre];\nconst del = null;\nconst div = styles.block;\nconst em = styles.inline;\nconst fieldset = styles.block;\nconst footer = styles.block;\nconst form = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header = styles.block;\nconst hr = [styles.block, styles.hr];\nconst i = styles.inline;\nconst img = styles.img;\nconst input = [styles.inlineblock, styles.input];\nconst ins = null;\nconst kbd = null;\nconst label = styles.inline;\nconst li = styles.block;\nconst main = styles.block;\nconst mark = styles.inline;\nconst nav = styles.block;\nconst ol = [styles.list, styles.block];\nconst optgroup = null;\nconst option = null;\nconst p = styles.block;\nconst pre = [styles.block, styles.codePre];\nconst s = null;\nconst section = styles.block;\nconst select = styles.inlineblock;\nconst span = styles.inline;\nconst strong = [styles.inline, styles.strong];\nconst sub = styles.inline;\nconst sup = styles.inline;\nconst textarea = [styles.inlineblock, styles.textarea];\nconst u = null;\nconst ul = [styles.list, styles.block];\nconst defaultStyles = {\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n};\n\nexport { defaultStyles, merge };\n","/**\n * @license React\n * react-compiler-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nexports.c = function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n};\n","/**\n * @license React\n * react-compiler-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n var ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n exports.c = function (size) {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher.useMemoCache(size);\n };\n })();\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-compiler-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-compiler-runtime.development.js');\n}\n","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, 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 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: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color',\n transitionDuration: duration.fast,\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: 'absolute',\n top: '100%',\n left: 0,\n marginTop: spacing.xs,\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: 160,\n zIndex: 50,\n },\n popupEnd: {\n left: 'auto',\n right: 0,\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 itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n linkItem: {\n textDecoration: 'none',\n color: {\n default: colors.text,\n ':hover': colors.text,\n },\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface MenuContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n menuId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null)\n\nexport function useMenu() {\n const ctx = useContext(MenuContext)\n if (!ctx) throw new Error('Menu compound components must be used within Menu.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useId, useEffect} from 'react'\nimport type {MenuContextValue} from './MenuContext'\n\nexport function useMenuRoot() {\n const [open, setOpen] = useState(false)\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const menuId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, HTMLElement>())\n const orderRef = useRef<string[]>([])\n const needsInitialHighlightRef = useRef(false)\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n needsInitialHighlightRef.current = true\n } else {\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n }\n return !prev\n })\n }, [])\n\n // Highlight the first item after items register on open.\n // Child effects (item registration) run before this parent effect,\n // so orderRef is populated by the time this runs.\n useEffect(() => {\n if (open && needsInitialHighlightRef.current) {\n needsInitialHighlightRef.current = false\n const order = orderRef.current\n if (order.length > 0) {\n setHighlightedId(order[0])\n }\n }\n }, [open])\n\n const registerItem = useCallback((id: string, element: HTMLElement) => {\n itemsRef.current.set(id, element)\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)\n const elB = map.get(b)\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 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 const items = itemsRef.current\n setHighlightedId((prev) => {\n if (prev) {\n const el = items.get(prev)\n el?.click()\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])\n\n const ctx: MenuContextValue = {\n open,\n toggle,\n close,\n menuId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {MenuContext, useMenu} from './MenuContext'\nimport {useMenuRoot} from './useMenuRoot'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const {ctx, rootRef} = useMenuRoot()\n\n return (\n <MenuContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {children}\n </html.div>\n </MenuContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({children}: {children: ReactNode}) {\n const {open, toggle, menuId, triggerRef} = useMenu()\n const localRef = useRef<HTMLButtonElement>(null)\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 type=\"button\"\n onClick={toggle}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n aria-controls={open ? menuId : undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Popup ---\ninterface PopupProps {\n children: ReactNode\n align?: 'start' | 'end'\n}\n\nfunction Popup({children, align = 'start'}: PopupProps) {\n const {open, close, menuId, highlightedId} = useMenu()\n\n if (!open) return null\n\n return (\n <>\n <html.div style={styles.backdrop} onClick={close} />\n <html.div\n id={menuId}\n role=\"menu\"\n aria-activedescendant={highlightedId ?? undefined}\n style={[styles.popup, align === 'end' && styles.popupEnd]}\n >\n {children}\n </html.div>\n </>\n )\n}\n\n// --- Item ---\ninterface ItemProps {\n onClick?: () => void\n children: ReactNode\n}\n\nfunction Item({onClick, children}: ItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n const handleClick = () => {\n onClick?.()\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"menuitem\"\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- LinkItem ---\ninterface LinkItemProps {\n href: string\n children: ReactNode\n}\n\nfunction LinkItem({href, children}: LinkItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLAnchorElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n return (\n <html.a\n ref={ref}\n id={id}\n href={href}\n onClick={close}\n role=\"menuitem\"\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, styles.linkItem, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.a>\n )\n}\n\nexport const Menu = {\n Root,\n Trigger,\n Popup,\n Item,\n LinkItem,\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","/**\n * @license react-strict-dom\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\nimport { jsx } from 'react/jsx-runtime';\nimport * as stylex from '@stylexjs/stylex';\nexport { stylex as css };\n\nconst loggedMessages = {};\nfunction errorMsg(msg) {\n if (process.env.NODE_ENV !== 'test' && loggedMessages[msg]) {\n return;\n }\n loggedMessages[msg] = true;\n console.error(`[error] React Strict DOM: ${msg}`);\n}\n\nconst strictAttributeSet = new Set(['alt', 'aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colindextext', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowindextext', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'autoCapitalize', 'autoComplete', 'autoFocus', 'checked', 'children', 'crossOrigin', 'decoding', 'defaultChecked', 'defaultValue', 'dir', 'disabled', 'download', 'draggable', 'elementTiming', 'enterKeyHint', 'fetchPriority', 'for', 'height', 'hidden', 'href', 'id', 'inert', 'inputMode', 'label', 'lang', 'loading', 'max', 'maxLength', 'min', 'minLength', 'multiple', 'name', 'onAuxClick', 'onBeforeInput', 'onBlur', 'onChange', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onError', 'onFocus', 'onFocusIn', 'onFocusOut', 'onFullscreenChange', 'onFullscreenError', 'onGotPointerCapture', 'onInput', 'onInvalid', 'onKeyDown', 'onKeyUp', 'onLoad', 'onLostPointerCapture', 'onPaste', 'onPointerCancel', 'onPointerDown', 'onPointerEnter', 'onPointerLeave', 'onPointerMove', 'onPointerOut', 'onPointerOver', 'onPointerUp', 'onScroll', 'onSelect', 'onSelectionChange', 'onWheel', 'placeholder', 'readOnly', 'referrerPolicy', 'rel', 'required', 'role', 'rows', 'selected', 'spellCheck', 'src', 'srcSet', 'step', 'style', 'tabIndex', 'target', 'type', 'value', 'width', 'suppressHydrationWarning', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart']);\nfunction isPropAllowed(key) {\n return strictAttributeSet.has(key) || key.indexOf('data-') > -1;\n}\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nfunction validateStrictProps(props) {\n Object.keys(props).forEach(key => {\n const isValid = isPropAllowed(key);\n if (!isValid) {\n errorMsg(`invalid prop \"${key}\"`);\n delete props[key];\n }\n });\n}\nfunction createStrictDOMComponent(TagName, defaultStyle) {\n const debugStyle = {\n $$css: true,\n 'debug::name': `html-${TagName}`\n };\n function Component({\n ref,\n ...props\n }) {\n const {\n for: htmlFor,\n style,\n ...restProps\n } = props;\n const hostProps = restProps;\n validateStrictProps(hostProps);\n if (htmlFor != null) {\n hostProps.htmlFor = htmlFor;\n }\n if (props.role != null) {\n hostProps.role = props.role === 'none' ? 'presentation' : props.role;\n }\n if (TagName === 'button') {\n hostProps.type = hostProps.type ? hostProps.type : 'button';\n } else if (TagName === 'input' || TagName === 'textarea') {\n hostProps.dir = hostProps.dir ? hostProps.dir : 'auto';\n }\n const hostStyleProps = merge([debugStyle, defaultStyle, style]);\n const element = jsx(TagName, {\n ...hostProps,\n ...hostStyleProps,\n ref: ref\n });\n return element;\n }\n Component.displayName = `html.${TagName}`;\n return Component;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a$1 = styles.inline;\nconst article$1 = styles.block;\nconst aside$1 = styles.block;\nconst b$1 = styles.inline;\nconst bdi$1 = styles.inline;\nconst bdo$1 = styles.inline;\nconst blockquote$1 = styles.block;\nconst br$1 = null;\nconst button$1 = [styles.inlineblock, styles.button];\nconst code$1 = [styles.inline, styles.codePre];\nconst del$1 = null;\nconst div$1 = styles.block;\nconst em$1 = styles.inline;\nconst fieldset$1 = styles.block;\nconst footer$1 = styles.block;\nconst form$1 = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header$1 = styles.block;\nconst hr$1 = [styles.block, styles.hr];\nconst i$1 = styles.inline;\nconst img$1 = styles.img;\nconst input$1 = [styles.inlineblock, styles.input];\nconst ins$1 = null;\nconst kbd$1 = null;\nconst label$1 = styles.inline;\nconst li$1 = styles.block;\nconst main$1 = styles.block;\nconst mark$1 = styles.inline;\nconst nav$1 = styles.block;\nconst ol$1 = [styles.list, styles.block];\nconst optgroup$1 = null;\nconst option$1 = null;\nconst p$1 = styles.block;\nconst pre$1 = [styles.block, styles.codePre];\nconst s$1 = null;\nconst section$1 = styles.block;\nconst select$1 = styles.inlineblock;\nconst span$1 = styles.inline;\nconst strong$1 = [styles.inline, styles.strong];\nconst sub$1 = styles.inline;\nconst sup$1 = styles.inline;\nconst textarea$1 = [styles.inlineblock, styles.textarea];\nconst u$1 = null;\nconst ul$1 = [styles.list, styles.block];\nconst defaultStyles = {\n a: a$1,\n article: article$1,\n aside: aside$1,\n b: b$1,\n bdi: bdi$1,\n bdo: bdo$1,\n blockquote: blockquote$1,\n br: br$1,\n button: button$1,\n code: code$1,\n del: del$1,\n div: div$1,\n em: em$1,\n fieldset: fieldset$1,\n footer: footer$1,\n form: form$1,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header$1,\n hr: hr$1,\n i: i$1,\n img: img$1,\n input: input$1,\n ins: ins$1,\n kbd: kbd$1,\n label: label$1,\n li: li$1,\n main: main$1,\n mark: mark$1,\n nav: nav$1,\n ol: ol$1,\n optgroup: optgroup$1,\n option: option$1,\n p: p$1,\n pre: pre$1,\n s: s$1,\n section: section$1,\n select: select$1,\n span: span$1,\n strong: strong$1,\n sub: sub$1,\n sup: sup$1,\n textarea: textarea$1,\n u: u$1,\n ul: ul$1\n};\n\nconst a = createStrictDOMComponent('a', defaultStyles.a);\nconst article = createStrictDOMComponent('article', defaultStyles.article);\nconst aside = createStrictDOMComponent('aside', defaultStyles.aside);\nconst b = createStrictDOMComponent('b', defaultStyles.b);\nconst bdi = createStrictDOMComponent('bdi', defaultStyles.bdi);\nconst bdo = createStrictDOMComponent('bdo', defaultStyles.bdo);\nconst blockquote = createStrictDOMComponent('blockquote', defaultStyles.blockquote);\nconst br = createStrictDOMComponent('br', defaultStyles.br);\nconst button = createStrictDOMComponent('button', defaultStyles.button);\nconst code = createStrictDOMComponent('code', defaultStyles.code);\nconst del = createStrictDOMComponent('del', defaultStyles.del);\nconst div = createStrictDOMComponent('div', defaultStyles.div);\nconst em = createStrictDOMComponent('em', defaultStyles.em);\nconst fieldset = createStrictDOMComponent('fieldset', defaultStyles.fieldset);\nconst footer = createStrictDOMComponent('footer', defaultStyles.footer);\nconst form = createStrictDOMComponent('form', defaultStyles.form);\nconst h1 = createStrictDOMComponent('h1', defaultStyles.h1);\nconst h2 = createStrictDOMComponent('h2', defaultStyles.h2);\nconst h3 = createStrictDOMComponent('h3', defaultStyles.h3);\nconst h4 = createStrictDOMComponent('h4', defaultStyles.h4);\nconst h5 = createStrictDOMComponent('h5', defaultStyles.h5);\nconst h6 = createStrictDOMComponent('h6', defaultStyles.h6);\nconst header = createStrictDOMComponent('header', defaultStyles.header);\nconst hr = createStrictDOMComponent('hr', defaultStyles.hr);\nconst i = createStrictDOMComponent('i', defaultStyles.i);\nconst img = createStrictDOMComponent('img', defaultStyles.img);\nconst input = createStrictDOMComponent('input', defaultStyles.input);\nconst ins = createStrictDOMComponent('ins', defaultStyles.ins);\nconst kbd = createStrictDOMComponent('kbd', defaultStyles.kbd);\nconst label = createStrictDOMComponent('label', defaultStyles.label);\nconst li = createStrictDOMComponent('li', defaultStyles.li);\nconst main = createStrictDOMComponent('main', defaultStyles.main);\nconst mark = createStrictDOMComponent('mark', defaultStyles.mark);\nconst nav = createStrictDOMComponent('nav', defaultStyles.nav);\nconst ol = createStrictDOMComponent('ol', defaultStyles.ol);\nconst optgroup = createStrictDOMComponent('optgroup', defaultStyles.optgroup);\nconst option = createStrictDOMComponent('option', defaultStyles.option);\nconst p = createStrictDOMComponent('p', defaultStyles.p);\nconst pre = createStrictDOMComponent('pre', defaultStyles.pre);\nconst s = createStrictDOMComponent('s', defaultStyles.s);\nconst section = createStrictDOMComponent('section', defaultStyles.section);\nconst select = createStrictDOMComponent('select', defaultStyles.select);\nconst span = createStrictDOMComponent('span', defaultStyles.span);\nconst strong = createStrictDOMComponent('strong', defaultStyles.strong);\nconst sub = createStrictDOMComponent('sub', defaultStyles.sub);\nconst sup = createStrictDOMComponent('sup', defaultStyles.sup);\nconst textarea = createStrictDOMComponent('textarea', defaultStyles.textarea);\nconst u = createStrictDOMComponent('u', defaultStyles.u);\nconst ul = createStrictDOMComponent('ul', defaultStyles.ul);\n\nvar html = /*#__PURE__*/Object.freeze({\n __proto__: null,\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: h1,\n h2: h2,\n h3: h3,\n h4: h4,\n h5: h5,\n h6: h6,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n});\n\nexport { html };\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\n// Container-query thresholds. Picked for typical 5-7 column admin tables —\n// see Table.stories.tsx \"Responsive\" for the visual reasoning. Defined\n// once here so it's clear they're a design-system constant, not a magic\n// number sprinkled across files.\nconst COMPACT_BP = '720px'\nconst STACK_BP = '440px'\n\nexport const styles = css.create({\n // Outer wrapper that hosts the @container query. Wraps SortChip + Root\n // + Pagination so all three react to the same width. Root itself does\n // NOT carry containerType — keeping a single query target per Table.\n //\n // @deprecated Use Table.Root's sortChip/pagination slot props instead.\n // This style backs the deprecated <Table.Container> wrapper.\n container: {\n containerType: 'inline-size',\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n\n // The same containment chrome, but applied by Root when responsive=true.\n // Mirrors `container` so consumers don't need to wrap manually.\n rootContainer: {\n containerType: 'inline-size',\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n\n // Applied when Row receives an `onClick` handler. Cursor signals clickability;\n // the :focus-visible outline meets WCAG 2.4.7 for keyboard navigation.\n clickableRow: {\n cursor: 'pointer',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: -2,\n },\n\n // Root — the single grid container for the table itself\n root: {\n display: 'grid',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n overflow: 'hidden',\n backgroundColor: colors.bgCard,\n fontFamily: typography.fontFamily,\n color: colors.text,\n },\n\n // Stack-mode override: the Root's grid collapses to a single column so\n // each Row spans full width and stacks vertically.\n // NOTE: gridTemplateColumns is intentionally absent here. It is handled by\n // gridColumnsResponsive() so that StyleX conflict resolution does not remove\n // the explicit column template (a later style with the same property key\n // always wins, so combining gridColumns + rootResponsive in one array would\n // silently drop the column template).\n rootResponsive: {\n // The card-list look needs the outer border to disappear in stack\n // mode — each row paints its own border.\n borderWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n backgroundColor: {\n default: colors.bgCard,\n [`@container (max-width: ${STACK_BP})`]: 'transparent',\n },\n overflow: {\n default: 'hidden',\n [`@container (max-width: ${STACK_BP})`]: 'visible',\n },\n rowGap: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n },\n\n // Header group — hidden entirely in stack mode\n header: {\n display: {\n default: 'grid',\n [`@container (max-width: ${STACK_BP})`]: 'none',\n },\n gridColumn: '1 / -1',\n gridTemplateColumns: 'subgrid',\n backgroundColor: colors.bgCard,\n },\n\n // Body group\n body: {\n display: 'grid',\n gridColumn: '1 / -1',\n gridTemplateColumns: 'subgrid',\n },\n\n // Row — spans all columns. In stack mode its template flips to 1fr so\n // children stack as grid items in a single column (we keep grid context\n // so cells with `gridColumn` overrides still compute).\n row: {\n display: 'grid',\n gridColumn: '1 / -1',\n gridTemplateColumns: {\n default: 'subgrid',\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n borderBottomWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n bodyRow: {\n backgroundColor: {\n default: 'transparent',\n [`@container (max-width: ${STACK_BP})`]: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n // Stack-mode card chrome\n padding: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n borderRadius: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: radii.sm,\n },\n borderWidth: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: 1,\n },\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n\n // Header cell — keeps headers on a single line in compact mode\n headerCell: {\n fontWeight: typography.fontWeightSemibold,\n color: colors.textMuted,\n textAlign: 'start',\n // Match the body cell: shrink inside the track + wrap, so header labels\n // don't overlap when many columns are cramped.\n minWidth: 0,\n overflowWrap: 'break-word',\n whiteSpace: {\n default: 'normal',\n [`@container (max-width: ${COMPACT_BP})`]: 'nowrap',\n },\n },\n\n // Body cell. Text wraps by default — preferring \"wrap to a 2nd line\" over\n // \"truncate with ellipsis\" matches BI/data-reporting conventions where\n // hiding content (even with a visual hint) is treated as data loss.\n // Consumers that explicitly want single-line truncation use Text's\n // `truncate` prop, which sets its own nowrap + overflow + ellipsis chain\n // on the Text element itself. Buttons and badges already enforce\n // `white-space: nowrap` internally, so they're unaffected by this\n // default. In stack mode the cell becomes a 2-column grid for\n // label / value.\n cell: {\n color: colors.text,\n display: {\n default: 'flex',\n [`@container (max-width: ${STACK_BP})`]: 'grid',\n },\n alignItems: 'center',\n // Always let the cell shrink inside its `minmax(0, 1fr)` track. Previously\n // this was `auto` in the default (wide) band on the assumption there's\n // \"enough room\" — but a table with many columns (or wide content) whose\n // combined intrinsic width exceeds the container then can't shrink, so\n // content spills its track and overlaps the next column. `0` + the\n // wrapping below keeps every cell inside its column at any width.\n minWidth: 0,\n overflow: {\n // Safety against pathological unbreakable content (long URLs,\n // dataless ids) at narrow widths.\n default: 'visible',\n [`@container (max-width: ${COMPACT_BP})`]: 'hidden',\n },\n whiteSpace: 'normal',\n // Break long unbreakable tokens (emails, UUIDs) so they wrap within the\n // column instead of forcing it wider / overflowing.\n overflowWrap: 'break-word',\n gridTemplateColumns: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: '1fr 2fr',\n },\n gap: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n },\n\n // Wrapper around a (non-actions) cell's value. A raw text node is an\n // anonymous flex item with `min-width: auto`, so it refuses to shrink and\n // overflows its column even when the cell itself can shrink. Giving the value\n // its own `min-width: 0` flex item lets the text wrap inside the column.\n cellValue: {\n minWidth: 0,\n flexGrow: 1,\n overflowWrap: 'break-word',\n },\n\n // Label rendered as a real <span> inside each cell. Display:none in\n // default/compact, shown only in stack — matches StyleX guidance to\n // prefer real elements over ::before/::after for non-shadow-DOM cases.\n cellLabel: {\n display: {\n default: 'none',\n [`@container (max-width: ${STACK_BP})`]: 'block',\n },\n color: colors.textMuted,\n fontWeight: typography.fontWeightMedium,\n fontSize: typography.fontSizeXs,\n },\n\n // Actions cell. In default/compact behaves like any cell. In stack\n // mode: full-width footer of the card, right-aligned, with a top\n // separator. Label span is suppressed in JSX (Cell does not render it\n // when isActions=true).\n cellActions: {\n gridTemplateColumns: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n justifyContent: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: 'flex-end',\n },\n marginTop: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n paddingTop: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n borderTopWidth: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: 1,\n },\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // Size: sm\n cellSm: {\n paddingTop: {\n default: spacing.xs,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.xs,\n },\n paddingBottom: {\n default: spacing.xs,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.xs,\n },\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n // Size: md\n cellMd: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: {\n default: spacing.md,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.sm,\n },\n paddingRight: {\n default: spacing.md,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.sm,\n },\n fontSize: typography.fontSizeSm,\n },\n\n // Variant: striped (even body rows). Suppressed in stack — cards have\n // their own surface and zebra-striping reads as a bug there.\n stripedEven: {\n backgroundColor: {\n default: colors.bgCardHover,\n [`@container (max-width: ${STACK_BP})`]: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n },\n\n // Variant: bordered (cells get side borders). Suppressed in stack.\n borderedCell: {\n borderRightWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n borderedCellLast: {\n borderRightWidth: 0,\n },\n\n // SortChip — visible only in stack mode\n sortChip: {\n display: {\n default: 'none',\n [`@container (max-width: ${STACK_BP})`]: 'inline-flex',\n },\n alignSelf: 'flex-start',\n },\n\n // --- JS-measured force-stack variants ---\n //\n // A container query can only test the container's WIDTH — it can't know\n // \"6 columns won't fit here\". So a dense table can be wider than STACK_BP\n // yet still crush every cell to a few characters. Table.Root measures the\n // container with a ResizeObserver and, when `width < columnCount ×\n // minColumnWidth`, sets `stacked` in context; each component then also\n // applies its `*Stacked` variant here. These mirror the values in the\n // `@container (max-width: ${STACK_BP})` branches above, so JS-forced and\n // CSS-driven stacking render identically. The @container base is kept as\n // the SSR-safe path for genuinely narrow (mobile) widths — no JS, no\n // hydration flash — while these handle the cramped medium-width case.\n rootStacked: {\n gridTemplateColumns: '1fr',\n borderWidth: 0,\n backgroundColor: 'transparent',\n overflow: 'visible',\n rowGap: spacing.sm,\n },\n headerStacked: {\n display: 'none',\n },\n rowStacked: {\n gridTemplateColumns: '1fr',\n borderBottomWidth: 0,\n },\n bodyRowStacked: {\n backgroundColor: {\n default: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n padding: spacing.sm,\n borderRadius: radii.sm,\n borderWidth: 1,\n },\n cellStacked: {\n display: 'grid',\n gridTemplateColumns: '1fr 2fr',\n gap: spacing.sm,\n },\n cellLabelStacked: {\n display: 'block',\n },\n cellActionsStacked: {\n gridTemplateColumns: '1fr',\n justifyContent: 'flex-end',\n marginTop: spacing.sm,\n paddingTop: spacing.sm,\n borderTopWidth: 1,\n },\n borderedCellStacked: {\n borderRightWidth: 0,\n },\n sortChipStacked: {\n display: 'inline-flex',\n },\n\n // Dynamic: grid columns applied on Root (non-responsive path only).\n gridColumns: (template: string) => ({\n gridTemplateColumns: template,\n }),\n\n // Dynamic: grid columns at three tiers (default / compact / stack) in\n // one style. Used instead of gridColumns() when responsive=true so that\n // every gridTemplateColumns rule lives in the same StyleX style object —\n // splitting them would let StyleX's conflict resolution drop the\n // earlier classes (the LAST style wins per property key).\n //\n // - default: balanced multi-column layout for desktop widths\n // - @container (max-width: COMPACT_BP): consumer-supplied \"compact\"\n // template, e.g. give a badge column max-content and let the action\n // column absorb the slack so its hint text fits on one line\n // - @container (max-width: STACK_BP): collapse to a single column so\n // each row becomes a card\n gridColumnsResponsive: (template: string, compactTemplate: string) => ({\n gridTemplateColumns: {\n default: template,\n [`@container (max-width: ${COMPACT_BP})`]: compactTemplate,\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n }),\n})\n","import type {Table} from '@tanstack/react-table'\nimport {html} from 'react-strict-dom'\nimport {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nconst styles = css.create({\n root: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.sm,\n },\n button: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: 6,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.text,\n fontSize: typography.fontSizeSm,\n cursor: 'pointer',\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n buttonDisabled: {\n opacity: 0.4,\n cursor: 'not-allowed',\n backgroundColor: 'transparent',\n },\n pageInfo: {\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n },\n})\n\ninterface PaginationProps<TData> {\n table: Table<TData>\n}\n\nexport function Pagination<TData>({table}: PaginationProps<TData>) {\n const {pageIndex, pageSize} = table.getState().pagination\n const pageCount = table.getPageCount()\n const totalRows = table.getFilteredRowModel().rows.length\n\n if (totalRows <= pageSize) return null\n\n return (\n <html.div style={styles.root}>\n <html.button\n style={[styles.button, !table.getCanPreviousPage() && styles.buttonDisabled]}\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Previous\n </html.button>\n <html.span style={styles.pageInfo}>\n {pageIndex + 1} / {pageCount}\n </html.span>\n <html.button\n style={[styles.button, !table.getCanNextPage() && styles.buttonDisabled]}\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n </html.button>\n </html.div>\n )\n}\n","import type {Column} from '@tanstack/react-table'\nimport {html} from 'react-strict-dom'\nimport {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nconst styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n marginLeft: 4,\n fontSize: 10,\n userSelect: 'none',\n // Hidden by default, shown on hover or when active\n opacity: 0,\n transitionProperty: 'opacity',\n transitionDuration: '120ms',\n },\n active: {\n opacity: 1,\n color: colors.accent,\n },\n inactive: {\n color: colors.textMuted,\n },\n})\n\ninterface SortIndicatorProps<TData> {\n column: Column<TData, unknown>\n}\n\n/**\n * Sort direction chevron for table column headers.\n *\n * - Shows \\u25B2 (asc), \\u25BC (desc), or \\u21C5 (unsorted)\n * - Hidden by default, visible on header hover or when actively sorted\n * - Clicking the header cell should call column.getToggleSortingHandler()\n *\n * The parent HeaderCell applies a :hover rule that sets child opacity to 1.\n */\nexport function SortIndicator<TData>({column}: SortIndicatorProps<TData>) {\n if (!column.getCanSort()) return null\n\n const sorted = column.getIsSorted()\n\n return (\n <html.span\n style={[styles.root, sorted ? styles.active : styles.inactive]}\n data-sort-indicator=\"\"\n >\n {sorted === 'asc' ? '\\u25B2' : sorted === 'desc' ? '\\u25BC' : '\\u21C5'}\n </html.span>\n )\n}\n","import type {Column} from '@tanstack/react-table'\nimport {html} from 'react-strict-dom'\nimport {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\nconst styles = css.create({\n input: {\n width: '100%',\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n marginTop: spacing.xs,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.xs,\n backgroundColor: colors.bg,\n color: colors.text,\n fontSize: typography.fontSizeXs,\n outline: 'none',\n },\n})\n\ninterface ColumnFilterProps<TData> {\n column: Column<TData, unknown>\n placeholder?: string\n}\n\nexport function ColumnFilter<TData>({column, placeholder}: ColumnFilterProps<TData>) {\n if (!column.getCanFilter()) return null\n\n const filterValue = (column.getFilterValue() as string) ?? ''\n\n return (\n <html.input\n style={styles.input}\n type=\"text\"\n value={filterValue}\n onChange={(e: any) => column.setFilterValue(e.target.value || undefined)}\n placeholder={placeholder ?? `Filter...`}\n />\n )\n}\n","import {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {Menu} from '../Menu/Menu'\n\nexport interface SortValue {\n readonly id: string\n readonly desc: boolean\n}\n\nexport interface SortChipProps {\n readonly options: ReadonlyArray<{readonly id: string; readonly label: string}>\n readonly value: SortValue | null\n readonly onChange: (next: SortValue | null) => void\n /** Visible label preceding the sort field, e.g. \"Sort by\". */\n readonly label?: string\n /**\n * Reveal the chip regardless of the container query. Injected by\n * `Table.Root` when it force-stacks a cramped medium-width table (headers\n * hidden but container wider than the mobile breakpoint, so the chip's own\n * `@container` rule hasn't fired). Not part of the public API.\n */\n readonly forceShow?: boolean\n}\n\n/**\n * Sort selector for stack-mode Tables. Hidden in default/compact via\n * `@container` query — see styles.sortChip. Consumers render this inside\n * a `Table.Container` so the same query target reaches it.\n *\n * The chip is a simple controlled wrapper around `Menu`. It does NOT\n * couple to @tanstack/react-table — the consumer wires `value` and\n * `onChange` from whatever sort state they manage.\n */\nexport function SortChip({\n options,\n value,\n onChange,\n label = 'Sort by',\n forceShow = false,\n}: SortChipProps) {\n const current = value ? options.find((o) => o.id === value.id) : null\n const triggerLabel = current ? `${label}: ${current.label} ${value!.desc ? '↓' : '↑'}` : label\n\n return (\n <html.div style={[styles.sortChip, forceShow && styles.sortChipStacked]}>\n <Menu.Root>\n <Menu.Trigger>{triggerLabel}</Menu.Trigger>\n <Menu.Popup>\n {options.map((opt) => {\n const isCurrent = value?.id === opt.id\n const nextDesc = isCurrent ? !value!.desc : false\n return (\n <Menu.Item key={opt.id} onClick={() => onChange({id: opt.id, desc: nextDesc})}>\n {opt.label}\n {isCurrent ? ` ${value!.desc ? '↓' : '↑'}` : ''}\n </Menu.Item>\n )\n })}\n {value !== null && <Menu.Item onClick={() => onChange(null)}>Clear sort</Menu.Item>}\n </Menu.Popup>\n </Menu.Root>\n </html.div>\n )\n}\nSortChip.displayName = 'SortChip'\n","import {type ReactNode} from 'react'\nimport {type Row, type Table as TanstackTable, flexRender} from '@tanstack/react-table'\nimport {\n Body,\n Cell,\n Header,\n HeaderCell,\n Root,\n Row as TableRow,\n type TableSize,\n type TableVariant,\n} from './Table'\nimport {Pagination} from './Pagination'\nimport {SortChip, type SortValue} from './SortChip'\n\n// ColumnMeta is augmented in `./tanstack-augmentation` so the types\n// register independently of whether the consumer imports FromTanstack.\n\n// Base props shared by both clickable and non-clickable variants.\ninterface FromTanstackBaseProps<TData> {\n readonly table: TanstackTable<TData>\n readonly variant?: TableVariant\n readonly size?: TableSize\n readonly responsive?: boolean\n /** Render a SortChip above the grid (stack-mode only). Options derive from\n * columns where `column.getCanSort()` returns true. Wires value/onChange\n * through the TanStack sorting state automatically. */\n readonly sortChip?: boolean\n /** Render Pagination below the grid. */\n readonly pagination?: boolean\n /** Key extractor; defaults to TanStack's row.id. */\n readonly rowKey?: (row: Row<TData>) => string\n}\n\n// Discriminated union: rowAriaLabel is required when onRowClick is set so\n// keyboard / screen-reader users always get an accessible name for the\n// interactive row.\nexport type FromTanstackProps<TData> = FromTanstackBaseProps<TData> &\n (\n | {\n readonly onRowClick: (row: Row<TData>) => void\n /** Accessible name for each clickable row. Required because the row's\n * visible cell content alone is rarely a useful accessible name. */\n readonly rowAriaLabel: (row: Row<TData>) => string\n }\n | {\n readonly onRowClick?: undefined\n readonly rowAriaLabel?: undefined\n }\n )\n\n/**\n * Renders a styled Table directly from a TanStack table instance.\n *\n * Labels for stack mode are derived in this order:\n * 1. `column.columnDef.meta?.stackLabel` (explicit override)\n * 2. `column.columnDef.header` when it's a string\n * 3. Empty (use only for the actions column or when meta.stackLabel is set)\n *\n * Mark the actions column with `meta: { isActions: true }` to apply the\n * stack-mode footer styling to its body cells.\n *\n * @example\n * <Table.FromTanstack table={tanstackTable} sortChip pagination onRowClick={(r) => nav(r)} />\n */\nexport function FromTanstack<TData>({\n table,\n variant = 'default',\n size = 'md',\n responsive = true,\n sortChip,\n pagination,\n rowKey,\n onRowClick,\n rowAriaLabel,\n}: FromTanstackProps<TData>) {\n const sortChipNode: ReactNode = sortChip ? buildSortChip(table) : undefined\n const paginationNode: ReactNode = pagination ? <Pagination table={table} /> : undefined\n\n return (\n <Root\n variant={variant}\n size={size}\n responsive={responsive}\n sortChip={sortChipNode}\n pagination={paginationNode}\n >\n <Header>\n {table.getHeaderGroups().map((group) => (\n <TableRow key={group.id}>\n {group.headers.map((header) => {\n const def = header.column.columnDef\n const meta = def.meta\n const labelFromHeader = typeof def.header === 'string' ? def.header : undefined\n const label = meta?.stackLabel ?? labelFromHeader ?? ''\n return (\n <HeaderCell\n key={header.id}\n label={label}\n aria-label={meta?.isActions ? label || 'Actions' : undefined}\n >\n {header.isPlaceholder ? null : flexRender(def.header, header.getContext())}\n </HeaderCell>\n )\n })}\n </TableRow>\n ))}\n </Header>\n <Body>\n {table.getRowModel().rows.map((row) => {\n const key = rowKey?.(row) ?? row.id\n // Row handles its own click/keyboard/focus affordance — no outer\n // wrapper, so the role=\"rowgroup\" → role=\"row\" ARIA hierarchy\n // stays intact, and clicks inside interactive cell content (e.g.\n // an action button) are correctly attributed to the inner widget.\n return (\n <TableRow\n key={key}\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n aria-label={rowAriaLabel?.(row)}\n >\n {row.getVisibleCells().map((cell) => (\n <Cell key={cell.id} isActions={cell.column.columnDef.meta?.isActions === true}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Cell>\n ))}\n </TableRow>\n )\n })}\n </Body>\n </Root>\n )\n}\nFromTanstack.displayName = 'FromTanstack'\n\n// --- helpers ---\n\nfunction buildSortChip<TData>(table: TanstackTable<TData>): ReactNode {\n const options = table\n .getAllColumns()\n .filter((c) => c.getCanSort())\n .map((c) => {\n const fromHeader = typeof c.columnDef.header === 'string' ? c.columnDef.header : c.id\n return {id: c.id, label: c.columnDef.meta?.stackLabel ?? fromHeader}\n })\n\n if (options.length === 0) return null\n\n const current = table.getState().sorting[0]\n const value: SortValue | null = current ? {id: current.id, desc: current.desc} : null\n\n return (\n <SortChip\n options={options}\n value={value}\n onChange={(next) => table.setSorting(next ? [{id: next.id, desc: next.desc}] : [])}\n />\n )\n}\n","import {\n type ReactElement,\n type ReactNode,\n type MutableRefObject,\n createContext,\n cloneElement,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n Children,\n isValidElement,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {Pagination} from './Pagination'\nimport {SortIndicator} from './SortIndicator'\nimport {ColumnFilter} from './ColumnFilter'\nimport {SortChip} from './SortChip'\n\n// --- Types ---\n\nexport type TableVariant = 'default' | 'striped' | 'bordered'\nexport type TableSize = 'sm' | 'md'\n\n// --- Context ---\n\ninterface TableContextValue {\n variant: TableVariant\n size: TableSize\n responsive: boolean\n /** Header labels indexed by column position. Populated synchronously by\n * extractColumnMeta() during Root render so SSR HTML carries them. */\n labels: ReadonlyArray<string>\n /** Mutable ref: header Row writes inferred template, Root reads it */\n inferredTemplateRef: MutableRefObject<string | null>\n /** JS-measured force-stack flag. True when Root's ResizeObserver finds the\n * container too narrow for its column count (cells would be crushed), so\n * every cell/row/header also applies its `*Stacked` variant. Independent\n * of the @container base, which still handles genuinely narrow widths. */\n stacked: boolean\n}\n\n// useLayoutEffect measures + commits the stack decision before the browser\n// paints, so a client-rendered narrow table shows cards on first frame\n// rather than flashing tabular. On the server it would warn (no layout), so\n// fall back to useEffect there — SSR always emits the non-stacked markup and\n// the @container CSS covers true mobile without JS.\nconst useIsoLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n\n// Does any column's content no longer fit its box? We sample the header row\n// plus the first body row (bounded cost). Free text wraps rather than\n// overflowing (min-width:0 + overflow-wrap), so this only trips on content\n// that genuinely can't shrink — action buttons, badges, or nowrap header\n// labels — i.e. the real \"columns won't fit\" signal, independent of how many\n// columns there are. Structural overflow is consistent down a column, so the\n// first body row is a faithful sample.\nfunction gridOverflows(grid: HTMLDivElement | null): boolean {\n if (!grid) return false\n const TOL = 2 // sub-pixel layout rounding slack\n const over = (el: Element) => el.scrollWidth - el.clientWidth > TOL\n for (const h of grid.querySelectorAll('[role=\"columnheader\"]')) {\n if (over(h)) return true\n }\n const rowgroups = grid.querySelectorAll('[role=\"rowgroup\"]')\n const body = rowgroups[rowgroups.length - 1] // header is first, body last\n const firstRow = body?.querySelector('[role=\"row\"]')\n if (firstRow) {\n for (const c of firstRow.querySelectorAll('[role=\"cell\"]')) {\n if (over(c)) return true\n }\n }\n return false\n}\n\nconst TableContext = createContext<TableContextValue | null>(null)\n\nfunction useTable() {\n const ctx = useContext(TableContext)\n if (!ctx) throw new Error('Table compound components must be used within Table.Root')\n return ctx\n}\n\n// --- HeaderContext ---\n\nconst HeaderContext = createContext(false)\n\n// --- Dev-only warn registry ---\n//\n// One-shot per warning code per process: long-running dev sessions\n// shouldn't drown the console on every re-render of a misconfigured table.\nconst _IS_PROD = typeof process !== 'undefined' && process.env?.NODE_ENV === 'production'\nconst _devWarned = new Set<string>()\nfunction devWarnOnce(code: string, message: string) {\n if (_IS_PROD || _devWarned.has(code)) return\n _devWarned.add(code)\n // eslint-disable-next-line no-console\n console.warn(`[duro-app/ui Table] ${message}`)\n}\n\n// --- Container — owns the @container query target ---\n//\n// @deprecated Root sets up its own container query and accepts `sortChip`\n// / `pagination` as slot props. Container is kept exported as a passthrough\n// so existing call sites continue to work; new code should use Root alone.\n\nexport function Container({children}: {children: ReactNode}) {\n return <html.div style={styles.container}>{children}</html.div>\n}\n\n// --- Synchronous tree walk: widths + labels in document order ---\n//\n// Mirrors the pattern that was previously called extractTemplate(). Walks\n// the JSX tree, finds HeaderCell elements, captures their `width` and\n// `label` props (or extractText(children) fallback). Runs on every Root\n// render — cheap (small N, no DOM) — but worth memoising on `children`\n// reference if profiling flags it.\n\n// Shallow string-children extraction. We deliberately do NOT recurse into\n// child elements: an icon, tooltip trigger, or sort indicator nested inside\n// a HeaderCell would otherwise pollute the stack-mode label with its own\n// text content. JSX-only headers must set `label` explicitly.\nfunction extractText(node: ReactNode): string {\n let out = ''\n Children.forEach(node, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n out += String(child)\n }\n })\n return out\n}\n\n// Unwrap memo(...) / forwardRef(...) wrappers so JSX like\n// `<MemoizedHeaderCell ...>` still identifies as HeaderCell. Both wrappers\n// expose the inner component via a `.type` (memo) or `.render` (forwardRef)\n// property on the element-type descriptor. We walk both fields until we\n// reach a leaf, which is the underlying function/class component.\nfunction unwrapElementType(t: unknown): unknown {\n let current = t\n // Bounded loop — defensive cap against pathological infinite-nesting.\n for (let i = 0; i < 8 && current && typeof current === 'object'; i++) {\n const next =\n (current as {type?: unknown; render?: unknown}).type ?? (current as {render?: unknown}).render\n if (next == null) break\n current = next\n }\n return current\n}\n\nfunction extractColumnMeta(children: ReactNode): {\n template: string\n compactTemplate: string\n labels: string[]\n} {\n const widths: string[] = []\n const compactWidths: string[] = []\n const labels: string[] = []\n\n function walk(node: ReactNode) {\n Children.forEach(node, (child) => {\n if (!isValidElement(child)) return\n const props = child.props as Record<string, any>\n const unwrappedType = unwrapElementType(child.type)\n const displayName =\n (unwrappedType as {name?: string; displayName?: string} | null)?.displayName ||\n (unwrappedType as {name?: string} | null)?.name ||\n ''\n if (unwrappedType === HeaderCell || displayName === 'HeaderCell') {\n // Default to minmax(0, 1fr) instead of plain '1fr' so each column\n // can shrink below its content's min-content size. A plain '1fr'\n // track has an implicit min of `auto` (= min-content), which makes\n // the column refuse to shrink and the whole table overflow when a\n // cell's text is wider than 1/N of the container. With minmax(0,\n // 1fr), the cell's compact-mode `min-width: 0` + `overflow:\n // hidden` + `text-overflow: ellipsis` can actually truncate.\n const width = props.width || 'minmax(0, 1fr)'\n widths.push(width)\n // `compactWidth` lets the consumer switch to a content-aware\n // layout in the compact band while staying evenly distributed\n // at desktop. Falls back to `width` so columns that don't opt\n // in keep one template across both breakpoints.\n compactWidths.push(props.compactWidth || width)\n const explicit = typeof props.label === 'string' ? props.label : undefined\n const fallback = extractText(props.children).trim()\n const label = explicit ?? fallback\n if (!explicit && fallback === '' && props.children != null) {\n // Children are JSX with no string content — stack mode will render\n // an unlabeled cell. Tell the developer once.\n devWarnOnce(\n 'headerCell-missing-label',\n 'Table.HeaderCell with JSX children must set `label` for stack-mode rendering.',\n )\n }\n labels.push(label)\n } else if (props.children) {\n walk(props.children)\n }\n })\n }\n\n walk(children)\n return {\n template: widths.join(' '),\n compactTemplate: compactWidths.join(' '),\n labels,\n }\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n variant?: TableVariant\n size?: TableSize\n /** Opt out of responsive behavior (auto-stacking + container query). Default true. */\n responsive?: boolean\n /**\n * Optional sort UI rendered above the grid. Visible only in stack mode\n * (SortChip carries its own `display: none → inline-flex` rule). Typical\n * value: `<Table.SortChip options={...} value={...} onChange={...} />`.\n */\n sortChip?: ReactNode\n /**\n * Optional pagination UI rendered below the grid. Typical value:\n * `<Table.Pagination table={tanstackTable} />`.\n */\n pagination?: ReactNode\n}\n\nexport function Root({\n children,\n variant = 'default',\n size = 'md',\n responsive = true,\n sortChip,\n pagination,\n}: RootProps) {\n const inferredTemplateRef = useRef<string | null>(null)\n const {template, compactTemplate, labels} = extractColumnMeta(children)\n if (template) {\n inferredTemplateRef.current = template\n }\n\n // Content-aware stacking driven by ACTUAL overflow, not a width heuristic.\n // Column count alone is a poor proxy — a table with 8 short-text columns\n // fits fine on a laptop, while 4 columns of buttons + long emails can be\n // crushed. So instead of guessing, we render tabular and check whether any\n // cell's content actually overflows its box (scrollWidth > clientWidth);\n // when it does, the columns can't fit and we card up. The @container base\n // (styles.*: STACK_BP) still stacks true-mobile widths without JS.\n //\n // Oscillation guard: stacking changes the layout (cards never overflow), so\n // we can't re-measure overflow while stacked. We latch the container width\n // at the moment we stacked and only return to tabular once the container\n // has grown comfortably past it (hysteresis), then re-check overflow fresh.\n const containerRef = useRef<HTMLDivElement>(null)\n const gridRef = useRef<HTMLDivElement>(null)\n const [stacked, setStacked] = useState(false)\n const stackedAtWidthRef = useRef(0)\n\n // Re-runs whenever `stacked` flips: after we drop back to tabular the\n // container width is unchanged, so the ResizeObserver won't fire — the\n // effect re-running is what re-checks overflow in the fresh tabular layout.\n useIsoLayoutEffect(() => {\n if (!responsive) {\n setStacked(false)\n return\n }\n const el = containerRef.current\n if (!el || typeof ResizeObserver === 'undefined') return\n\n // Grows-back margin: only leave stack mode once we're well clear of the\n // width that triggered it, so a 1px jiggle at the boundary can't flip-flop.\n const HYSTERESIS = 48\n\n const measure = (width: number) => {\n if (width <= 0) return\n if (!stacked) {\n if (gridOverflows(gridRef.current)) {\n stackedAtWidthRef.current = width\n setStacked(true)\n }\n } else if (width > stackedAtWidthRef.current + HYSTERESIS) {\n // Drop back to tabular; this effect re-runs and re-checks overflow.\n setStacked(false)\n }\n }\n\n measure(el.getBoundingClientRect().width)\n const ro = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (!entry) return\n const box = entry.contentBoxSize?.[0]\n measure(box ? box.inlineSize : entry.contentRect.width)\n })\n ro.observe(el)\n return () => ro.disconnect()\n // labels.length re-runs detection when the column set changes.\n }, [responsive, labels.length, stacked])\n\n const grid = (\n <html.div\n role=\"table\"\n ref={gridRef}\n style={[\n styles.root,\n // When responsive, use gridColumnsResponsive so the explicit column\n // template and the stack-mode @container override live in one StyleX\n // style object. Splitting them across two styles (gridColumns +\n // rootResponsive) causes StyleX conflict resolution to drop the\n // column template because rootResponsive's gridTemplateColumns key\n // always wins as the later entry in the array.\n template\n ? responsive\n ? styles.gridColumnsResponsive(template, compactTemplate)\n : styles.gridColumns(template)\n : undefined,\n responsive && styles.rootResponsive,\n // Force-stack override — collapses the grid to one column. Applied\n // last so its gridTemplateColumns wins over gridColumnsResponsive.\n responsive && stacked && styles.rootStacked,\n ]}\n >\n {children}\n </html.div>\n )\n\n // The sort chip is normally revealed only by the @container query. When\n // JS force-stacks (headers hidden, but container wider than STACK_BP) the\n // chip's own query hasn't fired, so inject forceShow to reveal it.\n const sortChipEl =\n stacked && isValidElement(sortChip)\n ? cloneElement(sortChip as ReactElement<{forceShow?: boolean}>, {forceShow: true})\n : sortChip\n\n // Slots render unconditionally — `responsive=false` still wants its sort/\n // pagination chrome. Only the containerType:inline-size wrapper is\n // conditional, since it only matters when @container queries fire.\n const body = (\n <>\n {sortChipEl}\n {grid}\n {pagination}\n </>\n )\n\n return (\n <TableContext.Provider\n value={{variant, size, responsive, labels, inferredTemplateRef, stacked}}\n >\n {responsive ? (\n <html.div ref={containerRef} style={styles.rootContainer}>\n {body}\n </html.div>\n ) : (\n body\n )}\n </TableContext.Provider>\n )\n}\n\n// --- Header ---\n\nexport function Header({children}: {children: ReactNode}) {\n const {stacked} = useTable()\n return (\n <HeaderContext.Provider value={true}>\n <html.div role=\"rowgroup\" style={[styles.header, stacked && styles.headerStacked]}>\n {children}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\n// --- Body ---\n\nexport function Body({children}: {children: ReactNode}) {\n const {variant} = useTable()\n const childArray = Children.toArray(children) as ReactElement[]\n\n return (\n <HeaderContext.Provider value={false}>\n <html.div role=\"rowgroup\" style={styles.body}>\n {childArray.map((child, index) => {\n if (variant !== 'striped') return child\n // Key the provider by the child's React key (Children.toArray\n // guarantees one) so reordered rows carry their providers along\n // with them. Position is passed as the value because striping is\n // a positional concern even when row identity is stable.\n return (\n <RowIndexContext.Provider key={child.key ?? index} value={index}>\n {child}\n </RowIndexContext.Provider>\n )\n })}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\nconst RowIndexContext = createContext<number>(-1)\n\n// --- Row ---\n//\n// Always provides CellIndexContext, regardless of variant. Previously this\n// was only set up for `variant === 'bordered'`, which meant non-bordered\n// tables had every cell reading {index: 0} from the default — fine until\n// we needed to look up labels by column index.\n//\n// Interactive rows: pass `onClick` to make the row a navigation target.\n// The role stays `row` (per ARIA grid pattern) — we don't wrap in an outer\n// element with role=button, which would break the rowgroup → row hierarchy.\n// A click that originates inside an interactive descendant (button, link,\n// input, etc.) is treated as that descendant's click and does not fire\n// onClick — prevents double-fire when a row contains action buttons.\n\ninterface RowProps {\n children: ReactNode\n /** When set, the row becomes focusable + clickable. */\n onClick?: () => void\n /** Per-row accessible name — required when onClick is set, recommended otherwise. */\n 'aria-label'?: string\n}\n\n// Heuristic for \"clicking a descendant means the descendant, not the row\".\n// Matches the elements the WAI-ARIA grid pattern lists as \"widgets\" plus the\n// usual native focus-stealers.\nconst INTERACTIVE_SELECTOR =\n 'button, a, input, select, textarea, [role=\"button\"], [role=\"link\"], [role=\"checkbox\"], [role=\"menuitem\"], [role=\"switch\"], [role=\"tab\"], [contenteditable=\"true\"]'\n\nexport function Row({children, onClick, 'aria-label': ariaLabel}: RowProps) {\n const {variant, stacked} = useTable()\n const isHeader = useContext(HeaderContext)\n const rowIndex = useContext(RowIndexContext)\n const isEvenRow = rowIndex >= 0 && rowIndex % 2 === 1\n const childArray = Children.toArray(children) as ReactElement[]\n const isClickable = onClick !== undefined && !isHeader\n\n return (\n <html.div\n role=\"row\"\n tabIndex={isClickable ? 0 : undefined}\n aria-label={isClickable ? ariaLabel : undefined}\n onClick={\n isClickable\n ? (e) => {\n // react-strict-dom's typed click event omits `target`, but the\n // underlying SyntheticEvent still carries it. Cast through so\n // we can detect clicks that originate inside an interactive\n // descendant (action button, link, input) and let them be\n // attributed to that widget instead of the row.\n const target = (e as unknown as {target?: EventTarget | null}).target\n if (target instanceof Element && target.closest(INTERACTIVE_SELECTOR)) {\n return\n }\n onClick()\n }\n : undefined\n }\n onKeyDown={\n isClickable\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n onClick()\n }\n }\n : undefined\n }\n style={[\n styles.row,\n !isHeader && styles.bodyRow,\n !isHeader && variant === 'striped' && isEvenRow && styles.stripedEven,\n isClickable && styles.clickableRow,\n stacked && styles.rowStacked,\n // bodyRowStacked last so its card background wins over stripedEven.\n !isHeader && stacked && styles.bodyRowStacked,\n ]}\n >\n {childArray.map((child, index) => (\n // Key by the child's React key (Children.toArray assigns one) so a\n // reordered column carries its CellIndexContext provider along.\n // The positional `index` lives in the provider's value, not its key.\n <CellIndexContext.Provider\n key={child.key ?? index}\n value={{index, total: childArray.length}}\n >\n {child}\n </CellIndexContext.Provider>\n ))}\n </html.div>\n )\n}\n\nconst CellIndexContext = createContext<{index: number; total: number}>({index: 0, total: 0})\n\n// --- HeaderCell ---\n\nexport function HeaderCell({\n children,\n width: _width,\n compactWidth: _compactWidth,\n label: _label,\n isActions,\n 'aria-label': ariaLabel,\n}: {\n children?: ReactNode\n /** Column width at default (wide) viewport. CSS grid-template-columns\n * track value — e.g. '40px', '2fr', 'max-content'. Defaults to\n * 'minmax(0, 1fr)' so each column shares the row evenly and is free\n * to shrink below its content's intrinsic size. */\n width?: string\n /** Column width when the table's container drops into compact mode\n * (≤720px container). Use this to switch to a content-aware layout\n * at narrow widths — e.g. give a status badge `max-content` and the\n * action column `minmax(0, 2fr)` so it absorbs the slack — while\n * keeping evenly-distributed columns on wide screens. Defaults to the\n * same value as `width`. */\n compactWidth?: string\n /** Stack-mode label string. Optional when children is a plain string — the\n * text content is used as the label automatically. Required when children\n * contain JSX (icon + text, sort indicator, etc.). */\n label?: string\n /**\n * @deprecated Has no effect on HeaderCell. Pass `isActions` on the\n * matching `Table.Cell` instead — that's where the stack-mode footer\n * layout actually applies.\n */\n isActions?: boolean\n 'aria-label'?: string\n}) {\n if (isActions === true) {\n devWarnOnce(\n 'headerCell-isActions',\n 'HeaderCell `isActions` prop has no effect and is deprecated. Pass `isActions` on the matching Table.Cell instead.',\n )\n }\n const {size, variant} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n\n return (\n <html.div\n role=\"columnheader\"\n aria-label={ariaLabel}\n style={[\n styles.headerCell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n ]}\n >\n {children}\n </html.div>\n )\n}\nHeaderCell.displayName = 'HeaderCell'\n\n// --- Cell ---\n//\n// Renders the column-header label as a real <html.span>, hidden via\n// container query in non-stack modes. The span is omitted entirely when\n// isActions=true — actions footers don't show a label.\n\nexport function Cell({children, isActions}: {children: ReactNode; isActions?: boolean}) {\n const {size, variant, labels, responsive, stacked} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n const label = labels[index] ?? ''\n\n return (\n <html.div\n role=\"cell\"\n style={[\n styles.cell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n isActions && styles.cellActions,\n // Force-stack: cells become a label|value grid; the actions cell then\n // overrides its template to a single track and turns into the card's\n // right-aligned footer. Mirrors the @container (STACK_BP) branch, so\n // cellStacked applies for every cell and cellActionsStacked layers on\n // top for actions (its gridTemplateColumns wins as the later entry).\n stacked && styles.cellStacked,\n isActions && stacked && styles.cellActionsStacked,\n variant === 'bordered' && stacked && styles.borderedCellStacked,\n ]}\n >\n {responsive && !isActions && label !== '' ? (\n <html.span style={[styles.cellLabel, stacked && styles.cellLabelStacked]}>\n {label}\n </html.span>\n ) : null}\n {isActions ? children : <html.div style={styles.cellValue}>{children}</html.div>}\n </html.div>\n )\n}\n\n// --- Export ---\n\nimport {FromTanstack} from './FromTanstack'\n\nexport const Table = {\n /** @deprecated Wrap behaviour is built into Table.Root. Drop this wrapper from new code. */\n Container,\n Root,\n Header,\n Body,\n Row,\n HeaderCell,\n Cell,\n Pagination,\n SortIndicator,\n ColumnFilter,\n SortChip,\n /** Renders a styled Table directly from a TanStack table instance. */\n FromTanstack,\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 wrap: {\n position: 'relative',\n width: '100%',\n },\n scroll: {\n position: 'relative',\n width: '100%',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n backgroundColor: colors.bgCard,\n },\n // Dynamic: only virtualized lists get a capped, scrollable viewport.\n scrollMax: (maxHeight: number | string) => ({\n maxHeight,\n overflowY: 'auto',\n overscrollBehavior: 'contain',\n }),\n head: {\n position: 'sticky',\n top: 0,\n zIndex: 1,\n backgroundColor: colors.bgCard,\n },\n headRow: {\n display: 'flex',\n flexDirection: 'row',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n headCell: {\n display: 'flex',\n flexDirection: 'row',\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.03em',\n color: colors.textMuted,\n },\n headCellSortable: {\n cursor: 'pointer',\n userSelect: 'none',\n color: {default: colors.textMuted, ':hover': colors.text},\n },\n sortMark: {\n fontSize: typography.fontSizeXs,\n color: colors.accent,\n },\n bodyTotal: (height: number) => ({\n position: 'relative',\n width: '100%',\n height,\n }),\n row: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n rowClickable: {\n cursor: 'pointer',\n backgroundColor: {default: 'transparent', ':hover': colors.bgCardHover},\n },\n // Dynamic: absolute placement of a windowed row.\n rowAbsolute: (y: number) => ({\n position: 'absolute',\n top: 0,\n left: 0,\n transform: `translateY(${y}px)`,\n }),\n cell: {\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 overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n // Dynamic: proportional column width from the TanStack column size (fr-like).\n cellFlex: (size: number) => ({\n flexGrow: size,\n flexShrink: 1,\n flexBasis: 0,\n minWidth: 0,\n }),\n // --- Stack (card) mode: narrow containers ---\n // The scroll frame drops its border/background so each row card stands on\n // its own; windowing is off in this mode so no capped viewport.\n stackScroll: {\n position: 'relative',\n width: '100%',\n backgroundColor: 'transparent',\n },\n stackBody: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n stackRow: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n width: '100%',\n padding: spacing.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n backgroundColor: colors.bgCard,\n },\n stackCell: {\n display: 'grid',\n gridTemplateColumns: '1fr 2fr',\n gap: spacing.sm,\n alignItems: 'center',\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n },\n stackCellLabel: {\n color: colors.textMuted,\n fontWeight: typography.fontWeightMedium,\n fontSize: typography.fontSizeXs,\n },\n stackCellValue: {\n minWidth: 0,\n overflowWrap: 'break-word',\n },\n empty: {\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n textAlign: 'center' as const,\n color: colors.textMuted,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n },\n // Floating position indicator, pinned bottom-right of the viewport.\n pos: {\n position: 'absolute',\n right: spacing.sm,\n bottom: spacing.sm,\n paddingTop: 3,\n paddingBottom: 3,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n borderRadius: radii.full,\n backgroundColor: colors.bgCardHover,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n color: colors.textMuted,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n pointerEvents: 'none',\n },\n})\n","import {useEffect, useLayoutEffect, useRef, useState, type ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n flexRender,\n type ColumnDef,\n type SortingState,\n type OnChangeFn,\n type Row,\n} from '@tanstack/react-table'\nimport {useVirtualizer} from '@tanstack/react-virtual'\nimport {styles} from './styles.css'\n\n// Measure + commit before paint on the client; no-op-safe on the server.\nconst useIsoLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n\nexport interface VirtualTableRange {\n /** 1-based index of the first visible row (0 when empty). */\n from: number\n /** 1-based index of the last visible row (0 when empty). */\n to: number\n total: number\n /** 1-based page the first visible row falls in. */\n page: number\n pages: number\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface VirtualTableProps<TData> {\n data: TData[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnDef<TData, any>[]\n /** Controlled sorting (pairs with a SortChip in the caller). */\n sorting?: SortingState\n onSortingChange?: OnChangeFn<SortingState>\n getRowId?: (row: TData, index: number) => string\n onRowClick?: (row: TData) => void\n rowLabel?: (row: TData) => string\n /**\n * 1-based page to restore the scroll position to on mount (read from the URL\n * by the caller). Only meaningful when the list virtualizes.\n */\n initialPage?: number\n /**\n * Fired (debounced) when the top-visible page changes — wire it to the URL.\n * Only fires in the virtualized branch; small lists render in one scroll and\n * have no page concept.\n */\n onVisiblePageChange?: (range: VirtualTableRange) => void\n /** Build the floating position-indicator label (i18n stays with the caller). */\n rangeLabel?: (range: VirtualTableRange) => string\n /** Rows per \"page\" for the URL/indicator math. Default 50. */\n pageSize?: number\n /** Estimated row height for the virtualizer. Default 44. */\n estimateRowHeight?: number\n /** Max height of the scroll viewport once virtualized. Default '70vh'. */\n maxHeight?: number | string\n /** Render every row (no windowing) at or below this count. Default 150. */\n virtualizeThreshold?: number\n /**\n * Below this container width (px) the table cards up: the header hides and\n * each row becomes a label/value card (like Table's stack mode). Since the\n * flex columns truncate rather than overflow, this is a deliberate\n * phone-width breakpoint, not an auto content measurement. Cards disable\n * windowing (variable heights), so keep phone lists reasonably short.\n * Default 640. Set `responsive={false}` to disable entirely.\n */\n stackBelow?: number\n /** Opt out of the card-up-on-narrow behavior. Default true. */\n responsive?: boolean\n emptyLabel?: ReactNode\n}\n\n/**\n * A sortable data table that windows its rows above a threshold (default 150)\n * via @tanstack/react-virtual, keeps a floating position indicator, and reports\n * the visible page so the caller can mirror it in the URL. Below the threshold\n * it renders every row in one scroll (find-in-page + a11y intact) — no\n * pagination, no windowing. Web-only (uses DOM scroll measurement).\n *\n * URL-decoupled by design: pass `initialPage` (restore) and `onVisiblePageChange`\n * (persist); the component never touches the router itself.\n */\nexport function VirtualTable<TData>({\n data,\n columns,\n sorting,\n onSortingChange,\n getRowId,\n onRowClick,\n rowLabel,\n initialPage,\n onVisiblePageChange,\n rangeLabel,\n pageSize = 50,\n estimateRowHeight = 44,\n maxHeight = '70vh',\n virtualizeThreshold = 150,\n stackBelow = 640,\n responsive = true,\n emptyLabel,\n}: VirtualTableProps<TData>) {\n // Support both controlled sorting (SortChip in the caller) and standalone use.\n const [internalSorting, setInternalSorting] = useState<SortingState>([])\n const sortingState = sorting ?? internalSorting\n const handleSortingChange = onSortingChange ?? setInternalSorting\n\n const table = useReactTable({\n data,\n columns,\n state: {sorting: sortingState},\n onSortingChange: handleSortingChange,\n getRowId,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n })\n\n const rows = table.getRowModel().rows\n\n // Card-up on narrow containers. Flex cells truncate rather than overflow, so\n // there's no content-overflow signal to measure (as in Table) — we use a\n // deliberate phone-width breakpoint. Cards render every row (no windowing),\n // so `virtualize` is forced off while stacked.\n const wrapRef = useRef<HTMLDivElement>(null)\n const [stacked, setStacked] = useState(false)\n useIsoLayoutEffect(() => {\n if (!responsive) {\n setStacked(false)\n return\n }\n const el = wrapRef.current\n if (!el || typeof ResizeObserver === 'undefined') return\n const apply = (width: number) => {\n if (width > 0) setStacked(width < stackBelow)\n }\n apply(el.getBoundingClientRect().width)\n const ro = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (!entry) return\n const box = entry.contentBoxSize?.[0]\n apply(box ? box.inlineSize : entry.contentRect.width)\n })\n ro.observe(el)\n return () => ro.disconnect()\n }, [responsive, stackBelow])\n\n const virtualize = rows.length > virtualizeThreshold && !stacked\n\n const scrollRef = useRef<HTMLDivElement>(null)\n const rv = useVirtualizer({\n count: rows.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => estimateRowHeight,\n overscan: 12,\n })\n\n // Restore the scroll position from `initialPage` on mount, and suppress the\n // page-change callback briefly so that restore scroll doesn't immediately\n // report (and overwrite) the URL.\n const suppressWrite = useRef(true)\n useEffect(() => {\n if (!virtualize) {\n suppressWrite.current = false\n return\n }\n if (initialPage && initialPage > 1) {\n rv.scrollToIndex((initialPage - 1) * pageSize, {align: 'start'})\n }\n const id = setTimeout(() => {\n suppressWrite.current = false\n }, 300)\n return () => clearTimeout(id)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [virtualize])\n\n const vItems = rv.getVirtualItems()\n const firstIndex = vItems[0]?.index ?? 0\n const lastIndex = vItems.length ? vItems[vItems.length - 1].index : 0\n const pages = Math.max(1, Math.ceil(rows.length / pageSize))\n // page = which pageSize-sized block the top visible row is in, so it only\n // changes when you cross a boundary (no per-scroll-tick churn).\n const curPage = Math.floor(Math.max(0, firstIndex) / pageSize) + 1\n\n const range: VirtualTableRange = {\n from: rows.length ? firstIndex + 1 : 0,\n to: rows.length ? lastIndex + 1 : 0,\n total: rows.length,\n page: curPage,\n pages,\n }\n\n // Report the visible page so the caller can sync the URL. Fire once per\n // distinct page rather than debouncing a timer — `curPage` only changes at a\n // pageSize boundary (coarse), and react-virtual's frequent re-renders during\n // scroll/measurement would keep resetting a debounce timer so it never fires.\n // The `lastReported` guard prevents redundant calls; callers use replace, so\n // there's no history churn.\n const lastReported = useRef<number | null>(null)\n useEffect(() => {\n if (!virtualize || !onVisiblePageChange) return\n if (suppressWrite.current) {\n // Still in the mount-restore window — record the page so we don't emit a\n // spurious change once it clears, but don't call out.\n lastReported.current = curPage\n return\n }\n if (lastReported.current === curPage) return\n lastReported.current = curPage\n onVisiblePageChange({\n from: rows.length ? firstIndex + 1 : 0,\n to: rows.length ? lastIndex + 1 : 0,\n total: rows.length,\n page: curPage,\n pages,\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [curPage, virtualize])\n\n // Stack-mode label for a column: explicit meta override, else the string\n // header, else nothing (value renders label-less, e.g. an actions column).\n const columnStackLabel = (columnDef: {\n header?: unknown\n meta?: {stackLabel?: string; label?: string}\n }): string => {\n const meta = columnDef.meta\n if (typeof meta?.stackLabel === 'string') return meta.stackLabel\n if (typeof meta?.label === 'string') return meta.label\n return typeof columnDef.header === 'string' ? columnDef.header : ''\n }\n\n const renderRow = (\n row: Row<TData>,\n index: number,\n positioned?: ReturnType<typeof styles.rowAbsolute>,\n measureRef?: (node: Element | null) => void,\n ) =>\n stacked ? (\n <html.div\n key={row.id}\n role=\"row\"\n aria-label={rowLabel?.(row.original)}\n onClick={onRowClick ? () => onRowClick(row.original) : undefined}\n style={[styles.stackRow, Boolean(onRowClick) && styles.rowClickable]}\n >\n {row.getVisibleCells().map((cell) => {\n const lbl = columnStackLabel(cell.column.columnDef)\n return (\n <html.div key={cell.id} role=\"cell\" style={styles.stackCell}>\n {lbl ? <html.span style={styles.stackCellLabel}>{lbl}</html.span> : null}\n <html.div style={styles.stackCellValue}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </html.div>\n </html.div>\n )\n })}\n </html.div>\n ) : (\n <html.div\n key={row.id}\n ref={measureRef}\n data-index={index}\n role=\"row\"\n aria-label={rowLabel?.(row.original)}\n onClick={onRowClick ? () => onRowClick(row.original) : undefined}\n style={[styles.row, Boolean(onRowClick) && styles.rowClickable, positioned]}\n >\n {row.getVisibleCells().map((cell) => (\n <html.div\n key={cell.id}\n role=\"cell\"\n style={[styles.cell, styles.cellFlex(cell.column.getSize())]}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </html.div>\n ))}\n </html.div>\n )\n\n const label =\n rangeLabel?.(range) ?? (rows.length ? `${range.from}–${range.to} / ${range.total}` : '')\n\n return (\n <html.div ref={wrapRef} style={styles.wrap}>\n <html.div\n ref={scrollRef}\n role=\"table\"\n style={[\n stacked ? styles.stackScroll : styles.scroll,\n virtualize && styles.scrollMax(maxHeight),\n ]}\n >\n {stacked ? null : (\n <html.div role=\"rowgroup\" style={styles.head}>\n {table.getHeaderGroups().map((headerGroup) => (\n <html.div key={headerGroup.id} role=\"row\" style={styles.headRow}>\n {headerGroup.headers.map((header) => {\n const col = header.column\n const sorted = col.getIsSorted()\n return (\n <html.div\n key={header.id}\n role=\"columnheader\"\n aria-sort={\n sorted === 'asc'\n ? 'ascending'\n : sorted === 'desc'\n ? 'descending'\n : undefined\n }\n onClick={col.getCanSort() ? col.getToggleSortingHandler() : undefined}\n style={[\n styles.headCell,\n col.getCanSort() && styles.headCellSortable,\n styles.cellFlex(header.getSize()),\n ]}\n >\n {header.isPlaceholder\n ? null\n : flexRender(col.columnDef.header, header.getContext())}\n {sorted ? (\n <html.span style={styles.sortMark}>\n {sorted === 'asc' ? '↑' : '↓'}\n </html.span>\n ) : null}\n </html.div>\n )\n })}\n </html.div>\n ))}\n </html.div>\n )}\n\n {rows.length === 0 ? (\n <html.div style={styles.empty}>{emptyLabel}</html.div>\n ) : (\n <html.div\n role=\"rowgroup\"\n style={\n stacked\n ? styles.stackBody\n : virtualize\n ? styles.bodyTotal(rv.getTotalSize())\n : undefined\n }\n >\n {virtualize\n ? vItems.map((vi) =>\n renderRow(\n rows[vi.index],\n vi.index,\n styles.rowAbsolute(vi.start),\n rv.measureElement,\n ),\n )\n : rows.map((row, i) => renderRow(row, i))}\n </html.div>\n )}\n </html.div>\n\n {virtualize && rows.length > 0 ? (\n <html.div aria-live=\"polite\" style={styles.pos}>\n {label}\n </html.div>\n ) : null}\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: '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":["styleq$1","styleq_2","cache","compiledKey","createStyleq","options","disableCache","disableMix","transform","definedProperties","className","inlineStyle","debugString","nextCache","styles","i","possibleStyle","_i","style","classNameChunk","cacheEntry","definedPropertiesChunk","prop","value","compiledKeyValue","weakMap","subStyle","_prop","_value","styleProps","styleq","optimizedStyleq","merge","dataStyleSrc","result","chunks","pathsMap","chunk","trimmed","path","line","a","button","div","form","heading","header","input","label","main","nav","p","span","textarea","defaultStyles","ReactSharedInternals","require$$0","reactCompilerRuntime_production","size","reactCompilerRuntime_development","dispatcher","compilerRuntimeModule","require$$1","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","overlay","$$css","overlayEmphasized","selectedCount","selectedCountEmphasized","actions","closeButton","closeButtonEmphasized","separator","separatorEmphasized","ActionBarContent","selectedItemCount","selectedLabel","isEmphasized","onClearSelection","dismissible","undefined","countStr","t5","t6","t7","t8","jsx","_rsdMerge","_rsdDefaultStyles","t9","t10","t11","t12","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","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","compact","full","Card","root","rootDisabled","box","boxUnchecked","boxChecked","Checkbox","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","overflow","Trigger","Portal","handleBackdropClick","Header","Title","h2","Description","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","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","FormProvider","legend","gapMs","gapLg","gapXl","ms","xl","Legend","Fieldset","addon","addonStart","addonEnd","addonClickable","addonDisabled","dynamicStyles","minWidth","val","Addon","position","positionStyle","InputGroup","LinkButton","href","rel","trigger","popupEnd","itemHighlighted","linkItem","MenuContext","useMenu","useMenuRoot","setOpen","highlightedId","setHighlightedId","menuId","rootRef","triggerRef","Map","itemsRef","orderRef","needsInitialHighlightRef","close","toggle","order","element","set","ids","sort","b","elA","get","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","registerItem","handleKeyDown","order_0","bb54","prev_2","idx_0","indexOf","idx","prev_1","items","prev_0","click","localRef","Popup","isHighlighted","handleClick","LinkItem","Menu","bordered","Panel","circle","circleUnchecked","circleChecked","dot","RadioGroupContext","useRadioGroup","onSelect","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","itemHidden","hidden","popupPosition","top","ComboboxContext","useCombobox","useComboboxRoot","inputValue","controlledInputValue","onInputChange","initialLabels","initial","internalInputValue","setInternalInputValue","setInputValue","labels","setLabels","listboxId","inputRef","found","openPopup","selectValue","v_0","label_0","registerLabel","id_0","itemValue_0","query","toLowerCase","id_1","item_0","getVisibleOrder","visibleOrder","bb137","item_1","scrollIntoView","block","lightTheme","xjvd03b","lightShadows","x13v825q","highContrastTheme","highContrastShadows","themeMap","light","portalMount","PortalMountContext","usePortalMount","ThemeProvider","theme","overrides","themeStyles","mount","setMount","focused","setFocused","coords","setCoords","window","useLayoutEffect","node","createPortal","selectedValue","isSelected","isVisible","textContent","el_0","values","Combobox","SelectContext","useSelect","useSelectRoot","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","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","addTag","value_0","getElementById","querySelectorAll","validate","commitValueRef","raw","selectionStart","handlePaste","clipboardData","getData","split","s","Boolean","handleFocus","TagGroup","loggedMessages","errorMsg","msg","strictAttributeSet","isPropAllowed","validateStrictProps","createStrictDOMComponent","TagName","defaultStyle","debugStyle","Component","htmlFor","restProps","hostProps","hostStyleProps","a$1","article$1","aside$1","b$1","bdi$1","bdo$1","blockquote$1","br$1","button$1","code$1","del$1","div$1","em$1","fieldset$1","footer$1","form$1","header$1","hr$1","i$1","img$1","input$1","ins$1","kbd$1","label$1","li$1","main$1","mark$1","nav$1","ol$1","optgroup$1","option$1","p$1","pre$1","s$1","section$1","select$1","span$1","strong$1","sub$1","sup$1","textarea$1","u$1","ul$1","article","aside","bdi","bdo","blockquote","br","del","em","fieldset","hr","img","ins","kbd","li","mark","ol","optgroup","option","pre","select","strong","sub","sup","u","ul","html","rootContainer","clickableRow","rootResponsive","row","bodyRow","headerCell","cell","cellValue","cellLabel","cellActions","cellSm","cellMd","stripedEven","borderedCell","borderedCellLast","sortChip","rootStacked","headerStacked","rowStacked","bodyRowStacked","cellStacked","cellLabelStacked","cellActionsStacked","borderedCellStacked","sortChipStacked","gridColumns","template","gridColumnsResponsive","compactTemplate","buttonDisabled","pageInfo","Pagination","table","getState","pageIndex","pageSize","pagination","getPageCount","pageCount","getFilteredRowModel","rows","getCanPreviousPage","previousPage","getCanNextPage","nextPage","active","inactive","SortIndicator","column","getCanSort","sorted","getIsSorted","ColumnFilter","getCanFilter","getFilterValue","filterValue","setFilterValue","SortChip","forceShow","find","o","triggerLabel","desc","opt","isCurrent","nextDesc","displayName","FromTanstack","responsive","rowKey","onRowClick","rowAriaLabel","buildSortChip","sortChipNode","paginationNode","getHeaderGroups","TableRow","getVisibleCells","_temp3","getRowModel","Cell","columnDef","meta","isActions","flexRender","getContext","headers","def","labelFromHeader","stackLabel","HeaderCell","isPlaceholder","getAllColumns","c","fromHeader","sorting","setSorting","useIsoLayoutEffect","gridOverflows","grid","TOL","over","h","rowgroups","firstRow","TableContext","useTable","HeaderContext","_IS_PROD","process","env","NODE_ENV","_devWarned","devWarnOnce","console","warn","Container","extractText","out","unwrapElementType","t","extractColumnMeta","widths","compactWidths","walk","unwrappedType","compactWidth","explicit","fallback","join","inferredTemplateRef","containerRef","gridRef","stacked","setStacked","stackedAtWidthRef","HYSTERESIS","measure","ro","contentBoxSize","inlineSize","contentRect","sortChipEl","cloneElement","T0","T1","childArray","toArray","Provider","index","RowIndexContext","INTERACTIVE_SELECTOR","Row","isHeader","rowIndex","isEvenRow","isClickable","Element","CellIndexContext","total","isLast","Table","_temp4","scroll","scrollMax","head","headRow","headCell","headCellSortable","sortMark","bodyTotal","rowClickable","rowAbsolute","y","cellFlex","stackScroll","stackBody","stackRow","stackCell","stackCellLabel","stackCellValue","pos","VirtualTable","data","columns","onSortingChange","getRowId","rowLabel","initialPage","onVisiblePageChange","rangeLabel","estimateRowHeight","virtualizeThreshold","stackBelow","emptyLabel","internalSorting","setInternalSorting","useReactTable","sortingState","getCoreRowModel","getSortedRowModel","wrapRef","apply","virtualize","scrollRef","rv","useVirtualizer","count","getScrollElement","estimateSize","overscan","suppressWrite","scrollToIndex","vItems","getVirtualItems","firstIndex","lastIndex","pages","ceil","curPage","floor","range","from","to","page","lastReported","columnStackLabel","renderRow","positioned","measureRef","original","lbl","getSize","headerGroup","col","getToggleSortingHandler","getTotalSize","vi","measureElement","rootVertical","listVertical","tab","tabVertical","tabActiveHorizontal","tabActiveVertical","tabIndicatorActive","indicatorHorizontal","indicatorVertical","indicatorOffsetH","offset","indicatorOffsetV","tabDisabled","TabsContext","useTabs","useTabsRoot","tabsRef","indicatorActive","setIndicatorActive","registerTab","listRef","setIndicator","CSS","escape","offsetLeft","offsetWidth","offsetTop","offsetHeight","tabs","listEl","prevKey","nextKey","targetValue","currentIdx","Tab","tabId","panelId","Tabs","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","minColumnWidth","columnStyle","maxSm","maxMd","maxLg","padSm","padMd","padLg","headerPadding","mainPadding","maxWidthMap","paddingMap","PageShell","maxWidth","padding","mw","pad","useContainerQuery","compactBelow","spaciousAbove","setSize","rafId","cancelAnimationFrame","requestAnimationFrame"],"mappings":"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","x_google_ignoreList":[0,1,2,3,94]}