@duro-app/ui 0.34.7 → 0.34.9

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 (35) hide show
  1. package/dist/components/Badge/Badge.d.ts.map +1 -1
  2. package/dist/components/Badge/styles.css.d.ts +3 -0
  3. package/dist/components/Badge/styles.css.d.ts.map +1 -1
  4. package/dist/components/Button/Button.d.ts.map +1 -1
  5. package/dist/components/Button/styles.css.d.ts +3 -0
  6. package/dist/components/Button/styles.css.d.ts.map +1 -1
  7. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
  8. package/dist/components/Checkbox/styles.css.d.ts +28 -3
  9. package/dist/components/Checkbox/styles.css.d.ts.map +1 -1
  10. package/dist/components/InputGroup/InputGroup.d.ts.map +1 -1
  11. package/dist/components/InputGroup/styles.css.d.ts +3 -0
  12. package/dist/components/InputGroup/styles.css.d.ts.map +1 -1
  13. package/dist/components/Switch/Switch.d.ts.map +1 -1
  14. package/dist/components/Switch/styles.css.d.ts +3 -0
  15. package/dist/components/Switch/styles.css.d.ts.map +1 -1
  16. package/dist/index.css +1 -1
  17. package/dist/index.js +1292 -1273
  18. package/dist/index.js.map +1 -1
  19. package/dist/platform.d.ts +12 -0
  20. package/dist/platform.d.ts.map +1 -0
  21. package/dist/platform.native.d.ts +2 -0
  22. package/dist/platform.native.d.ts.map +1 -0
  23. package/package.json +2 -2
  24. package/src/components/Badge/Badge.tsx +6 -1
  25. package/src/components/Badge/styles.css.ts +5 -0
  26. package/src/components/Button/Button.tsx +2 -0
  27. package/src/components/Button/styles.css.ts +5 -0
  28. package/src/components/Checkbox/Checkbox.tsx +50 -0
  29. package/src/components/Checkbox/styles.css.ts +38 -4
  30. package/src/components/InputGroup/InputGroup.tsx +2 -0
  31. package/src/components/InputGroup/styles.css.ts +5 -0
  32. package/src/components/Switch/Switch.tsx +27 -17
  33. package/src/components/Switch/styles.css.ts +5 -0
  34. package/src/platform.native.ts +3 -0
  35. package/src/platform.ts +11 -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/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/Dialog/styles.css.ts","../src/components/Dialog/Dialog.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/Field/FieldContext.ts","../src/components/Form/FormContext.ts","../src/components/Field/styles.css.ts","../src/components/Field/Field.tsx","../src/components/Form/Form.tsx","../src/components/Fieldset/styles.css.ts","../src/components/Fieldset/Fieldset.tsx","../src/components/InputGroup/InputGroupContext.ts","../src/components/Input/styles.css.ts","../src/components/Input/Input.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/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/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/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'\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: '150ms',\n transitionTimingFunction: 'ease',\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 // 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}\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","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})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\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 <html.span style={[styles.base, sizeMap[size], styles[variant]]}>{children}</html.span>\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 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',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n textDecoration: 'none',\n whiteSpace: 'nowrap',\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})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\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 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 children,\n}: ButtonProps) {\n return (\n <html.button\n type={type}\n disabled={disabled}\n onClick={onClick}\n style={[\n styles.base,\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 padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n overflow: 'hidden', // contain the float\n },\n icon: {\n float: 'left',\n marginRight: spacing.sm,\n marginBottom: spacing.xs,\n marginTop: 2,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\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 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, children}: CalloutProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div role=\"note\" style={[styles.base, styles[variant]]}>\n {resolvedIcon && <html.span style={styles.icon}>{resolvedIcon}</html.span>}\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 {shadows} from '@duro-app/tokens/tokens/shadows.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: '150ms',\n transitionTimingFunction: 'ease',\n transform: {\n default: 'translateY(0)',\n ':hover': 'translateY(-2px)',\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'\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: '150ms',\n transitionTimingFunction: 'ease',\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 check: {\n width: 12,\n height: 12,\n color: colors.accentContrast,\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n})\n","import {type ReactNode, useState, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\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 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 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 {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 // --- 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: 'ease-out',\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: 'ease-in',\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: 'ease-out',\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: 'ease-in',\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: '150ms',\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 {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'\n\n/** Apple-standard ease: aggressive deceleration, feels like \"arriving\" */\nconst APPLE_EASE_OUT = 'cubic-bezier(0.32, 0.72, 0, 1)'\nconst APPLE_EASE_IN = 'cubic-bezier(0.72, 0, 0.68, 0.28)'\n\nconst OPEN_DURATION = '280ms'\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: OPEN_DURATION,\n animationTimingFunction: APPLE_EASE_OUT,\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: APPLE_EASE_IN,\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: OPEN_DURATION,\n animationTimingFunction: APPLE_EASE_OUT,\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: APPLE_EASE_IN,\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: OPEN_DURATION,\n animationTimingFunction: APPLE_EASE_OUT,\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: APPLE_EASE_IN,\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: '150ms',\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'\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: '200ms',\n animationTimingFunction: 'ease-out',\n animationFillMode: 'both',\n },\n backdropClosing: {\n animationName: css.keyframes({\n from: {opacity: 1},\n to: {opacity: 0},\n }),\n animationDuration: '160ms',\n animationTimingFunction: 'ease-in',\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: '200ms',\n animationTimingFunction: 'ease-out',\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: 'ease-in',\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: '200ms',\n animationTimingFunction: 'ease-out',\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: 'ease-in',\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: '200ms',\n animationTimingFunction: 'ease-out',\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: 'ease-in',\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: '150ms',\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 {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 {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, 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 {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'\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: '150ms',\n transitionTimingFunction: 'ease',\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})\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 type?: InputType\n name?: string\n placeholder?: string\n required?: boolean\n minLength?: number\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 onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLInputElement>\n}\n\nexport function Input({\n variant = 'default',\n type = 'text',\n name,\n placeholder,\n required,\n minLength,\n pattern,\n autoComplete,\n value,\n defaultValue,\n disabled,\n autoFocus,\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\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\n return (\n <html.input\n 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={\n ctx ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() : undefined\n }\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={[styles.base, styles[effectiveVariant], groupCtx?.inGroup && styles.inGroup]}\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 {typography} from '@duro-app/tokens/tokens/typography.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: '150ms',\n transitionTimingFunction: 'ease',\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: '150ms',\n transitionTimingFunction: 'ease',\n },\n addonDisabled: {\n opacity: 0.4,\n cursor: 'not-allowed',\n },\n})\n","import type {ReactNode} from 'react'\nimport {useMemo} from 'react'\nimport {css, html} from 'react-strict-dom'\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 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'\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: '150ms',\n transitionTimingFunction: 'ease',\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'\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: '150ms',\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: '150ms',\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'\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: '150ms',\n transitionTimingFunction: 'ease',\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'\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: '200ms',\n transitionTimingFunction: 'ease',\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: '150ms',\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'\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: '150ms',\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: '150ms',\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 const [internalInputValue, setInternalInputValue] = useState('')\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 if (value === null) 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'\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: '150ms',\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 },\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: 120,\n zIndex: 50,\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: '150ms',\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} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {SelectContext, useSelect} from './SelectContext'\nimport {useSelectRoot} from './useSelectRoot'\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\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 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 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 ---\nfunction Popup({children}: {children: ReactNode}) {\n const {open, close, listboxId} = useSelect()\n\n return (\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={[styles.popup, !open && styles.hidden]}\n >\n {children}\n </html.div>\n </>\n )\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'\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: '150ms',\n transitionTimingFunction: 'ease',\n },\n groupTriggerActive: {\n color: colors.text,\n },\n chevron: {\n display: 'inline-flex',\n alignItems: 'center',\n transitionProperty: 'transform',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n chevronOpen: {\n transform: 'rotate(90deg)',\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: '6px',\n paddingBottom: '6px',\n paddingLeft: spacing.lg,\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: '150ms',\n transitionTimingFunction: 'ease',\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 },\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 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 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 // Auto-expand group containing active value\n useEffect(() => {\n if (activeValue) {\n setExpandedGroups((prev) => {\n // We don't know which group it belongs to here — Group handles this\n return prev\n })\n }\n }, [activeValue])\n\n return (\n <SideNavContext.Provider\n value={{activeValue, onSelect, expandedGroups, toggleGroup, registerItem, orderRef}}\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, 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\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 toggleGroup(key)\n }\n }, [activeValue, key, expandedGroups, toggleGroup])\n\n // Expand on first render if defaultExpanded\n useEffect(() => {\n if (defaultExpanded && !expandedGroups.has(key)) {\n toggleGroup(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// --- Item ---\n\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value, children}: 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 {children}\n </html.button>\n )\n}\n\nexport const SideNav = {\n Root,\n Group,\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} 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'\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: '150ms',\n transitionTimingFunction: 'ease',\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'\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: '150ms',\n transitionTimingFunction: 'ease',\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 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 minWidth: {\n // Allow the cell to shrink inside its grid track. In default (wide)\n // mode there's enough room so `auto` is fine; in compact and stack\n // we explicitly drop to 0 so wrappable content can size to the\n // track instead of forcing the track to grow.\n default: 'auto',\n [`@container (max-width: ${COMPACT_BP})`]: 0,\n },\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 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 // 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 // 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\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({options, value, onChange, label = 'Sort by'}: 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}>\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 useContext,\n useRef,\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}\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 * 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 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 ]}\n >\n {children}\n </html.div>\n )\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 {sortChip}\n {grid}\n {pagination}\n </>\n )\n\n return (\n <TableContext.Provider value={{variant, size, responsive, labels, inferredTemplateRef}}>\n {responsive ? <html.div style={styles.rootContainer}>{body}</html.div> : body}\n </TableContext.Provider>\n )\n}\n\n// --- Header ---\n\nexport function Header({children}: {children: ReactNode}) {\n return (\n <HeaderContext.Provider value={true}>\n <html.div role=\"rowgroup\" style={styles.header}>\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} = 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 ]}\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} = 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 ]}\n >\n {responsive && !isActions && label !== '' ? (\n <html.span style={styles.cellLabel}>{label}</html.span>\n ) : null}\n {children}\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 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 },\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: '150ms',\n transitionTimingFunction: 'ease',\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 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}\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} 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\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 {activeValue, onSelect, orientation, registerTab, tabsRef, orderRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} 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} = useTabs()\n const listRef = useRef<HTMLDivElement>(null)\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 </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} = 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 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'\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: '150ms',\n transitionTimingFunction: 'ease',\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 {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'\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: '150ms',\n transitionTimingFunction: 'ease',\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'\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: '150ms',\n transitionTimingFunction: 'ease',\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: '150ms',\n transitionTimingFunction: 'ease',\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})\n","import {type ReactNode, useCallback, useRef} from 'react'\nimport {html} from 'react-strict-dom'\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 style={[styles.root, disabled && styles.rootDisabled]}>\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 <html.button\n type=\"button\"\n tabIndex={-1}\n aria-hidden\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","filledIcons","Icon","name","filled","base","iconWrap","content","error","success","warning","info","defaultIcons","resolveIcon","icon","variant","Alert","resolvedIcon","sizeMd","sizeSm","default","sizeMap","sm","md","Badge","sizeDefault","sizeSmall","primary","secondary","link","inverseSecondary","danger","fullWidth","disabled","small","Button","type","onClick","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","ariaLabel","onChange","isControlled","internalChecked","setInternalChecked","useState","isChecked","target","handleChange","opacity","t14","Symbol","for","t15","t16","t17","t18","useControllableValue","controlledValue","defaultValue","internal","setInternal","v","setValue","rootHorizontal","CheckboxGroupContext","useCheckboxGroup","ctx","Error","Root","onValueChange","itemValue","next","onToggle","Item","itemDisabled","groupValue","groupDisabled","includes","isDisabled","CheckboxGroup","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","descriptionId","clearTimeout","requestOpen","setTimeout","requestClose","onKeyDown","stopPropagation","document","addEventListener","removeEventListener","prev","overflow","Trigger","Portal","handleBackdropClick","Header","Title","h2","Description","Body","Footer","Close","Dialog","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","String","Math","max","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","t19","t20","Drawer","message","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","FieldContext","useFieldContext","FormContext","useFormContext","rootSide","labelSide","fieldContent","necessityIcon","necessityLabel","formCtx","ControlledRoot","StaticRoot","invalid","required","labelPosition","invalidProp","control","useRHFFormContext","field","fieldState","useController","effectiveDisabled","effectiveLabelPosition","effectiveNecessityIndicator","necessityIndicator","onBlur","ref","controlId","errorId","errorMessage","FieldLayout","labelNode","rest","Children","child","isValidElement","Label","isSide","indicator","Field","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","InputGroupContext","useInputGroupContext","inGroup","Input","placeholder","minLength","pattern","autoComplete","autoFocus","groupCtx","fieldCtx","effectiveName","effectiveValue","effectiveOnChange","effectiveOnBlur","effectiveRef","effectiveVariant","extraProps","trim","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","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","bb119","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","itemActive","SideNavContext","useSideNav","activeValue","expandedGroups","setExpandedGroups","has","toggleGroup","Group","groupKey","defaultExpanded","isExpanded","groupRef","querySelector","hasActiveChild","SideNav","spinner","srOnly","Spinner","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","list","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","section","select","strong","sub","sup","u","ul","html","rootContainer","clickableRow","rootResponsive","row","bodyRow","headerCell","cell","cellLabel","cellActions","cellSm","cellMd","stripedEven","borderedCell","borderedCellLast","sortChip","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","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","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","grid","T0","T1","childArray","toArray","Provider","index","RowIndexContext","INTERACTIVE_SELECTOR","Row","isHeader","rowIndex","isEvenRow","isClickable","Element","CellIndexContext","total","isLast","Table","rootVertical","listVertical","tab","tabVertical","tabActiveHorizontal","tabActiveVertical","tabDisabled","TabsContext","useTabs","useTabsRoot","tabsRef","registerTab","listRef","tabs","listEl","prevKey","nextKey","targetValue","currentIdx","Tab","tabId","panelId","Tabs","Textarea","weightNormal","weightMedium","weightSemibold","weightBold","truncate","weightMap","normal","medium","semibold","bold","weight","as","ToggleGroupContext","useToggleGroup","unpressed","pressed","grouped","Toggle","controlledPressed","defaultPressed","onPressedChange","sizeProp","groupPressed","standalonePressed","setStandalonePressed","ToggleGroup","multiple","nextPressed","TooltipContext","useTooltip","placement","delay","tooltipId","timerRef","show","hide","Tooltip","track","trackUnchecked","trackChecked","thumbChecked","Switch","onCheckedChange","setChecked","alignStretch","gapXxl","gapXxxl","xxl","xxxl","stretch","Stack","alignBaseline","justifyStart","justifyCenter","justifyEnd","justifyBetween","baseline","justifyMap","between","Inline","justify","Cluster","col1","col2","col3","col4","col5","col6","autoFit","columnsMap","Grid","columns","minColumnWidth","columnStyle","maxSm","maxMd","maxLg","padSm","padMd","padLg","headerPadding","mainPadding","maxWidthMap","paddingMap","PageShell","maxWidth","padding","mw","pad","useContainerQuery","compactBelow","spaciousAbove","setSize","rafId","cancelAnimationFrame","requestAnimationFrame","entry","contentBoxSize","inlineSize","contentRect"],"mappings":"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","x_google_ignoreList":[0,1,2,3,88]}
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/Dialog/styles.css.ts","../src/components/Dialog/Dialog.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/Field/FieldContext.ts","../src/components/Form/FormContext.ts","../src/components/Field/styles.css.ts","../src/components/Field/Field.tsx","../src/components/Form/Form.tsx","../src/components/Fieldset/styles.css.ts","../src/components/Fieldset/Fieldset.tsx","../src/components/InputGroup/InputGroupContext.ts","../src/components/Input/styles.css.ts","../src/components/Input/Input.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/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/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/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'\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: '150ms',\n transitionTimingFunction: 'ease',\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 // 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}\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'\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',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n textDecoration: 'none',\n whiteSpace: 'nowrap',\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 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 children,\n}: ButtonProps) {\n return (\n <html.button\n type={type}\n disabled={disabled}\n onClick={onClick}\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 padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n overflow: 'hidden', // contain the float\n },\n icon: {\n float: 'left',\n marginRight: spacing.sm,\n marginBottom: spacing.xs,\n marginTop: 2,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\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 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, children}: CalloutProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div role=\"note\" style={[styles.base, styles[variant]]}>\n {resolvedIcon && <html.span style={styles.icon}>{resolvedIcon}</html.span>}\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 {shadows} from '@duro-app/tokens/tokens/shadows.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: '150ms',\n transitionTimingFunction: 'ease',\n transform: {\n default: 'translateY(0)',\n ':hover': 'translateY(-2px)',\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'\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: '150ms',\n transitionTimingFunction: 'ease',\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 {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 // --- 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: 'ease-out',\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: 'ease-in',\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: 'ease-out',\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: 'ease-in',\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: '150ms',\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 {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'\n\n/** Apple-standard ease: aggressive deceleration, feels like \"arriving\" */\nconst APPLE_EASE_OUT = 'cubic-bezier(0.32, 0.72, 0, 1)'\nconst APPLE_EASE_IN = 'cubic-bezier(0.72, 0, 0.68, 0.28)'\n\nconst OPEN_DURATION = '280ms'\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: OPEN_DURATION,\n animationTimingFunction: APPLE_EASE_OUT,\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: APPLE_EASE_IN,\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: OPEN_DURATION,\n animationTimingFunction: APPLE_EASE_OUT,\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: APPLE_EASE_IN,\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: OPEN_DURATION,\n animationTimingFunction: APPLE_EASE_OUT,\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: APPLE_EASE_IN,\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: '150ms',\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'\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: '200ms',\n animationTimingFunction: 'ease-out',\n animationFillMode: 'both',\n },\n backdropClosing: {\n animationName: css.keyframes({\n from: {opacity: 1},\n to: {opacity: 0},\n }),\n animationDuration: '160ms',\n animationTimingFunction: 'ease-in',\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: '200ms',\n animationTimingFunction: 'ease-out',\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: 'ease-in',\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: '200ms',\n animationTimingFunction: 'ease-out',\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: 'ease-in',\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: '200ms',\n animationTimingFunction: 'ease-out',\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: 'ease-in',\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: '150ms',\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 {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 {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, 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 {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'\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: '150ms',\n transitionTimingFunction: 'ease',\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})\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 type?: InputType\n name?: string\n placeholder?: string\n required?: boolean\n minLength?: number\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 onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLInputElement>\n}\n\nexport function Input({\n variant = 'default',\n type = 'text',\n name,\n placeholder,\n required,\n minLength,\n pattern,\n autoComplete,\n value,\n defaultValue,\n disabled,\n autoFocus,\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\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\n return (\n <html.input\n 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={\n ctx ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() : undefined\n }\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={[styles.base, styles[effectiveVariant], groupCtx?.inGroup && styles.inGroup]}\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 {typography} from '@duro-app/tokens/tokens/typography.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: '150ms',\n transitionTimingFunction: 'ease',\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: '150ms',\n transitionTimingFunction: 'ease',\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'\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: '150ms',\n transitionTimingFunction: 'ease',\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'\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: '150ms',\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: '150ms',\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'\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: '150ms',\n transitionTimingFunction: 'ease',\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'\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: '200ms',\n transitionTimingFunction: 'ease',\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: '150ms',\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'\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: '150ms',\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: '150ms',\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 const [internalInputValue, setInternalInputValue] = useState('')\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 if (value === null) 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'\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: '150ms',\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 },\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: 120,\n zIndex: 50,\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: '150ms',\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} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {SelectContext, useSelect} from './SelectContext'\nimport {useSelectRoot} from './useSelectRoot'\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\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 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 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 ---\nfunction Popup({children}: {children: ReactNode}) {\n const {open, close, listboxId} = useSelect()\n\n return (\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={[styles.popup, !open && styles.hidden]}\n >\n {children}\n </html.div>\n </>\n )\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'\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: '150ms',\n transitionTimingFunction: 'ease',\n },\n groupTriggerActive: {\n color: colors.text,\n },\n chevron: {\n display: 'inline-flex',\n alignItems: 'center',\n transitionProperty: 'transform',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n chevronOpen: {\n transform: 'rotate(90deg)',\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: '6px',\n paddingBottom: '6px',\n paddingLeft: spacing.lg,\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: '150ms',\n transitionTimingFunction: 'ease',\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 },\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 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 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 // Auto-expand group containing active value\n useEffect(() => {\n if (activeValue) {\n setExpandedGroups((prev) => {\n // We don't know which group it belongs to here — Group handles this\n return prev\n })\n }\n }, [activeValue])\n\n return (\n <SideNavContext.Provider\n value={{activeValue, onSelect, expandedGroups, toggleGroup, registerItem, orderRef}}\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, 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\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 toggleGroup(key)\n }\n }, [activeValue, key, expandedGroups, toggleGroup])\n\n // Expand on first render if defaultExpanded\n useEffect(() => {\n if (defaultExpanded && !expandedGroups.has(key)) {\n toggleGroup(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// --- Item ---\n\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value, children}: 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 {children}\n </html.button>\n )\n}\n\nexport const SideNav = {\n Root,\n Group,\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} 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'\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: '150ms',\n transitionTimingFunction: 'ease',\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'\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: '150ms',\n transitionTimingFunction: 'ease',\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 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 minWidth: {\n // Allow the cell to shrink inside its grid track. In default (wide)\n // mode there's enough room so `auto` is fine; in compact and stack\n // we explicitly drop to 0 so wrappable content can size to the\n // track instead of forcing the track to grow.\n default: 'auto',\n [`@container (max-width: ${COMPACT_BP})`]: 0,\n },\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 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 // 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 // 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\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({options, value, onChange, label = 'Sort by'}: 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}>\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 useContext,\n useRef,\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}\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 * 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 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 ]}\n >\n {children}\n </html.div>\n )\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 {sortChip}\n {grid}\n {pagination}\n </>\n )\n\n return (\n <TableContext.Provider value={{variant, size, responsive, labels, inferredTemplateRef}}>\n {responsive ? <html.div style={styles.rootContainer}>{body}</html.div> : body}\n </TableContext.Provider>\n )\n}\n\n// --- Header ---\n\nexport function Header({children}: {children: ReactNode}) {\n return (\n <HeaderContext.Provider value={true}>\n <html.div role=\"rowgroup\" style={styles.header}>\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} = 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 ]}\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} = 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 ]}\n >\n {responsive && !isActions && label !== '' ? (\n <html.span style={styles.cellLabel}>{label}</html.span>\n ) : null}\n {children}\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 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 },\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: '150ms',\n transitionTimingFunction: 'ease',\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 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}\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} 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\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 {activeValue, onSelect, orientation, registerTab, tabsRef, orderRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} 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} = useTabs()\n const listRef = useRef<HTMLDivElement>(null)\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 </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} = 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 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'\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: '150ms',\n transitionTimingFunction: 'ease',\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 {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'\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: '150ms',\n transitionTimingFunction: 'ease',\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'\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: '150ms',\n transitionTimingFunction: 'ease',\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: '150ms',\n transitionTimingFunction: 'ease',\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","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","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","ariaLabel","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","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","descriptionId","clearTimeout","requestOpen","setTimeout","requestClose","onKeyDown","stopPropagation","document","addEventListener","removeEventListener","prev","overflow","Trigger","Portal","handleBackdropClick","Header","Title","h2","Description","Body","Footer","Close","Dialog","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","String","Math","max","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","message","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","FieldContext","useFieldContext","FormContext","useFormContext","rootSide","labelSide","fieldContent","necessityIcon","necessityLabel","formCtx","ControlledRoot","StaticRoot","invalid","required","labelPosition","invalidProp","control","useRHFFormContext","field","fieldState","useController","effectiveDisabled","effectiveLabelPosition","effectiveNecessityIndicator","necessityIndicator","onBlur","ref","controlId","errorId","errorMessage","FieldLayout","labelNode","rest","Children","child","isValidElement","Label","isSide","indicator","Field","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","InputGroupContext","useInputGroupContext","inGroup","Input","placeholder","minLength","pattern","autoComplete","autoFocus","groupCtx","fieldCtx","effectiveName","effectiveValue","effectiveOnChange","effectiveOnBlur","effectiveRef","effectiveVariant","extraProps","trim","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","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","bb119","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","itemActive","SideNavContext","useSideNav","activeValue","expandedGroups","setExpandedGroups","has","toggleGroup","Group","groupKey","defaultExpanded","isExpanded","groupRef","querySelector","hasActiveChild","SideNav","spinner","srOnly","Spinner","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","list","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","section","select","strong","sub","sup","u","ul","html","rootContainer","clickableRow","rootResponsive","row","bodyRow","headerCell","cell","cellLabel","cellActions","cellSm","cellMd","stripedEven","borderedCell","borderedCellLast","sortChip","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","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","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","grid","T0","T1","childArray","toArray","Provider","index","RowIndexContext","INTERACTIVE_SELECTOR","Row","isHeader","rowIndex","isEvenRow","isClickable","Element","CellIndexContext","total","isLast","Table","rootVertical","listVertical","tab","tabVertical","tabActiveHorizontal","tabActiveVertical","tabDisabled","TabsContext","useTabs","useTabsRoot","tabsRef","registerTab","listRef","tabs","listEl","prevKey","nextKey","targetValue","currentIdx","Tab","tabId","panelId","Tabs","Textarea","weightNormal","weightMedium","weightSemibold","weightBold","truncate","weightMap","normal","medium","semibold","bold","weight","as","ToggleGroupContext","useToggleGroup","unpressed","pressed","grouped","Toggle","controlledPressed","defaultPressed","onPressedChange","sizeProp","groupPressed","standalonePressed","setStandalonePressed","ToggleGroup","multiple","nextPressed","TooltipContext","useTooltip","placement","delay","tooltipId","timerRef","show","hide","Tooltip","track","trackUnchecked","trackChecked","thumbChecked","Switch","onCheckedChange","setChecked","alignStretch","gapXxl","gapXxxl","xxl","xxxl","stretch","Stack","alignBaseline","justifyStart","justifyCenter","justifyEnd","justifyBetween","baseline","justifyMap","between","Inline","justify","Cluster","col1","col2","col3","col4","col5","col6","autoFit","columnsMap","Grid","columns","minColumnWidth","columnStyle","maxSm","maxMd","maxLg","padSm","padMd","padLg","headerPadding","mainPadding","maxWidthMap","paddingMap","PageShell","maxWidth","padding","mw","pad","useContainerQuery","compactBelow","spaciousAbove","setSize","rafId","cancelAnimationFrame","requestAnimationFrame","entry","contentBoxSize","inlineSize","contentRect"],"mappings":"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","x_google_ignoreList":[0,1,2,3,89]}