@duro-app/ui 0.46.0 → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Table/FromTanstack.d.ts +4 -1
- package/dist/components/Table/FromTanstack.d.ts.map +1 -1
- package/dist/components/Table/SortChip.d.ts +1 -8
- package/dist/components/Table/SortChip.d.ts.map +1 -1
- package/dist/components/Table/Table.d.ts +10 -2
- package/dist/components/Table/Table.d.ts.map +1 -1
- package/dist/components/Table/Table.stories.d.ts +3 -3
- package/dist/components/Table/Table.stories.d.ts.map +1 -1
- package/dist/components/Table/styles.css.d.ts +5 -40
- package/dist/components/Table/styles.css.d.ts.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.d.ts +4 -5
- package/dist/components/VirtualTable/VirtualTable.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.js +2342 -2431
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/components/Table/FromTanstack.tsx +5 -0
- package/src/components/Table/SortChip.tsx +2 -15
- package/src/components/Table/Table.stories.tsx +91 -132
- package/src/components/Table/Table.tsx +38 -151
- package/src/components/Table/styles.css.ts +38 -65
- package/src/components/VirtualTable/VirtualTable.tsx +6 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.6_react-dom@19.2.4_react@19.2.4__react-native@0.84._1278be21509893d955b57d0db9435779/node_modules/react-strict-dom/dist/web/runtime.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-compiler-runtime.production.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-compiler-runtime.development.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/compiler-runtime.js","../src/components/ActionBar/ActionBarProvider.tsx","../src/components/ActionBar/styles.css.ts","../src/components/ActionBar/ActionBar.tsx","../src/components/Icon/Icon.tsx","../src/components/Alert/styles.css.ts","../src/components/Alert/Alert.tsx","../src/platform.ts","../src/components/Badge/styles.css.ts","../src/components/Badge/Badge.tsx","../src/components/Button/styles.css.ts","../src/components/Button/Button.tsx","../src/components/ButtonGroup/styles.css.ts","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Callout/styles.css.ts","../src/components/Callout/Callout.tsx","../src/components/Card/styles.css.ts","../src/components/Card/Card.tsx","../src/components/Checkbox/styles.css.ts","../src/components/Checkbox/Checkbox.tsx","../src/hooks/useControllableValue.ts","../src/components/CheckboxGroup/styles.css.ts","../src/components/CheckboxGroup/CheckboxGroup.tsx","../src/components/Field/FieldContext.ts","../src/components/ColorInput/styles.css.ts","../src/components/ColorInput/ColorInput.tsx","../src/components/Dialog/styles.css.ts","../src/components/Dialog/Dialog.tsx","../src/components/InputGroup/InputGroupContext.ts","../src/components/Input/styles.css.ts","../src/components/Input/Input.tsx","../src/components/Form/FormContext.ts","../src/components/Field/styles.css.ts","../src/components/Field/Field.tsx","../src/components/ConfirmDialog/ConfirmDialog.tsx","../src/components/DetailPanel/styles.css.ts","../src/components/DetailPanel/DetailPanel.tsx","../src/components/Drawer/styles.css.ts","../src/components/Drawer/useSwipeDismiss.ts","../src/components/Drawer/Drawer.tsx","../src/components/EmptyState/styles.css.ts","../src/components/EmptyState/EmptyState.tsx","../../tokens/src/tokens/type-presets.css.ts","../src/components/Heading/styles.css.ts","../src/components/Heading/Heading.tsx","../src/components/List/styles.css.ts","../src/components/List/List.tsx","../src/components/Form/Form.tsx","../src/components/Fieldset/styles.css.ts","../src/components/Fieldset/Fieldset.tsx","../src/components/InputGroup/styles.css.ts","../src/components/InputGroup/InputGroup.tsx","../src/components/LinkButton/styles.css.ts","../src/components/LinkButton/LinkButton.tsx","../src/components/Menu/styles.css.ts","../src/components/Menu/MenuContext.ts","../src/components/Menu/useMenuRoot.ts","../src/components/Menu/Menu.tsx","../src/components/Panel/styles.css.ts","../src/components/Panel/Panel.tsx","../src/components/RadioGroup/styles.css.ts","../src/components/RadioGroup/RadioGroup.tsx","../src/components/ScrollArea/styles.css.ts","../src/components/ScrollArea/ScrollAreaContext.ts","../src/components/ScrollArea/useScrollAreaRoot.ts","../src/components/ScrollArea/ScrollArea.tsx","../src/components/Combobox/styles.css.ts","../src/components/Combobox/ComboboxContext.ts","../src/components/Combobox/useComboboxRoot.ts","../../tokens/src/themes/light.css.ts","../../tokens/src/themes/high-contrast.css.ts","../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/Combobox/Combobox.tsx","../src/components/Select/styles.css.ts","../src/components/Select/SelectContext.ts","../src/components/Select/useSelectRoot.ts","../src/components/Select/Select.tsx","../src/components/SideNav/styles.css.ts","../src/components/SideNav/SideNavContext.ts","../src/components/SideNav/SideNav.tsx","../src/components/Spinner/styles.css.ts","../src/components/Spinner/Spinner.tsx","../src/components/Toast/styles.css.ts","../src/components/Toast/ToastProvider.tsx","../src/components/StatusIcon/styles.css.ts","../src/components/StatusIcon/StatusIcon.tsx","../src/components/TagGroup/TagGroupContext.ts","../src/components/Tag/styles.css.ts","../src/components/Tag/Tag.tsx","../src/components/TagGroup/styles.css.ts","../src/components/TagGroup/TagGroup.tsx","../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.6_react-dom@19.2.4_react@19.2.4__react-native@0.84._1278be21509893d955b57d0db9435779/node_modules/react-strict-dom/dist/web/index.js","../src/components/Table/styles.css.ts","../src/components/Table/Pagination.tsx","../src/components/Table/SortIndicator.tsx","../src/components/Table/ColumnFilter.tsx","../src/components/Table/SortChip.tsx","../src/components/Table/FromTanstack.tsx","../src/components/Table/Table.tsx","../src/components/VirtualTable/styles.css.ts","../src/components/VirtualTable/VirtualTable.tsx","../src/components/Tabs/styles.css.ts","../src/components/Tabs/TabsContext.ts","../src/components/Tabs/useTabsRoot.ts","../src/components/Tabs/Tabs.tsx","../src/components/Textarea/styles.css.ts","../src/components/Textarea/Textarea.tsx","../src/components/ColorMode/styles.css.ts","../src/components/ColorMode/ColorMode.tsx","../src/components/Text/styles.css.ts","../src/components/Text/Text.tsx","../src/components/ToggleGroup/ToggleGroupContext.ts","../src/components/Toggle/styles.css.ts","../src/components/Toggle/Toggle.tsx","../src/components/ToggleGroup/styles.css.ts","../src/components/ToggleGroup/ToggleGroup.tsx","../src/components/Tooltip/styles.css.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Switch/styles.css.ts","../src/components/Switch/Switch.tsx","../src/components/Stack/styles.css.ts","../src/components/Stack/Stack.tsx","../src/components/Inline/styles.css.ts","../src/components/Inline/Inline.tsx","../src/components/Cluster/styles.css.ts","../src/components/Cluster/Cluster.tsx","../src/components/Grid/styles.css.ts","../src/components/Grid/Grid.tsx","../src/components/PageShell/styles.css.ts","../src/components/PageShell/PageShell.tsx","../src/hooks/useContainerQuery.ts"],"sourcesContent":["/**\n * @license react-strict-dom\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\nimport * as stylex from '@stylexjs/stylex';\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a = styles.inline;\nconst article = styles.block;\nconst aside = styles.block;\nconst b = styles.inline;\nconst bdi = styles.inline;\nconst bdo = styles.inline;\nconst blockquote = styles.block;\nconst br = null;\nconst button = [styles.inlineblock, styles.button];\nconst code = [styles.inline, styles.codePre];\nconst del = null;\nconst div = styles.block;\nconst em = styles.inline;\nconst fieldset = styles.block;\nconst footer = styles.block;\nconst form = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header = styles.block;\nconst hr = [styles.block, styles.hr];\nconst i = styles.inline;\nconst img = styles.img;\nconst input = [styles.inlineblock, styles.input];\nconst ins = null;\nconst kbd = null;\nconst label = styles.inline;\nconst li = styles.block;\nconst main = styles.block;\nconst mark = styles.inline;\nconst nav = styles.block;\nconst ol = [styles.list, styles.block];\nconst optgroup = null;\nconst option = null;\nconst p = styles.block;\nconst pre = [styles.block, styles.codePre];\nconst s = null;\nconst section = styles.block;\nconst select = styles.inlineblock;\nconst span = styles.inline;\nconst strong = [styles.inline, styles.strong];\nconst sub = styles.inline;\nconst sup = styles.inline;\nconst textarea = [styles.inlineblock, styles.textarea];\nconst u = null;\nconst ul = [styles.list, styles.block];\nconst defaultStyles = {\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n};\n\nexport { defaultStyles, merge };\n","/**\n * @license React\n * react-compiler-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nexports.c = function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n};\n","/**\n * @license React\n * react-compiler-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n var ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n exports.c = function (size) {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher.useMemoCache(size);\n };\n })();\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-compiler-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-compiler-runtime.development.js');\n}\n","import {\n createContext,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useSyncExternalStore,\n type ReactNode,\n} from 'react'\n\ninterface ActionBarEntry {\n id: string\n render: () => ReactNode\n}\n\ninterface ActionBarStore {\n subscribe: (cb: () => void) => () => void\n getSnapshot: () => readonly ActionBarEntry[]\n push: (id: string, render: () => ReactNode) => void\n update: (id: string, render: () => ReactNode) => void\n remove: (id: string) => void\n}\n\nfunction createActionBarStore(): ActionBarStore {\n let entries: ActionBarEntry[] = []\n const listeners = new Set<() => void>()\n\n const notify = () => listeners.forEach((l) => l())\n\n return {\n subscribe: (cb) => {\n listeners.add(cb)\n return () => listeners.delete(cb)\n },\n getSnapshot: () => entries,\n push: (id, render) => {\n entries = [...entries, {id, render}]\n notify()\n },\n update: (id, render) => {\n entries = entries.map((e) => (e.id === id ? {id, render} : e))\n notify()\n },\n remove: (id) => {\n entries = entries.filter((e) => e.id !== id)\n notify()\n },\n }\n}\n\nconst ActionBarContext = createContext<ActionBarStore | null>(null)\n\nexport function ActionBarProvider({children}: {children: ReactNode}) {\n const storeRef = useRef<ActionBarStore>(null)\n if (storeRef.current === null) {\n storeRef.current = createActionBarStore()\n }\n const store = storeRef.current\n\n const entries = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot)\n const topEntry = entries.length > 0 ? entries[entries.length - 1] : null\n\n return (\n <ActionBarContext.Provider value={store}>\n {children}\n {topEntry?.render()}\n </ActionBarContext.Provider>\n )\n}\n\nexport function useActionBarStack() {\n const store = useContext(ActionBarContext)\n const id = useId()\n\n const register = useCallback(\n (render: () => ReactNode) => {\n if (!store) return\n const entries = store.getSnapshot()\n if (entries.some((e) => e.id === id)) {\n store.update(id, render)\n } else {\n store.push(id, render)\n }\n },\n [store, id],\n )\n\n const unregister = useCallback(() => {\n store?.remove(id)\n }, [store, id])\n\n const isTop = useMemo(() => {\n if (!store) return false\n const entries = store.getSnapshot()\n return entries.length > 0 && entries[entries.length - 1].id === id\n }, [store, id])\n\n return {id, register, unregister, managed: store !== null, isTop}\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n overlay: {\n position: 'fixed',\n bottom: spacing.lg,\n left: '50%',\n transform: 'translateX(-50%)',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.md,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n boxShadow: shadows.lg,\n zIndex: 50,\n maxWidth: 'calc(100vw - 48px)',\n },\n overlayEmphasized: {\n backgroundColor: colors.accent,\n borderColor: colors.accent,\n },\n selectedCount: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n fontFamily: typography.fontFamily,\n color: colors.text,\n whiteSpace: 'nowrap',\n },\n selectedCountEmphasized: {\n color: colors.accentContrast,\n },\n actions: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.sm,\n },\n closeButton: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 28,\n height: 28,\n padding: 0,\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderRadius: radii.sm,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n cursor: 'pointer',\n transitionProperty: 'color, background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 2,\n },\n },\n closeButtonEmphasized: {\n color: {\n default: colors.accentContrast,\n ':hover': colors.accentContrast,\n },\n opacity: {\n default: 0.7,\n ':hover': 1,\n },\n },\n separator: {\n width: 1,\n alignSelf: 'stretch',\n backgroundColor: colors.border,\n marginTop: spacing.xs,\n marginBottom: spacing.xs,\n },\n separatorEmphasized: {\n backgroundColor: colors.accentContrast,\n opacity: 0.3,\n },\n})\n","import {useEffect, useCallback, type ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useActionBarStack} from './ActionBarProvider'\nimport {styles} from './styles.css'\n\nexport interface ActionBarProps {\n /** Number of selected items, or 'all'. Hidden when 0. */\n selectedItemCount: number | 'all'\n /** Label for the selection count. Receives the count string. */\n selectedLabel?: (count: string) => string\n /** Whether to use emphasized (accent) styling. */\n isEmphasized?: boolean\n /** Called when the clear/close button is pressed. */\n onClearSelection: () => void\n /** Whether the bar can be dismissed. When false, the close button is hidden. @default true */\n dismissible?: boolean\n /** Action buttons to display. */\n children: ReactNode\n}\n\nfunction ActionBarContent({\n selectedItemCount,\n selectedLabel,\n isEmphasized = false,\n onClearSelection,\n dismissible = true,\n children,\n}: ActionBarProps) {\n const countStr = selectedItemCount === 'all' ? 'All' : `${selectedItemCount}`\n const label = selectedLabel ? selectedLabel(countStr) : `${countStr} selected`\n\n return (\n <html.div\n role=\"toolbar\"\n aria-label={label}\n style={[styles.overlay, isEmphasized && styles.overlayEmphasized]}\n >\n <html.span style={[styles.selectedCount, isEmphasized && styles.selectedCountEmphasized]}>\n {label}\n </html.span>\n <html.div style={[styles.separator, isEmphasized && styles.separatorEmphasized]} />\n <html.div style={styles.actions}>{children}</html.div>\n {dismissible && (\n <html.button\n type=\"button\"\n aria-label=\"Clear selection\"\n onClick={onClearSelection}\n style={[styles.closeButton, isEmphasized && styles.closeButtonEmphasized]}\n >\n <svg width={10} height={10} viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M1 1l8 8M9 1l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )}\n </html.div>\n )\n}\n\nfunction ActionBarInner(props: ActionBarProps) {\n const {selectedItemCount} = props\n const stack = useActionBarStack()\n const isActive = selectedItemCount !== 0\n\n const renderBar = useCallback(() => <ActionBarContent {...props} />, [props])\n\n useEffect(() => {\n if (!stack.managed) return\n if (isActive) {\n stack.register(renderBar)\n } else {\n stack.unregister()\n }\n return () => stack.unregister()\n }, [stack, isActive, renderBar])\n\n // If no provider, fall back to standalone rendering\n if (!stack.managed) {\n if (!isActive) return null\n return <ActionBarContent {...props} />\n }\n\n // Managed by provider — rendering happens there\n return null\n}\n\nexport const ActionBar = ActionBarInner\n","import type {ReactNode} from 'react'\n\nexport type IconName =\n | 'x-circle'\n | 'check-circle'\n | 'check-done'\n | 'clock'\n | 'forbidden'\n | 'info-circle'\n | 'alert-triangle'\n | 'shield'\n | 'lock'\n | 'key'\n // Navigation / wayfinding glyphs\n | 'map'\n | 'layers'\n | 'repeat'\n | 'database'\n | 'shield-check'\n | 'route'\n | 'git-branch'\n | 'menu'\n | 'pin'\n // People / access / admin glyphs\n | 'users'\n | 'user-plus'\n | 'mail'\n | 'file-text'\n | 'plug'\n // Color-mode glyphs\n | 'sun'\n | 'moon'\n | 'monitor'\n | 'contrast'\n // Filled variants (solid shape with cutout symbol)\n | 'info-circle-filled'\n | 'alert-triangle-filled'\n | 'check-circle-filled'\n | 'x-circle-filled'\n | 'shield-filled'\n | 'lock-filled'\n\n/** Stroke-based icons (Feather/Lucide style) */\nconst strokeIcons: Partial<Record<IconName, ReactNode>> = {\n 'x-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </>\n ),\n 'check-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"16 10 11 15 8 12\" />\n </>\n ),\n 'check-done': (\n <>\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22 4 12 14.01 9 11.01\" />\n </>\n ),\n clock: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </>\n ),\n forbidden: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\" />\n </>\n ),\n 'info-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </>\n ),\n 'alert-triangle': (\n <>\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </>\n ),\n shield: <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />,\n lock: (\n <>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </>\n ),\n key: (\n <>\n <path d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.78 7.78 5.5 5.5 0 0 1 7.78-7.78zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\" />\n </>\n ),\n // ---- navigation / wayfinding ----\n map: (\n <>\n <polygon points=\"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"18\" />\n <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"22\" />\n </>\n ),\n layers: (\n <>\n <polygon points=\"12 2 2 7 12 12 22 7 12 2\" />\n <polyline points=\"2 17 12 22 22 17\" />\n <polyline points=\"2 12 12 17 22 12\" />\n </>\n ),\n // Two crossing arrows — exchange / interface flows.\n repeat: (\n <>\n <polyline points=\"17 1 21 5 17 9\" />\n <path d=\"M3 11V9a4 4 0 0 1 4-4h14\" />\n <polyline points=\"7 23 3 19 7 15\" />\n <path d=\"M21 13v2a4 4 0 0 1-4 4H3\" />\n </>\n ),\n database: (\n <>\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\" />\n <path d=\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\" />\n </>\n ),\n 'shield-check': (\n <>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <polyline points=\"9 12 11 14 15 10\" />\n </>\n ),\n // Milestone path — roadmap / itinerary.\n route: (\n <>\n <circle cx=\"6\" cy=\"19\" r=\"3\" />\n <path d=\"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15\" />\n <circle cx=\"18\" cy=\"5\" r=\"3\" />\n </>\n ),\n 'git-branch': (\n <>\n <line x1=\"6\" y1=\"3\" x2=\"6\" y2=\"15\" />\n <circle cx=\"18\" cy=\"6\" r=\"3\" />\n <circle cx=\"6\" cy=\"18\" r=\"3\" />\n <path d=\"M18 9a9 9 0 0 1-9 9\" />\n </>\n ),\n menu: (\n <>\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </>\n ),\n // ---- people / access / admin ----\n users: (\n <>\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\" />\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" />\n </>\n ),\n 'user-plus': (\n <>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\n <circle cx=\"8.5\" cy=\"7\" r=\"4\" />\n <line x1=\"20\" y1=\"8\" x2=\"20\" y2=\"14\" />\n <line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\" />\n </>\n ),\n mail: (\n <>\n <path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\" />\n <polyline points=\"22,6 12,13 2,6\" />\n </>\n ),\n 'file-text': (\n <>\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\n <polyline points=\"10 9 9 9 8 9\" />\n </>\n ),\n plug: (\n <>\n <path d=\"M12 22v-5\" />\n <path d=\"M9 8V2\" />\n <path d=\"M15 8V2\" />\n <path d=\"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z\" />\n </>\n ),\n pin: (\n <>\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"22\" />\n <path d=\"M9 10.76V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v6.76a2 2 0 0 0 .55 1.38l1.68 1.78A1 1 0 0 1 16.5 16h-9a1 1 0 0 1-.73-1.68l1.68-1.78A2 2 0 0 0 9 10.76z\" />\n </>\n ),\n // ---- color mode ----\n sun: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"5\" />\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" />\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" />\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" />\n <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" />\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" />\n <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" />\n <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\n </>\n ),\n moon: <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />,\n monitor: (\n <>\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\" />\n <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\" />\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\" />\n </>\n ),\n // Circle, half solid — high-contrast / mode indicator.\n contrast: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 2a10 10 0 0 1 0 20z\" fill=\"currentColor\" stroke=\"none\" />\n </>\n ),\n}\n\n/**\n * Filled icons — solid shape with evenodd cutout for the inner symbol.\n * The cutout reveals the background color, so they work on any theme.\n * Uses fill=\"currentColor\" only, no stroke.\n */\nconst filledIcons: Partial<Record<IconName, ReactNode>> = {\n // Filled circle with \"i\" cutout (dot + line)\n 'info-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-.75 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0zM11 11a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0v-5z\"\n />\n ),\n // Filled triangle with \"!\" cutout\n 'alert-triangle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM11 10a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0v-3zm.25 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0z\"\n />\n ),\n // Filled circle with checkmark cutout\n 'check-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm4.707 8.707a1 1 0 0 0-1.414-1.414L11 13.586l-2.293-2.293a1 1 0 0 0-1.414 1.414l3 3a1 1 0 0 0 1.414 0l5-5z\"\n />\n ),\n // Filled circle with X cutout\n 'x-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zM9.707 8.293a1 1 0 0 0-1.414 1.414L10.586 12l-2.293 2.293a1 1 0 1 0 1.414 1.414L12 13.414l2.293 2.293a1 1 0 0 0 1.414-1.414L13.414 12l2.293-2.293a1 1 0 0 0-1.414-1.414L12 10.586 9.707 8.293z\"\n />\n ),\n // Filled shield with checkmark cutout\n 'shield-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 1L3 5v7c0 6.5 8.5 10.5 9 10.73.5-.23 9-4.23 9-10.73V5l-9-4zm3.707 8.707a1 1 0 0 0-1.414-1.414L11 11.586l-1.293-1.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4z\"\n />\n ),\n // Filled lock body with stroke shackle\n 'lock-filled': (\n <>\n <path\n d=\"M7 11V7a5 5 0 0 1 10 0v4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n </>\n ),\n}\n\ninterface IconProps {\n name: IconName\n size?: number\n}\n\nexport function Icon({name, size = 24}: IconProps) {\n const filled = filledIcons[name]\n if (filled) {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" width={size} height={size}>\n {filled}\n </svg>\n )\n }\n\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width={size}\n height={size}\n >\n {strokeIcons[name]}\n </svg>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n },\n iconWrap: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: 1,\n },\n content: {\n flex: 1,\n minWidth: 0,\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type AlertVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<AlertVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface AlertProps {\n variant?: AlertVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n children: ReactNode\n}\n\nfunction resolveIcon(icon: AlertProps['icon'], variant: AlertVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={18} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={18} />\n return icon\n}\n\nexport function Alert({variant = 'info', icon, children}: AlertProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div role=\"alert\" style={[styles.base, styles[variant]]}>\n {resolvedIcon ? (\n <>\n <html.div style={styles.iconWrap}>{resolvedIcon}</html.div>\n <html.div style={styles.content}>{children}</html.div>\n </>\n ) : (\n children\n )}\n </html.div>\n )\n}\n","/**\n * Platform flag resolved by the bundler's platform extensions: web bundlers\n * (Vite/Rollup) read THIS file (`isNative = false`); Metro reads\n * `platform.native.ts` (`isNative = true`) on React Native / Expo.\n *\n * It lets shared components layer a native-only style override without\n * importing `react-native` on web (the DS web build has no react-native).\n * Typed `boolean` (not the `false` literal) so `isNative && styles.x` stays a\n * `false | Style` union in style arrays rather than narrowing to `false`.\n */\nexport const isNative: boolean = false\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightMedium,\n lineHeight: 1,\n borderRadius: radii.full,\n whiteSpace: 'nowrap',\n },\n sizeMd: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n sizeSm: {\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n fontSize: '0.625rem',\n },\n default: {\n backgroundColor: colors.bgCardHover,\n color: colors.textMuted,\n },\n success: {\n backgroundColor: colors.successBg,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n color: colors.warningText,\n },\n error: {\n backgroundColor: colors.errorBg,\n color: colors.errorText,\n },\n info: {\n backgroundColor: colors.infoBg,\n color: colors.infoText,\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {styles} from './styles.css'\n\nexport type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type BadgeSize = 'sm' | 'md'\n\ninterface BadgeProps {\n variant?: BadgeVariant\n size?: BadgeSize\n children: ReactNode\n}\n\nconst sizeMap = {\n sm: styles.sizeSm,\n md: styles.sizeMd,\n} as const\n\nexport function Badge({variant = 'default', size = 'md', children}: BadgeProps) {\n return (\n <html.span style={[styles.base, isNative && styles.nativeFlex, sizeMap[size], styles[variant]]}>\n {children}\n </html.span>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, color, opacity, transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n textDecoration: 'none',\n whiteSpace: 'nowrap',\n // Tactile press feedback. The scale is suppressed under reduced motion (and\n // duration.fast collapses to 0ms there too), so it's inert for those users.\n transform: {\n default: 'scale(1)',\n ':active': {\n default: 'scale(0.97)',\n '@media (prefers-reduced-motion: reduce)': 'scale(1)',\n },\n },\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 2,\n },\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n ':active': colors.accentHover,\n },\n borderColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderColor: colors.border,\n color: colors.textMuted,\n },\n link: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n color: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n textDecoration: {\n default: 'none',\n ':hover': 'underline',\n },\n paddingLeft: 0,\n paddingRight: 0,\n },\n inverseSecondary: {\n backgroundColor: {\n default: 'rgba(0, 0, 0, 0.10)',\n ':hover': 'rgba(0, 0, 0, 0.18)',\n },\n borderColor: {\n default: 'rgba(0, 0, 0, 0.55)',\n ':hover': 'rgba(0, 0, 0, 0.70)',\n },\n color: colors.accentContrast,\n },\n danger: {\n backgroundColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n ':active': colors.errorHover,\n },\n borderColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n },\n color: colors.errorContrast,\n },\n fullWidth: {\n width: '100%',\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {styles} from './styles.css'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'inverseSecondary' | 'link' | 'danger'\nexport type ButtonSize = 'default' | 'small'\n\ninterface ButtonProps {\n variant?: ButtonVariant\n size?: ButtonSize\n fullWidth?: boolean\n disabled?: boolean\n type?: 'button' | 'submit'\n onClick?: () => void\n /** Accessible name override — e.g. for buttons whose visible text isn't unique. */\n 'aria-label'?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function Button({\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n disabled = false,\n type = 'button',\n onClick,\n 'aria-label': ariaLabel,\n children,\n}: ButtonProps) {\n return (\n <html.button\n type={type}\n disabled={disabled}\n onClick={onClick}\n aria-label={ariaLabel}\n style={[\n styles.base,\n isNative && styles.nativeFlex,\n sizeMap[size],\n styles[variant],\n fullWidth && styles.fullWidth,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n },\n horizontal: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n vertical: {\n flexDirection: 'column',\n },\n alignStart: {justifyContent: 'flex-start'},\n alignCenter: {justifyContent: 'center'},\n alignEnd: {justifyContent: 'flex-end'},\n verticalAlignStart: {alignItems: 'flex-start'},\n verticalAlignCenter: {alignItems: 'center'},\n verticalAlignEnd: {alignItems: 'flex-end'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMd: {gap: spacing.md},\n disabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport interface ButtonGroupProps {\n children: ReactNode\n /** Layout direction. Default: 'horizontal' */\n orientation?: 'horizontal' | 'vertical'\n /** Alignment within container. Default: 'start' */\n align?: 'start' | 'end' | 'center'\n /** Disable all buttons in group */\n disabled?: boolean\n /** Gap between buttons. Default: 'sm' */\n gap?: 'xs' | 'sm' | 'md'\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n md: styles.gapMd,\n} as const\n\nconst horizontalAlignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nconst verticalAlignMap = {\n start: styles.verticalAlignStart,\n center: styles.verticalAlignCenter,\n end: styles.verticalAlignEnd,\n} as const\n\nexport function ButtonGroup({\n children,\n orientation = 'horizontal',\n align = 'start',\n disabled = false,\n gap = 'sm',\n}: ButtonGroupProps) {\n const isVertical = orientation === 'vertical'\n const alignStyle = isVertical ? verticalAlignMap[align] : horizontalAlignMap[align]\n\n return (\n <html.div\n role=\"group\"\n style={[\n styles.base,\n isVertical ? styles.vertical : styles.horizontal,\n gapMap[gap],\n alignStyle,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n },\n // Vertically centres the icon with the message — the right default for the\n // short, single/two-line messages callouts usually carry.\n alignCenter: {\n alignItems: 'center',\n },\n // Aligns the icon to the first line — for long, multi-paragraph messages.\n alignStart: {\n alignItems: 'flex-start',\n },\n icon: {\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n content: {\n flexGrow: 1,\n minWidth: 0,\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type CalloutVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<CalloutVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface CalloutProps {\n variant?: CalloutVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n /**\n * Vertical alignment of the icon against the message. `center` (default)\n * suits short single/two-line messages; `start` aligns the icon to the first\n * line for long multi-paragraph content.\n */\n align?: 'center' | 'start'\n children: ReactNode\n}\n\nfunction resolveIcon(icon: CalloutProps['icon'], variant: CalloutVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={36} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={36} />\n return icon\n}\n\nexport function Callout({variant = 'info', icon, align = 'center', children}: CalloutProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div\n role=\"note\"\n style={[\n styles.base,\n styles[variant],\n align === 'center' ? styles.alignCenter : styles.alignStart,\n ]}\n >\n {resolvedIcon && <html.span style={styles.icon}>{resolvedIcon}</html.span>}\n <html.div style={styles.content}>{children}</html.div>\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n },\n // Variants\n elevated: {\n borderRadius: radii.lg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n },\n outlined: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n filled: {\n borderRadius: radii.md,\n },\n interactive: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n backgroundColor: {\n default: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n // Lift on hover; suppressed under reduced motion so there's no positional\n // shift (the token duration also collapses to 0ms there).\n transform: {\n default: 'translateY(0)',\n ':hover': {\n default: 'translateY(-2px)',\n '@media (prefers-reduced-motion: reduce)': 'translateY(0)',\n },\n },\n },\n // Sizes (padding)\n sizeDefault: {\n padding: spacing.lg,\n },\n sizeCompact: {\n padding: spacing.md,\n },\n sizeFull: {\n padding: spacing.xl,\n },\n // Header\n header: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n marginBottom: spacing.md,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type CardVariant = 'elevated' | 'outlined' | 'filled' | 'interactive'\nexport type CardSize = 'default' | 'compact' | 'full'\n\ninterface CardProps {\n variant?: CardVariant\n size?: CardSize\n header?: string\n onClick?: () => void\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n compact: styles.sizeCompact,\n full: styles.sizeFull,\n} as const\n\nexport function Card({\n variant = 'outlined',\n size = 'default',\n header,\n onClick,\n children,\n}: CardProps) {\n return (\n <html.div onClick={onClick} style={[styles.base, styles[variant], sizeMap[size]]}>\n {header && <html.div style={styles.header}>{header}</html.div>}\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n rootDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n box: {\n width: 18,\n height: 18,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.xs,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n transitionProperty: 'background-color, border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n boxUnchecked: {\n backgroundColor: colors.bg,\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n boxChecked: {\n backgroundColor: colors.accent,\n borderColor: colors.accent,\n },\n // Native-only checkmark: a small box showing just its right + bottom border,\n // rotated 45° into a tick. Pure CSS (RSD translates the transform string to\n // an RN transform), so no SVG / react-native-svg weight reaches web.\n checkmark: {\n width: 5,\n height: 9,\n borderRightWidth: 2,\n borderRightStyle: 'solid',\n borderRightColor: colors.accentContrast,\n borderBottomWidth: 2,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.accentContrast,\n transform: 'rotate(45deg)',\n marginTop: -2,\n },\n checkmarkVisible: {\n opacity: 1,\n },\n checkmarkHidden: {\n opacity: 0,\n },\n // Native label text — RN <Text> doesn't inherit color/size from the button\n // ancestor the way web inherits from <label>, so set it explicitly.\n labelText: {\n fontSize: typography.fontSizeSm,\n color: colors.text,\n },\n // Strip the default button chrome RSD gives <button> on native (border/bg/\n // padding mimic the browser default) so the row matches the web checkbox.\n nativeButton: {\n borderWidth: 0,\n backgroundColor: 'transparent',\n padding: 0,\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` (on both .root and .box); web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import {type ReactNode, useState, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {styles} from './styles.css'\n\ninterface CheckboxProps {\n name?: string\n value?: string\n checked?: boolean\n defaultChecked?: boolean\n disabled?: boolean\n /** Accessible label when no visible label (children) is provided. */\n 'aria-label'?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n children?: ReactNode\n}\n\nexport function Checkbox({\n name,\n value,\n checked: controlledChecked,\n defaultChecked = false,\n disabled = false,\n 'aria-label': ariaLabel,\n onChange,\n children,\n}: CheckboxProps) {\n const isControlled = controlledChecked !== undefined\n const [internalChecked, setInternalChecked] = useState(defaultChecked)\n const isChecked = isControlled ? controlledChecked : internalChecked\n\n // Web: the real <input type=checkbox> drives toggling, a11y and form submit.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(e.target.checked)\n }\n onChange?.(e)\n },\n [isControlled, onChange],\n )\n\n // Native: RSD only makes <button> pressable and has no <input type=checkbox>,\n // so the whole row is a button and we synthesize the change payload that\n // consumers read (e.target.checked).\n const handlePress = useCallback(() => {\n if (disabled) return\n const next = !isChecked\n if (!isControlled) {\n setInternalChecked(next)\n }\n onChange?.({\n target: {checked: next, name, value},\n } as unknown as React.ChangeEvent<HTMLInputElement>)\n }, [disabled, isChecked, isControlled, onChange, name, value])\n\n if (isNative) {\n return (\n <html.button\n type=\"button\"\n onClick={handlePress}\n disabled={disabled}\n role=\"checkbox\"\n aria-checked={isChecked}\n aria-label={!children ? ariaLabel : undefined}\n style={[\n styles.root,\n styles.nativeFlex,\n styles.nativeButton,\n disabled && styles.rootDisabled,\n ]}\n >\n <html.div\n style={[\n styles.box,\n styles.nativeFlex,\n isChecked ? styles.boxChecked : styles.boxUnchecked,\n ]}\n >\n {/* CSS-border checkmark (rotated right+bottom borders) — no SVG, no\n react-native-svg dep, so nothing is added to the web bundle. */}\n <html.div\n style={[styles.checkmark, isChecked ? styles.checkmarkVisible : styles.checkmarkHidden]}\n />\n </html.div>\n {children && <html.span style={styles.labelText}>{children}</html.span>}\n </html.button>\n )\n }\n\n return (\n <html.label style={[styles.root, disabled && styles.rootDisabled]}>\n <html.input\n type=\"checkbox\"\n name={name}\n value={value}\n checked={isControlled ? controlledChecked : undefined}\n defaultChecked={!isControlled ? defaultChecked : undefined}\n disabled={disabled}\n aria-label={!children ? ariaLabel : undefined}\n onChange={handleChange}\n style={styles.input}\n />\n <html.span\n style={[styles.box, isChecked ? styles.boxChecked : styles.boxUnchecked]}\n aria-hidden\n >\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n style={{opacity: isChecked ? 1 : 0}}\n >\n <polyline\n points=\"2.5 6 5 8.5 9.5 3.5\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {useState, useCallback} from 'react'\n\nexport function useControllableValue<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void,\n) {\n const [internal, setInternal] = useState(defaultValue)\n const value = controlledValue !== undefined ? controlledValue : internal\n const setValue = useCallback(\n (v: T) => {\n if (controlledValue === undefined) setInternal(v)\n onChange?.(v)\n },\n [controlledValue, onChange],\n )\n return [value, setValue] as const\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n rootHorizontal: {\n flexDirection: 'row',\n },\n})\n","import {type ReactNode, createContext, useContext, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {Checkbox} from '../Checkbox/Checkbox'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ninterface CheckboxGroupContextValue {\n value: string[]\n onToggle: (itemValue: string, checked: boolean) => void\n disabled: boolean\n}\n\nconst CheckboxGroupContext = createContext<CheckboxGroupContextValue | null>(null)\n\nfunction useCheckboxGroup() {\n const ctx = useContext(CheckboxGroupContext)\n if (!ctx) {\n throw new Error('CheckboxGroup.Item must be used within CheckboxGroup.Root')\n }\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n value?: string[]\n defaultValue?: string[]\n onValueChange?: (value: string[]) => void\n orientation?: 'horizontal' | 'vertical'\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Root({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n orientation = 'vertical',\n disabled = false,\n children,\n}: RootProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const onToggle = useCallback(\n (itemValue: string, checked: boolean) => {\n if (disabled) return\n const next = checked ? [...value, itemValue] : value.filter((v) => v !== itemValue)\n setValue(next)\n },\n [disabled, value, setValue],\n )\n\n return (\n <CheckboxGroupContext.Provider value={{value, onToggle, disabled}}>\n <html.div\n role=\"group\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'horizontal' && styles.rootHorizontal]}\n >\n {children}\n </html.div>\n </CheckboxGroupContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Item({value, disabled: itemDisabled = false, children}: ItemProps) {\n const {value: groupValue, onToggle, disabled: groupDisabled} = useCheckboxGroup()\n const isChecked = groupValue.includes(value)\n const isDisabled = groupDisabled || itemDisabled\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onToggle(value, e.target.checked)\n },\n [value, onToggle],\n )\n\n return (\n <Checkbox value={value} checked={isChecked} disabled={isDisabled} onChange={handleChange}>\n {children}\n </Checkbox>\n )\n}\n\nexport const CheckboxGroup = {\n Root,\n Item,\n}\n","import {createContext, useContext} from 'react'\nimport type {LabelPosition, NecessityIndicator} from '../Form/FormContext'\n\ninterface FieldContextValue {\n controlId: string\n descriptionId: string\n errorId: string\n invalid: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n necessityIndicator?: NecessityIndicator\n field?: {\n value: unknown\n onChange: (...event: unknown[]) => void\n onBlur: () => void\n ref: React.RefCallback<unknown>\n name: string\n }\n errorMessage?: string\n}\n\nexport type {FieldContextValue}\n\nexport const FieldContext = createContext<FieldContextValue | null>(null)\n\nexport function useFieldContext() {\n return useContext(FieldContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n width: 44,\n height: 34,\n padding: 2,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.sm,\n cursor: 'pointer',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: 1,\n },\n invalid: {\n borderColor: colors.error,\n },\n disabled: {\n cursor: 'not-allowed',\n opacity: 0.5,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {styles} from './styles.css'\n\ninterface ColorInputProps {\n /** Hex color, controlled (e.g. \"#cfc8ba\"). */\n value?: string\n defaultValue?: string\n name?: string\n /** Explicit id — overrides the Field-context controlId when set. */\n id?: string\n disabled?: boolean\n required?: boolean\n /** Accessible name when there is no associated <Field.Label>. */\n 'aria-label'?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLInputElement>\n}\n\n/**\n * A styled native `<input type=\"color\">` swatch. Mirrors <Input>'s native\n * surface (value/defaultValue/name/onChange/ref/disabled/required) and adopts\n * the parent <Field.Root> context (controlId for label association, value/\n * onChange when bound to a Form, invalid border, disabled) — so it drops into a\n * <Field> exactly like <Input>. The text <Input> can't render type=color, hence\n * a dedicated leaf.\n */\nexport function ColorInput({\n value,\n defaultValue,\n name,\n id,\n disabled,\n required,\n 'aria-label': ariaLabel,\n onChange,\n onBlur,\n ref,\n}: ColorInputProps) {\n const ctx = useFieldContext()\n const fieldCtx = ctx?.field\n\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveDisabled = disabled ?? ctx?.disabled\n\n return (\n <html.input\n type=\"color\"\n id={id ?? ctx?.controlId}\n name={effectiveName}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={effectiveDisabled}\n required={required}\n aria-label={ariaLabel}\n aria-invalid={ctx?.invalid || undefined}\n aria-describedby={\n ctx\n ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() || undefined\n : undefined\n }\n onChange={effectiveOnChange as React.ComponentProps<typeof html.input>['onChange']}\n onBlur={effectiveOnBlur as React.ComponentProps<typeof html.input>['onBlur']}\n ref={effectiveRef as React.Ref<HTMLInputElement>}\n style={[styles.base, ctx?.invalid && styles.invalid, effectiveDisabled && styles.disabled]}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n // --- Backdrop ---\n backdrop: {\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n zIndex: 1000,\n },\n backdropOpen: {\n opacity: 1,\n animationName: css.keyframes({\n from: {opacity: 0},\n to: {opacity: 1},\n }),\n animationDuration: '180ms',\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n backdropClosing: {\n opacity: 0,\n animationName: css.keyframes({\n from: {opacity: 1},\n to: {opacity: 0},\n }),\n animationDuration: '140ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Viewport (centering container) ---\n viewport: {\n position: 'fixed',\n inset: 0,\n zIndex: 1001,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: spacing.lg,\n // Allow clicking backdrop through viewport when clicking outside popup\n pointerEvents: 'none',\n },\n\n // --- Popup ---\n popup: {\n position: 'relative',\n backgroundColor: colors.bgCard,\n borderRadius: radii.lg,\n boxShadow: shadows.lg,\n width: '100%',\n maxHeight: '85vh',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n pointerEvents: 'auto',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n popupOpen: {\n opacity: 1,\n animationName: css.keyframes({\n from: {\n opacity: 0,\n transform: 'scale(0.97) translateY(8px)',\n },\n to: {\n opacity: 1,\n transform: 'scale(1) translateY(0)',\n },\n }),\n animationDuration: '180ms',\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n popupClosing: {\n opacity: 0,\n animationName: css.keyframes({\n from: {\n opacity: 1,\n transform: 'scale(1) translateY(0)',\n },\n to: {\n opacity: 0,\n transform: 'scale(0.97) translateY(8px)',\n },\n }),\n animationDuration: '140ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Sizes ---\n sm: {maxWidth: 400},\n md: {maxWidth: 520},\n lg: {maxWidth: 680},\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n gap: spacing.md,\n },\n\n // --- Title ---\n title: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n },\n\n // --- Description ---\n description: {\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n },\n\n // --- Body ---\n body: {\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n overflowY: 'auto',\n flex: 1,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: radii.sm,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n\n // --- Inline wrapper (for Trigger / Close children) ---\n inlineWrapper: {\n display: 'inline-flex',\n },\n\n // --- Reduced motion ---\n reducedMotion: {\n animationDuration: '1ms',\n },\n})\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type DialogSize = 'sm' | 'md' | 'lg'\n\n// --- Context ---\n\ninterface DialogContextValue {\n open: boolean\n closing: boolean\n dismissable: boolean\n requestOpen: () => void\n requestClose: () => void\n titleId: string\n descriptionId: string\n popupRef: RefObject<HTMLDivElement | null>\n}\n\nconst DialogContext = createContext<DialogContextValue | null>(null)\n\nfunction useDialog() {\n const ctx = useContext(DialogContext)\n if (!ctx) throw new Error('Dialog compound components must be used within Dialog.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when dialog open state changes */\n onOpenChange?: (open: boolean) => void\n /** Whether clicking backdrop closes the dialog. Default: true */\n dismissable?: boolean\n /** Duration of the close animation in ms. Default: 140 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n dismissable = true,\n closeAnimationDuration = 140,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const popupRef = useRef<HTMLDivElement>(null)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const titleId = useId()\n const descriptionId = useId()\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n closingTimerRef.current = null\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, closeAnimationDuration)\n }, [isControlled, onOpenChange, closeAnimationDuration])\n\n // If controlled open goes false externally, trigger close animation\n useEffect(() => {\n if (isControlled && !controlledOpen && !closing) {\n // Already closed, nothing to animate\n }\n }, [isControlled, controlledOpen, closing])\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n // Handle Escape key\n useEffect(() => {\n if (!isOpen && !closing) return\n if (!dismissable) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [isOpen, closing, dismissable, requestClose])\n\n // Lock body scroll when open\n useEffect(() => {\n if (isOpen || closing) {\n const prev = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = prev\n }\n }\n }, [isOpen, closing])\n\n return (\n <DialogContext.Provider\n value={{\n open: isOpen || closing,\n closing,\n dismissable,\n requestOpen,\n requestClose,\n titleId,\n descriptionId,\n popupRef,\n }}\n >\n {children}\n </DialogContext.Provider>\n )\n}\n\n// --- Trigger ---\n\ninterface TriggerProps {\n children: ReactNode\n}\n\nfunction Trigger({children}: TriggerProps) {\n const {requestOpen} = useDialog()\n\n return (\n <html.div onClick={requestOpen} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n}\n\n// --- Portal (renders backdrop + viewport + popup) ---\n\ninterface PortalProps {\n children: ReactNode\n size?: DialogSize\n}\n\nfunction Portal({children, size = 'md'}: PortalProps) {\n const {open, closing, dismissable, requestClose, titleId, descriptionId, popupRef} = useDialog()\n\n const handleBackdropClick = useCallback(() => {\n if (dismissable) {\n requestClose()\n }\n }, [dismissable, requestClose])\n\n if (!open) return null\n\n return (\n <>\n {/* Backdrop — click to dismiss */}\n <html.div\n style={[\n styles.backdrop,\n closing && styles.backdropClosing,\n !closing && styles.backdropOpen,\n ]}\n aria-hidden\n onClick={handleBackdropClick}\n />\n\n {/* Viewport (centering container, pointer-events: none) */}\n <html.div style={styles.viewport}>\n <html.div\n ref={popupRef}\n role=\"dialog\"\n aria-modal={true}\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n style={[\n styles.popup,\n styles[size],\n closing && styles.popupClosing,\n !closing && styles.popupOpen,\n ]}\n >\n {children}\n </html.div>\n </html.div>\n </>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId} = useDialog()\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Description ---\n\nfunction Description({children}: {children: ReactNode}) {\n const {descriptionId} = useDialog()\n return (\n <html.p id={descriptionId} style={styles.description}>\n {children}\n </html.p>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n return <html.div style={styles.body}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDialog()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const Dialog = {\n Root,\n Trigger,\n Portal,\n Header,\n Title,\n Description,\n Body,\n Footer,\n Close,\n}\n","import {createContext, useContext} from 'react'\n\ninterface InputGroupContextValue {\n inGroup: boolean\n}\n\nexport const InputGroupContext = createContext<InputGroupContextValue | null>(null)\n\nexport function useInputGroupContext() {\n return useContext(InputGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n inGroup: {\n borderWidth: 0,\n borderRadius: 0,\n outlineWidth: 0,\n },\n // orthogonal to variant (default/error) — composes on top so a mono field\n // still shows its error border. For slugs, identifiers, hashes.\n mono: {\n fontFamily: typography.fontFamilyMono,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {useInputGroupContext} from '../InputGroup/InputGroupContext'\nimport {styles} from './styles.css'\n\ntype StrictInputProps = React.ComponentProps<typeof html.input>\nexport type InputType = NonNullable<StrictInputProps['type']>\n\nexport type InputVariant = 'default' | 'error'\n\ninterface InputProps {\n variant?: InputVariant\n /** Orthogonal to variant — `mono` keeps the error border but uses the\n * monospace family (slugs, identifiers, hashes). */\n font?: 'mono'\n type?: InputType\n /** Explicit id — overrides the Field-context controlId when set (e.g. a\n * control used outside a Field that still needs a stable id). */\n id?: string\n name?: string\n placeholder?: string\n required?: boolean\n readOnly?: boolean\n minLength?: number\n maxLength?: number\n /** Numeric/range hints — forwarded to the native input (date/number/etc). */\n min?: string | number\n max?: string | number\n step?: string | number\n inputMode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'\n /** id of a <datalist> for native typeahead. */\n list?: string\n pattern?: string\n autoComplete?:\n | 'on'\n | 'off'\n | 'email'\n | 'username'\n | 'current-password'\n | 'new-password'\n | 'name'\n | 'tel'\n | 'url'\n value?: string\n defaultValue?: string\n disabled?: boolean\n autoFocus?: boolean\n /** Accessible name when there's no associated <Field.Label>. */\n 'aria-label'?: string\n /** Extra describedby ids (merged with the Field context's, if any). */\n 'aria-describedby'?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLInputElement>\n}\n\nexport function Input({\n variant = 'default',\n font,\n type = 'text',\n id,\n name,\n placeholder,\n required,\n readOnly,\n minLength,\n maxLength,\n min,\n max,\n step,\n inputMode,\n list,\n pattern,\n autoComplete,\n value,\n defaultValue,\n disabled,\n autoFocus,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedby,\n onChange,\n onBlur,\n ref,\n}: InputProps) {\n const ctx = useFieldContext()\n const groupCtx = useInputGroupContext()\n\n const fieldCtx = ctx?.field\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveDisabled = disabled ?? ctx?.disabled\n const effectiveVariant = ctx?.invalid ? 'error' : variant\n // Field context owns describedby (description + error); fall back to the\n // explicit prop only when standalone.\n const describedBy = ctx\n ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim()\n : ariaDescribedby\n\n // react-strict-dom omits some web-only props from its types, but the\n // underlying DOM element supports them. Type-assert to pass them through.\n const extraProps: Record<string, unknown> = {}\n if (pattern !== undefined) extraProps.pattern = pattern\n if (autoFocus) extraProps.autoFocus = true\n if (readOnly) extraProps.readOnly = true\n if (maxLength !== undefined) extraProps.maxLength = maxLength\n if (min !== undefined) extraProps.min = min\n if (max !== undefined) extraProps.max = max\n if (step !== undefined) extraProps.step = step\n if (inputMode !== undefined) extraProps.inputMode = inputMode\n if (list !== undefined) extraProps.list = list\n if (ariaLabel !== undefined) extraProps['aria-label'] = ariaLabel\n\n return (\n <html.input\n id={id ?? ctx?.controlId}\n type={type}\n name={effectiveName}\n placeholder={placeholder}\n required={required}\n minLength={minLength}\n autoComplete={autoComplete}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={effectiveDisabled}\n aria-describedby={describedBy || undefined}\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={effectiveOnChange as StrictInputProps['onChange']}\n onBlur={effectiveOnBlur as StrictInputProps['onBlur']}\n ref={effectiveRef as React.Ref<HTMLInputElement>}\n style={[\n styles.base,\n styles[effectiveVariant],\n font === 'mono' && styles.mono,\n groupCtx?.inGroup && styles.inGroup,\n ]}\n {...extraProps}\n />\n )\n}\n","import {createContext, useContext} from 'react'\n\nexport type LabelPosition = 'top' | 'side'\nexport type NecessityIndicator = 'icon' | 'label' | false\n\nexport interface FormContextValue {\n disabled: boolean\n labelPosition: LabelPosition\n necessityIndicator: NecessityIndicator\n}\n\nexport const FormContext = createContext<FormContextValue | null>(null)\n\nexport function useFormContext() {\n return useContext(FormContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n },\n rootSide: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.md,\n },\n label: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: colors.text,\n },\n labelSide: {\n minWidth: 120,\n paddingTop: spacing.sm,\n flexShrink: 0,\n },\n description: {\n fontSize: typography.fontSizeXs,\n color: colors.textMuted,\n },\n error: {\n fontSize: typography.fontSizeXs,\n color: colors.errorText,\n },\n fieldContent: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n flex: 1,\n minWidth: 0,\n },\n necessityIcon: {\n color: colors.error,\n },\n necessityLabel: {\n color: colors.textMuted,\n fontWeight: typography.fontWeightNormal,\n fontSize: typography.fontSizeXs,\n },\n})\n","import {type ReactNode, Children, isValidElement, useId, useMemo} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useFormContext as useRHFFormContext, useController} from 'react-hook-form'\nimport {FieldContext, useFieldContext} from './FieldContext'\nimport {useFormContext} from '../Form/FormContext'\nimport type {LabelPosition, NecessityIndicator} from '../Form/FormContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n invalid?: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n children: ReactNode\n}\n\nfunction Root({name, ...props}: RootProps) {\n const formCtx = useFormContext()\n if (name && formCtx) {\n return <ControlledRoot name={name} formCtx={formCtx} {...props} />\n }\n return <StaticRoot {...props} />\n}\n\n// Always calls useController — no conditional hooks\nfunction ControlledRoot({\n name,\n formCtx,\n invalid: invalidProp = false,\n required,\n disabled,\n labelPosition,\n children,\n}: {\n name: string\n formCtx: NonNullable<ReturnType<typeof useFormContext>>\n invalid?: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n children: ReactNode\n}) {\n const id = useId()\n const {control} = useRHFFormContext()\n const {field, fieldState} = useController({control, name})\n const invalid = invalidProp || !!fieldState.error\n\n const effectiveDisabled = disabled ?? formCtx.disabled\n const effectiveLabelPosition = labelPosition ?? formCtx.labelPosition\n const effectiveNecessityIndicator = formCtx.necessityIndicator\n\n const ctx = useMemo(\n () => ({\n controlId: `${id}-control`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n invalid,\n required,\n disabled: effectiveDisabled,\n labelPosition: effectiveLabelPosition,\n necessityIndicator: effectiveNecessityIndicator,\n field: {\n value: field.value,\n onChange: field.onChange,\n onBlur: field.onBlur,\n ref: field.ref,\n name: field.name,\n },\n errorMessage: fieldState.error?.message,\n }),\n [\n id,\n invalid,\n required,\n effectiveDisabled,\n effectiveLabelPosition,\n effectiveNecessityIndicator,\n field.value,\n field.onChange,\n field.onBlur,\n field.ref,\n field.name,\n fieldState.error,\n ],\n )\n\n return (\n <FieldContext.Provider value={ctx}>\n <FieldLayout labelPosition={effectiveLabelPosition}>{children}</FieldLayout>\n </FieldContext.Provider>\n )\n}\n\n// Current behavior, no RHF dependency\nfunction StaticRoot({\n invalid = false,\n required,\n disabled,\n labelPosition = 'top',\n children,\n}: {\n invalid?: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n children: ReactNode\n}) {\n const id = useId()\n const ctx = useMemo(\n () => ({\n controlId: `${id}-control`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n invalid,\n required,\n disabled,\n labelPosition,\n }),\n [id, invalid, required, disabled, labelPosition],\n )\n\n return (\n <FieldContext.Provider value={ctx}>\n <FieldLayout labelPosition={labelPosition}>{children}</FieldLayout>\n </FieldContext.Provider>\n )\n}\n\n// --- FieldLayout ---\n// When labelPosition is 'side', separates Label from other children\n// and wraps the non-label children in a content column.\nfunction FieldLayout({\n labelPosition,\n children,\n}: {\n labelPosition: LabelPosition\n children: ReactNode\n}) {\n if (labelPosition !== 'side') {\n return <html.div style={styles.root}>{children}</html.div>\n }\n\n let labelNode: ReactNode = null\n const rest: ReactNode[] = []\n\n Children.forEach(children, (child) => {\n if (isValidElement(child) && child.type === Label && !labelNode) {\n labelNode = child\n } else {\n rest.push(child)\n }\n })\n\n return (\n <html.div style={styles.rootSide}>\n {labelNode}\n <html.div style={styles.fieldContent}>{rest}</html.div>\n </html.div>\n )\n}\n\n// --- Label ---\ninterface LabelProps {\n children: ReactNode\n}\n\nfunction Label({children}: LabelProps) {\n const ctx = useFieldContext()\n const isSide = ctx?.labelPosition === 'side'\n const indicator = ctx?.necessityIndicator\n\n return (\n <html.label for={ctx?.controlId} style={[styles.label, isSide && styles.labelSide]}>\n {children}\n {indicator === 'icon' && ctx?.required && (\n <html.span style={styles.necessityIcon} aria-hidden={true}>\n {' *'}\n </html.span>\n )}\n {indicator === 'label' && (\n <html.span style={styles.necessityLabel}>\n {ctx?.required ? ' (required)' : ' (optional)'}\n </html.span>\n )}\n </html.label>\n )\n}\n\n// --- Description ---\ninterface DescriptionProps {\n children: ReactNode\n}\n\nfunction Description({children}: DescriptionProps) {\n const ctx = useFieldContext()\n return (\n <html.span id={ctx?.descriptionId} style={styles.description}>\n {children}\n </html.span>\n )\n}\n\n// --- Error ---\ninterface ErrorProps {\n children?: ReactNode\n}\n\nfunction Error({children}: ErrorProps) {\n const ctx = useFieldContext()\n const content = children ?? ctx?.errorMessage\n if (!ctx?.invalid && !content) return null\n\n return (\n <html.span id={ctx?.errorId} role=\"alert\" style={styles.error}>\n {content}\n </html.span>\n )\n}\n\nexport const Field = {\n Root,\n Label,\n Description,\n Error,\n}\n","import {type ReactNode, useState} from 'react'\nimport {Dialog} from '../Dialog/Dialog'\nimport {Button} from '../Button/Button'\nimport {Input} from '../Input/Input'\nimport {Field} from '../Field/Field'\n\ntype DialogSize = 'sm' | 'md' | 'lg'\n\ninterface ConfirmDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: ReactNode\n /** Warning / cascade body. */\n children?: ReactNode\n /** When set, the confirm action stays DISABLED until the user types this\n * exact phrase (org name, slug…). The typed value is a client-side gate\n * only — it is never submitted. */\n confirmPhrase?: string\n /** Prompt shown above the phrase input. */\n promptLabel?: ReactNode\n cancelLabel?: ReactNode\n /**\n * App-owned confirm control. Receives whether the phrase gate is satisfied,\n * so the app can render its OWN <Button type=\"submit\"> INSIDE its form\n * (e.g. a react-router fetcher.Form with hidden intent fields) — the DS does\n * NOT own the submit, avoiding a fight with the app's form flow. Takes\n * precedence over onConfirm/confirmLabel.\n */\n confirmSlot?: (gate: {satisfied: boolean}) => ReactNode\n /** Simple case (no app form): the DS renders a danger Button calling this. */\n onConfirm?: () => void\n confirmLabel?: ReactNode\n size?: DialogSize\n}\n\n/**\n * Generic destructive-confirmation dialog: layout + an optional type-a-phrase\n * gate. The DS owns the shell and the gate; the APP owns the actual submit\n * (via `confirmSlot`) so it composes with form libraries instead of forcing a\n * callback. Domain warning text goes in `children`.\n */\nexport function ConfirmDialog({\n open,\n onOpenChange,\n title,\n children,\n confirmPhrase,\n promptLabel,\n cancelLabel = 'Cancel',\n confirmSlot,\n onConfirm,\n confirmLabel = 'Confirm',\n size = 'sm',\n}: ConfirmDialogProps) {\n const [typed, setTyped] = useState('')\n const satisfied = !confirmPhrase || typed.trim() === confirmPhrase\n\n const handleOpenChange = (next: boolean) => {\n if (!next) setTyped('') // reset the gate when the dialog closes\n onOpenChange(next)\n }\n\n return (\n <Dialog.Root open={open} onOpenChange={handleOpenChange}>\n <Dialog.Portal size={size}>\n <Dialog.Header>\n <Dialog.Title>{title}</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n {children}\n {confirmPhrase ? (\n <Field.Root>\n {promptLabel ? <Field.Label>{promptLabel}</Field.Label> : null}\n <Input\n font=\"mono\"\n value={typed}\n onChange={(e) => setTyped(e.target.value)}\n autoFocus\n aria-label=\"confirmation phrase\"\n />\n </Field.Root>\n ) : null}\n </Dialog.Body>\n <Dialog.Footer>\n <Button variant=\"secondary\" onClick={() => handleOpenChange(false)}>\n {cancelLabel}\n </Button>\n {confirmSlot ? (\n confirmSlot({satisfied})\n ) : onConfirm ? (\n <Button variant=\"danger\" disabled={!satisfied} onClick={onConfirm}>\n {confirmLabel}\n </Button>\n ) : null}\n </Dialog.Footer>\n </Dialog.Portal>\n </Dialog.Root>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\n// The \"Apple ease\" curves and the 280ms open now live in the shared motion\n// tokens (easing.easeOut/easeIn, duration.slow). The 220ms close is specific to\n// this panel's exit, so it stays local.\nconst CLOSE_DURATION = '220ms'\n\nexport const styles = css.create({\n // --- Outer wrapper: animates width from 0 → target ---\n wrapper: {\n overflow: 'hidden',\n flexShrink: 0,\n position: 'relative',\n },\n\n // --- Wrapper open/close: SM (360px) ---\n wrapperOpenSm: {\n animationName: css.keyframes({\n from: {width: 0},\n to: {width: 360},\n }),\n animationDuration: duration.slow,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n wrapperCloseSm: {\n animationName: css.keyframes({\n from: {width: 360},\n to: {width: 0},\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Wrapper open/close: MD (480px) ---\n wrapperOpenMd: {\n animationName: css.keyframes({\n from: {width: 0},\n to: {width: 480},\n }),\n animationDuration: duration.slow,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n wrapperCloseMd: {\n animationName: css.keyframes({\n from: {width: 480},\n to: {width: 0},\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Content panel ---\n content: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: colors.bgCard,\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n boxShadow: shadows.sm,\n position: 'relative',\n },\n\n // Content must maintain its target width even while wrapper is narrower\n contentSm: {width: 360},\n contentMd: {width: 480},\n\n // --- Content slide + fade animations ---\n slideIn: {\n animationName: css.keyframes({\n from: {\n transform: 'translateX(40px)',\n opacity: 0,\n },\n to: {\n transform: 'translateX(0)',\n opacity: 1,\n },\n }),\n animationDuration: duration.slow,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOut: {\n animationName: css.keyframes({\n from: {\n transform: 'translateX(0)',\n opacity: 1,\n },\n to: {\n transform: 'translateX(40px)',\n opacity: 0,\n },\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n gap: spacing.md,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n\n // --- Title ---\n title: {\n fontSize: 18,\n fontWeight: 600,\n lineHeight: 1.4,\n color: colors.text,\n margin: 0,\n flex: 1,\n minWidth: 0,\n },\n\n // --- Body ---\n body: {\n flex: 1,\n overflowY: 'auto',\n // Minimal inset prevents child borders from touching panel structural borders\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n },\n bodyPadded: {\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: 8,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n\n inlineWrapper: {\n display: 'inline-flex',\n },\n})\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type DetailPanelSize = 'sm' | 'md'\n\n// --- Context ---\n\ninterface DetailPanelContextValue {\n present: boolean\n closing: boolean\n requestOpen: () => void\n requestClose: () => void\n titleId: string\n labelId: string | undefined\n registerTitle: (id: string) => void\n unregisterTitle: () => void\n panelRef: RefObject<HTMLDivElement | null>\n}\n\nconst DetailPanelContext = createContext<DetailPanelContextValue | null>(null)\n\nfunction useDetailPanel() {\n const ctx = useContext(DetailPanelContext)\n if (!ctx) throw new Error('DetailPanel compound components must be used within DetailPanel.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Duration of the close animation in ms. Default: 220 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n closeAnimationDuration = 220,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [present, setPresent] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const panelRef = useRef<HTMLDivElement>(null)\n const previousFocusRef = useRef<Element | null>(null)\n\n const titleId = useId()\n const [labelId, setLabelId] = useState<string | undefined>(undefined)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n // Sync presence with open state\n useEffect(() => {\n if (isOpen && !present) {\n setPresent(true)\n setClosing(false)\n } else if (!isOpen && present && !closing) {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n setPresent(false)\n closingTimerRef.current = null\n }, closeAnimationDuration)\n }\n }, [isOpen, present, closing, closeAnimationDuration])\n\n // Focus management: move focus on open, restore on close\n useEffect(() => {\n if (present && !closing) {\n previousFocusRef.current = document.activeElement\n panelRef.current?.focus()\n }\n }, [present]) // eslint-disable-line react-hooks/exhaustive-deps -- only on present change\n\n useEffect(() => {\n if (!present && previousFocusRef.current) {\n const el = previousFocusRef.current as HTMLElement\n if (typeof el.focus === 'function') {\n el.focus()\n }\n previousFocusRef.current = null\n }\n }, [present])\n\n // ESC handler\n useEffect(() => {\n if (!present || closing) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [present, closing]) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n setClosing(false)\n }\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, [isControlled, onOpenChange])\n\n const registerTitle = useCallback((id: string) => {\n setLabelId(id)\n }, [])\n\n const unregisterTitle = useCallback(() => {\n setLabelId(undefined)\n }, [])\n\n return (\n <DetailPanelContext.Provider\n value={{\n present,\n closing,\n requestOpen,\n requestClose,\n titleId,\n labelId,\n registerTitle,\n unregisterTitle,\n panelRef,\n }}\n >\n {children}\n </DetailPanelContext.Provider>\n )\n}\n\n// --- Content ---\n\ninterface ContentProps {\n children: ReactNode\n /** Width of the panel. Default: 'sm' (360px) */\n size?: DetailPanelSize\n /** Accessible name for the complementary landmark */\n label: string\n}\n\nconst wrapperOpenMap = {\n sm: styles.wrapperOpenSm,\n md: styles.wrapperOpenMd,\n} as const\n\nconst wrapperCloseMap = {\n sm: styles.wrapperCloseSm,\n md: styles.wrapperCloseMd,\n} as const\n\nfunction Content({children, size = 'sm', label}: ContentProps) {\n const {present, closing, labelId, panelRef} = useDetailPanel()\n\n if (!present) return null\n\n return (\n <html.div style={[styles.wrapper, closing ? wrapperCloseMap[size] : wrapperOpenMap[size]]}>\n <html.div\n ref={panelRef}\n role=\"complementary\"\n aria-label={!labelId ? label : undefined}\n aria-labelledby={labelId || undefined}\n tabIndex={-1}\n style={[\n styles.content,\n size === 'sm' ? styles.contentSm : styles.contentMd,\n closing ? styles.slideOut : styles.slideIn,\n ]}\n >\n {children}\n </html.div>\n </html.div>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId, registerTitle, unregisterTitle} = useDetailPanel()\n\n useEffect(() => {\n registerTitle(titleId)\n return () => unregisterTitle()\n }, [titleId, registerTitle, unregisterTitle])\n\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Body ---\n\ninterface BodyProps {\n children: ReactNode\n /** Adds inner padding. Default: true */\n padded?: boolean\n}\n\nfunction Body({children, padded = true}: BodyProps) {\n return <html.div style={[styles.body, padded && styles.bodyPadded]}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDetailPanel()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const DetailPanel = {\n Root,\n Content,\n Header,\n Title,\n Body,\n Footer,\n Close,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n // --- Backdrop ---\n backdrop: {\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n zIndex: 1000,\n },\n backdropOpen: {\n animationName: css.keyframes({\n from: {opacity: 0},\n to: {opacity: 1},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n backdropClosing: {\n animationName: css.keyframes({\n from: {opacity: 1},\n to: {opacity: 0},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Viewport (positioning container) ---\n viewport: {\n position: 'fixed',\n inset: 0,\n zIndex: 1001,\n display: 'flex',\n pointerEvents: 'none',\n },\n\n // Right anchor (desktop default)\n viewportRight: {\n justifyContent: 'flex-end',\n alignItems: 'stretch',\n },\n // Left anchor\n viewportLeft: {\n justifyContent: 'flex-start',\n alignItems: 'stretch',\n },\n // Bottom anchor (mobile default)\n viewportBottom: {\n justifyContent: 'stretch',\n alignItems: 'flex-end',\n },\n\n // --- Panel ---\n panel: {\n position: 'relative',\n backgroundColor: colors.bgCard,\n boxShadow: shadows.lg,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n pointerEvents: 'auto',\n borderWidth: 0,\n touchAction: 'none',\n },\n\n // Panel sizing per anchor\n panelHorizontal: {\n width: '100%',\n height: '100%',\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n },\n panelVertical: {\n width: '100%',\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n borderTopLeftRadius: radii.lg,\n borderTopRightRadius: radii.lg,\n maxHeight: '85vh',\n },\n panelLeftBorder: {\n borderLeftWidth: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n\n // --- Panel widths (horizontal anchors) ---\n sm: {maxWidth: 360},\n md: {maxWidth: 480},\n lg: {maxWidth: 640},\n\n // --- Slide animations: Right ---\n slideInRight: {\n animationName: css.keyframes({\n from: {transform: 'translateX(100%)'},\n to: {transform: 'translateX(0)'},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOutRight: {\n animationName: css.keyframes({\n from: {transform: 'translateX(0)'},\n to: {transform: 'translateX(100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Slide animations: Left ---\n slideInLeft: {\n animationName: css.keyframes({\n from: {transform: 'translateX(-100%)'},\n to: {transform: 'translateX(0)'},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOutLeft: {\n animationName: css.keyframes({\n from: {transform: 'translateX(0)'},\n to: {transform: 'translateX(-100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Slide animations: Bottom ---\n slideInBottom: {\n animationName: css.keyframes({\n from: {transform: 'translateY(100%)'},\n to: {transform: 'translateY(0)'},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOutBottom: {\n animationName: css.keyframes({\n from: {transform: 'translateY(0)'},\n to: {transform: 'translateY(100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n gap: spacing.md,\n },\n\n // --- Title ---\n title: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n },\n\n // --- Description ---\n description: {\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n },\n\n // --- Body ---\n body: {\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n overflowY: 'auto',\n flex: 1,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: radii.sm,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n\n // --- Inline wrapper ---\n inlineWrapper: {\n display: 'inline-flex',\n },\n})\n","import {useRef, useCallback, useEffect} from 'react'\nimport type {DrawerAnchor} from './Drawer'\n\n/** Threshold: fraction of panel size the user must drag to dismiss */\nconst DISMISS_THRESHOLD = 0.3\n\n/** Minimum velocity (px/ms) to dismiss even below threshold */\nconst VELOCITY_THRESHOLD = 0.5\n\n/** Duration for the dismiss slide-out animation (ms) */\nconst DISMISS_DURATION = 160\n\n/**\n * Max pixels the panel visually \"grows\" when dragged in the opposite direction.\n * iOS-style: panel stays anchored to its edge, doesn't translate.\n * Instead we show a subtle shadow/scale hint capped at this value.\n */\nconst OPPOSITE_MAX_OVERSCROLL = 12\n\ninterface UseSwipeDismissOptions {\n anchor: DrawerAnchor\n enabled: boolean\n onDismiss: () => void\n panelRef: React.RefObject<HTMLDivElement | null>\n}\n\ninterface SwipeState {\n startX: number\n startY: number\n currentX: number\n currentY: number\n startTime: number\n swiping: boolean\n panelSize: number\n}\n\n/**\n * Hook that adds swipe-to-dismiss gesture to a drawer panel.\n *\n * Dismiss direction: panel follows finger 1:1, backdrop fades.\n * Opposite direction: iOS-style — panel stays anchored, shows subtle\n * overscroll feedback (box-shadow intensifies), then snaps back.\n */\nexport function useSwipeDismiss({anchor, enabled, onDismiss, panelRef}: UseSwipeDismissOptions) {\n const stateRef = useRef<SwipeState>({\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n startTime: 0,\n swiping: false,\n panelSize: 0,\n })\n\n const isHorizontal = anchor === 'left' || anchor === 'right'\n\n /** Returns positive = dismiss direction, negative = opposite */\n const getMovement = useCallback(\n (state: SwipeState) => {\n if (isHorizontal) {\n const dx = state.currentX - state.startX\n return anchor === 'right' ? dx : -dx\n }\n return state.currentY - state.startY\n },\n [anchor, isHorizontal],\n )\n\n const applyTransform = useCallback(\n (movement: number, panelEl: HTMLDivElement) => {\n const size = Number(panelEl.dataset.panelSize) || 1\n\n if (movement >= 0) {\n // Dismiss direction — 1:1 tracking\n const progress = movement / size\n\n if (isHorizontal) {\n const sign = anchor === 'right' ? 1 : -1\n panelEl.style.transform = `translateX(${sign * movement}px)`\n } else {\n panelEl.style.transform = `translateY(${movement}px)`\n }\n\n // Fade backdrop proportionally\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.opacity = String(Math.max(0, 1 - progress))\n }\n } else {\n // Opposite direction — iOS behavior:\n // Panel stays anchored (no translate). Show subtle overscroll via box-shadow.\n // Diminishing resistance: asymptotically approaches OPPOSITE_MAX_OVERSCROLL.\n const absMovement = Math.abs(movement)\n const overscroll = (absMovement / (absMovement + size * 0.5)) * OPPOSITE_MAX_OVERSCROLL\n const shadowSpread = Math.round(overscroll)\n\n panelEl.style.transform = ''\n panelEl.style.boxShadow =\n shadowSpread > 0 ? `0 0 ${shadowSpread * 2}px ${shadowSpread}px rgba(0, 0, 0, 0.15)` : ''\n }\n },\n [anchor, isHorizontal],\n )\n\n /** Reset all inline styles (snap back) */\n const resetStyles = useCallback((panelEl: HTMLDivElement) => {\n panelEl.style.transform = ''\n panelEl.style.boxShadow = ''\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.opacity = ''\n }\n }, [])\n\n /** Animate to fully dismissed position, then call onDismiss */\n const animateDismiss = useCallback(\n (panelEl: HTMLDivElement) => {\n const dismissTransform = isHorizontal\n ? `translateX(${anchor === 'right' ? '100%' : '-100%'})`\n : 'translateY(100%)'\n\n panelEl.style.transition = `transform ${DISMISS_DURATION}ms ease-in`\n panelEl.style.transform = dismissTransform\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.transition = `opacity ${DISMISS_DURATION}ms ease-in`\n backdrop.style.opacity = '0'\n }\n\n // When the slide-out transition finishes, just call onDismiss.\n // Do NOT reset inline styles before unmount — that causes a 1-frame flash\n // where the panel appears at its original position. React will unmount the\n // DOM node entirely, so the inline styles don't need cleanup.\n let dismissed = false\n const done = () => {\n if (dismissed) return\n dismissed = true\n onDismiss()\n }\n panelEl.addEventListener('transitionend', done, {once: true})\n setTimeout(done, DISMISS_DURATION + 50)\n },\n [anchor, isHorizontal, onDismiss],\n )\n\n /** Animate snap-back for dismiss-direction undershoot */\n const animateSnapBack = useCallback((panelEl: HTMLDivElement) => {\n panelEl.style.transition = 'transform 200ms cubic-bezier(0.25, 1, 0.5, 1)'\n panelEl.style.transform = ''\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.transition = 'opacity 200ms cubic-bezier(0.25, 1, 0.5, 1)'\n backdrop.style.opacity = ''\n }\n\n const cleanup = () => {\n panelEl.style.transition = ''\n if (backdrop) backdrop.style.transition = ''\n }\n panelEl.addEventListener('transitionend', cleanup, {once: true})\n setTimeout(cleanup, 250)\n }, [])\n\n useEffect(() => {\n if (!enabled) return\n const panel = panelRef.current\n if (!panel) return\n\n function handlePointerDown(e: PointerEvent) {\n if (e.button !== 0) return\n const target = e.target as HTMLElement\n if (target.closest('button, a, input, textarea, select, [role=\"button\"]')) {\n return\n }\n\n const rect = panel!.getBoundingClientRect()\n const state = stateRef.current\n state.startX = e.clientX\n state.startY = e.clientY\n state.currentX = e.clientX\n state.currentY = e.clientY\n state.startTime = Date.now()\n state.swiping = false\n state.panelSize = isHorizontal ? rect.width : rect.height\n\n panel!.dataset.panelSize = String(state.panelSize)\n panel!.setPointerCapture(e.pointerId)\n\n // Freeze CSS animation — we take over positioning.\n // Never restore it; the panel is already at its final resting position.\n panel!.style.animation = 'none'\n }\n\n function handlePointerMove(e: PointerEvent) {\n const state = stateRef.current\n if (state.startTime === 0) return\n\n state.currentX = e.clientX\n state.currentY = e.clientY\n\n const dx = Math.abs(state.currentX - state.startX)\n const dy = Math.abs(state.currentY - state.startY)\n\n if (!state.swiping) {\n const totalMovement = Math.sqrt(dx * dx + dy * dy)\n if (totalMovement < 8) return\n\n if (isHorizontal && dx > dy) {\n state.swiping = true\n } else if (!isHorizontal && dy > dx) {\n state.swiping = true\n } else {\n // Wrong axis — abort gesture\n state.startTime = 0\n return\n }\n }\n\n if (state.swiping) {\n e.preventDefault()\n const movement = getMovement(state)\n applyTransform(movement, panel!)\n }\n }\n\n function handlePointerUp(_e: PointerEvent) {\n const state = stateRef.current\n if (state.startTime === 0) return\n\n const movement = getMovement(state)\n const elapsed = Date.now() - state.startTime\n const velocity = movement / elapsed\n\n state.startTime = 0\n\n if (!state.swiping) {\n return\n }\n\n state.swiping = false\n\n if (movement <= 0) {\n // Was dragging in opposite direction — just reset (no translate was applied)\n resetStyles(panel!)\n return\n }\n\n const fraction = movement / state.panelSize\n const shouldDismiss = fraction > DISMISS_THRESHOLD || velocity > VELOCITY_THRESHOLD\n\n if (shouldDismiss) {\n animateDismiss(panel!)\n } else {\n animateSnapBack(panel!)\n }\n }\n\n function handlePointerCancel() {\n const state = stateRef.current\n state.startTime = 0\n state.swiping = false\n resetStyles(panel!)\n }\n\n panel.addEventListener('pointerdown', handlePointerDown)\n panel.addEventListener('pointermove', handlePointerMove)\n panel.addEventListener('pointerup', handlePointerUp)\n panel.addEventListener('pointercancel', handlePointerCancel)\n\n function handleTouchMove(e: TouchEvent) {\n if (stateRef.current.swiping) {\n e.preventDefault()\n }\n }\n panel.addEventListener('touchmove', handleTouchMove, {passive: false})\n\n return () => {\n panel.removeEventListener('pointerdown', handlePointerDown)\n panel.removeEventListener('pointermove', handlePointerMove)\n panel.removeEventListener('pointerup', handlePointerUp)\n panel.removeEventListener('pointercancel', handlePointerCancel)\n panel.removeEventListener('touchmove', handleTouchMove)\n }\n }, [\n enabled,\n panelRef,\n anchor,\n isHorizontal,\n getMovement,\n applyTransform,\n resetStyles,\n animateSnapBack,\n animateDismiss,\n ])\n}\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {useSwipeDismiss} from './useSwipeDismiss'\n\n// --- Types ---\n\nexport type DrawerAnchor = 'right' | 'left' | 'bottom'\nexport type DrawerSize = 'sm' | 'md' | 'lg'\n\n// --- Context ---\n\ninterface DrawerContextValue {\n open: boolean\n closing: boolean\n anchor: DrawerAnchor\n dismissable: boolean\n swipeDismiss: boolean\n requestOpen: () => void\n requestClose: () => void\n /** Close immediately without CSS animation (used by swipe dismiss which handles its own exit animation) */\n requestCloseImmediate: () => void\n titleId: string\n descriptionId: string\n panelRef: RefObject<HTMLDivElement | null>\n}\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null)\n\nfunction useDrawer() {\n const ctx = useContext(DrawerContext)\n if (!ctx) throw new Error('Drawer compound components must be used within Drawer.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when drawer open state changes */\n onOpenChange?: (open: boolean) => void\n /** Which edge the drawer slides from. Default: 'right' */\n anchor?: DrawerAnchor\n /** Whether clicking backdrop or pressing Escape closes the drawer. Default: true */\n dismissable?: boolean\n /** Whether swipe gesture dismisses the drawer. Default: true */\n swipeDismiss?: boolean\n /** Duration of the close animation in ms. Default: 160 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n anchor = 'right',\n dismissable = true,\n swipeDismiss = true,\n closeAnimationDuration = 160,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const panelRef = useRef<HTMLDivElement>(null)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const titleId = useId()\n const descriptionId = useId()\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n closingTimerRef.current = null\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, closeAnimationDuration)\n }, [isControlled, onOpenChange, closeAnimationDuration])\n\n const requestCloseImmediate = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, [isControlled, onOpenChange])\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n // Handle Escape key\n useEffect(() => {\n if (!isOpen && !closing) return\n if (!dismissable) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [isOpen, closing, dismissable, requestClose])\n\n // Lock body scroll when open\n useEffect(() => {\n if (isOpen || closing) {\n const prev = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = prev\n }\n }\n }, [isOpen, closing])\n\n return (\n <DrawerContext.Provider\n value={{\n open: isOpen || closing,\n closing,\n anchor,\n dismissable,\n swipeDismiss,\n requestOpen,\n requestClose,\n requestCloseImmediate,\n titleId,\n descriptionId,\n panelRef,\n }}\n >\n {children}\n </DrawerContext.Provider>\n )\n}\n\n// --- Trigger ---\n\nfunction Trigger({children}: {children: ReactNode}) {\n const {requestOpen} = useDrawer()\n\n return (\n <html.div onClick={requestOpen} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n}\n\n// --- Portal ---\n\ninterface PortalProps {\n children: ReactNode\n size?: DrawerSize\n}\n\n// Slide animation maps\nconst slideInMap = {\n right: styles.slideInRight,\n left: styles.slideInLeft,\n bottom: styles.slideInBottom,\n} as const\n\nconst slideOutMap = {\n right: styles.slideOutRight,\n left: styles.slideOutLeft,\n bottom: styles.slideOutBottom,\n} as const\n\nconst viewportAnchorMap = {\n right: styles.viewportRight,\n left: styles.viewportLeft,\n bottom: styles.viewportBottom,\n} as const\n\nfunction Portal({children, size = 'md'}: PortalProps) {\n const {\n open,\n closing,\n anchor,\n dismissable,\n swipeDismiss: swipeEnabled,\n requestClose,\n requestCloseImmediate,\n titleId,\n descriptionId,\n panelRef,\n } = useDrawer()\n\n const handleBackdropClick = useCallback(() => {\n if (dismissable) {\n requestClose()\n }\n }, [dismissable, requestClose])\n\n // Swipe-to-dismiss — uses immediate close since the hook handles its own exit animation\n useSwipeDismiss({\n anchor,\n enabled: swipeEnabled && open && !closing,\n onDismiss: requestCloseImmediate,\n panelRef,\n })\n\n if (!open) return null\n\n const isHorizontal = anchor === 'left' || anchor === 'right'\n\n return (\n <>\n {/* Backdrop — click to dismiss */}\n <html.div\n style={[\n styles.backdrop,\n closing && styles.backdropClosing,\n !closing && styles.backdropOpen,\n ]}\n aria-hidden\n onClick={handleBackdropClick}\n />\n\n {/* Viewport */}\n <html.div style={[styles.viewport, viewportAnchorMap[anchor]]} data-drawer-viewport=\"\">\n <html.div\n ref={panelRef}\n role=\"dialog\"\n aria-modal={true}\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n style={[\n styles.panel,\n isHorizontal && styles.panelHorizontal,\n isHorizontal && styles[size],\n !isHorizontal && styles.panelVertical,\n anchor === 'left' && styles.panelLeftBorder,\n closing && slideOutMap[anchor],\n !closing && slideInMap[anchor],\n ]}\n >\n {children}\n </html.div>\n </html.div>\n </>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId} = useDrawer()\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Description ---\n\nfunction Description({children}: {children: ReactNode}) {\n const {descriptionId} = useDrawer()\n return (\n <html.p id={descriptionId} style={styles.description}>\n {children}\n </html.p>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n return <html.div style={styles.body}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDrawer()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const Drawer = {\n Root,\n Trigger,\n Portal,\n Header,\n Title,\n Description,\n Body,\n Footer,\n Close,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n textAlign: 'center',\n },\n message: {\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n lineHeight: typography.lineHeight,\n },\n action: {\n marginTop: spacing.sm,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\ninterface EmptyStateProps {\n message: string\n icon?: ReactNode\n action?: ReactNode\n}\n\nexport function EmptyState({message, icon, action}: EmptyStateProps) {\n return (\n <html.div style={styles.root}>\n {icon}\n <html.p style={styles.message}>{message}</html.p>\n {action && <html.div style={styles.action}>{action}</html.div>}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {typography, typeScale} from './typography.css'\n\nexport const typePresets = css.create({\n // Body\n bodySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize4,\n lineHeight: typeScale.lineHeight4,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize5,\n lineHeight: typeScale.lineHeight5,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n\n // UI\n caption: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingWide,\n },\n label: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightMedium,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n code: {\n fontFamily: typography.fontFamilyMono,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n overline: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingWide,\n textTransform: 'uppercase' as const,\n },\n\n // Heading\n headingSm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize6,\n lineHeight: typeScale.lineHeight6,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize7,\n lineHeight: typeScale.lineHeight7,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize8,\n lineHeight: typeScale.lineHeight8,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingXl: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize9,\n lineHeight: typeScale.lineHeight9,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n\n // Display (fluid)\n displaySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displaySm,\n lineHeight: 1.2,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayMd,\n lineHeight: 1.15,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayLg,\n lineHeight: 1.1,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type HeadingVariant =\n | 'displayLg'\n | 'displayMd'\n | 'displaySm'\n | 'headingXl'\n | 'headingLg'\n | 'headingMd'\n | 'headingSm'\n\ninterface HeadingProps {\n level: 1 | 2 | 3 | 4 | 5 | 6\n variant?: HeadingVariant\n color?: 'default' | 'muted' | 'accent'\n align?: 'start' | 'center' | 'end'\n children: ReactNode\n}\n\nconst defaultVariantMap: Record<number, HeadingVariant> = {\n 1: 'headingXl',\n 2: 'headingLg',\n 3: 'headingMd',\n 4: 'headingSm',\n 5: 'headingSm',\n 6: 'headingSm',\n}\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Heading({level, variant, color = 'default', align, children}: HeadingProps) {\n const resolvedVariant = variant ?? defaultVariantMap[level]\n const style = [typePresets[resolvedVariant], styles[color], align && alignMap[align]]\n\n if (level === 1) return <html.h1 style={style}>{children}</html.h1>\n if (level === 2) return <html.h2 style={style}>{children}</html.h2>\n if (level === 3) return <html.h3 style={style}>{children}</html.h3>\n if (level === 4) return <html.h4 style={style}>{children}</html.h4>\n if (level === 5) return <html.h5 style={style}>{children}</html.h5>\n return <html.h6 style={style}>{children}</html.h6>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // --- Root ---\n root: {\n display: 'flex',\n flexDirection: 'column',\n margin: 0,\n padding: 0,\n },\n\n // --- Item ---\n item: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.ms,\n paddingRight: spacing.ms,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: '120ms',\n cursor: 'default',\n },\n itemSelected: {\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCardHover,\n },\n },\n itemDisabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n itemLast: {\n borderBottomWidth: 0,\n },\n\n // --- Item content area (text + description) ---\n content: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n minWidth: 0,\n },\n\n // --- Primary text ---\n text: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n // --- Description text ---\n description: {\n fontSize: typography.fontSizeXs,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n // --- Actions slot ---\n actions: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.xs,\n flexShrink: 0,\n },\n\n // --- Empty state ---\n empty: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n color: colors.textMuted,\n fontSize: typography.fontSizeSm,\n },\n})\n","import {type ReactNode, createContext, useContext} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type ListSelectionMode = 'none' | 'single' | 'multiple'\n\n// --- Context ---\n\ninterface ListContextValue {\n selectionMode: ListSelectionMode\n}\n\nconst ListContext = createContext<ListContextValue>({selectionMode: 'none'})\n\nfunction useList() {\n return useContext(ListContext)\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Selection mode: 'none' (default), 'single', or 'multiple' */\n selectionMode?: ListSelectionMode\n /** Accessible label for the list */\n 'aria-label'?: string\n}\n\nfunction Root({children, selectionMode = 'none', 'aria-label': ariaLabel}: RootProps) {\n return (\n <ListContext.Provider value={{selectionMode}}>\n <html.div role=\"list\" aria-label={ariaLabel} style={styles.root}>\n {children}\n </html.div>\n </ListContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n children: ReactNode\n /** Whether this item is selected */\n selected?: boolean\n /** Whether this item is disabled */\n disabled?: boolean\n /** Click handler for the item */\n onClick?: () => void\n}\n\nfunction Item({children, selected, disabled, onClick}: ItemProps) {\n const {selectionMode} = useList()\n const isSelectable = selectionMode !== 'none'\n\n return (\n <html.div\n role=\"listitem\"\n aria-selected={isSelectable ? selected : undefined}\n aria-disabled={disabled || undefined}\n onClick={disabled ? undefined : onClick}\n style={[styles.item, selected && styles.itemSelected, disabled && styles.itemDisabled]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Content: wraps primary text + description ---\n\nfunction Content({children}: {children: ReactNode}) {\n return <html.div style={styles.content}>{children}</html.div>\n}\n\n// --- Text: primary label ---\n\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.p style={styles.text}>{children}</html.p>\n}\n\n// --- Description: secondary text ---\n\nfunction Description({children}: {children: ReactNode}) {\n return <html.p style={styles.description}>{children}</html.p>\n}\n\n// --- Actions: slot for buttons, badges, etc. ---\n\nfunction Actions({children}: {children: ReactNode}) {\n return <html.div style={styles.actions}>{children}</html.div>\n}\n\n// --- Empty: placeholder when list has no items ---\n\nfunction Empty({children}: {children: ReactNode}) {\n return (\n <html.div role=\"listitem\" style={styles.empty}>\n {children}\n </html.div>\n )\n}\n\n// --- Export ---\n\nexport const List = {\n Root,\n Item,\n Content,\n Text: ItemText,\n Description,\n Actions,\n Empty,\n}\n","import {type ReactNode, useCallback, useEffect, useMemo, useRef} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {\n useForm,\n FormProvider,\n type UseFormReturn,\n type DefaultValues,\n type FieldValues,\n type FieldErrors,\n type Path,\n} from 'react-hook-form'\nimport {effectTsResolver} from '@hookform/resolvers/effect-ts'\nimport type {Schema} from 'effect'\nimport {FormContext, type LabelPosition, type NecessityIndicator} from './FormContext'\n\nexport interface FormProps<T extends FieldValues> {\n schema: Schema.Schema<T>\n defaultValues: DefaultValues<T>\n onSubmit: (data: T) => void | Promise<void>\n disabled?: boolean\n labelPosition?: LabelPosition\n necessityIndicator?: NecessityIndicator\n validationErrors?: Partial<Record<Path<T>, string>>\n children: ReactNode | ((methods: UseFormReturn<T>) => ReactNode)\n}\n\nconst formStyles = css.create({\n disabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n})\n\nexport function Form<T extends FieldValues>({\n schema,\n defaultValues,\n onSubmit,\n disabled = false,\n labelPosition = 'top',\n necessityIndicator = false,\n validationErrors,\n children,\n}: FormProps<T>) {\n const methods = useForm<T>({\n resolver: effectTsResolver(schema),\n defaultValues,\n mode: 'onTouched',\n reValidateMode: 'onChange',\n })\n\n // Sync server-side validation errors into RHF\n const prevErrorKeysRef = useRef<string[]>([])\n useEffect(() => {\n const prevKeys = prevErrorKeysRef.current\n const nextKeys = validationErrors ? Object.keys(validationErrors) : []\n\n // Clear errors that were removed\n for (const key of prevKeys) {\n if (!nextKeys.includes(key)) {\n methods.clearErrors(key as Path<T>)\n }\n }\n\n // Set new errors\n if (validationErrors) {\n for (const [key, message] of Object.entries(validationErrors)) {\n if (message) {\n methods.setError(key as Path<T>, {type: 'server', message: message as string})\n }\n }\n }\n\n prevErrorKeysRef.current = nextKeys\n }, [validationErrors, methods])\n\n const formRef = useRef<HTMLFormElement>(null)\n\n const onInvalid = useCallback(\n (errors: FieldErrors<T>) => {\n const firstField = Object.keys(errors)[0]\n if (firstField) {\n methods.setFocus(firstField as Path<T>)\n }\n },\n [methods],\n )\n\n const handleSubmit = useCallback(\n (e: Event) => {\n e.preventDefault()\n void methods.handleSubmit(onSubmit, onInvalid)()\n },\n [methods, onSubmit, onInvalid],\n )\n\n useEffect(() => {\n const el = formRef.current\n if (!el) return\n el.addEventListener('submit', handleSubmit)\n return () => el.removeEventListener('submit', handleSubmit)\n }, [handleSubmit])\n\n const formCtx = useMemo(\n () => ({disabled, labelPosition, necessityIndicator}),\n [disabled, labelPosition, necessityIndicator],\n )\n\n return (\n <FormProvider {...methods}>\n <FormContext.Provider value={formCtx}>\n <html.form\n ref={formRef}\n aria-disabled={disabled || undefined}\n style={disabled && formStyles.disabled}\n >\n {typeof children === 'function' ? children(methods) : children}\n </html.form>\n </FormContext.Provider>\n </FormProvider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n // Reset native fieldset chrome\n borderWidth: 0,\n margin: 0,\n padding: 0,\n minWidth: 0,\n },\n legend: {\n // Reset native legend quirks\n padding: 0,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: colors.text,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type FieldsetGap = 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl'\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n} as const\n\n// --- Root ---\ninterface RootProps {\n /** Disables all form controls within the fieldset */\n disabled?: boolean\n /** Gap between child elements */\n gap?: FieldsetGap\n children: ReactNode\n}\n\nfunction Root({disabled = false, gap = 'md', children}: RootProps) {\n return (\n <html.div\n role=\"group\"\n aria-disabled={disabled || undefined}\n style={[styles.root, gapMap[gap], disabled && styles.disabled]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Legend ---\ninterface LegendProps {\n children: ReactNode\n}\n\nfunction Legend({children}: LegendProps) {\n return <html.span style={styles.legend}>{children}</html.span>\n}\n\nexport const Fieldset = {\n Root,\n Legend,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n wrapper: {\n display: 'flex',\n alignItems: 'stretch',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':focus-within': colors.accent,\n },\n borderRadius: radii.sm,\n overflow: 'hidden',\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n addon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n backgroundColor: colors.bgCardHover,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n userSelect: 'none',\n borderWidth: 0,\n },\n addonStart: {\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n addonEnd: {\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n },\n addonClickable: {\n cursor: 'pointer',\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCard,\n ':active': colors.bg,\n },\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n addonDisabled: {\n opacity: 0.4,\n cursor: 'not-allowed',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import type {ReactNode} from 'react'\nimport {useMemo} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {InputGroupContext} from './InputGroupContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useMemo(() => ({inGroup: true}), [])\n\n return (\n <InputGroupContext.Provider value={ctx}>\n <html.div style={styles.wrapper}>{children}</html.div>\n </InputGroupContext.Provider>\n )\n}\n\n// --- Addon ---\nconst dynamicStyles = css.create({\n minWidth: (value: number | string) => ({minWidth: value}),\n})\n\ninterface AddonProps {\n position?: 'start' | 'end'\n onClick?: () => void\n disabled?: boolean\n /** Optional minimum width to prevent layout shift (e.g. Copy → Copied!) */\n minWidth?: number | string\n children: ReactNode\n}\n\nfunction Addon({position = 'end', onClick, disabled, minWidth, children}: AddonProps) {\n const positionStyle = position === 'start' ? styles.addonStart : styles.addonEnd\n const style = [\n styles.addon,\n isNative && styles.nativeFlex,\n positionStyle,\n onClick && !disabled && styles.addonClickable,\n disabled && styles.addonDisabled,\n minWidth != null && dynamicStyles.minWidth(minWidth),\n ]\n\n if (onClick) {\n return (\n <html.button type=\"button\" onClick={onClick} disabled={disabled} style={style}>\n {children}\n </html.button>\n )\n }\n\n return <html.span style={style}>{children}</html.span>\n}\n\nexport const InputGroup = {\n Root,\n Addon,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n cursor: 'pointer',\n textDecoration: 'none',\n transitionProperty: 'background-color, border-color, color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n color: colors.textMuted,\n },\n fullWidth: {\n width: '100%',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type LinkButtonVariant = 'primary' | 'secondary'\nexport type LinkButtonSize = 'default' | 'small'\n\ninterface LinkButtonProps {\n href: string\n variant?: LinkButtonVariant\n size?: LinkButtonSize\n fullWidth?: boolean\n target?: '_blank' | '_self'\n rel?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function LinkButton({\n href,\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n target,\n rel,\n children,\n}: LinkButtonProps) {\n return (\n <html.a\n href={href}\n target={target}\n rel={rel}\n style={[styles.base, sizeMap[size], styles[variant], fullWidth && styles.fullWidth]}\n >\n {children}\n </html.a>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color',\n transitionDuration: duration.fast,\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n position: 'absolute',\n top: '100%',\n left: 0,\n marginTop: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 160,\n zIndex: 50,\n },\n popupEnd: {\n left: 'auto',\n right: 0,\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n linkItem: {\n textDecoration: 'none',\n color: {\n default: colors.text,\n ':hover': colors.text,\n },\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface MenuContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n menuId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null)\n\nexport function useMenu() {\n const ctx = useContext(MenuContext)\n if (!ctx) throw new Error('Menu compound components must be used within Menu.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useId, useEffect} from 'react'\nimport type {MenuContextValue} from './MenuContext'\n\nexport function useMenuRoot() {\n const [open, setOpen] = useState(false)\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const menuId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, HTMLElement>())\n const orderRef = useRef<string[]>([])\n const needsInitialHighlightRef = useRef(false)\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n needsInitialHighlightRef.current = true\n } else {\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n }\n return !prev\n })\n }, [])\n\n // Highlight the first item after items register on open.\n // Child effects (item registration) run before this parent effect,\n // so orderRef is populated by the time this runs.\n useEffect(() => {\n if (open && needsInitialHighlightRef.current) {\n needsInitialHighlightRef.current = false\n const order = orderRef.current\n if (order.length > 0) {\n setHighlightedId(order[0])\n }\n }\n }, [open])\n\n const registerItem = useCallback((id: string, element: HTMLElement) => {\n itemsRef.current.set(id, element)\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)\n const elB = map.get(b)\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n const items = itemsRef.current\n setHighlightedId((prev) => {\n if (prev) {\n const el = items.get(prev)\n el?.click()\n }\n return prev\n })\n break\n }\n case 'Escape':\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close])\n\n const ctx: MenuContextValue = {\n open,\n toggle,\n close,\n menuId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {MenuContext, useMenu} from './MenuContext'\nimport {useMenuRoot} from './useMenuRoot'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const {ctx, rootRef} = useMenuRoot()\n\n return (\n <MenuContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {children}\n </html.div>\n </MenuContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({children}: {children: ReactNode}) {\n const {open, toggle, menuId, triggerRef} = useMenu()\n const localRef = useRef<HTMLButtonElement>(null)\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n return (\n <html.button\n ref={localRef}\n type=\"button\"\n onClick={toggle}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n aria-controls={open ? menuId : undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Popup ---\ninterface PopupProps {\n children: ReactNode\n align?: 'start' | 'end'\n}\n\nfunction Popup({children, align = 'start'}: PopupProps) {\n const {open, close, menuId, highlightedId} = useMenu()\n\n if (!open) return null\n\n return (\n <>\n <html.div style={styles.backdrop} onClick={close} />\n <html.div\n id={menuId}\n role=\"menu\"\n aria-activedescendant={highlightedId ?? undefined}\n style={[styles.popup, align === 'end' && styles.popupEnd]}\n >\n {children}\n </html.div>\n </>\n )\n}\n\n// --- Item ---\ninterface ItemProps {\n onClick?: () => void\n children: ReactNode\n}\n\nfunction Item({onClick, children}: ItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n const handleClick = () => {\n onClick?.()\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"menuitem\"\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- LinkItem ---\ninterface LinkItemProps {\n href: string\n children: ReactNode\n}\n\nfunction LinkItem({href, children}: LinkItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLAnchorElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n return (\n <html.a\n ref={ref}\n id={id}\n href={href}\n onClick={close}\n role=\"menuitem\"\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, styles.linkItem, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.a>\n )\n}\n\nexport const Menu = {\n Root,\n Trigger,\n Popup,\n Item,\n LinkItem,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: colors.bgCard,\n },\n bordered: {\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n gap: spacing.md,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n\n body: {\n flex: 1,\n overflowY: 'auto',\n // Minimal inset prevents child borders from touching panel structural borders\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n },\n bodyPadded: {\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n },\n\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Adds an outer border. Default: false */\n bordered?: boolean\n}\n\nfunction Root({children, bordered = false}: RootProps) {\n return <html.div style={[styles.root, bordered && styles.bordered]}>{children}</html.div>\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Body ---\n\ninterface BodyProps {\n children: ReactNode\n /** Adds inner padding. Default: true */\n padded?: boolean\n}\n\nfunction Body({children, padded = true}: BodyProps) {\n return <html.div style={[styles.body, padded && styles.bodyPadded]}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Export ---\n\nexport const Panel = {\n Root,\n Header,\n Body,\n Footer,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n rootHorizontal: {\n flexDirection: 'row',\n },\n item: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n itemDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n circle: {\n width: 18,\n height: 18,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.full,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n transitionProperty: 'background-color, border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n circleUnchecked: {\n backgroundColor: colors.bg,\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n circleChecked: {\n backgroundColor: colors.bg,\n borderColor: colors.accent,\n },\n dot: {\n width: 8,\n height: 8,\n borderRadius: radii.full,\n backgroundColor: colors.accent,\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n})\n","import {type ReactNode, createContext, useContext, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ninterface RadioGroupContextValue {\n value: string\n onSelect: (value: string) => void\n disabled: boolean\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null)\n\nfunction useRadioGroup() {\n const ctx = useContext(RadioGroupContext)\n if (!ctx) {\n throw new Error('RadioGroup.Item must be used within RadioGroup.Root')\n }\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Root({\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n orientation = 'vertical',\n disabled = false,\n children,\n}: RootProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const onSelect = useCallback(\n (itemValue: string) => {\n if (!disabled) {\n setValue(itemValue)\n }\n },\n [disabled, setValue],\n )\n\n return (\n <RadioGroupContext.Provider value={{value, onSelect, disabled}}>\n <html.div\n role=\"radiogroup\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'horizontal' && styles.rootHorizontal]}\n >\n {children}\n </html.div>\n </RadioGroupContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Item({value, disabled: itemDisabled = false, children}: ItemProps) {\n const {value: groupValue, onSelect, disabled: groupDisabled} = useRadioGroup()\n const isChecked = groupValue === value\n const isDisabled = groupDisabled || itemDisabled\n\n const handleClick = () => {\n if (!isDisabled) {\n onSelect(value)\n }\n }\n\n return (\n <html.label style={[styles.item, isDisabled && styles.itemDisabled]} onClick={handleClick}>\n <html.input\n type=\"radio\"\n value={value}\n checked={isChecked}\n disabled={isDisabled}\n onChange={() => onSelect(value)}\n style={styles.input}\n />\n <html.span\n style={[styles.circle, isChecked ? styles.circleChecked : styles.circleUnchecked]}\n aria-hidden\n >\n {isChecked && <html.span style={styles.dot} />}\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n\nexport const RadioGroup = {\n Root,\n Item,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n overflow: 'hidden',\n },\n viewport: {\n width: '100%',\n height: '100%',\n overflowX: 'auto',\n overflowY: 'auto',\n // Hide native scrollbar\n scrollbarWidth: 'none',\n },\n content: {\n minWidth: '100%',\n minHeight: '100%',\n },\n scrollbar: {\n position: 'absolute',\n zIndex: 1,\n display: 'flex',\n touchAction: 'none',\n userSelect: 'none',\n transitionProperty: 'opacity',\n transitionDuration: duration.base,\n transitionTimingFunction: easing.standard,\n },\n scrollbarVertical: {\n top: 0,\n right: 0,\n bottom: 0,\n width: 8,\n flexDirection: 'column',\n paddingTop: 2,\n paddingBottom: 2,\n paddingRight: 2,\n },\n scrollbarHorizontal: {\n left: 0,\n right: 0,\n bottom: 0,\n height: 8,\n flexDirection: 'row',\n paddingLeft: 2,\n paddingRight: 2,\n paddingBottom: 2,\n },\n scrollbarHidden: {\n opacity: 0,\n },\n scrollbarVisible: {\n opacity: 1,\n },\n thumb: {\n position: 'relative',\n flex: 1,\n backgroundColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.full,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n // Dynamic styles — simple identifier params only (StyleX constraint)\n viewportMaxHeight: (maxHeight: number | string) => ({\n maxHeight,\n }),\n thumbVertical: (height: string, transform: string) => ({\n height,\n transform,\n }),\n thumbHorizontal: (width: string, transform: string) => ({\n width,\n transform,\n }),\n})\n","import {createContext, useContext} from 'react'\n\nexport interface ScrollAreaContextValue {\n viewportRef: React.RefObject<HTMLDivElement | null>\n contentRef: React.RefObject<HTMLDivElement | null>\n viewportId: string\n scrollTop: number\n scrollLeft: number\n scrollHeight: number\n scrollWidth: number\n clientHeight: number\n clientWidth: number\n scrolling: boolean\n}\n\nexport const ScrollAreaContext = createContext<ScrollAreaContextValue | null>(null)\n\nexport function useScrollArea() {\n const ctx = useContext(ScrollAreaContext)\n if (!ctx) throw new Error('ScrollArea compound components must be used within ScrollArea.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useEffect, useId} from 'react'\nimport type {ScrollAreaContextValue} from './ScrollAreaContext'\n\nexport function useScrollAreaRoot(): ScrollAreaContextValue {\n const viewportId = useId()\n const viewportRef = useRef<HTMLDivElement | null>(null)\n const contentRef = useRef<HTMLDivElement | null>(null)\n const [scrollTop, setScrollTop] = useState(0)\n const [scrollLeft, setScrollLeft] = useState(0)\n const [scrollHeight, setScrollHeight] = useState(0)\n const [scrollWidth, setScrollWidth] = useState(0)\n const [clientHeight, setClientHeight] = useState(0)\n const [clientWidth, setClientWidth] = useState(0)\n const [scrolling, setScrolling] = useState(false)\n const scrollTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const handleScroll = useCallback(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n setScrollTop(vp.scrollTop)\n setScrollLeft(vp.scrollLeft)\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n setScrolling(true)\n\n if (scrollTimerRef.current) clearTimeout(scrollTimerRef.current)\n scrollTimerRef.current = setTimeout(() => setScrolling(false), 1000)\n }, [])\n\n // Observe viewport size changes\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n const observer = new ResizeObserver(() => {\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n })\n observer.observe(vp)\n // Initial measurement\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n\n return () => observer.disconnect()\n }, [])\n\n // Attach scroll listener directly to ensure we capture it\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n vp.addEventListener('scroll', handleScroll, {passive: true})\n return () => vp.removeEventListener('scroll', handleScroll)\n }, [handleScroll])\n\n return {\n viewportRef,\n contentRef,\n viewportId,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n scrolling,\n }\n}\n","import {type ReactNode, useRef, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {ScrollAreaContext, useScrollArea} from './ScrollAreaContext'\nimport {useScrollAreaRoot} from './useScrollAreaRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useScrollAreaRoot()\n\n return (\n <ScrollAreaContext.Provider value={ctx}>\n <html.div style={styles.root}>{children}</html.div>\n </ScrollAreaContext.Provider>\n )\n}\n\n// --- Viewport ---\n\ninterface ViewportProps {\n children: ReactNode\n maxHeight?: number | string\n}\n\nfunction Viewport({children, maxHeight}: ViewportProps) {\n const {viewportRef, viewportId} = useScrollArea()\n\n return (\n <html.div\n ref={viewportRef}\n id={viewportId}\n tabIndex={0}\n role=\"region\"\n aria-label=\"Scrollable content\"\n style={[styles.viewport, maxHeight != null && styles.viewportMaxHeight(maxHeight)]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Content ---\n\ninterface ContentProps {\n children: ReactNode\n}\n\nfunction Content({children}: ContentProps) {\n const {contentRef} = useScrollArea()\n return (\n <html.div ref={contentRef} style={styles.content}>\n {children}\n </html.div>\n )\n}\n\n// --- Scrollbar ---\n\ntype ScrollbarOrientation = 'vertical' | 'horizontal'\n\ninterface ScrollbarProps {\n orientation?: ScrollbarOrientation\n children: ReactNode\n}\n\nfunction Scrollbar({orientation = 'vertical', children}: ScrollbarProps) {\n const {\n viewportId,\n scrolling,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n } = useScrollArea()\n\n // Hide scrollbar when content fits\n const hasOverflow =\n orientation === 'vertical' ? scrollHeight > clientHeight : scrollWidth > clientWidth\n\n if (!hasOverflow) return null\n\n const isVertical = orientation === 'vertical'\n const maxScroll = isVertical ? scrollHeight - clientHeight : scrollWidth - clientWidth\n const scrollOffset = isVertical ? scrollTop : scrollLeft\n const valueNow = maxScroll > 0 ? Math.round((scrollOffset / maxScroll) * 100) : 0\n\n return (\n <html.div\n role=\"scrollbar\"\n aria-controls={viewportId}\n aria-orientation={orientation}\n aria-valuenow={valueNow}\n aria-valuemin={0}\n aria-valuemax={100}\n style={[\n styles.scrollbar,\n isVertical ? styles.scrollbarVertical : styles.scrollbarHorizontal,\n scrolling ? styles.scrollbarVisible : styles.scrollbarHidden,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Thumb ---\n\ninterface ThumbProps {\n orientation?: ScrollbarOrientation\n}\n\nfunction Thumb({orientation = 'vertical'}: ThumbProps) {\n const {viewportRef, scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth} =\n useScrollArea()\n const draggingRef = useRef(false)\n const startPosRef = useRef(0)\n const startScrollRef = useRef(0)\n\n const isVertical = orientation === 'vertical'\n\n const thumbSizePercent = isVertical\n ? Math.max((clientHeight / scrollHeight) * 100, 10)\n : Math.max((clientWidth / scrollWidth) * 100, 10)\n\n const maxScroll = isVertical ? scrollHeight - clientHeight : scrollWidth - clientWidth\n const trackSize = isVertical ? clientHeight : clientWidth\n const thumbPixelSize = (thumbSizePercent / 100) * trackSize\n const scrollOffset = isVertical ? scrollTop : scrollLeft\n const thumbOffset = maxScroll > 0 ? (scrollOffset / maxScroll) * (trackSize - thumbPixelSize) : 0\n\n const thumbStyle = isVertical\n ? styles.thumbVertical(`${thumbSizePercent}%`, `translateY(${thumbOffset}px)`)\n : styles.thumbHorizontal(`${thumbSizePercent}%`, `translateX(${thumbOffset}px)`)\n\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault()\n draggingRef.current = true\n startPosRef.current = isVertical ? e.clientY : e.clientX\n startScrollRef.current = isVertical\n ? (viewportRef.current?.scrollTop ?? 0)\n : (viewportRef.current?.scrollLeft ?? 0)\n ;(e.target as HTMLElement).setPointerCapture(e.pointerId)\n },\n [isVertical, viewportRef],\n )\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent) => {\n if (!draggingRef.current) return\n const vp = viewportRef.current\n if (!vp) return\n\n const delta = (isVertical ? e.clientY : e.clientX) - startPosRef.current\n const scrollRatio = maxScroll / (trackSize - thumbPixelSize)\n const scrollDelta = delta * scrollRatio\n\n if (isVertical) {\n vp.scrollTop = startScrollRef.current + scrollDelta\n } else {\n vp.scrollLeft = startScrollRef.current + scrollDelta\n }\n },\n [isVertical, maxScroll, trackSize, thumbPixelSize, viewportRef],\n )\n\n const handlePointerUp = useCallback(() => {\n draggingRef.current = false\n }, [])\n\n return (\n <html.div\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n style={[styles.thumb, thumbStyle]}\n />\n )\n}\n\nexport const ScrollArea = {\n Root,\n Viewport,\n Content,\n Scrollbar,\n Thumb,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n inputWrapper: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n borderRadius: radii.sm,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n },\n inputWrapperFocused: {\n borderColor: colors.accent,\n },\n input: {\n flex: 1,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: 'transparent',\n borderWidth: 0,\n outline: 'none',\n minWidth: 0,\n },\n trigger: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n backgroundColor: 'transparent',\n borderWidth: 0,\n color: colors.textMuted,\n cursor: 'pointer',\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n // Position is `fixed` and the top/left/width are applied inline by Popup\n // (computed from the root's bounding rect) so the dropdown can escape any\n // ancestor with `overflow: hidden` or `transform` (e.g. inside a Dialog).\n position: 'fixed',\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n maxHeight: 200,\n overflowY: 'auto',\n // Re-enable pointer events: the portal mount is pointer-events: none so\n // clicks fall through except on the popup itself.\n pointerEvents: 'auto',\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n itemSelected: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n itemHidden: {\n display: 'none',\n },\n empty: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n },\n hidden: {\n display: 'none',\n },\n // Dynamic position — applied at runtime from the input's bounding rect.\n popupPosition: (top: number, left: number, width: number) => ({\n top,\n left,\n width,\n }),\n})\n","import {createContext, useContext} from 'react'\n\nexport interface ComboboxContextValue {\n open: boolean\n openPopup: () => void\n close: () => void\n value: string | null\n setValue: (value: string) => void\n inputValue: string\n setInputValue: (value: string) => void\n labels: Record<string, string>\n registerLabel: (value: string, label: string) => void\n listboxId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, value: string, element: HTMLElement) => () => void\n inputRef: React.RefObject<HTMLInputElement | null>\n rootRef: React.RefObject<HTMLDivElement | null>\n}\n\nexport const ComboboxContext = createContext<ComboboxContextValue | null>(null)\n\nexport function useCombobox() {\n const ctx = useContext(ComboboxContext)\n if (!ctx) throw new Error('Combobox compound components must be used within Combobox.Root')\n return ctx\n}\n","import {useState, useCallback, useMemo, useRef, useId, useEffect} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {ComboboxContextValue} from './ComboboxContext'\n\ninterface UseComboboxRootOptions {\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n inputValue?: string\n onInputChange?: (value: string) => void\n initialLabels?: Record<string, string>\n}\n\nexport function useComboboxRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\n inputValue: controlledInputValue,\n onInputChange,\n initialLabels,\n}: UseComboboxRootOptions) {\n const [value, setValue] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange,\n )\n // Seed the visible text from the initially-selected value's label, so a\n // defaultValue/value shows its label on mount — and so the reconcile effect\n // below doesn't see \"value set but input empty\" and wipe the selection.\n const [internalInputValue, setInternalInputValue] = useState<string>(() => {\n const initial = controlledValue ?? defaultValue\n return initial ? (initialLabels?.[initial] ?? '') : ''\n })\n const inputValue = controlledInputValue !== undefined ? controlledInputValue : internalInputValue\n const setInputValue = useCallback(\n (v: string) => {\n if (controlledInputValue === undefined) setInternalInputValue(v)\n onInputChange?.(v)\n },\n [controlledInputValue, onInputChange],\n )\n\n const [open, setOpen] = useState(false)\n const [labels, setLabels] = useState<Record<string, string>>(initialLabels ?? {})\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const listboxId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const itemsRef = useRef(new Map<string, {value: string; element: HTMLElement}>())\n const orderRef = useRef<string[]>([])\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n }, [])\n\n const openPopup = useCallback(() => {\n setOpen(true)\n // Highlight the selected item or first visible item\n const items = itemsRef.current\n const order = orderRef.current\n let found: string | null = null\n for (const id of order) {\n const item = items.get(id)\n if (item && item.value === value) {\n found = id\n break\n }\n }\n setHighlightedId(found ?? (order.length > 0 ? order[0] : null))\n }, [value])\n\n const selectValue = useCallback(\n (itemValue: string) => {\n setValue(itemValue)\n // Set input to show the selected label\n const label = labels[itemValue] ?? itemValue\n setInputValue(label)\n close()\n inputRef.current?.focus()\n },\n [setValue, labels, setInputValue, close],\n )\n\n const registerLabel = useCallback((v: string, label: string) => {\n setLabels((prev) => {\n if (prev[v] === label) return prev\n return {...prev, [v]: label}\n })\n }, [])\n\n const registerItem = useCallback((id: string, itemValue: string, element: HTMLElement) => {\n itemsRef.current.set(id, {value: itemValue, element})\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)?.element\n const elB = map.get(b)?.element\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Get visible items (those matching the filter)\n const getVisibleOrder = useCallback(() => {\n const query = inputValue.toLowerCase()\n if (!query) return orderRef.current\n return orderRef.current.filter((id) => {\n const item = itemsRef.current.get(id)\n if (!item) return false\n const label = labels[item.value] ?? item.value\n return label.toLowerCase().includes(query)\n })\n }, [inputValue, labels])\n\n // Keyboard navigation\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const visibleOrder = getVisibleOrder()\n if (visibleOrder.length === 0 && e.key !== 'Escape' && e.key !== 'Tab') return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n if (!open) {\n setOpen(true)\n return\n }\n setHighlightedId((prev) => {\n const idx = prev ? visibleOrder.indexOf(prev) : -1\n return visibleOrder[(idx + 1) % visibleOrder.length] ?? null\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? visibleOrder.indexOf(prev) : 0\n return visibleOrder[(idx - 1 + visibleOrder.length) % visibleOrder.length] ?? null\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(visibleOrder[0] ?? null)\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(visibleOrder[visibleOrder.length - 1] ?? null)\n break\n }\n case 'Enter': {\n e.preventDefault()\n setHighlightedId((prev) => {\n if (prev) {\n const item = itemsRef.current.get(prev)\n if (item) selectValue(item.value)\n } else if (!inputValue.trim()) {\n // Empty input + Enter = clear selection (reset to \"All\")\n selectValue('')\n }\n return prev\n })\n break\n }\n case 'Escape': {\n e.preventDefault()\n close()\n inputRef.current?.focus()\n break\n }\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close, selectValue, getVisibleOrder])\n\n // Scroll highlighted item into view\n useEffect(() => {\n if (!highlightedId) return\n const item = itemsRef.current.get(highlightedId)\n item?.element.scrollIntoView({block: 'nearest'})\n }, [highlightedId])\n\n // Reconcile input text with the committed value once the popup closes.\n // Three cases when transitioning from open → closed:\n // - inputValue is empty: user cleared the field, treat that as\n // \"remove the selection\" so the consumer's onValueChange fires\n // with null and downstream UI (e.g. dependent fields) can reset.\n // - inputValue doesn't match the selected label: user typed something\n // but didn't pick anything; restore the label so the visible text\n // and the committed value stay consistent.\n // - inputValue equals the selected label: nothing to do.\n useEffect(() => {\n if (open) return\n // Treat an empty value (null OR '') as \"no selection\" — nothing to\n // reconcile. Without this, a controlled value=\"\" (e.g. a table column\n // filter) fires setValue(null) every render → inline onValueChange →\n // parent state change → re-render → infinite \"Maximum update depth\" loop.\n if (!value) return\n if (inputValue === '') {\n setValue(null)\n return\n }\n if (labels[value] && inputValue !== labels[value]) {\n setInputValue(labels[value])\n }\n }, [open, value, labels, inputValue, setInputValue, setValue])\n\n const ctx: ComboboxContextValue = useMemo(\n () => ({\n open,\n openPopup,\n close,\n value,\n setValue: selectValue,\n inputValue,\n setInputValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n inputRef,\n rootRef,\n }),\n [\n open,\n openPopup,\n close,\n value,\n selectValue,\n inputValue,\n setInputValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n ],\n )\n\n return {ctx, rootRef}\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const lightTheme = css.createTheme(colors, {\n bg: '#ffffff',\n bgCard: '#f5f5f5',\n bgCardHover: '#ebebeb',\n text: '#1a1a1a',\n textMuted: '#4a4a4a',\n accent: '#1e40af',\n accentHover: '#1a3799',\n accentContrast: '#ffffff',\n border: '#d4d4d4',\n error: '#991b1b',\n errorHover: '#7f1d1d',\n errorBg: 'rgba(153, 27, 27, 0.08)',\n errorBorder: 'rgba(153, 27, 27, 0.3)',\n errorText: '#7f1d1d',\n errorContrast: '#ffffff',\n success: '#166534',\n successBg: 'rgba(22, 101, 52, 0.08)',\n successBorder: 'rgba(22, 101, 52, 0.3)',\n successText: '#14532d',\n warning: '#92400e',\n warningBg: 'rgba(146, 64, 14, 0.08)',\n warningBorder: 'rgba(146, 64, 14, 0.3)',\n warningText: '#78350f',\n info: '#1e40af',\n infoBg: 'rgba(30, 64, 175, 0.08)',\n infoBorder: 'rgba(30, 64, 175, 0.3)',\n infoText: '#1e40af',\n})\n\nexport const lightShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.08)',\n md: '0 4px 12px rgba(0, 0, 0, 0.12)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.16)',\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const highContrastTheme = css.createTheme(colors, {\n bg: '#000000',\n bgCard: '#111111',\n bgCardHover: '#1a1a1a',\n text: '#ffffff',\n textMuted: '#b0b0b0',\n accent: '#60a5fa',\n accentHover: '#93c5fd',\n accentContrast: '#000000',\n border: '#555555',\n error: '#f87171',\n errorHover: '#fca5a5',\n errorBg: 'rgba(248, 113, 113, 0.15)',\n errorBorder: 'rgba(248, 113, 113, 0.5)',\n errorText: '#fca5a5',\n errorContrast: '#000000',\n success: '#4ade80',\n successBg: 'rgba(74, 222, 128, 0.15)',\n successBorder: 'rgba(74, 222, 128, 0.5)',\n successText: '#86efac',\n warning: '#fcd34d',\n warningBg: 'rgba(252, 211, 77, 0.15)',\n warningBorder: 'rgba(252, 211, 77, 0.5)',\n warningText: '#fef08a',\n info: '#60a5fa',\n infoBg: 'rgba(96, 165, 250, 0.15)',\n infoBorder: 'rgba(96, 165, 250, 0.5)',\n infoText: '#bfdbfe',\n})\n\nexport const highContrastShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.6)',\n md: '0 4px 12px rgba(0, 0, 0, 0.7)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.8)',\n})\n","import {createContext, type ReactNode, useContext, useState} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {lightTheme, lightShadows} from '@duro-app/tokens/themes/light.css'\nimport {highContrastTheme, highContrastShadows} from '@duro-app/tokens/themes/high-contrast.css'\n\nexport type ThemeName = 'dark' | 'light' | 'high-contrast'\n\ninterface ThemeProviderProps {\n theme?: ThemeName\n children: ReactNode\n}\n\nconst themeMap: Partial<Record<ThemeName, readonly [typeof lightTheme, typeof lightShadows]>> = {\n light: [lightTheme, lightShadows],\n 'high-contrast': [highContrastTheme, highContrastShadows],\n}\n\nconst styles = css.create({\n root: {\n display: 'contents',\n color: colors.text,\n },\n // Sibling overlay where floating popups (Combobox, Menu, Tooltip) portal to.\n // Lives inside ThemeProvider so theme tokens cascade. Fixed + inset 0 so\n // popups can position freely with viewport coords; pointer-events: none lets\n // clicks fall through except where children re-enable them.\n portalMount: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n pointerEvents: 'none',\n // Above Dialog (1001) so popups inside dialogs render on top.\n zIndex: 1100,\n },\n})\n\n// react-strict-dom's style prop rejects Theme<VarGroup<{named keys}>> because the\n// concrete VarGroup lacks the generic index signature. This is a known typing gap.\ntype DivStyle = Parameters<typeof html.div>[0]['style']\n\nconst PortalMountContext = createContext<HTMLElement | null>(null)\n\nexport function usePortalMount(): HTMLElement | null {\n return useContext(PortalMountContext)\n}\n\nexport function ThemeProvider({theme = 'dark', children}: ThemeProviderProps) {\n const overrides = themeMap[theme]\n const themeStyles = [overrides?.[0], overrides?.[1], styles.root] as DivStyle\n const [mount, setMount] = useState<HTMLElement | null>(null)\n\n return (\n <html.div data-theme={theme} style={themeStyles}>\n <PortalMountContext.Provider value={mount}>{children}</PortalMountContext.Provider>\n <html.div ref={setMount} data-portal-mount style={styles.portalMount} />\n </html.div>\n )\n}\n","import {type ReactNode, useRef, useId, useEffect, useLayoutEffect, useState} from 'react'\nimport {createPortal} from 'react-dom'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {ComboboxContext, useCombobox} from './ComboboxContext'\nimport {useComboboxRoot} from './useComboboxRoot'\nimport {usePortalMount} from '../ThemeProvider/ThemeProvider'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n inputValue?: string\n onInputChange?: (value: string) => void\n initialLabels?: Record<string, string>\n children: ReactNode\n}\n\nfunction Root({\n name,\n defaultValue,\n value,\n onValueChange,\n inputValue,\n onInputChange,\n initialLabels,\n children,\n}: RootProps) {\n const {ctx, rootRef} = useComboboxRoot({\n defaultValue,\n value,\n onValueChange,\n inputValue,\n onInputChange,\n initialLabels,\n })\n\n return (\n <ComboboxContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {name && <html.input type=\"hidden\" name={name} value={ctx.value ?? ''} />}\n {children}\n </html.div>\n </ComboboxContext.Provider>\n )\n}\n\n// --- Input ---\nfunction Input({placeholder, children}: {placeholder?: string; children?: ReactNode}) {\n const {open, openPopup, close, inputValue, setInputValue, listboxId, highlightedId, inputRef} =\n useCombobox()\n const localRef = useRef<HTMLInputElement>(null)\n const [focused, setFocused] = useState(false)\n\n useEffect(() => {\n inputRef.current = localRef.current\n })\n\n return (\n <html.div style={[styles.inputWrapper, focused && styles.inputWrapperFocused]}>\n <html.input\n ref={localRef}\n type=\"text\"\n role={'combobox' as 'listbox'}\n value={inputValue}\n placeholder={placeholder}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={highlightedId ?? undefined}\n aria-autocomplete={'list' as 'none'}\n autoComplete=\"off\"\n style={styles.input}\n onFocus={() => {\n setFocused(true)\n openPopup()\n }}\n onBlur={() => {\n setFocused(false)\n // Delay close to allow item click to register\n setTimeout(close, 150)\n }}\n onChange={(e: any) => {\n setInputValue(e.target.value)\n if (!open) openPopup()\n }}\n />\n {children}\n </html.div>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({children}: {children?: ReactNode}) {\n const {open, openPopup, close, inputRef} = useCombobox()\n\n return (\n <html.button\n type=\"button\"\n tabIndex={-1}\n aria-label={open ? 'Close' : 'Open'}\n onClick={() => {\n if (open) {\n close()\n } else {\n openPopup()\n }\n inputRef.current?.focus()\n }}\n style={styles.trigger}\n >\n {children ?? (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n )}\n </html.button>\n )\n}\n\n// --- Popup ---\n// Rendered into the ThemeProvider portal mount and positioned with viewport\n// coordinates so it escapes ancestor `overflow: hidden` / `transform`\n// containing blocks (notably Dialog and Drawer).\nfunction Popup({children}: {children: ReactNode}) {\n const {open, listboxId, rootRef} = useCombobox()\n const mount = usePortalMount()\n const [coords, setCoords] = useState<{top: number; left: number; width: number} | null>(null)\n\n // Measure the root each time the popup opens, and re-measure on scroll/resize\n // so the dropdown follows the input. Capture-phase scroll listener catches\n // scroll on any ancestor (e.g. Dialog body).\n useLayoutEffect(() => {\n if (!open) {\n setCoords(null)\n return\n }\n const update = () => {\n const el = rootRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n // Position immediately below the input with a small gap. `xs` token = 4px.\n setCoords({top: rect.bottom + 4, left: rect.left, width: rect.width})\n }\n update()\n window.addEventListener('resize', update)\n window.addEventListener('scroll', update, true)\n return () => {\n window.removeEventListener('resize', update)\n window.removeEventListener('scroll', update, true)\n }\n }, [open, rootRef])\n\n if (!open || !coords) return null\n\n const node = (\n <html.div\n id={listboxId}\n role=\"listbox\"\n style={[styles.popup, styles.popupPosition(coords.top, coords.left, coords.width)]}\n >\n {children}\n </html.div>\n )\n\n // SSR / pre-mount fallback: render inline (will be invisible under\n // overflow:hidden parents but won't crash). Once the mount is available,\n // portal into it.\n return mount ? createPortal(node, mount) : node\n}\n\n// --- Item ---\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value: itemValue, children}: ItemProps) {\n const {\n value: selectedValue,\n setValue,\n inputValue,\n labels,\n registerLabel,\n highlightedId,\n setHighlightedId,\n registerItem,\n } = useCombobox()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isSelected = selectedValue === itemValue\n const isHighlighted = highlightedId === id\n\n // Filter: check if this item matches the input\n const label = labels[itemValue] ?? itemValue\n const query = inputValue.toLowerCase()\n const isVisible = !query || label.toLowerCase().includes(query)\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n const text = el.textContent\n if (text) registerLabel(itemValue, text)\n }, [itemValue, registerLabel])\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, itemValue, el)\n }, [id, itemValue, registerItem])\n\n if (!isVisible) return null\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n onClick={() => setValue(itemValue)}\n onPointerEnter={() => setHighlightedId(id)}\n style={[\n styles.item,\n isSelected && styles.itemSelected,\n isHighlighted && styles.itemHighlighted,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- ItemText ---\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.span>{children}</html.span>\n}\n\n// --- Empty ---\nfunction Empty({children}: {children: ReactNode}) {\n const {open, inputValue, labels} = useCombobox()\n\n if (!open) return null\n\n // Check if any items are visible\n const query = inputValue.toLowerCase()\n const hasVisibleItems = query\n ? Object.values(labels).some((label) => label.toLowerCase().includes(query))\n : true\n\n if (hasVisibleItems) return null\n\n return <html.div style={styles.empty}>{children}</html.div>\n}\n\nexport const Combobox = {\n Root,\n Input,\n Trigger,\n Popup,\n Item,\n ItemText,\n Empty,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n },\n value: {\n color: colors.text,\n },\n placeholder: {\n color: colors.textMuted,\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n color: colors.textMuted,\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n // The portal mount is pointer-events: none, so re-enable here to catch\n // outside clicks that close the popup.\n pointerEvents: 'auto',\n },\n popup: {\n // Position is `fixed` and top/left/minWidth are applied inline by Popup\n // (computed from the trigger's bounding rect) so the dropdown escapes any\n // ancestor with `overflow: hidden` / `transform` (notably inside a Dialog).\n position: 'fixed',\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 120,\n maxHeight: 280,\n overflowY: 'auto',\n zIndex: 50,\n // Re-enable pointer events: the portal mount is pointer-events: none.\n pointerEvents: 'auto',\n },\n popupPosition: (top: number, left: number, minWidth: number) => ({\n top,\n left,\n minWidth,\n }),\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n itemSelected: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n hidden: {\n display: 'none',\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SelectContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n value: string | null\n setValue: (value: string) => void\n labels: Record<string, string>\n registerLabel: (value: string, label: string) => void\n listboxId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, value: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const SelectContext = createContext<SelectContextValue | null>(null)\n\nexport function useSelect() {\n const ctx = useContext(SelectContext)\n if (!ctx) throw new Error('Select compound components must be used within Select.Root')\n return ctx\n}\n","import {useState, useCallback, useMemo, useRef, useId, useEffect} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {SelectContextValue} from './SelectContext'\n\ninterface UseSelectRootOptions {\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n}\n\nexport function useSelectRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\n initialLabels,\n}: UseSelectRootOptions) {\n const [value, setValue] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange,\n )\n const [open, setOpen] = useState(false)\n const [labels, setLabels] = useState<Record<string, string>>(initialLabels ?? {})\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const listboxId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, {value: string; element: HTMLElement}>())\n const orderRef = useRef<string[]>([])\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n const items = itemsRef.current\n const order = orderRef.current\n let found: string | null = null\n for (const id of order) {\n const item = items.get(id)\n if (item && item.value === value) {\n found = id\n break\n }\n }\n setHighlightedId(found ?? (order.length > 0 ? order[0] : null))\n } else {\n setHighlightedId(null)\n }\n return !prev\n })\n }, [value])\n\n const registerLabel = useCallback((v: string, label: string) => {\n setLabels((prev) => {\n if (prev[v] === label) return prev\n return {...prev, [v]: label}\n })\n }, [])\n\n const registerItem = useCallback((id: string, itemValue: string, element: HTMLElement) => {\n itemsRef.current.set(id, {value: itemValue, element})\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)?.element\n const elB = map.get(b)?.element\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n const items = itemsRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n setHighlightedId((prev) => {\n if (prev) {\n const item = items.get(prev)\n if (item) {\n setValue(item.value)\n close()\n }\n }\n return prev\n })\n break\n }\n case 'Escape':\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close, setValue])\n\n const ctx: SelectContextValue = useMemo(\n () => ({\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }),\n [\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n ],\n )\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect, useLayoutEffect, useState} from 'react'\nimport {createPortal} from 'react-dom'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {SelectContext, useSelect} from './SelectContext'\nimport {useSelectRoot} from './useSelectRoot'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {usePortalMount} from '../ThemeProvider/ThemeProvider'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n children: ReactNode\n}\n\nfunction Root({name, defaultValue, value, onValueChange, initialLabels, children}: RootProps) {\n const {ctx, rootRef} = useSelectRoot({defaultValue, value, onValueChange, initialLabels})\n\n return (\n <SelectContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {name && <html.input type=\"hidden\" name={name} value={ctx.value ?? ''} />}\n {children}\n </html.div>\n </SelectContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({\n children,\n 'aria-label': ariaLabel,\n}: {\n children: ReactNode\n 'aria-label'?: string\n}) {\n const {open, toggle, listboxId, highlightedId, triggerRef} = useSelect()\n const localRef = useRef<HTMLButtonElement>(null)\n // Inside a <Field.Root>, adopt its controlId so <Field.Label for={controlId}>\n // labels the trigger (a labelable <button>) — no manual aria-label needed; and\n // surface the field's description/error + invalid state, mirroring <Input>.\n const fieldCtx = useFieldContext()\n const describedBy = fieldCtx\n ? `${fieldCtx.descriptionId} ${fieldCtx.invalid ? fieldCtx.errorId : ''}`.trim()\n : undefined\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n return (\n <html.button\n ref={localRef}\n id={fieldCtx?.controlId}\n type=\"button\"\n role={'combobox' as 'listbox'}\n onClick={toggle}\n aria-label={ariaLabel}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={highlightedId ?? undefined}\n aria-describedby={describedBy || undefined}\n aria-invalid={fieldCtx?.invalid || undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Value ---\nfunction Value({placeholder}: {placeholder?: string}) {\n const {value, labels} = useSelect()\n const display = value ? (labels[value] ?? value) : null\n\n return (\n <html.span style={display ? styles.value : styles.placeholder}>\n {display ?? placeholder}\n </html.span>\n )\n}\n\n// --- Icon ---\nfunction Icon({children}: {children?: ReactNode}) {\n return (\n <html.span style={styles.icon}>\n {children ?? (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n )}\n </html.span>\n )\n}\n\n// --- Popup ---\n// Rendered into the ThemeProvider portal mount and positioned with viewport\n// coordinates (measured off the trigger) so it escapes ancestor\n// `overflow: hidden` / `transform` containing blocks (notably Dialog/Drawer).\n// The listbox stays mounted while closed (display: none) so Items can register\n// their labels from DOM text before the popup is ever opened.\nfunction Popup({children}: {children: ReactNode}) {\n const {open, close, listboxId, triggerRef} = useSelect()\n const mount = usePortalMount()\n const [coords, setCoords] = useState<{top: number; left: number; width: number} | null>(null)\n\n // Measure the trigger when the popup opens, and re-measure on scroll/resize so\n // the dropdown follows it. Capture-phase scroll catches scroll on any ancestor\n // (e.g. a Dialog body).\n useLayoutEffect(() => {\n if (!open) return\n const update = () => {\n const el = triggerRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n // `xs` token = 4px gap below the trigger.\n setCoords({top: rect.bottom + 4, left: rect.left, width: rect.width})\n }\n update()\n window.addEventListener('resize', update)\n window.addEventListener('scroll', update, true)\n return () => {\n window.removeEventListener('resize', update)\n window.removeEventListener('scroll', update, true)\n }\n }, [open, triggerRef])\n\n const node = (\n <>\n {open && <html.div style={styles.backdrop} onClick={close} />}\n <html.div\n id={listboxId}\n role=\"listbox\"\n aria-hidden={!open}\n style={[\n styles.popup,\n (!open || !coords) && styles.hidden,\n coords && styles.popupPosition(coords.top, coords.left, coords.width),\n ]}\n >\n {children}\n </html.div>\n </>\n )\n\n // SSR / pre-mount fallback: render inline (hidden under overflow parents but\n // won't crash). Once the mount exists, portal into it.\n return mount ? createPortal(node, mount) : node\n}\n\n// --- Item ---\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value: itemValue, children}: ItemProps) {\n const {\n value: selectedValue,\n setValue,\n close,\n registerLabel,\n highlightedId,\n setHighlightedId,\n registerItem,\n } = useSelect()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isSelected = selectedValue === itemValue\n const isHighlighted = highlightedId === id\n\n // Register label from DOM text content (works with both string and JSX children)\n useEffect(() => {\n const el = ref.current\n if (!el) return\n const text = el.textContent\n if (text) registerLabel(itemValue, text)\n }, [itemValue, registerLabel])\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, itemValue, el)\n }, [id, itemValue, registerItem])\n\n const handleClick = () => {\n setValue(itemValue)\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[\n styles.item,\n isSelected && styles.itemSelected,\n isHighlighted && styles.itemHighlighted,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- ItemText ---\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.span>{children}</html.span>\n}\n\nexport const Select = {\n Root,\n Trigger,\n Value,\n Icon,\n Popup,\n Item,\n ItemText,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 0,\n },\n group: {\n display: 'flex',\n flexDirection: 'column',\n },\n groupTrigger: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.xs,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n fontWeight: typography.fontWeightSemibold,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.05em',\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n cursor: 'pointer',\n transitionProperty: 'color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n groupTriggerActive: {\n color: colors.text,\n },\n chevron: {\n display: 'inline-flex',\n alignItems: 'center',\n transitionProperty: 'transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n chevronOpen: {\n transform: 'rotate(90deg)',\n },\n // Static (non-collapsible) section — see SideNav.Section.\n section: {\n display: 'flex',\n flexDirection: 'column',\n },\n sectionLabel: {\n paddingTop: spacing.md,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n fontWeight: typography.fontWeightSemibold,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.06em',\n color: colors.textMuted,\n },\n item: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: '6px',\n paddingBottom: '6px',\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightNormal,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 0,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'color, background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n textAlign: 'left' as const,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n },\n itemActive: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n backgroundColor: colors.bgCardHover,\n },\n // Active indicator — a bar at the rail's left edge that grows in on select.\n marker: {\n position: 'absolute',\n left: 0,\n top: '50%',\n width: '3px',\n height: 0,\n transform: 'translateY(-50%)',\n borderTopRightRadius: radii.full,\n borderBottomRightRadius: radii.full,\n backgroundColor: colors.accent,\n transitionProperty: 'height',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n markerActive: {\n height: '18px',\n },\n itemIcon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n width: '18px',\n height: '18px',\n },\n itemLabel: {\n flexGrow: 1,\n minWidth: 0,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SideNavContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n expandedGroups: Set<string>\n toggleGroup: (group: string) => void\n /** Idempotent expand (add-only) — used by auto-expand/defaultExpanded so a\n * group that qualifies twice (e.g. defaultExpanded AND holding the active\n * item) doesn't get toggled back closed. `toggleGroup` stays for user clicks. */\n expandGroup: (group: string) => void\n registerItem: (value: string) => () => void\n orderRef: React.RefObject<string[]>\n}\n\nexport const SideNavContext = createContext<SideNavContextValue | null>(null)\n\nexport function useSideNav() {\n const ctx = useContext(SideNavContext)\n if (!ctx) throw new Error('SideNav compound components must be used within SideNav.Root')\n return ctx\n}\n","import {type ReactNode, useState, useCallback, useRef, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {SideNavContext, useSideNav} from './SideNavContext'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n}\n\nfunction Root({children, value: controlledValue, defaultValue, onValueChange}: RootProps) {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const [expandedGroups, setExpandedGroups] = useState<Set<string>>(new Set())\n const orderRef = useRef<string[]>([])\n\n const toggleGroup = useCallback((group: string) => {\n setExpandedGroups((prev) => {\n const next = new Set(prev)\n if (next.has(group)) {\n next.delete(group)\n } else {\n next.add(group)\n }\n return next\n })\n }, [])\n\n // Idempotent expand — never closes an already-open group. The mount effects\n // in Group (defaultExpanded + auto-expand-active) use this instead of\n // toggleGroup so a group that qualifies on both counts stays open rather than\n // being toggled open-then-closed.\n const expandGroup = useCallback((group: string) => {\n setExpandedGroups((prev) => {\n if (prev.has(group)) return prev\n const next = new Set(prev)\n next.add(group)\n return next\n })\n }, [])\n\n const registerItem = useCallback((value: string) => {\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n return (\n <SideNavContext.Provider\n value={{\n activeValue,\n onSelect,\n expandedGroups,\n toggleGroup,\n expandGroup,\n registerItem,\n orderRef,\n }}\n >\n <html.nav role=\"navigation\" style={styles.root}>\n {children}\n </html.nav>\n </SideNavContext.Provider>\n )\n}\n\n// --- Group ---\n\ninterface GroupProps {\n children: ReactNode\n label: string\n groupKey?: string\n defaultExpanded?: boolean\n}\n\nfunction Group({children, label, groupKey, defaultExpanded}: GroupProps) {\n const key = groupKey ?? label\n const {expandedGroups, toggleGroup, expandGroup, activeValue} = useSideNav()\n const isExpanded = expandedGroups.has(key)\n const groupRef = useRef<HTMLDivElement>(null)\n\n // Auto-expand if this group contains the active item. Uses expandGroup (not\n // toggleGroup) so it never races the defaultExpanded effect into a closed\n // state when the active item lives in a defaultExpanded group.\n useEffect(() => {\n if (!activeValue || expandedGroups.has(key)) return\n const el = groupRef.current\n if (!el) return\n const activeBtn = el.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n if (activeBtn) {\n expandGroup(key)\n }\n }, [activeValue, key, expandedGroups, expandGroup])\n\n // Expand on first render if defaultExpanded (idempotent add, not a toggle).\n useEffect(() => {\n if (defaultExpanded) {\n expandGroup(key)\n }\n // Only run on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const hasActiveChild = (() => {\n if (!activeValue || !groupRef.current) return false\n return !!groupRef.current.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n })()\n\n return (\n <html.div ref={groupRef} style={styles.group}>\n <html.button\n type=\"button\"\n onClick={() => toggleGroup(key)}\n style={[styles.groupTrigger, hasActiveChild && styles.groupTriggerActive]}\n aria-expanded={isExpanded}\n >\n <html.span style={[styles.chevron, isExpanded && styles.chevronOpen]}>\n <svg\n width={10}\n height={10}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n </html.span>\n {label}\n </html.button>\n {isExpanded && children}\n </html.div>\n )\n}\n\n// --- Section ---\n\ninterface SectionProps {\n children: ReactNode\n label: string\n}\n\n/**\n * A static, non-collapsible grouping: an always-visible uppercase header with\n * its items below. Unlike `Group` there is no chevron, toggle, or hidden state\n * — use it when every section should stay open at a glance (a flat menu with\n * labelled regions rather than an accordion).\n */\nfunction Section({children, label}: SectionProps) {\n return (\n <html.div style={styles.section}>\n <html.div style={styles.sectionLabel}>{label}</html.div>\n {children}\n </html.div>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n children: ReactNode\n /** Optional leading glyph (e.g. a design-system `<Icon />`). Inherits the\n * item's text color, so it turns accent when the item is active. */\n icon?: ReactNode\n}\n\nfunction Item({value, children, icon}: ItemProps) {\n const {activeValue, onSelect, registerItem} = useSideNav()\n const isActive = activeValue === value\n\n useEffect(() => {\n return registerItem(value)\n }, [value, registerItem])\n\n return (\n <html.button\n type=\"button\"\n data-nav-value={value}\n onClick={() => onSelect(value)}\n style={[styles.item, isActive && styles.itemActive]}\n aria-current={isActive ? 'page' : undefined}\n >\n <html.span aria-hidden style={[styles.marker, isActive && styles.markerActive]} />\n {icon ? (\n <html.span aria-hidden style={styles.itemIcon}>\n {icon}\n </html.span>\n ) : null}\n <html.span style={styles.itemLabel}>{children}</html.span>\n </html.button>\n )\n}\n\nexport const SideNav = {\n Root,\n Group,\n Section,\n Item,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nconst spin = css.keyframes({\n '0%': {transform: 'rotate(0deg)'},\n '100%': {transform: 'rotate(360deg)'},\n})\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n spinner: {\n borderRadius: '50%',\n borderStyle: 'solid',\n borderColor: colors.border,\n borderTopColor: colors.accent,\n animationName: spin,\n animationDuration: '0.6s',\n animationTimingFunction: 'linear',\n animationIterationCount: 'infinite',\n },\n sm: {\n width: 16,\n height: 16,\n borderWidth: 2,\n },\n md: {\n width: 24,\n height: 24,\n borderWidth: 2,\n },\n lg: {\n width: 40,\n height: 40,\n borderWidth: 3,\n },\n srOnly: {\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n },\n})\n","import {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\n\ninterface SpinnerProps {\n size?: SpinnerSize\n label?: string\n}\n\nconst sizeMap = {\n sm: styles.sm,\n md: styles.md,\n lg: styles.lg,\n} as const\n\nexport function Spinner({size = 'md', label = 'Loading'}: SpinnerProps) {\n return (\n <html.div role=\"status\" style={styles.root}>\n <html.div style={[styles.spinner, sizeMap[size]]} aria-hidden />\n <html.span style={styles.srOnly}>{label}</html.span>\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {easing} from '@duro-app/tokens/tokens/motion.css'\n\nconst enter = css.keyframes({\n from: {opacity: 0, transform: 'translateY(10px)'},\n to: {opacity: 1, transform: 'translateY(0)'},\n})\n\nexport const styles = css.create({\n // Fixed, viewport-anchored stack. Portaled into the ThemeProvider mount so it\n // layers above dialogs; the container itself is click-through, each toast\n // re-enables pointer events.\n region: {\n position: 'fixed',\n bottom: spacing.lg,\n left: 0,\n right: 0,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n pointerEvents: 'none',\n },\n toast: {\n pointerEvents: 'auto',\n boxSizing: 'border-box',\n width: '100%',\n maxWidth: 440,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderLeftWidth: 3,\n backgroundColor: colors.bgCard,\n boxShadow: shadows.lg,\n color: colors.text,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n animationName: {\n default: enter,\n '@media (prefers-reduced-motion: reduce)': 'none',\n },\n animationDuration: '160ms',\n animationTimingFunction: easing.easeOut,\n },\n success: {borderLeftColor: colors.successBorder},\n error: {borderLeftColor: colors.errorBorder},\n info: {borderLeftColor: colors.infoBorder},\n\n iconWrap: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: 1,\n },\n iconSuccess: {color: colors.successText},\n iconError: {color: colors.errorText},\n iconInfo: {color: colors.infoText},\n\n content: {\n flex: 1,\n minWidth: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n },\n message: {\n color: colors.text,\n },\n action: {\n alignSelf: 'flex-start',\n marginTop: 2,\n padding: 0,\n borderWidth: 0,\n backgroundColor: 'transparent',\n color: colors.accent,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n textDecorationLine: 'underline',\n cursor: 'pointer',\n outlineStyle: {default: 'none', ':focus-visible': 'solid'},\n outlineWidth: 2,\n outlineColor: colors.accent,\n outlineOffset: 2,\n borderRadius: radii.sm,\n },\n closeBtn: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 2,\n marginTop: -1,\n borderWidth: 0,\n backgroundColor: 'transparent',\n color: {default: colors.textMuted, ':hover': colors.text},\n cursor: 'pointer',\n borderRadius: radii.sm,\n outlineStyle: {default: 'none', ':focus-visible': 'solid'},\n outlineWidth: 2,\n outlineColor: colors.accent,\n outlineOffset: 1,\n },\n})\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useSyncExternalStore,\n type ReactNode,\n} from 'react'\nimport {createPortal} from 'react-dom'\nimport {html} from 'react-strict-dom'\nimport {Icon, type IconName} from '../Icon'\nimport {usePortalMount} from '../ThemeProvider/ThemeProvider'\nimport {styles} from './styles.css'\n\nexport type ToastVariant = 'success' | 'error' | 'info'\n\nexport interface ToastAction {\n label: string\n onClick: () => void\n}\n\nexport interface ToastOptions {\n /** Visual + semantic tone. Errors announce assertively and linger longer. */\n variant?: ToastVariant\n message: ReactNode\n /** Optional single action, e.g. Undo. Runs, then dismisses the toast. */\n action?: ToastAction\n /** Auto-dismiss delay in ms. `0` (or negative) keeps it until dismissed. */\n duration?: number\n}\n\nexport interface ToastContextValue {\n /** Show a toast; returns its id so it can be dismissed programmatically. */\n toast: (opts: ToastOptions) => string\n dismiss: (id: string) => void\n}\n\ninterface ToastEntry {\n id: string\n variant: ToastVariant\n message: ReactNode\n action?: ToastAction\n duration: number\n}\n\ninterface ToastStore {\n subscribe: (cb: () => void) => () => void\n getSnapshot: () => readonly ToastEntry[]\n add: (opts: ToastOptions) => string\n remove: (id: string) => void\n}\n\nconst DEFAULT_DURATION: Record<ToastVariant, number> = {\n success: 5000,\n info: 5000,\n error: 8000,\n}\n\nfunction createToastStore(): ToastStore {\n let entries: ToastEntry[] = []\n let seq = 0\n const listeners = new Set<() => void>()\n const notify = () => listeners.forEach((l) => l())\n\n return {\n subscribe: (cb) => {\n listeners.add(cb)\n return () => listeners.delete(cb)\n },\n getSnapshot: () => entries,\n add: (opts) => {\n const variant = opts.variant ?? 'info'\n const id = `toast-${++seq}`\n const duration = opts.duration ?? DEFAULT_DURATION[variant]\n entries = [...entries, {id, variant, message: opts.message, action: opts.action, duration}]\n notify()\n return id\n },\n remove: (id) => {\n const next = entries.filter((e) => e.id !== id)\n if (next.length !== entries.length) {\n entries = next\n notify()\n }\n },\n }\n}\n\nconst variantIcon: Record<ToastVariant, IconName> = {\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n info: 'info-circle-filled',\n}\nconst variantIconStyle = {\n success: styles.iconSuccess,\n error: styles.iconError,\n info: styles.iconInfo,\n} as const\n\nconst ToastContext = createContext<ToastContextValue | null>(null)\n\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastContext)\n if (!ctx) throw new Error('useToast must be used within a <ToastProvider>')\n return ctx\n}\n\nfunction ToastItem({entry, onDismiss}: {entry: ToastEntry; onDismiss: (id: string) => void}) {\n const {id, variant, message, action, duration} = entry\n\n useEffect(() => {\n if (duration <= 0) return\n const timer = setTimeout(() => onDismiss(id), duration)\n return () => clearTimeout(timer)\n }, [id, duration, onDismiss])\n\n return (\n <html.div\n role={variant === 'error' ? 'alert' : 'status'}\n aria-live={variant === 'error' ? 'assertive' : 'polite'}\n style={[styles.toast, styles[variant]]}\n >\n <html.div style={[styles.iconWrap, variantIconStyle[variant]]}>\n <Icon name={variantIcon[variant]} size={18} />\n </html.div>\n <html.div style={styles.content}>\n <html.div style={styles.message}>{message}</html.div>\n {action ? (\n <html.button\n type=\"button\"\n style={styles.action}\n onClick={() => {\n action.onClick()\n onDismiss(id)\n }}\n >\n {action.label}\n </html.button>\n ) : null}\n </html.div>\n <html.button\n type=\"button\"\n aria-label=\"Dismiss\"\n style={styles.closeBtn}\n onClick={() => onDismiss(id)}\n >\n <Icon name=\"x-circle\" size={16} />\n </html.button>\n </html.div>\n )\n}\n\nexport function ToastProvider({children}: {children: ReactNode}) {\n const storeRef = useRef<ToastStore>(null)\n if (storeRef.current === null) {\n storeRef.current = createToastStore()\n }\n const store = storeRef.current\n\n const entries = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot)\n const mount = usePortalMount()\n\n const value = useMemo<ToastContextValue>(\n () => ({\n toast: (opts) => store.add(opts),\n dismiss: (id) => store.remove(id),\n }),\n [store],\n )\n\n const dismiss = useCallback((id: string) => store.remove(id), [store])\n\n const region = (\n <html.div role=\"region\" aria-label=\"Notifications\" style={styles.region}>\n {entries.map((entry) => (\n <ToastItem key={entry.id} entry={entry} onDismiss={dismiss} />\n ))}\n </html.div>\n )\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n {mount ? createPortal(region, mount) : region}\n </ToastContext.Provider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: spacing.md,\n },\n error: {\n color: colors.error,\n },\n success: {\n color: colors.success,\n },\n warning: {\n color: colors.warning,\n },\n info: {\n color: colors.info,\n },\n muted: {\n color: colors.textMuted,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type StatusIconName = Extract<\n IconName,\n 'x-circle' | 'check-circle' | 'check-done' | 'clock' | 'forbidden'\n>\nexport type StatusIconVariant = 'error' | 'success' | 'warning' | 'info' | 'muted'\n\ninterface StatusIconProps {\n name: StatusIconName\n size?: number\n variant?: StatusIconVariant\n}\n\nexport function StatusIcon({name, size = 48, variant = 'muted'}: StatusIconProps) {\n return (\n <html.div style={[styles.root, styles[variant]]}>\n <Icon name={name} size={size} />\n </html.div>\n )\n}\n","import {createContext, useContext} from 'react'\n\nexport interface TagGroupContextValue {\n values: string[]\n addTag: (value: string) => void\n removeTag: (value: string) => void\n editable: boolean\n setEditable: (v: boolean) => void\n disabled: boolean\n validate?: (value: string) => true | string\n focusedIndex: number\n setFocusedIndex: (index: number) => void\n inputRef: React.RefObject<HTMLInputElement | null>\n gridId: string\n name?: string\n}\n\nexport const TagGroupContext = createContext<TagGroupContextValue | null>(null)\n\nexport function useTagGroup(): TagGroupContextValue | null {\n return useContext(TagGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightNormal,\n lineHeight: 1,\n borderRadius: 4,\n whiteSpace: 'nowrap',\n minWidth: 0,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n sizeMd: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.ms,\n paddingRight: spacing.ms,\n fontSize: typography.fontSizeSm,\n },\n sizeSm: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n // Opt-in wrapping for long identifier-style labels. Overrides the base\n // nowrap so the text breaks within its container (e.g. a table cell)\n // instead of overflowing into the next column. `anywhere` also lets the\n // tag shrink below its content's intrinsic width so a flex/grid parent can\n // actually give it a narrow track.\n wrap: {\n whiteSpace: 'normal',\n overflowWrap: 'anywhere',\n lineHeight: 1.35,\n textAlign: 'start',\n },\n // Reduce right padding when removable to keep visual balance with the button\n removableMd: {\n paddingRight: spacing.sm,\n },\n removableSm: {\n paddingRight: spacing.xs,\n },\n default: {\n backgroundColor: {\n default: colors.bg,\n ':hover': colors.bgCardHover,\n },\n color: colors.text,\n },\n success: {\n backgroundColor: colors.successBg,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n color: colors.warningText,\n },\n error: {\n backgroundColor: colors.errorBg,\n color: colors.errorText,\n },\n info: {\n backgroundColor: colors.infoBg,\n color: colors.infoText,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n removeButton: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 0,\n borderWidth: 0,\n backgroundColor: 'transparent',\n color: 'inherit',\n cursor: 'pointer',\n borderRadius: radii.full,\n opacity: {\n default: 0.6,\n ':hover': 1,\n },\n outlineWidth: 0,\n },\n removeButtonDisabled: {\n cursor: 'not-allowed',\n opacity: 0.4,\n },\n})\n","import {type ReactNode, useCallback, useRef} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useTagGroup} from '../TagGroup/TagGroupContext'\nimport {styles} from './styles.css'\n\nexport type TagVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type TagSize = 'sm' | 'md'\n\ninterface TagProps {\n /** Value identifier — required when used inside TagGroup */\n value?: string\n variant?: TagVariant\n size?: TagSize\n /** Show remove button. Auto-derived from TagGroup context when inside one. */\n removable?: boolean\n /** Called when remove button is clicked. Auto-wired to TagGroup when inside one. */\n onRemove?: () => void\n disabled?: boolean\n /**\n * Allow the label to wrap / break instead of staying on one line. Tags are\n * `white-space: nowrap` by default (they read as pills); set this for long\n * identifier-style values (e.g. `lldap.group.member.remove`) sitting in a\n * constrained column, so they break within their cell instead of leaking\n * into the next one.\n */\n wrap?: boolean\n children: ReactNode\n}\n\nconst sizeMap = {\n sm: styles.sizeSm,\n md: styles.sizeMd,\n} as const\n\nconst removableSizeMap = {\n sm: styles.removableSm,\n md: styles.removableMd,\n} as const\n\nexport function Tag({\n value,\n variant = 'default',\n size = 'md',\n removable: removableProp,\n onRemove: onRemoveProp,\n disabled: disabledProp = false,\n wrap = false,\n children,\n}: TagProps) {\n const group = useTagGroup()\n const contentRef = useRef<HTMLElement>(null)\n\n const isGrouped = group !== null\n const disabled = disabledProp || (group?.disabled ?? false)\n const removable = removableProp ?? (isGrouped ? group.editable : false)\n\n const onRemove = useCallback(() => {\n if (disabled) return\n if (onRemoveProp) {\n onRemoveProp()\n } else if (isGrouped && value !== undefined) {\n group.removeTag(value)\n }\n }, [disabled, onRemoveProp, isGrouped, value, group])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return\n if ((e.key === 'Backspace' || e.key === 'Delete') && removable) {\n e.preventDefault()\n onRemove()\n }\n // Arrow key navigation delegated to TagGroup via context\n if (isGrouped && (e.key === 'ArrowLeft' || e.key === 'ArrowRight')) {\n e.preventDefault()\n const idx = value !== undefined ? group.values.indexOf(value) : -1\n if (e.key === 'ArrowLeft' && idx > 0) {\n group.setFocusedIndex(idx - 1)\n } else if (e.key === 'ArrowRight') {\n if (idx < group.values.length - 1) {\n group.setFocusedIndex(idx + 1)\n } else {\n // Move focus to input\n group.inputRef.current?.focus()\n group.setFocusedIndex(-1)\n }\n }\n }\n },\n [disabled, removable, onRemove, isGrouped, value, group],\n )\n\n const removeLabel = contentRef.current?.textContent\n ? `Remove ${contentRef.current.textContent}`\n : 'Remove'\n\n const tagContent = (\n <>\n <html.span ref={contentRef} {...(isGrouped ? {role: 'gridcell' as any} : {})}>\n {children}\n </html.span>\n {removable && (\n <html.span {...(isGrouped ? {role: 'gridcell' as any} : {})}>\n <html.button\n type=\"button\"\n aria-label={removeLabel}\n disabled={disabled}\n onClick={(e) => {\n ;(e as any).stopPropagation?.()\n onRemove()\n }}\n tabIndex={-1}\n style={[styles.removeButton, disabled && styles.removeButtonDisabled]}\n >\n <svg\n width={size === 'sm' ? 10 : 12}\n height={size === 'sm' ? 10 : 12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n >\n <path\n d=\"M3 3l6 6M9 3l-6 6\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n </html.span>\n )}\n </>\n )\n\n return (\n <html.span\n {...(isGrouped ? {role: 'row' as any} : {})}\n tabIndex={isGrouped ? 0 : undefined}\n onKeyDown={isGrouped ? (handleKeyDown as any) : undefined}\n style={[\n styles.base,\n sizeMap[size],\n removable && removableSizeMap[size],\n styles[variant],\n disabled && styles.disabled,\n wrap && styles.wrap,\n ]}\n >\n {tagContent}\n </html.span>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n container: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n containerError: {},\n containerDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n // Static display (no Input) — no gap needed\n containerStatic: {\n gap: 0,\n },\n list: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: spacing.xs,\n alignItems: 'center',\n },\n input: {\n width: '100%',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':focus': colors.accent,\n },\n borderRadius: radii.sm,\n backgroundColor: colors.bg,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n minHeight: 40,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus': 1,\n },\n boxSizing: 'border-box',\n },\n inputError: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n liveRegion: {\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n },\n})\n","import {\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {TagGroupContext, type TagGroupContextValue} from './TagGroupContext'\nimport {styles} from './styles.css'\n\n// ---------------------------------------------------------------------------\n// Local context accessor (non-throwing, returns null)\n// ---------------------------------------------------------------------------\n\nfunction useTagGroupCtx() {\n return useContext(TagGroupContext)\n}\n\n// ---------------------------------------------------------------------------\n// TagGroup.Root\n// ---------------------------------------------------------------------------\n\ninterface RootProps {\n value?: string[]\n defaultValue?: string[]\n onValueChange?: (values: string[]) => void\n /** Validate a value before adding. Return `true` if valid, or an error string. */\n onValidate?: (value: string) => true | string\n disabled?: boolean\n /** Form field name — renders hidden inputs for each tag value */\n name?: string\n 'aria-label'?: string\n children: ReactNode\n}\n\nfunction Root({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n onValidate,\n disabled: disabledProp = false,\n name,\n 'aria-label': ariaLabel,\n children,\n}: RootProps) {\n const gridId = useId()\n const fieldCtx = useFieldContext()\n const [values, setValues] = useControllableValue(controlledValue, defaultValue, onValueChange)\n const [focusedIndex, setFocusedIndex] = useState(-1)\n const [editable, setEditable] = useState(false)\n const [announcement, setAnnouncement] = useState('')\n const inputRef = useRef<HTMLInputElement>(null)\n\n const disabled = disabledProp || (fieldCtx?.disabled ?? false)\n const isInvalid = fieldCtx?.invalid ?? false\n\n const addTag = useCallback(\n (value: string) => {\n const trimmed = value.trim()\n if (!trimmed) return\n if (values.includes(trimmed)) return\n if (onValidate) {\n const result = onValidate(trimmed)\n if (result !== true) return\n }\n setValues([...values, trimmed])\n setAnnouncement(`Added ${trimmed}`)\n },\n [values, setValues, onValidate],\n )\n\n const removeTag = useCallback(\n (value: string) => {\n const idx = values.indexOf(value)\n if (idx === -1) return\n const next = values.filter((v) => v !== value)\n setValues(next)\n setAnnouncement(`Removed ${value}`)\n\n // Focus management: move to next tag, or previous, or input\n if (next.length === 0) {\n inputRef.current?.focus()\n setFocusedIndex(-1)\n } else if (idx >= next.length) {\n setFocusedIndex(next.length - 1)\n } else {\n setFocusedIndex(idx)\n }\n },\n [values, setValues],\n )\n\n // Focus the tag at focusedIndex when it changes\n useEffect(() => {\n if (focusedIndex >= 0 && focusedIndex < values.length) {\n const container = document.getElementById(gridId)\n if (!container) return\n const rows = container.querySelectorAll('[role=\"row\"]')\n const target = rows[focusedIndex] as HTMLElement | undefined\n target?.focus()\n }\n }, [focusedIndex, gridId, values.length])\n\n const ctx = useMemo<TagGroupContextValue>(\n () => ({\n values,\n addTag,\n removeTag,\n editable,\n setEditable,\n disabled,\n validate: onValidate,\n focusedIndex,\n setFocusedIndex,\n inputRef,\n gridId,\n name,\n }),\n [values, addTag, removeTag, editable, disabled, onValidate, focusedIndex, gridId, name],\n )\n\n return (\n <TagGroupContext.Provider value={ctx}>\n <html.div style={styles.root} aria-label={ariaLabel}>\n <html.div\n style={[\n styles.container,\n !editable && styles.containerStatic,\n isInvalid && styles.containerError,\n disabled && styles.containerDisabled,\n ]}\n aria-describedby={\n fieldCtx\n ? `${fieldCtx.descriptionId} ${fieldCtx.invalid ? fieldCtx.errorId : ''}`.trim()\n : undefined\n }\n aria-invalid={isInvalid || undefined}\n >\n {children}\n </html.div>\n\n {/* Hidden inputs for form submission */}\n {name && values.map((v) => <html.input key={v} type=\"hidden\" name={name} value={v} />)}\n\n {/* Live region for screen reader announcements */}\n <html.div role=\"status\" aria-live=\"polite\" aria-atomic style={styles.liveRegion}>\n {announcement}\n </html.div>\n </html.div>\n </TagGroupContext.Provider>\n )\n}\n\n// ---------------------------------------------------------------------------\n// TagGroup.List\n// ---------------------------------------------------------------------------\n\ninterface ListProps {\n children: ReactNode\n 'aria-label'?: string\n}\n\nfunction List({children, 'aria-label': ariaLabel}: ListProps) {\n const ctx = useTagGroupCtx()\n\n return (\n <html.div role={'grid' as any} aria-label={ariaLabel} id={ctx?.gridId} style={styles.list}>\n {children}\n </html.div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// TagGroup.Input\n// ---------------------------------------------------------------------------\n\ninterface InputProps {\n placeholder?: string\n}\n\nfunction Input({placeholder}: InputProps) {\n const ctx = useTagGroupCtx()\n const [inputValue, setInputValue] = useState('')\n const localRef = useRef<HTMLInputElement>(null)\n\n // Sync local ref with context inputRef\n useEffect(() => {\n if (ctx?.inputRef) {\n ;(ctx.inputRef as React.MutableRefObject<HTMLInputElement | null>).current = localRef.current\n }\n })\n\n // Register as editable on mount\n useEffect(() => {\n ctx?.setEditable(true)\n return () => ctx?.setEditable(false)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n const commitValueRef = useRef<(raw: string) => boolean>(() => false)\n commitValueRef.current = (raw: string) => {\n const trimmed = raw.trim()\n if (!trimmed || !ctx) return false\n ctx.addTag(trimmed)\n setInputValue('')\n return true\n }\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const el = localRef.current\n if (!el) return\n\n function handleKeyDown(e: KeyboardEvent) {\n if (!ctx) return\n const target = e.target as HTMLInputElement\n\n if (e.key === 'Enter' || e.key === ',' || e.key === ';') {\n e.preventDefault()\n commitValueRef.current(target.value)\n return\n }\n\n if (e.key === 'Tab' && target.value.trim()) {\n e.preventDefault()\n commitValueRef.current(target.value)\n return\n }\n\n if (e.key === 'Backspace' && !target.value && ctx.values.length > 0) {\n e.preventDefault()\n ctx.removeTag(ctx.values[ctx.values.length - 1])\n return\n }\n\n if (e.key === 'ArrowLeft' && (target.selectionStart ?? 0) === 0 && ctx.values.length > 0) {\n e.preventDefault()\n ctx.setFocusedIndex(ctx.values.length - 1)\n return\n }\n\n if (e.key === 'Escape') {\n setInputValue('')\n }\n }\n\n function handlePaste(e: ClipboardEvent) {\n if (!ctx) return\n const text = e.clipboardData?.getData('text') ?? ''\n const items = text\n .split(/[\\n,;]+/)\n .map((s) => s.trim())\n .filter(Boolean)\n if (items.length > 1) {\n e.preventDefault()\n for (const item of items) {\n ctx.addTag(item)\n }\n }\n }\n\n function handleFocus() {\n ctx?.setFocusedIndex(-1)\n }\n\n el.addEventListener('keydown', handleKeyDown)\n el.addEventListener('paste', handlePaste)\n el.addEventListener('focus', handleFocus)\n return () => {\n el.removeEventListener('keydown', handleKeyDown)\n el.removeEventListener('paste', handlePaste)\n el.removeEventListener('focus', handleFocus)\n }\n }, [ctx])\n\n return (\n <html.input\n ref={localRef as React.Ref<HTMLInputElement>}\n type=\"text\"\n value={inputValue}\n onChange={(e: any) => setInputValue(e.target.value)}\n placeholder={placeholder}\n disabled={ctx?.disabled}\n style={styles.input}\n />\n )\n}\n\n// ---------------------------------------------------------------------------\n// Namespace export\n// ---------------------------------------------------------------------------\n\nexport const TagGroup = {\n Root,\n List,\n Input,\n}\n","/**\n * @license react-strict-dom\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\nimport { jsx } from 'react/jsx-runtime';\nimport * as stylex from '@stylexjs/stylex';\nexport { stylex as css };\n\nconst loggedMessages = {};\nfunction errorMsg(msg) {\n if (process.env.NODE_ENV !== 'test' && loggedMessages[msg]) {\n return;\n }\n loggedMessages[msg] = true;\n console.error(`[error] React Strict DOM: ${msg}`);\n}\n\nconst strictAttributeSet = new Set(['alt', 'aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colindextext', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowindextext', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'autoCapitalize', 'autoComplete', 'autoFocus', 'checked', 'children', 'crossOrigin', 'decoding', 'defaultChecked', 'defaultValue', 'dir', 'disabled', 'download', 'draggable', 'elementTiming', 'enterKeyHint', 'fetchPriority', 'for', 'height', 'hidden', 'href', 'id', 'inert', 'inputMode', 'label', 'lang', 'loading', 'max', 'maxLength', 'min', 'minLength', 'multiple', 'name', 'onAuxClick', 'onBeforeInput', 'onBlur', 'onChange', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onError', 'onFocus', 'onFocusIn', 'onFocusOut', 'onFullscreenChange', 'onFullscreenError', 'onGotPointerCapture', 'onInput', 'onInvalid', 'onKeyDown', 'onKeyUp', 'onLoad', 'onLostPointerCapture', 'onPaste', 'onPointerCancel', 'onPointerDown', 'onPointerEnter', 'onPointerLeave', 'onPointerMove', 'onPointerOut', 'onPointerOver', 'onPointerUp', 'onScroll', 'onSelect', 'onSelectionChange', 'onWheel', 'placeholder', 'readOnly', 'referrerPolicy', 'rel', 'required', 'role', 'rows', 'selected', 'spellCheck', 'src', 'srcSet', 'step', 'style', 'tabIndex', 'target', 'type', 'value', 'width', 'suppressHydrationWarning', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart']);\nfunction isPropAllowed(key) {\n return strictAttributeSet.has(key) || key.indexOf('data-') > -1;\n}\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nfunction validateStrictProps(props) {\n Object.keys(props).forEach(key => {\n const isValid = isPropAllowed(key);\n if (!isValid) {\n errorMsg(`invalid prop \"${key}\"`);\n delete props[key];\n }\n });\n}\nfunction createStrictDOMComponent(TagName, defaultStyle) {\n const debugStyle = {\n $$css: true,\n 'debug::name': `html-${TagName}`\n };\n function Component({\n ref,\n ...props\n }) {\n const {\n for: htmlFor,\n style,\n ...restProps\n } = props;\n const hostProps = restProps;\n validateStrictProps(hostProps);\n if (htmlFor != null) {\n hostProps.htmlFor = htmlFor;\n }\n if (props.role != null) {\n hostProps.role = props.role === 'none' ? 'presentation' : props.role;\n }\n if (TagName === 'button') {\n hostProps.type = hostProps.type ? hostProps.type : 'button';\n } else if (TagName === 'input' || TagName === 'textarea') {\n hostProps.dir = hostProps.dir ? hostProps.dir : 'auto';\n }\n const hostStyleProps = merge([debugStyle, defaultStyle, style]);\n const element = jsx(TagName, {\n ...hostProps,\n ...hostStyleProps,\n ref: ref\n });\n return element;\n }\n Component.displayName = `html.${TagName}`;\n return Component;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a$1 = styles.inline;\nconst article$1 = styles.block;\nconst aside$1 = styles.block;\nconst b$1 = styles.inline;\nconst bdi$1 = styles.inline;\nconst bdo$1 = styles.inline;\nconst blockquote$1 = styles.block;\nconst br$1 = null;\nconst button$1 = [styles.inlineblock, styles.button];\nconst code$1 = [styles.inline, styles.codePre];\nconst del$1 = null;\nconst div$1 = styles.block;\nconst em$1 = styles.inline;\nconst fieldset$1 = styles.block;\nconst footer$1 = styles.block;\nconst form$1 = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header$1 = styles.block;\nconst hr$1 = [styles.block, styles.hr];\nconst i$1 = styles.inline;\nconst img$1 = styles.img;\nconst input$1 = [styles.inlineblock, styles.input];\nconst ins$1 = null;\nconst kbd$1 = null;\nconst label$1 = styles.inline;\nconst li$1 = styles.block;\nconst main$1 = styles.block;\nconst mark$1 = styles.inline;\nconst nav$1 = styles.block;\nconst ol$1 = [styles.list, styles.block];\nconst optgroup$1 = null;\nconst option$1 = null;\nconst p$1 = styles.block;\nconst pre$1 = [styles.block, styles.codePre];\nconst s$1 = null;\nconst section$1 = styles.block;\nconst select$1 = styles.inlineblock;\nconst span$1 = styles.inline;\nconst strong$1 = [styles.inline, styles.strong];\nconst sub$1 = styles.inline;\nconst sup$1 = styles.inline;\nconst textarea$1 = [styles.inlineblock, styles.textarea];\nconst u$1 = null;\nconst ul$1 = [styles.list, styles.block];\nconst defaultStyles = {\n a: a$1,\n article: article$1,\n aside: aside$1,\n b: b$1,\n bdi: bdi$1,\n bdo: bdo$1,\n blockquote: blockquote$1,\n br: br$1,\n button: button$1,\n code: code$1,\n del: del$1,\n div: div$1,\n em: em$1,\n fieldset: fieldset$1,\n footer: footer$1,\n form: form$1,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header$1,\n hr: hr$1,\n i: i$1,\n img: img$1,\n input: input$1,\n ins: ins$1,\n kbd: kbd$1,\n label: label$1,\n li: li$1,\n main: main$1,\n mark: mark$1,\n nav: nav$1,\n ol: ol$1,\n optgroup: optgroup$1,\n option: option$1,\n p: p$1,\n pre: pre$1,\n s: s$1,\n section: section$1,\n select: select$1,\n span: span$1,\n strong: strong$1,\n sub: sub$1,\n sup: sup$1,\n textarea: textarea$1,\n u: u$1,\n ul: ul$1\n};\n\nconst a = createStrictDOMComponent('a', defaultStyles.a);\nconst article = createStrictDOMComponent('article', defaultStyles.article);\nconst aside = createStrictDOMComponent('aside', defaultStyles.aside);\nconst b = createStrictDOMComponent('b', defaultStyles.b);\nconst bdi = createStrictDOMComponent('bdi', defaultStyles.bdi);\nconst bdo = createStrictDOMComponent('bdo', defaultStyles.bdo);\nconst blockquote = createStrictDOMComponent('blockquote', defaultStyles.blockquote);\nconst br = createStrictDOMComponent('br', defaultStyles.br);\nconst button = createStrictDOMComponent('button', defaultStyles.button);\nconst code = createStrictDOMComponent('code', defaultStyles.code);\nconst del = createStrictDOMComponent('del', defaultStyles.del);\nconst div = createStrictDOMComponent('div', defaultStyles.div);\nconst em = createStrictDOMComponent('em', defaultStyles.em);\nconst fieldset = createStrictDOMComponent('fieldset', defaultStyles.fieldset);\nconst footer = createStrictDOMComponent('footer', defaultStyles.footer);\nconst form = createStrictDOMComponent('form', defaultStyles.form);\nconst h1 = createStrictDOMComponent('h1', defaultStyles.h1);\nconst h2 = createStrictDOMComponent('h2', defaultStyles.h2);\nconst h3 = createStrictDOMComponent('h3', defaultStyles.h3);\nconst h4 = createStrictDOMComponent('h4', defaultStyles.h4);\nconst h5 = createStrictDOMComponent('h5', defaultStyles.h5);\nconst h6 = createStrictDOMComponent('h6', defaultStyles.h6);\nconst header = createStrictDOMComponent('header', defaultStyles.header);\nconst hr = createStrictDOMComponent('hr', defaultStyles.hr);\nconst i = createStrictDOMComponent('i', defaultStyles.i);\nconst img = createStrictDOMComponent('img', defaultStyles.img);\nconst input = createStrictDOMComponent('input', defaultStyles.input);\nconst ins = createStrictDOMComponent('ins', defaultStyles.ins);\nconst kbd = createStrictDOMComponent('kbd', defaultStyles.kbd);\nconst label = createStrictDOMComponent('label', defaultStyles.label);\nconst li = createStrictDOMComponent('li', defaultStyles.li);\nconst main = createStrictDOMComponent('main', defaultStyles.main);\nconst mark = createStrictDOMComponent('mark', defaultStyles.mark);\nconst nav = createStrictDOMComponent('nav', defaultStyles.nav);\nconst ol = createStrictDOMComponent('ol', defaultStyles.ol);\nconst optgroup = createStrictDOMComponent('optgroup', defaultStyles.optgroup);\nconst option = createStrictDOMComponent('option', defaultStyles.option);\nconst p = createStrictDOMComponent('p', defaultStyles.p);\nconst pre = createStrictDOMComponent('pre', defaultStyles.pre);\nconst s = createStrictDOMComponent('s', defaultStyles.s);\nconst section = createStrictDOMComponent('section', defaultStyles.section);\nconst select = createStrictDOMComponent('select', defaultStyles.select);\nconst span = createStrictDOMComponent('span', defaultStyles.span);\nconst strong = createStrictDOMComponent('strong', defaultStyles.strong);\nconst sub = createStrictDOMComponent('sub', defaultStyles.sub);\nconst sup = createStrictDOMComponent('sup', defaultStyles.sup);\nconst textarea = createStrictDOMComponent('textarea', defaultStyles.textarea);\nconst u = createStrictDOMComponent('u', defaultStyles.u);\nconst ul = createStrictDOMComponent('ul', defaultStyles.ul);\n\nvar html = /*#__PURE__*/Object.freeze({\n __proto__: null,\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: h1,\n h2: h2,\n h3: h3,\n h4: h4,\n h5: h5,\n h6: h6,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n});\n\nexport { html };\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\n// Container-query thresholds. Picked for typical 5-7 column admin tables —\n// see Table.stories.tsx \"Responsive\" for the visual reasoning. Defined\n// once here so it's clear they're a design-system constant, not a magic\n// number sprinkled across files.\nconst COMPACT_BP = '720px'\nconst STACK_BP = '440px'\n\nexport const styles = css.create({\n // Outer wrapper that hosts the @container query. Wraps SortChip + Root\n // + Pagination so all three react to the same width. Root itself does\n // NOT carry containerType — keeping a single query target per Table.\n //\n // @deprecated Use Table.Root's sortChip/pagination slot props instead.\n // This style backs the deprecated <Table.Container> wrapper.\n container: {\n containerType: 'inline-size',\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n\n // The same containment chrome, but applied by Root when responsive=true.\n // Mirrors `container` so consumers don't need to wrap manually.\n rootContainer: {\n containerType: 'inline-size',\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n\n // Applied when Row receives an `onClick` handler. Cursor signals clickability;\n // the :focus-visible outline meets WCAG 2.4.7 for keyboard navigation.\n clickableRow: {\n cursor: 'pointer',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: -2,\n },\n\n // Root — the single grid container for the table itself\n root: {\n display: 'grid',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n overflow: 'hidden',\n backgroundColor: colors.bgCard,\n fontFamily: typography.fontFamily,\n color: colors.text,\n },\n\n // Stack-mode override: the Root's grid collapses to a single column so\n // each Row spans full width and stacks vertically.\n // NOTE: gridTemplateColumns is intentionally absent here. It is handled by\n // gridColumnsResponsive() so that StyleX conflict resolution does not remove\n // the explicit column template (a later style with the same property key\n // always wins, so combining gridColumns + rootResponsive in one array would\n // silently drop the column template).\n rootResponsive: {\n // The card-list look needs the outer border to disappear in stack\n // mode — each row paints its own border.\n borderWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n backgroundColor: {\n default: colors.bgCard,\n [`@container (max-width: ${STACK_BP})`]: 'transparent',\n },\n overflow: {\n default: 'hidden',\n [`@container (max-width: ${STACK_BP})`]: 'visible',\n },\n rowGap: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n },\n\n // Header group — hidden entirely in stack mode\n header: {\n display: {\n default: 'grid',\n [`@container (max-width: ${STACK_BP})`]: 'none',\n },\n gridColumn: '1 / -1',\n gridTemplateColumns: 'subgrid',\n backgroundColor: colors.bgCard,\n },\n\n // Body group\n body: {\n display: 'grid',\n gridColumn: '1 / -1',\n gridTemplateColumns: 'subgrid',\n },\n\n // Row — spans all columns. In stack mode its template flips to 1fr so\n // children stack as grid items in a single column (we keep grid context\n // so cells with `gridColumn` overrides still compute).\n row: {\n display: 'grid',\n gridColumn: '1 / -1',\n gridTemplateColumns: {\n default: 'subgrid',\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n borderBottomWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n bodyRow: {\n backgroundColor: {\n default: 'transparent',\n [`@container (max-width: ${STACK_BP})`]: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n // Stack-mode card chrome\n padding: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n borderRadius: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: radii.sm,\n },\n borderWidth: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: 1,\n },\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n\n // Header cell — keeps headers on a single line in compact mode\n headerCell: {\n fontWeight: typography.fontWeightSemibold,\n color: colors.textMuted,\n textAlign: 'start',\n // Match the body cell: shrink inside the track + wrap, so header labels\n // don't overlap when many columns are cramped.\n minWidth: 0,\n overflowWrap: 'break-word',\n whiteSpace: {\n default: 'normal',\n [`@container (max-width: ${COMPACT_BP})`]: 'nowrap',\n },\n },\n\n // Body cell. Text wraps by default — preferring \"wrap to a 2nd line\" over\n // \"truncate with ellipsis\" matches BI/data-reporting conventions where\n // hiding content (even with a visual hint) is treated as data loss.\n // Consumers that explicitly want single-line truncation use Text's\n // `truncate` prop, which sets its own nowrap + overflow + ellipsis chain\n // on the Text element itself. Buttons and badges already enforce\n // `white-space: nowrap` internally, so they're unaffected by this\n // default. In stack mode the cell becomes a 2-column grid for\n // label / value.\n cell: {\n color: colors.text,\n display: {\n default: 'flex',\n [`@container (max-width: ${STACK_BP})`]: 'grid',\n },\n alignItems: 'center',\n // Always let the cell shrink inside its `minmax(0, 1fr)` track. Previously\n // this was `auto` in the default (wide) band on the assumption there's\n // \"enough room\" — but a table with many columns (or wide content) whose\n // combined intrinsic width exceeds the container then can't shrink, so\n // content spills its track and overlaps the next column. `0` + the\n // wrapping below keeps every cell inside its column at any width.\n minWidth: 0,\n overflow: {\n // Safety against pathological unbreakable content (long URLs,\n // dataless ids) at narrow widths.\n default: 'visible',\n [`@container (max-width: ${COMPACT_BP})`]: 'hidden',\n },\n whiteSpace: 'normal',\n // Break long unbreakable tokens (emails, UUIDs) so they wrap within the\n // column instead of forcing it wider / overflowing.\n overflowWrap: 'break-word',\n gridTemplateColumns: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: '1fr 2fr',\n },\n gap: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n },\n\n // Wrapper around a (non-actions) cell's value. A raw text node is an\n // anonymous flex item with `min-width: auto`, so it refuses to shrink and\n // overflows its column even when the cell itself can shrink. Giving the value\n // its own `min-width: 0` flex item lets the text wrap inside the column.\n cellValue: {\n minWidth: 0,\n flexGrow: 1,\n overflowWrap: 'break-word',\n },\n\n // Label rendered as a real <span> inside each cell. Display:none in\n // default/compact, shown only in stack — matches StyleX guidance to\n // prefer real elements over ::before/::after for non-shadow-DOM cases.\n cellLabel: {\n display: {\n default: 'none',\n [`@container (max-width: ${STACK_BP})`]: 'block',\n },\n color: colors.textMuted,\n fontWeight: typography.fontWeightMedium,\n fontSize: typography.fontSizeXs,\n },\n\n // Actions cell. In default/compact behaves like any cell. In stack\n // mode: full-width footer of the card, right-aligned, with a top\n // separator. Label span is suppressed in JSX (Cell does not render it\n // when isActions=true).\n cellActions: {\n gridTemplateColumns: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n justifyContent: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: 'flex-end',\n },\n marginTop: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n paddingTop: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n borderTopWidth: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: 1,\n },\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // Size: sm\n cellSm: {\n paddingTop: {\n default: spacing.xs,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.xs,\n },\n paddingBottom: {\n default: spacing.xs,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.xs,\n },\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n // Size: md\n cellMd: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: {\n default: spacing.md,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.sm,\n },\n paddingRight: {\n default: spacing.md,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.sm,\n },\n fontSize: typography.fontSizeSm,\n },\n\n // Variant: striped (even body rows). Suppressed in stack — cards have\n // their own surface and zebra-striping reads as a bug there.\n stripedEven: {\n backgroundColor: {\n default: colors.bgCardHover,\n [`@container (max-width: ${STACK_BP})`]: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n },\n\n // Variant: bordered (cells get side borders). Suppressed in stack.\n borderedCell: {\n borderRightWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n borderedCellLast: {\n borderRightWidth: 0,\n },\n\n // SortChip — visible only in stack mode\n sortChip: {\n display: {\n default: 'none',\n [`@container (max-width: ${STACK_BP})`]: 'inline-flex',\n },\n alignSelf: 'flex-start',\n },\n\n // --- JS-measured force-stack variants ---\n //\n // A container query can only test the container's WIDTH — it can't know\n // \"6 columns won't fit here\". So a dense table can be wider than STACK_BP\n // yet still crush every cell to a few characters. Table.Root measures the\n // container with a ResizeObserver and, when `width < columnCount ×\n // minColumnWidth`, sets `stacked` in context; each component then also\n // applies its `*Stacked` variant here. These mirror the values in the\n // `@container (max-width: ${STACK_BP})` branches above, so JS-forced and\n // CSS-driven stacking render identically. The @container base is kept as\n // the SSR-safe path for genuinely narrow (mobile) widths — no JS, no\n // hydration flash — while these handle the cramped medium-width case.\n rootStacked: {\n gridTemplateColumns: '1fr',\n borderWidth: 0,\n backgroundColor: 'transparent',\n overflow: 'visible',\n rowGap: spacing.sm,\n },\n headerStacked: {\n display: 'none',\n },\n rowStacked: {\n gridTemplateColumns: '1fr',\n borderBottomWidth: 0,\n },\n bodyRowStacked: {\n backgroundColor: {\n default: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n padding: spacing.sm,\n borderRadius: radii.sm,\n borderWidth: 1,\n },\n cellStacked: {\n display: 'grid',\n gridTemplateColumns: '1fr 2fr',\n gap: spacing.sm,\n },\n cellLabelStacked: {\n display: 'block',\n },\n cellActionsStacked: {\n gridTemplateColumns: '1fr',\n justifyContent: 'flex-end',\n marginTop: spacing.sm,\n paddingTop: spacing.sm,\n borderTopWidth: 1,\n },\n borderedCellStacked: {\n borderRightWidth: 0,\n },\n sortChipStacked: {\n display: 'inline-flex',\n },\n\n // Dynamic: grid columns applied on Root (non-responsive path only).\n gridColumns: (template: string) => ({\n gridTemplateColumns: template,\n }),\n\n // Dynamic: grid columns at three tiers (default / compact / stack) in\n // one style. Used instead of gridColumns() when responsive=true so that\n // every gridTemplateColumns rule lives in the same StyleX style object —\n // splitting them would let StyleX's conflict resolution drop the\n // earlier classes (the LAST style wins per property key).\n //\n // - default: balanced multi-column layout for desktop widths\n // - @container (max-width: COMPACT_BP): consumer-supplied \"compact\"\n // template, e.g. give a badge column max-content and let the action\n // column absorb the slack so its hint text fits on one line\n // - @container (max-width: STACK_BP): collapse to a single column so\n // each row becomes a card\n gridColumnsResponsive: (template: string, compactTemplate: string) => ({\n gridTemplateColumns: {\n default: template,\n [`@container (max-width: ${COMPACT_BP})`]: compactTemplate,\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n }),\n})\n","import type {Table} from '@tanstack/react-table'\nimport {html} from 'react-strict-dom'\nimport {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nconst styles = css.create({\n root: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.sm,\n },\n button: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: 6,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.text,\n fontSize: typography.fontSizeSm,\n cursor: 'pointer',\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n buttonDisabled: {\n opacity: 0.4,\n cursor: 'not-allowed',\n backgroundColor: 'transparent',\n },\n pageInfo: {\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n },\n})\n\ninterface PaginationProps<TData> {\n table: Table<TData>\n}\n\nexport function Pagination<TData>({table}: PaginationProps<TData>) {\n const {pageIndex, pageSize} = table.getState().pagination\n const pageCount = table.getPageCount()\n const totalRows = table.getFilteredRowModel().rows.length\n\n if (totalRows <= pageSize) return null\n\n return (\n <html.div style={styles.root}>\n <html.button\n style={[styles.button, !table.getCanPreviousPage() && styles.buttonDisabled]}\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Previous\n </html.button>\n <html.span style={styles.pageInfo}>\n {pageIndex + 1} / {pageCount}\n </html.span>\n <html.button\n style={[styles.button, !table.getCanNextPage() && styles.buttonDisabled]}\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n </html.button>\n </html.div>\n )\n}\n","import type {Column} from '@tanstack/react-table'\nimport {html} from 'react-strict-dom'\nimport {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nconst styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n marginLeft: 4,\n fontSize: 10,\n userSelect: 'none',\n // Hidden by default, shown on hover or when active\n opacity: 0,\n transitionProperty: 'opacity',\n transitionDuration: '120ms',\n },\n active: {\n opacity: 1,\n color: colors.accent,\n },\n inactive: {\n color: colors.textMuted,\n },\n})\n\ninterface SortIndicatorProps<TData> {\n column: Column<TData, unknown>\n}\n\n/**\n * Sort direction chevron for table column headers.\n *\n * - Shows \\u25B2 (asc), \\u25BC (desc), or \\u21C5 (unsorted)\n * - Hidden by default, visible on header hover or when actively sorted\n * - Clicking the header cell should call column.getToggleSortingHandler()\n *\n * The parent HeaderCell applies a :hover rule that sets child opacity to 1.\n */\nexport function SortIndicator<TData>({column}: SortIndicatorProps<TData>) {\n if (!column.getCanSort()) return null\n\n const sorted = column.getIsSorted()\n\n return (\n <html.span\n style={[styles.root, sorted ? styles.active : styles.inactive]}\n data-sort-indicator=\"\"\n >\n {sorted === 'asc' ? '\\u25B2' : sorted === 'desc' ? '\\u25BC' : '\\u21C5'}\n </html.span>\n )\n}\n","import type {Column} from '@tanstack/react-table'\nimport {html} from 'react-strict-dom'\nimport {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nconst styles = css.create({\n input: {\n width: '100%',\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n marginTop: spacing.xs,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.xs,\n backgroundColor: colors.bg,\n color: colors.text,\n fontSize: typography.fontSizeXs,\n outline: 'none',\n },\n})\n\ninterface ColumnFilterProps<TData> {\n column: Column<TData, unknown>\n placeholder?: string\n}\n\nexport function ColumnFilter<TData>({column, placeholder}: ColumnFilterProps<TData>) {\n if (!column.getCanFilter()) return null\n\n const filterValue = (column.getFilterValue() as string) ?? ''\n\n return (\n <html.input\n style={styles.input}\n type=\"text\"\n value={filterValue}\n onChange={(e: any) => column.setFilterValue(e.target.value || undefined)}\n placeholder={placeholder ?? `Filter...`}\n />\n )\n}\n","import {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {Menu} from '../Menu/Menu'\n\nexport interface SortValue {\n readonly id: string\n readonly desc: boolean\n}\n\nexport interface SortChipProps {\n readonly options: ReadonlyArray<{readonly id: string; readonly label: string}>\n readonly value: SortValue | null\n readonly onChange: (next: SortValue | null) => void\n /** Visible label preceding the sort field, e.g. \"Sort by\". */\n readonly label?: string\n /**\n * Reveal the chip regardless of the container query. Injected by\n * `Table.Root` when it force-stacks a cramped medium-width table (headers\n * hidden but container wider than the mobile breakpoint, so the chip's own\n * `@container` rule hasn't fired). Not part of the public API.\n */\n readonly forceShow?: boolean\n}\n\n/**\n * Sort selector for stack-mode Tables. Hidden in default/compact via\n * `@container` query — see styles.sortChip. Consumers render this inside\n * a `Table.Container` so the same query target reaches it.\n *\n * The chip is a simple controlled wrapper around `Menu`. It does NOT\n * couple to @tanstack/react-table — the consumer wires `value` and\n * `onChange` from whatever sort state they manage.\n */\nexport function SortChip({\n options,\n value,\n onChange,\n label = 'Sort by',\n forceShow = false,\n}: SortChipProps) {\n const current = value ? options.find((o) => o.id === value.id) : null\n const triggerLabel = current ? `${label}: ${current.label} ${value!.desc ? '↓' : '↑'}` : label\n\n return (\n <html.div style={[styles.sortChip, forceShow && styles.sortChipStacked]}>\n <Menu.Root>\n <Menu.Trigger>{triggerLabel}</Menu.Trigger>\n <Menu.Popup>\n {options.map((opt) => {\n const isCurrent = value?.id === opt.id\n const nextDesc = isCurrent ? !value!.desc : false\n return (\n <Menu.Item key={opt.id} onClick={() => onChange({id: opt.id, desc: nextDesc})}>\n {opt.label}\n {isCurrent ? ` ${value!.desc ? '↓' : '↑'}` : ''}\n </Menu.Item>\n )\n })}\n {value !== null && <Menu.Item onClick={() => onChange(null)}>Clear sort</Menu.Item>}\n </Menu.Popup>\n </Menu.Root>\n </html.div>\n )\n}\nSortChip.displayName = 'SortChip'\n","import {type ReactNode} from 'react'\nimport {type Row, type Table as TanstackTable, flexRender} from '@tanstack/react-table'\nimport {\n Body,\n Cell,\n Header,\n HeaderCell,\n Root,\n Row as TableRow,\n type TableSize,\n type TableVariant,\n} from './Table'\nimport {Pagination} from './Pagination'\nimport {SortChip, type SortValue} from './SortChip'\n\n// ColumnMeta is augmented in `./tanstack-augmentation` so the types\n// register independently of whether the consumer imports FromTanstack.\n\n// Base props shared by both clickable and non-clickable variants.\ninterface FromTanstackBaseProps<TData> {\n readonly table: TanstackTable<TData>\n readonly variant?: TableVariant\n readonly size?: TableSize\n readonly responsive?: boolean\n /** Render a SortChip above the grid (stack-mode only). Options derive from\n * columns where `column.getCanSort()` returns true. Wires value/onChange\n * through the TanStack sorting state automatically. */\n readonly sortChip?: boolean\n /** Render Pagination below the grid. */\n readonly pagination?: boolean\n /** Key extractor; defaults to TanStack's row.id. */\n readonly rowKey?: (row: Row<TData>) => string\n}\n\n// Discriminated union: rowAriaLabel is required when onRowClick is set so\n// keyboard / screen-reader users always get an accessible name for the\n// interactive row.\nexport type FromTanstackProps<TData> = FromTanstackBaseProps<TData> &\n (\n | {\n readonly onRowClick: (row: Row<TData>) => void\n /** Accessible name for each clickable row. Required because the row's\n * visible cell content alone is rarely a useful accessible name. */\n readonly rowAriaLabel: (row: Row<TData>) => string\n }\n | {\n readonly onRowClick?: undefined\n readonly rowAriaLabel?: undefined\n }\n )\n\n/**\n * Renders a styled Table directly from a TanStack table instance.\n *\n * Labels for stack mode are derived in this order:\n * 1. `column.columnDef.meta?.stackLabel` (explicit override)\n * 2. `column.columnDef.header` when it's a string\n * 3. Empty (use only for the actions column or when meta.stackLabel is set)\n *\n * Mark the actions column with `meta: { isActions: true }` to apply the\n * stack-mode footer styling to its body cells.\n *\n * @example\n * <Table.FromTanstack table={tanstackTable} sortChip pagination onRowClick={(r) => nav(r)} />\n */\nexport function FromTanstack<TData>({\n table,\n variant = 'default',\n size = 'md',\n responsive = true,\n sortChip,\n pagination,\n rowKey,\n onRowClick,\n rowAriaLabel,\n}: FromTanstackProps<TData>) {\n const sortChipNode: ReactNode = sortChip ? buildSortChip(table) : undefined\n const paginationNode: ReactNode = pagination ? <Pagination table={table} /> : undefined\n\n return (\n <Root\n variant={variant}\n size={size}\n responsive={responsive}\n sortChip={sortChipNode}\n pagination={paginationNode}\n >\n <Header>\n {table.getHeaderGroups().map((group) => (\n <TableRow key={group.id}>\n {group.headers.map((header) => {\n const def = header.column.columnDef\n const meta = def.meta\n const labelFromHeader = typeof def.header === 'string' ? def.header : undefined\n const label = meta?.stackLabel ?? labelFromHeader ?? ''\n return (\n <HeaderCell\n key={header.id}\n label={label}\n aria-label={meta?.isActions ? label || 'Actions' : undefined}\n >\n {header.isPlaceholder ? null : flexRender(def.header, header.getContext())}\n </HeaderCell>\n )\n })}\n </TableRow>\n ))}\n </Header>\n <Body>\n {table.getRowModel().rows.map((row) => {\n const key = rowKey?.(row) ?? row.id\n // Row handles its own click/keyboard/focus affordance — no outer\n // wrapper, so the role=\"rowgroup\" → role=\"row\" ARIA hierarchy\n // stays intact, and clicks inside interactive cell content (e.g.\n // an action button) are correctly attributed to the inner widget.\n return (\n <TableRow\n key={key}\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n aria-label={rowAriaLabel?.(row)}\n >\n {row.getVisibleCells().map((cell) => (\n <Cell key={cell.id} isActions={cell.column.columnDef.meta?.isActions === true}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Cell>\n ))}\n </TableRow>\n )\n })}\n </Body>\n </Root>\n )\n}\nFromTanstack.displayName = 'FromTanstack'\n\n// --- helpers ---\n\nfunction buildSortChip<TData>(table: TanstackTable<TData>): ReactNode {\n const options = table\n .getAllColumns()\n .filter((c) => c.getCanSort())\n .map((c) => {\n const fromHeader = typeof c.columnDef.header === 'string' ? c.columnDef.header : c.id\n return {id: c.id, label: c.columnDef.meta?.stackLabel ?? fromHeader}\n })\n\n if (options.length === 0) return null\n\n const current = table.getState().sorting[0]\n const value: SortValue | null = current ? {id: current.id, desc: current.desc} : null\n\n return (\n <SortChip\n options={options}\n value={value}\n onChange={(next) => table.setSorting(next ? [{id: next.id, desc: next.desc}] : [])}\n />\n )\n}\n","import {\n type ReactElement,\n type ReactNode,\n type MutableRefObject,\n createContext,\n cloneElement,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n Children,\n isValidElement,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {Pagination} from './Pagination'\nimport {SortIndicator} from './SortIndicator'\nimport {ColumnFilter} from './ColumnFilter'\nimport {SortChip} from './SortChip'\n\n// --- Types ---\n\nexport type TableVariant = 'default' | 'striped' | 'bordered'\nexport type TableSize = 'sm' | 'md'\n\n// --- Context ---\n\ninterface TableContextValue {\n variant: TableVariant\n size: TableSize\n responsive: boolean\n /** Header labels indexed by column position. Populated synchronously by\n * extractColumnMeta() during Root render so SSR HTML carries them. */\n labels: ReadonlyArray<string>\n /** Mutable ref: header Row writes inferred template, Root reads it */\n inferredTemplateRef: MutableRefObject<string | null>\n /** JS-measured force-stack flag. True when Root's ResizeObserver finds the\n * container too narrow for its column count (cells would be crushed), so\n * every cell/row/header also applies its `*Stacked` variant. Independent\n * of the @container base, which still handles genuinely narrow widths. */\n stacked: boolean\n}\n\n// useLayoutEffect measures + commits the stack decision before the browser\n// paints, so a client-rendered narrow table shows cards on first frame\n// rather than flashing tabular. On the server it would warn (no layout), so\n// fall back to useEffect there — SSR always emits the non-stacked markup and\n// the @container CSS covers true mobile without JS.\nconst useIsoLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n\n// Does any column's content no longer fit its box? We sample the header row\n// plus the first body row (bounded cost). Free text wraps rather than\n// overflowing (min-width:0 + overflow-wrap), so this only trips on content\n// that genuinely can't shrink — action buttons, badges, or nowrap header\n// labels — i.e. the real \"columns won't fit\" signal, independent of how many\n// columns there are. Structural overflow is consistent down a column, so the\n// first body row is a faithful sample.\nfunction gridOverflows(grid: HTMLDivElement | null): boolean {\n if (!grid) return false\n const TOL = 2 // sub-pixel layout rounding slack\n const over = (el: Element) => el.scrollWidth - el.clientWidth > TOL\n for (const h of grid.querySelectorAll('[role=\"columnheader\"]')) {\n if (over(h)) return true\n }\n const rowgroups = grid.querySelectorAll('[role=\"rowgroup\"]')\n const body = rowgroups[rowgroups.length - 1] // header is first, body last\n const firstRow = body?.querySelector('[role=\"row\"]')\n if (firstRow) {\n for (const c of firstRow.querySelectorAll('[role=\"cell\"]')) {\n if (over(c)) return true\n }\n }\n return false\n}\n\nconst TableContext = createContext<TableContextValue | null>(null)\n\nfunction useTable() {\n const ctx = useContext(TableContext)\n if (!ctx) throw new Error('Table compound components must be used within Table.Root')\n return ctx\n}\n\n// --- HeaderContext ---\n\nconst HeaderContext = createContext(false)\n\n// --- Dev-only warn registry ---\n//\n// One-shot per warning code per process: long-running dev sessions\n// shouldn't drown the console on every re-render of a misconfigured table.\nconst _IS_PROD = typeof process !== 'undefined' && process.env?.NODE_ENV === 'production'\nconst _devWarned = new Set<string>()\nfunction devWarnOnce(code: string, message: string) {\n if (_IS_PROD || _devWarned.has(code)) return\n _devWarned.add(code)\n // eslint-disable-next-line no-console\n console.warn(`[duro-app/ui Table] ${message}`)\n}\n\n// --- Container — owns the @container query target ---\n//\n// @deprecated Root sets up its own container query and accepts `sortChip`\n// / `pagination` as slot props. Container is kept exported as a passthrough\n// so existing call sites continue to work; new code should use Root alone.\n\nexport function Container({children}: {children: ReactNode}) {\n return <html.div style={styles.container}>{children}</html.div>\n}\n\n// --- Synchronous tree walk: widths + labels in document order ---\n//\n// Mirrors the pattern that was previously called extractTemplate(). Walks\n// the JSX tree, finds HeaderCell elements, captures their `width` and\n// `label` props (or extractText(children) fallback). Runs on every Root\n// render — cheap (small N, no DOM) — but worth memoising on `children`\n// reference if profiling flags it.\n\n// Shallow string-children extraction. We deliberately do NOT recurse into\n// child elements: an icon, tooltip trigger, or sort indicator nested inside\n// a HeaderCell would otherwise pollute the stack-mode label with its own\n// text content. JSX-only headers must set `label` explicitly.\nfunction extractText(node: ReactNode): string {\n let out = ''\n Children.forEach(node, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n out += String(child)\n }\n })\n return out\n}\n\n// Unwrap memo(...) / forwardRef(...) wrappers so JSX like\n// `<MemoizedHeaderCell ...>` still identifies as HeaderCell. Both wrappers\n// expose the inner component via a `.type` (memo) or `.render` (forwardRef)\n// property on the element-type descriptor. We walk both fields until we\n// reach a leaf, which is the underlying function/class component.\nfunction unwrapElementType(t: unknown): unknown {\n let current = t\n // Bounded loop — defensive cap against pathological infinite-nesting.\n for (let i = 0; i < 8 && current && typeof current === 'object'; i++) {\n const next =\n (current as {type?: unknown; render?: unknown}).type ?? (current as {render?: unknown}).render\n if (next == null) break\n current = next\n }\n return current\n}\n\nfunction extractColumnMeta(children: ReactNode): {\n template: string\n compactTemplate: string\n labels: string[]\n} {\n const widths: string[] = []\n const compactWidths: string[] = []\n const labels: string[] = []\n\n function walk(node: ReactNode) {\n Children.forEach(node, (child) => {\n if (!isValidElement(child)) return\n const props = child.props as Record<string, any>\n const unwrappedType = unwrapElementType(child.type)\n const displayName =\n (unwrappedType as {name?: string; displayName?: string} | null)?.displayName ||\n (unwrappedType as {name?: string} | null)?.name ||\n ''\n if (unwrappedType === HeaderCell || displayName === 'HeaderCell') {\n // Default to minmax(0, 1fr) instead of plain '1fr' so each column\n // can shrink below its content's min-content size. A plain '1fr'\n // track has an implicit min of `auto` (= min-content), which makes\n // the column refuse to shrink and the whole table overflow when a\n // cell's text is wider than 1/N of the container. With minmax(0,\n // 1fr), the cell's compact-mode `min-width: 0` + `overflow:\n // hidden` + `text-overflow: ellipsis` can actually truncate.\n const width = props.width || 'minmax(0, 1fr)'\n widths.push(width)\n // `compactWidth` lets the consumer switch to a content-aware\n // layout in the compact band while staying evenly distributed\n // at desktop. Falls back to `width` so columns that don't opt\n // in keep one template across both breakpoints.\n compactWidths.push(props.compactWidth || width)\n const explicit = typeof props.label === 'string' ? props.label : undefined\n const fallback = extractText(props.children).trim()\n const label = explicit ?? fallback\n if (!explicit && fallback === '' && props.children != null) {\n // Children are JSX with no string content — stack mode will render\n // an unlabeled cell. Tell the developer once.\n devWarnOnce(\n 'headerCell-missing-label',\n 'Table.HeaderCell with JSX children must set `label` for stack-mode rendering.',\n )\n }\n labels.push(label)\n } else if (props.children) {\n walk(props.children)\n }\n })\n }\n\n walk(children)\n return {\n template: widths.join(' '),\n compactTemplate: compactWidths.join(' '),\n labels,\n }\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n variant?: TableVariant\n size?: TableSize\n /** Opt out of responsive behavior (auto-stacking + container query). Default true. */\n responsive?: boolean\n /**\n * Optional sort UI rendered above the grid. Visible only in stack mode\n * (SortChip carries its own `display: none → inline-flex` rule). Typical\n * value: `<Table.SortChip options={...} value={...} onChange={...} />`.\n */\n sortChip?: ReactNode\n /**\n * Optional pagination UI rendered below the grid. Typical value:\n * `<Table.Pagination table={tanstackTable} />`.\n */\n pagination?: ReactNode\n}\n\nexport function Root({\n children,\n variant = 'default',\n size = 'md',\n responsive = true,\n sortChip,\n pagination,\n}: RootProps) {\n const inferredTemplateRef = useRef<string | null>(null)\n const {template, compactTemplate, labels} = extractColumnMeta(children)\n if (template) {\n inferredTemplateRef.current = template\n }\n\n // Content-aware stacking driven by ACTUAL overflow, not a width heuristic.\n // Column count alone is a poor proxy — a table with 8 short-text columns\n // fits fine on a laptop, while 4 columns of buttons + long emails can be\n // crushed. So instead of guessing, we render tabular and check whether any\n // cell's content actually overflows its box (scrollWidth > clientWidth);\n // when it does, the columns can't fit and we card up. The @container base\n // (styles.*: STACK_BP) still stacks true-mobile widths without JS.\n //\n // Oscillation guard: stacking changes the layout (cards never overflow), so\n // we can't re-measure overflow while stacked. We latch the container width\n // at the moment we stacked and only return to tabular once the container\n // has grown comfortably past it (hysteresis), then re-check overflow fresh.\n const containerRef = useRef<HTMLDivElement>(null)\n const gridRef = useRef<HTMLDivElement>(null)\n const [stacked, setStacked] = useState(false)\n const stackedAtWidthRef = useRef(0)\n\n // Re-runs whenever `stacked` flips: after we drop back to tabular the\n // container width is unchanged, so the ResizeObserver won't fire — the\n // effect re-running is what re-checks overflow in the fresh tabular layout.\n useIsoLayoutEffect(() => {\n if (!responsive) {\n setStacked(false)\n return\n }\n const el = containerRef.current\n if (!el || typeof ResizeObserver === 'undefined') return\n\n // Grows-back margin: only leave stack mode once we're well clear of the\n // width that triggered it, so a 1px jiggle at the boundary can't flip-flop.\n const HYSTERESIS = 48\n\n const measure = (width: number) => {\n if (width <= 0) return\n if (!stacked) {\n if (gridOverflows(gridRef.current)) {\n stackedAtWidthRef.current = width\n setStacked(true)\n }\n } else if (width > stackedAtWidthRef.current + HYSTERESIS) {\n // Drop back to tabular; this effect re-runs and re-checks overflow.\n setStacked(false)\n }\n }\n\n measure(el.getBoundingClientRect().width)\n const ro = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (!entry) return\n const box = entry.contentBoxSize?.[0]\n measure(box ? box.inlineSize : entry.contentRect.width)\n })\n ro.observe(el)\n return () => ro.disconnect()\n // labels.length re-runs detection when the column set changes.\n }, [responsive, labels.length, stacked])\n\n const grid = (\n <html.div\n role=\"table\"\n ref={gridRef}\n style={[\n styles.root,\n // When responsive, use gridColumnsResponsive so the explicit column\n // template and the stack-mode @container override live in one StyleX\n // style object. Splitting them across two styles (gridColumns +\n // rootResponsive) causes StyleX conflict resolution to drop the\n // column template because rootResponsive's gridTemplateColumns key\n // always wins as the later entry in the array.\n template\n ? responsive\n ? styles.gridColumnsResponsive(template, compactTemplate)\n : styles.gridColumns(template)\n : undefined,\n responsive && styles.rootResponsive,\n // Force-stack override — collapses the grid to one column. Applied\n // last so its gridTemplateColumns wins over gridColumnsResponsive.\n responsive && stacked && styles.rootStacked,\n ]}\n >\n {children}\n </html.div>\n )\n\n // The sort chip is normally revealed only by the @container query. When\n // JS force-stacks (headers hidden, but container wider than STACK_BP) the\n // chip's own query hasn't fired, so inject forceShow to reveal it.\n const sortChipEl =\n stacked && isValidElement(sortChip)\n ? cloneElement(sortChip as ReactElement<{forceShow?: boolean}>, {forceShow: true})\n : sortChip\n\n // Slots render unconditionally — `responsive=false` still wants its sort/\n // pagination chrome. Only the containerType:inline-size wrapper is\n // conditional, since it only matters when @container queries fire.\n const body = (\n <>\n {sortChipEl}\n {grid}\n {pagination}\n </>\n )\n\n return (\n <TableContext.Provider\n value={{variant, size, responsive, labels, inferredTemplateRef, stacked}}\n >\n {responsive ? (\n <html.div ref={containerRef} style={styles.rootContainer}>\n {body}\n </html.div>\n ) : (\n body\n )}\n </TableContext.Provider>\n )\n}\n\n// --- Header ---\n\nexport function Header({children}: {children: ReactNode}) {\n const {stacked} = useTable()\n return (\n <HeaderContext.Provider value={true}>\n <html.div role=\"rowgroup\" style={[styles.header, stacked && styles.headerStacked]}>\n {children}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\n// --- Body ---\n\nexport function Body({children}: {children: ReactNode}) {\n const {variant} = useTable()\n const childArray = Children.toArray(children) as ReactElement[]\n\n return (\n <HeaderContext.Provider value={false}>\n <html.div role=\"rowgroup\" style={styles.body}>\n {childArray.map((child, index) => {\n if (variant !== 'striped') return child\n // Key the provider by the child's React key (Children.toArray\n // guarantees one) so reordered rows carry their providers along\n // with them. Position is passed as the value because striping is\n // a positional concern even when row identity is stable.\n return (\n <RowIndexContext.Provider key={child.key ?? index} value={index}>\n {child}\n </RowIndexContext.Provider>\n )\n })}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\nconst RowIndexContext = createContext<number>(-1)\n\n// --- Row ---\n//\n// Always provides CellIndexContext, regardless of variant. Previously this\n// was only set up for `variant === 'bordered'`, which meant non-bordered\n// tables had every cell reading {index: 0} from the default — fine until\n// we needed to look up labels by column index.\n//\n// Interactive rows: pass `onClick` to make the row a navigation target.\n// The role stays `row` (per ARIA grid pattern) — we don't wrap in an outer\n// element with role=button, which would break the rowgroup → row hierarchy.\n// A click that originates inside an interactive descendant (button, link,\n// input, etc.) is treated as that descendant's click and does not fire\n// onClick — prevents double-fire when a row contains action buttons.\n\ninterface RowProps {\n children: ReactNode\n /** When set, the row becomes focusable + clickable. */\n onClick?: () => void\n /** Per-row accessible name — required when onClick is set, recommended otherwise. */\n 'aria-label'?: string\n}\n\n// Heuristic for \"clicking a descendant means the descendant, not the row\".\n// Matches the elements the WAI-ARIA grid pattern lists as \"widgets\" plus the\n// usual native focus-stealers.\nconst INTERACTIVE_SELECTOR =\n 'button, a, input, select, textarea, [role=\"button\"], [role=\"link\"], [role=\"checkbox\"], [role=\"menuitem\"], [role=\"switch\"], [role=\"tab\"], [contenteditable=\"true\"]'\n\nexport function Row({children, onClick, 'aria-label': ariaLabel}: RowProps) {\n const {variant, stacked} = useTable()\n const isHeader = useContext(HeaderContext)\n const rowIndex = useContext(RowIndexContext)\n const isEvenRow = rowIndex >= 0 && rowIndex % 2 === 1\n const childArray = Children.toArray(children) as ReactElement[]\n const isClickable = onClick !== undefined && !isHeader\n\n return (\n <html.div\n role=\"row\"\n tabIndex={isClickable ? 0 : undefined}\n aria-label={isClickable ? ariaLabel : undefined}\n onClick={\n isClickable\n ? (e) => {\n // react-strict-dom's typed click event omits `target`, but the\n // underlying SyntheticEvent still carries it. Cast through so\n // we can detect clicks that originate inside an interactive\n // descendant (action button, link, input) and let them be\n // attributed to that widget instead of the row.\n const target = (e as unknown as {target?: EventTarget | null}).target\n if (target instanceof Element && target.closest(INTERACTIVE_SELECTOR)) {\n return\n }\n onClick()\n }\n : undefined\n }\n onKeyDown={\n isClickable\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n onClick()\n }\n }\n : undefined\n }\n style={[\n styles.row,\n !isHeader && styles.bodyRow,\n !isHeader && variant === 'striped' && isEvenRow && styles.stripedEven,\n isClickable && styles.clickableRow,\n stacked && styles.rowStacked,\n // bodyRowStacked last so its card background wins over stripedEven.\n !isHeader && stacked && styles.bodyRowStacked,\n ]}\n >\n {childArray.map((child, index) => (\n // Key by the child's React key (Children.toArray assigns one) so a\n // reordered column carries its CellIndexContext provider along.\n // The positional `index` lives in the provider's value, not its key.\n <CellIndexContext.Provider\n key={child.key ?? index}\n value={{index, total: childArray.length}}\n >\n {child}\n </CellIndexContext.Provider>\n ))}\n </html.div>\n )\n}\n\nconst CellIndexContext = createContext<{index: number; total: number}>({index: 0, total: 0})\n\n// --- HeaderCell ---\n\nexport function HeaderCell({\n children,\n width: _width,\n compactWidth: _compactWidth,\n label: _label,\n isActions,\n 'aria-label': ariaLabel,\n}: {\n children?: ReactNode\n /** Column width at default (wide) viewport. CSS grid-template-columns\n * track value — e.g. '40px', '2fr', 'max-content'. Defaults to\n * 'minmax(0, 1fr)' so each column shares the row evenly and is free\n * to shrink below its content's intrinsic size. */\n width?: string\n /** Column width when the table's container drops into compact mode\n * (≤720px container). Use this to switch to a content-aware layout\n * at narrow widths — e.g. give a status badge `max-content` and the\n * action column `minmax(0, 2fr)` so it absorbs the slack — while\n * keeping evenly-distributed columns on wide screens. Defaults to the\n * same value as `width`. */\n compactWidth?: string\n /** Stack-mode label string. Optional when children is a plain string — the\n * text content is used as the label automatically. Required when children\n * contain JSX (icon + text, sort indicator, etc.). */\n label?: string\n /**\n * @deprecated Has no effect on HeaderCell. Pass `isActions` on the\n * matching `Table.Cell` instead — that's where the stack-mode footer\n * layout actually applies.\n */\n isActions?: boolean\n 'aria-label'?: string\n}) {\n if (isActions === true) {\n devWarnOnce(\n 'headerCell-isActions',\n 'HeaderCell `isActions` prop has no effect and is deprecated. Pass `isActions` on the matching Table.Cell instead.',\n )\n }\n const {size, variant} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n\n return (\n <html.div\n role=\"columnheader\"\n aria-label={ariaLabel}\n style={[\n styles.headerCell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n ]}\n >\n {children}\n </html.div>\n )\n}\nHeaderCell.displayName = 'HeaderCell'\n\n// --- Cell ---\n//\n// Renders the column-header label as a real <html.span>, hidden via\n// container query in non-stack modes. The span is omitted entirely when\n// isActions=true — actions footers don't show a label.\n\nexport function Cell({children, isActions}: {children: ReactNode; isActions?: boolean}) {\n const {size, variant, labels, responsive, stacked} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n const label = labels[index] ?? ''\n\n return (\n <html.div\n role=\"cell\"\n style={[\n styles.cell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n isActions && styles.cellActions,\n // Force-stack: cells become a label|value grid; the actions cell then\n // overrides its template to a single track and turns into the card's\n // right-aligned footer. Mirrors the @container (STACK_BP) branch, so\n // cellStacked applies for every cell and cellActionsStacked layers on\n // top for actions (its gridTemplateColumns wins as the later entry).\n stacked && styles.cellStacked,\n isActions && stacked && styles.cellActionsStacked,\n variant === 'bordered' && stacked && styles.borderedCellStacked,\n ]}\n >\n {responsive && !isActions && label !== '' ? (\n <html.span style={[styles.cellLabel, stacked && styles.cellLabelStacked]}>\n {label}\n </html.span>\n ) : null}\n {isActions ? children : <html.div style={styles.cellValue}>{children}</html.div>}\n </html.div>\n )\n}\n\n// --- Export ---\n\nimport {FromTanstack} from './FromTanstack'\n\nexport const Table = {\n /** @deprecated Wrap behaviour is built into Table.Root. Drop this wrapper from new code. */\n Container,\n Root,\n Header,\n Body,\n Row,\n HeaderCell,\n Cell,\n Pagination,\n SortIndicator,\n ColumnFilter,\n SortChip,\n /** Renders a styled Table directly from a TanStack table instance. */\n FromTanstack,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n wrap: {\n position: 'relative',\n width: '100%',\n },\n scroll: {\n position: 'relative',\n width: '100%',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n backgroundColor: colors.bgCard,\n },\n // Dynamic: only virtualized lists get a capped, scrollable viewport.\n scrollMax: (maxHeight: number | string) => ({\n maxHeight,\n overflowY: 'auto',\n overscrollBehavior: 'contain',\n }),\n head: {\n position: 'sticky',\n top: 0,\n zIndex: 1,\n backgroundColor: colors.bgCard,\n },\n headRow: {\n display: 'flex',\n flexDirection: 'row',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n headCell: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.xs,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n fontWeight: typography.fontWeightSemibold,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.03em',\n color: colors.textMuted,\n },\n headCellSortable: {\n cursor: 'pointer',\n userSelect: 'none',\n color: {default: colors.textMuted, ':hover': colors.text},\n },\n sortMark: {\n fontSize: typography.fontSizeXs,\n color: colors.accent,\n },\n bodyTotal: (height: number) => ({\n position: 'relative',\n width: '100%',\n height,\n }),\n row: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n rowClickable: {\n cursor: 'pointer',\n backgroundColor: {default: 'transparent', ':hover': colors.bgCardHover},\n },\n // Dynamic: absolute placement of a windowed row.\n rowAbsolute: (y: number) => ({\n position: 'absolute',\n top: 0,\n left: 0,\n transform: `translateY(${y}px)`,\n }),\n cell: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n // Dynamic: proportional column width from the TanStack column size (fr-like).\n cellFlex: (size: number) => ({\n flexGrow: size,\n flexShrink: 1,\n flexBasis: 0,\n minWidth: 0,\n }),\n // --- Stack (card) mode: narrow containers ---\n // The scroll frame drops its border/background so each row card stands on\n // its own; windowing is off in this mode so no capped viewport.\n stackScroll: {\n position: 'relative',\n width: '100%',\n backgroundColor: 'transparent',\n },\n stackBody: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n stackRow: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n width: '100%',\n padding: spacing.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n backgroundColor: colors.bgCard,\n },\n stackCell: {\n display: 'grid',\n gridTemplateColumns: '1fr 2fr',\n gap: spacing.sm,\n alignItems: 'center',\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n },\n stackCellLabel: {\n color: colors.textMuted,\n fontWeight: typography.fontWeightMedium,\n fontSize: typography.fontSizeXs,\n },\n stackCellValue: {\n minWidth: 0,\n overflowWrap: 'break-word',\n },\n empty: {\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n textAlign: 'center' as const,\n color: colors.textMuted,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n },\n // Floating position indicator, pinned bottom-right of the viewport.\n pos: {\n position: 'absolute',\n right: spacing.sm,\n bottom: spacing.sm,\n paddingTop: 3,\n paddingBottom: 3,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n borderRadius: radii.full,\n backgroundColor: colors.bgCardHover,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n color: colors.textMuted,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n pointerEvents: 'none',\n },\n})\n","import {useEffect, useLayoutEffect, useRef, useState, type ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n flexRender,\n type ColumnDef,\n type SortingState,\n type OnChangeFn,\n type Row,\n} from '@tanstack/react-table'\nimport {useVirtualizer} from '@tanstack/react-virtual'\nimport {styles} from './styles.css'\n\n// Measure + commit before paint on the client; no-op-safe on the server.\nconst useIsoLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n\nexport interface VirtualTableRange {\n /** 1-based index of the first visible row (0 when empty). */\n from: number\n /** 1-based index of the last visible row (0 when empty). */\n to: number\n total: number\n /** 1-based page the first visible row falls in. */\n page: number\n pages: number\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface VirtualTableProps<TData> {\n data: TData[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnDef<TData, any>[]\n /** Controlled sorting (pairs with a SortChip in the caller). */\n sorting?: SortingState\n onSortingChange?: OnChangeFn<SortingState>\n getRowId?: (row: TData, index: number) => string\n onRowClick?: (row: TData) => void\n rowLabel?: (row: TData) => string\n /**\n * 1-based page to restore the scroll position to on mount (read from the URL\n * by the caller). Only meaningful when the list virtualizes.\n */\n initialPage?: number\n /**\n * Fired (debounced) when the top-visible page changes — wire it to the URL.\n * Only fires in the virtualized branch; small lists render in one scroll and\n * have no page concept.\n */\n onVisiblePageChange?: (range: VirtualTableRange) => void\n /** Build the floating position-indicator label (i18n stays with the caller). */\n rangeLabel?: (range: VirtualTableRange) => string\n /** Rows per \"page\" for the URL/indicator math. Default 50. */\n pageSize?: number\n /** Estimated row height for the virtualizer. Default 44. */\n estimateRowHeight?: number\n /** Max height of the scroll viewport once virtualized. Default '70vh'. */\n maxHeight?: number | string\n /** Render every row (no windowing) at or below this count. Default 150. */\n virtualizeThreshold?: number\n /**\n * Below this container width (px) the table cards up: the header hides and\n * each row becomes a label/value card (like Table's stack mode). Since the\n * flex columns truncate rather than overflow, this is a deliberate\n * phone-width breakpoint, not an auto content measurement. Cards disable\n * windowing (variable heights), so keep phone lists reasonably short.\n * Default 640. Set `responsive={false}` to disable entirely.\n */\n stackBelow?: number\n /** Opt out of the card-up-on-narrow behavior. Default true. */\n responsive?: boolean\n emptyLabel?: ReactNode\n}\n\n/**\n * A sortable data table that windows its rows above a threshold (default 150)\n * via @tanstack/react-virtual, keeps a floating position indicator, and reports\n * the visible page so the caller can mirror it in the URL. Below the threshold\n * it renders every row in one scroll (find-in-page + a11y intact) — no\n * pagination, no windowing. Web-only (uses DOM scroll measurement).\n *\n * URL-decoupled by design: pass `initialPage` (restore) and `onVisiblePageChange`\n * (persist); the component never touches the router itself.\n */\nexport function VirtualTable<TData>({\n data,\n columns,\n sorting,\n onSortingChange,\n getRowId,\n onRowClick,\n rowLabel,\n initialPage,\n onVisiblePageChange,\n rangeLabel,\n pageSize = 50,\n estimateRowHeight = 44,\n maxHeight = '70vh',\n virtualizeThreshold = 150,\n stackBelow = 640,\n responsive = true,\n emptyLabel,\n}: VirtualTableProps<TData>) {\n // Support both controlled sorting (SortChip in the caller) and standalone use.\n const [internalSorting, setInternalSorting] = useState<SortingState>([])\n const sortingState = sorting ?? internalSorting\n const handleSortingChange = onSortingChange ?? setInternalSorting\n\n const table = useReactTable({\n data,\n columns,\n state: {sorting: sortingState},\n onSortingChange: handleSortingChange,\n getRowId,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n })\n\n const rows = table.getRowModel().rows\n\n // Card-up on narrow containers. Flex cells truncate rather than overflow, so\n // there's no content-overflow signal to measure (as in Table) — we use a\n // deliberate phone-width breakpoint. Cards render every row (no windowing),\n // so `virtualize` is forced off while stacked.\n const wrapRef = useRef<HTMLDivElement>(null)\n const [stacked, setStacked] = useState(false)\n useIsoLayoutEffect(() => {\n if (!responsive) {\n setStacked(false)\n return\n }\n const el = wrapRef.current\n if (!el || typeof ResizeObserver === 'undefined') return\n const apply = (width: number) => {\n if (width > 0) setStacked(width < stackBelow)\n }\n apply(el.getBoundingClientRect().width)\n const ro = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (!entry) return\n const box = entry.contentBoxSize?.[0]\n apply(box ? box.inlineSize : entry.contentRect.width)\n })\n ro.observe(el)\n return () => ro.disconnect()\n }, [responsive, stackBelow])\n\n const virtualize = rows.length > virtualizeThreshold && !stacked\n\n const scrollRef = useRef<HTMLDivElement>(null)\n const rv = useVirtualizer({\n count: rows.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => estimateRowHeight,\n overscan: 12,\n })\n\n // Restore the scroll position from `initialPage` on mount, and suppress the\n // page-change callback briefly so that restore scroll doesn't immediately\n // report (and overwrite) the URL.\n const suppressWrite = useRef(true)\n useEffect(() => {\n if (!virtualize) {\n suppressWrite.current = false\n return\n }\n if (initialPage && initialPage > 1) {\n rv.scrollToIndex((initialPage - 1) * pageSize, {align: 'start'})\n }\n const id = setTimeout(() => {\n suppressWrite.current = false\n }, 300)\n return () => clearTimeout(id)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [virtualize])\n\n const vItems = rv.getVirtualItems()\n const firstIndex = vItems[0]?.index ?? 0\n const lastIndex = vItems.length ? vItems[vItems.length - 1].index : 0\n const pages = Math.max(1, Math.ceil(rows.length / pageSize))\n // page = which pageSize-sized block the top visible row is in, so it only\n // changes when you cross a boundary (no per-scroll-tick churn).\n const curPage = Math.floor(Math.max(0, firstIndex) / pageSize) + 1\n\n const range: VirtualTableRange = {\n from: rows.length ? firstIndex + 1 : 0,\n to: rows.length ? lastIndex + 1 : 0,\n total: rows.length,\n page: curPage,\n pages,\n }\n\n // Report the visible page so the caller can sync the URL. Fire once per\n // distinct page rather than debouncing a timer — `curPage` only changes at a\n // pageSize boundary (coarse), and react-virtual's frequent re-renders during\n // scroll/measurement would keep resetting a debounce timer so it never fires.\n // The `lastReported` guard prevents redundant calls; callers use replace, so\n // there's no history churn.\n const lastReported = useRef<number | null>(null)\n useEffect(() => {\n if (!virtualize || !onVisiblePageChange) return\n if (suppressWrite.current) {\n // Still in the mount-restore window — record the page so we don't emit a\n // spurious change once it clears, but don't call out.\n lastReported.current = curPage\n return\n }\n if (lastReported.current === curPage) return\n lastReported.current = curPage\n onVisiblePageChange({\n from: rows.length ? firstIndex + 1 : 0,\n to: rows.length ? lastIndex + 1 : 0,\n total: rows.length,\n page: curPage,\n pages,\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [curPage, virtualize])\n\n // Stack-mode label for a column: explicit meta override, else the string\n // header, else nothing (value renders label-less, e.g. an actions column).\n const columnStackLabel = (columnDef: {\n header?: unknown\n meta?: {stackLabel?: string; label?: string}\n }): string => {\n const meta = columnDef.meta\n if (typeof meta?.stackLabel === 'string') return meta.stackLabel\n if (typeof meta?.label === 'string') return meta.label\n return typeof columnDef.header === 'string' ? columnDef.header : ''\n }\n\n const renderRow = (\n row: Row<TData>,\n index: number,\n positioned?: ReturnType<typeof styles.rowAbsolute>,\n measureRef?: (node: Element | null) => void,\n ) =>\n stacked ? (\n <html.div\n key={row.id}\n role=\"row\"\n aria-label={rowLabel?.(row.original)}\n onClick={onRowClick ? () => onRowClick(row.original) : undefined}\n style={[styles.stackRow, Boolean(onRowClick) && styles.rowClickable]}\n >\n {row.getVisibleCells().map((cell) => {\n const lbl = columnStackLabel(cell.column.columnDef)\n return (\n <html.div key={cell.id} role=\"cell\" style={styles.stackCell}>\n {lbl ? <html.span style={styles.stackCellLabel}>{lbl}</html.span> : null}\n <html.div style={styles.stackCellValue}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </html.div>\n </html.div>\n )\n })}\n </html.div>\n ) : (\n <html.div\n key={row.id}\n ref={measureRef}\n data-index={index}\n role=\"row\"\n aria-label={rowLabel?.(row.original)}\n onClick={onRowClick ? () => onRowClick(row.original) : undefined}\n style={[styles.row, Boolean(onRowClick) && styles.rowClickable, positioned]}\n >\n {row.getVisibleCells().map((cell) => (\n <html.div\n key={cell.id}\n role=\"cell\"\n style={[styles.cell, styles.cellFlex(cell.column.getSize())]}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </html.div>\n ))}\n </html.div>\n )\n\n const label =\n rangeLabel?.(range) ?? (rows.length ? `${range.from}–${range.to} / ${range.total}` : '')\n\n return (\n <html.div ref={wrapRef} style={styles.wrap}>\n <html.div\n ref={scrollRef}\n role=\"table\"\n style={[\n stacked ? styles.stackScroll : styles.scroll,\n virtualize && styles.scrollMax(maxHeight),\n ]}\n >\n {stacked ? null : (\n <html.div role=\"rowgroup\" style={styles.head}>\n {table.getHeaderGroups().map((headerGroup) => (\n <html.div key={headerGroup.id} role=\"row\" style={styles.headRow}>\n {headerGroup.headers.map((header) => {\n const col = header.column\n const sorted = col.getIsSorted()\n return (\n <html.div\n key={header.id}\n role=\"columnheader\"\n aria-sort={\n sorted === 'asc'\n ? 'ascending'\n : sorted === 'desc'\n ? 'descending'\n : undefined\n }\n onClick={col.getCanSort() ? col.getToggleSortingHandler() : undefined}\n style={[\n styles.headCell,\n col.getCanSort() && styles.headCellSortable,\n styles.cellFlex(header.getSize()),\n ]}\n >\n {header.isPlaceholder\n ? null\n : flexRender(col.columnDef.header, header.getContext())}\n {sorted ? (\n <html.span style={styles.sortMark}>\n {sorted === 'asc' ? '↑' : '↓'}\n </html.span>\n ) : null}\n </html.div>\n )\n })}\n </html.div>\n ))}\n </html.div>\n )}\n\n {rows.length === 0 ? (\n <html.div style={styles.empty}>{emptyLabel}</html.div>\n ) : (\n <html.div\n role=\"rowgroup\"\n style={\n stacked\n ? styles.stackBody\n : virtualize\n ? styles.bodyTotal(rv.getTotalSize())\n : undefined\n }\n >\n {virtualize\n ? vItems.map((vi) =>\n renderRow(\n rows[vi.index],\n vi.index,\n styles.rowAbsolute(vi.start),\n rv.measureElement,\n ),\n )\n : rows.map((row, i) => renderRow(row, i))}\n </html.div>\n )}\n </html.div>\n\n {virtualize && rows.length > 0 ? (\n <html.div aria-live=\"polite\" style={styles.pos}>\n {label}\n </html.div>\n ) : null}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n rootVertical: {\n flexDirection: 'row',\n },\n list: {\n display: 'flex',\n flexDirection: 'row',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n gap: spacing.xs,\n // Positioning context for the sliding indicator.\n position: 'relative',\n },\n listVertical: {\n flexDirection: 'column',\n borderBottomWidth: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n gap: 0,\n },\n tab: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderBottomWidth: 2,\n borderBottomStyle: 'solid',\n borderBottomColor: 'transparent',\n cursor: 'pointer',\n transitionProperty: 'color, border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': -2,\n },\n },\n tabVertical: {\n justifyContent: 'flex-start',\n borderBottomWidth: 0,\n borderRightWidth: 2,\n borderRightStyle: 'solid',\n borderRightColor: 'transparent',\n },\n tabActiveHorizontal: {\n color: colors.text,\n borderBottomColor: colors.accent,\n },\n tabActiveVertical: {\n color: colors.text,\n borderRightColor: colors.accent,\n },\n // Applied to the active tab once JS drives the sliding indicator: drop the\n // per-tab accent border so the single sliding bar is the only underline\n // (avoids a double line and an instant-pop that would undercut the slide).\n tabIndicatorActive: {\n borderBottomColor: 'transparent',\n borderRightColor: 'transparent',\n },\n // --- Sliding active indicator (positioned by measuring the active tab) ---\n indicator: {\n position: 'absolute',\n backgroundColor: colors.accent,\n pointerEvents: 'none',\n transitionProperty: 'transform, width, height',\n transitionDuration: duration.base,\n transitionTimingFunction: easing.easeOut,\n },\n indicatorHorizontal: {\n bottom: -1,\n left: 0,\n height: 2,\n },\n indicatorVertical: {\n right: -1,\n top: 0,\n width: 2,\n },\n // Dynamic transform/size from the measured active tab (StyleX dynamic style:\n // simple identifier params only).\n indicatorOffsetH: (offset: number, size: number) => ({\n transform: `translateX(${offset}px)`,\n width: size,\n }),\n indicatorOffsetV: (offset: number, size: number) => ({\n transform: `translateY(${offset}px)`,\n height: size,\n }),\n tabDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n color: colors.textMuted,\n },\n panel: {\n paddingTop: spacing.md,\n },\n panelVertical: {\n paddingTop: 0,\n paddingLeft: spacing.md,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport interface TabsContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n orientation: Orientation\n registerTab: (value: string, disabled: boolean) => () => void\n tabsRef: React.RefObject<Map<string, boolean>>\n orderRef: React.RefObject<string[]>\n // True once the List has measured the active tab and is driving a sliding\n // indicator. Tabs suppress their own accent border while it's true so the\n // single sliding bar is the only underline; it stays false without JS\n // (SSR / no-hydration), where the per-tab border is the graceful fallback.\n indicatorActive: boolean\n setIndicatorActive: (active: boolean) => void\n}\n\nexport const TabsContext = createContext<TabsContextValue | null>(null)\n\nexport function useTabs() {\n const ctx = useContext(TabsContext)\n if (!ctx) throw new Error('Tabs compound components must be used within Tabs.Root')\n return ctx\n}\n","import {useCallback, useRef, useState} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {Orientation, TabsContextValue} from './TabsContext'\n\ninterface UseTabsRootOptions {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: Orientation\n}\n\nexport function useTabsRoot({\n value: controlledValue,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: UseTabsRootOptions): TabsContextValue {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const tabsRef = useRef(new Map<string, boolean>())\n const orderRef = useRef<string[]>([])\n const [indicatorActive, setIndicatorActive] = useState(false)\n\n const registerTab = useCallback((value: string, disabled: boolean) => {\n tabsRef.current.set(value, disabled)\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n tabsRef.current.delete(value)\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n return {\n activeValue,\n onSelect,\n orientation,\n registerTab,\n tabsRef,\n orderRef,\n indicatorActive,\n setIndicatorActive,\n }\n}\n","import {type ReactNode, useRef, useId, useEffect, useLayoutEffect, useState} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {TabsContext, useTabs} from './TabsContext'\nimport {useTabsRoot} from './useTabsRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n}\n\nfunction Root({\n children,\n value,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: RootProps) {\n const ctx = useTabsRoot({value, defaultValue, onValueChange, orientation})\n\n return (\n <TabsContext.Provider value={ctx}>\n <html.div style={[styles.root, orientation === 'vertical' && styles.rootVertical]}>\n {children}\n </html.div>\n </TabsContext.Provider>\n )\n}\n\n// --- List ---\n\ninterface ListProps {\n children: ReactNode\n}\n\nfunction List({children}: ListProps) {\n const {orientation, activeValue, onSelect, tabsRef, orderRef, setIndicatorActive} = useTabs()\n const listRef = useRef<HTMLDivElement>(null)\n const [indicator, setIndicator] = useState<{offset: number; size: number} | null>(null)\n\n // Measure the active tab and drive the sliding indicator. useLayoutEffect so\n // the first position is set before paint (the indicator element mounts already\n // in place — no slide-in from zero; only later tab changes animate). Observes\n // the active tab (its own size, e.g. a changing \"(3)\" count) and the list\n // (container resize / reflow). A non-active sibling resizing while you're on\n // another tab is the one case not caught; it self-corrects on the next\n // selection or resize.\n useLayoutEffect(() => {\n const list = listRef.current\n if (!list || !activeValue) {\n setIndicator(null)\n setIndicatorActive(false)\n return\n }\n const el = list.querySelector<HTMLElement>(`[data-tab-value=\"${CSS.escape(activeValue)}\"]`)\n if (!el) {\n setIndicator(null)\n setIndicatorActive(false)\n return\n }\n const measure = () => {\n setIndicator(\n orientation === 'horizontal'\n ? {offset: el.offsetLeft, size: el.offsetWidth}\n : {offset: el.offsetTop, size: el.offsetHeight},\n )\n setIndicatorActive(true)\n }\n measure()\n const ro = new ResizeObserver(measure)\n ro.observe(el)\n ro.observe(list)\n return () => ro.disconnect()\n }, [activeValue, orientation, setIndicatorActive])\n\n useEffect(() => {\n const el = listRef.current\n if (!el) return\n\n function handleKeyDown(this: HTMLElement, e: KeyboardEvent) {\n const order = orderRef.current\n const tabs = tabsRef.current\n if (order.length === 0) return\n const listEl = this\n\n const prevKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp'\n const nextKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown'\n\n let targetValue: string | null = null\n\n switch (e.key) {\n case nextKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : -1\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx + i) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case prevKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : 0\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx - i + order.length) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'Home': {\n e.preventDefault()\n for (const val of order) {\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'End': {\n e.preventDefault()\n for (let i = order.length - 1; i >= 0; i--) {\n if (!tabs.get(order[i])) {\n targetValue = order[i]\n break\n }\n }\n break\n }\n }\n\n if (targetValue) {\n onSelect(targetValue)\n // Focus the newly activated tab button\n const tabEl = listEl.querySelector(\n `[data-tab-value=\"${targetValue}\"]`,\n ) as HTMLElement | null\n tabEl?.focus()\n }\n }\n\n el.addEventListener('keydown', handleKeyDown)\n return () => el.removeEventListener('keydown', handleKeyDown)\n }, [orientation, activeValue, onSelect, tabsRef, orderRef])\n\n return (\n <html.div\n ref={listRef}\n role=\"tablist\"\n aria-orientation={orientation}\n style={[styles.list, orientation === 'vertical' && styles.listVertical]}\n >\n {children}\n {indicator && (\n <html.div\n aria-hidden\n style={[\n styles.indicator,\n orientation === 'horizontal' ? styles.indicatorHorizontal : styles.indicatorVertical,\n orientation === 'horizontal'\n ? styles.indicatorOffsetH(indicator.offset, indicator.size)\n : styles.indicatorOffsetV(indicator.offset, indicator.size),\n ]}\n />\n )}\n </html.div>\n )\n}\n\n// --- Tab ---\n\ninterface TabProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Tab({value, disabled = false, children}: TabProps) {\n const {activeValue, onSelect, orientation, registerTab, indicatorActive} = useTabs()\n const isActive = activeValue === value\n const tabId = useId()\n const panelId = `${tabId}-panel`\n\n useEffect(() => {\n return registerTab(value, disabled)\n }, [value, disabled, registerTab])\n\n const handleClick = () => {\n if (!disabled) {\n onSelect(value)\n }\n }\n\n return (\n <html.button\n type=\"button\"\n role=\"tab\"\n id={tabId}\n aria-selected={isActive}\n aria-controls={panelId}\n aria-disabled={disabled || undefined}\n data-tab-value={value}\n tabIndex={isActive ? 0 : -1}\n onClick={handleClick}\n style={[\n styles.tab,\n orientation === 'vertical' && styles.tabVertical,\n isActive &&\n (orientation === 'vertical' ? styles.tabActiveVertical : styles.tabActiveHorizontal),\n isActive && indicatorActive && styles.tabIndicatorActive,\n disabled && styles.tabDisabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Panel ---\n\ninterface PanelProps {\n value: string\n children: ReactNode\n}\n\nfunction Panel({value, children}: PanelProps) {\n const {activeValue, orientation} = useTabs()\n\n if (activeValue !== value) return null\n\n return (\n <html.div\n role=\"tabpanel\"\n style={[styles.panel, orientation === 'vertical' && styles.panelVertical]}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tabs = {\n Root,\n List,\n Tab,\n Panel,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n resize: 'vertical' as const,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {styles} from './styles.css'\n\ntype StrictTextareaProps = React.ComponentProps<typeof html.textarea>\n\nexport type TextareaVariant = 'default' | 'error'\n\ninterface TextareaProps {\n variant?: TextareaVariant\n name?: string\n placeholder?: string\n required?: boolean\n rows?: number\n value?: string\n defaultValue?: string\n disabled?: boolean\n autoFocus?: boolean\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLTextAreaElement>\n}\n\nexport function Textarea({\n variant = 'default',\n name,\n placeholder,\n required,\n rows = 3,\n value,\n defaultValue,\n disabled,\n autoFocus,\n onChange,\n onBlur,\n ref,\n}: TextareaProps) {\n const ctx = useFieldContext()\n\n const fieldCtx = ctx?.field\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveDisabled = disabled ?? ctx?.disabled\n const effectiveVariant = ctx?.invalid ? 'error' : variant\n\n const extraProps: Record<string, unknown> = {}\n if (autoFocus) extraProps.autoFocus = true\n\n return (\n <html.textarea\n id={ctx?.controlId}\n name={effectiveName}\n placeholder={placeholder}\n required={required}\n rows={rows}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={effectiveDisabled}\n aria-describedby={\n ctx ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() : undefined\n }\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={effectiveOnChange as StrictTextareaProps['onChange']}\n onBlur={effectiveOnBlur as StrictTextareaProps['onBlur']}\n ref={effectiveRef as React.Ref<HTMLTextAreaElement>}\n style={[styles.base, styles[effectiveVariant]]}\n {...extraProps}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n button: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: spacing.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.sm,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.text,\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n },\n})\n","import {\n createContext,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {Icon, type IconName} from '../Icon/Icon'\nimport {ThemeProvider, type ThemeName} from '../ThemeProvider/ThemeProvider'\nimport {styles} from './styles.css'\n\n/**\n * The user's *preference*. `'system'` follows the OS `prefers-color-scheme`;\n * the others pin a concrete {@link ThemeName}. Resolves to a ThemeName via\n * {@link useColorMode}().theme.\n */\nexport type ColorModePreference = 'system' | ThemeName\n\nconst PREFERENCES: readonly ColorModePreference[] = ['system', 'light', 'dark', 'high-contrast']\n\nconst ICON: Record<ColorModePreference, IconName> = {\n system: 'monitor',\n light: 'sun',\n dark: 'moon',\n 'high-contrast': 'contrast',\n}\n\nconst LABEL: Record<ColorModePreference, string> = {\n system: 'system',\n light: 'light',\n dark: 'dark',\n 'high-contrast': 'high contrast',\n}\n\ninterface ColorModeContextValue {\n /** The user's chosen preference. */\n preference: ColorModePreference\n /** The concrete theme the preference resolves to (system → OS scheme). */\n theme: ThemeName\n /** Set the preference explicitly. */\n setPreference: (preference: ColorModePreference) => void\n /** Advance to the next preference in {@link modes} (wraps). */\n cycle: () => void\n /** The cycle order used by `cycle()` and the toggle. */\n modes: readonly ColorModePreference[]\n}\n\nconst ColorModeContext = createContext<ColorModeContextValue | null>(null)\n\n/**\n * Read the active color mode. Throws if used outside a {@link ColorModeProvider}.\n */\nexport function useColorMode(): ColorModeContextValue {\n const ctx = useContext(ColorModeContext)\n if (!ctx) {\n throw new Error('useColorMode must be used within a <ColorModeProvider>')\n }\n return ctx\n}\n\nconst canUseDom =\n !isNative && typeof window !== 'undefined' && typeof window.matchMedia === 'function'\n\nfunction isPreference(value: unknown): value is ColorModePreference {\n return typeof value === 'string' && (PREFERENCES as readonly string[]).includes(value)\n}\n\nfunction readStored(key: string | null): ColorModePreference | null {\n if (!key || isNative || typeof window === 'undefined') return null\n try {\n const raw = window.localStorage.getItem(key)\n return isPreference(raw) ? raw : null\n } catch {\n // Private mode / blocked storage — degrade to no persistence.\n return null\n }\n}\n\nfunction writeStored(key: string | null, value: ColorModePreference): void {\n if (!key || isNative || typeof window === 'undefined') return\n try {\n window.localStorage.setItem(key, value)\n } catch {\n /* ignore */\n }\n}\n\ninterface ColorModeProviderProps {\n children: ReactNode\n /** Initial preference (uncontrolled). Default `'system'`. For SSR with no\n * hydration flash, pass the value you persisted server-side (e.g. a cookie). */\n defaultPreference?: ColorModePreference\n /** Controlled preference — when set, the provider does not own the state. */\n preference?: ColorModePreference\n /** Fired whenever the preference changes (controlled or not). */\n onPreferenceChange?: (preference: ColorModePreference) => void\n /** Cycle order for `cycle()` / `<ColorModeToggle>`. Default `['light', 'dark']`. */\n modes?: readonly ColorModePreference[]\n /** localStorage key for persistence; `null` disables it. Default `'duro-color-mode'`. */\n storageKey?: string | null\n /** Wrap children in the DS `ThemeProvider` with the resolved theme. Default `true`.\n * Set `false` to drive your own ThemeProvider from `useColorMode().theme`. */\n applyTheme?: boolean\n}\n\n/**\n * Owns color-mode state, resolves `'system'` against the OS scheme, persists the\n * choice, and (by default) applies the resolved theme via `ThemeProvider`.\n * Pair with {@link ColorModeToggle} or read state via {@link useColorMode}.\n */\nexport function ColorModeProvider({\n children,\n defaultPreference = 'system',\n preference: controlled,\n onPreferenceChange,\n modes = ['light', 'dark'],\n storageKey = 'duro-color-mode',\n applyTheme = true,\n}: ColorModeProviderProps) {\n const [internal, setInternal] = useState<ColorModePreference>(controlled ?? defaultPreference)\n const preference = controlled ?? internal\n\n // Hydrate from storage AFTER mount (not in the initializer) so the first\n // client render matches the server and React doesn't warn about a mismatch.\n useEffect(() => {\n if (controlled !== undefined) return\n const stored = readStored(storageKey)\n if (stored) setInternal(stored)\n // Only on mount / when the key changes.\n }, [controlled, storageKey])\n\n const setPreference = useCallback(\n (next: ColorModePreference) => {\n if (controlled === undefined) setInternal(next)\n writeStored(storageKey, next)\n onPreferenceChange?.(next)\n },\n [controlled, storageKey, onPreferenceChange],\n )\n\n // Track the OS scheme so `'system'` stays live. The initial value MUST be the\n // SSR-stable default ('dark', what the server renders without a DOM) so the\n // first client render matches the server — reading matchMedia in the\n // initializer would diverge (server 'dark' vs client's real scheme) and trip\n // a hydration mismatch. The effect reconciles to the real scheme after mount.\n const [systemTheme, setSystemTheme] = useState<'light' | 'dark'>('dark')\n useEffect(() => {\n if (!canUseDom) return\n const mq = window.matchMedia('(prefers-color-scheme: dark)')\n const onChange = () => setSystemTheme(mq.matches ? 'dark' : 'light')\n onChange()\n mq.addEventListener('change', onChange)\n return () => mq.removeEventListener('change', onChange)\n }, [])\n\n const theme: ThemeName = preference === 'system' ? systemTheme : preference\n\n const cycle = useCallback(() => {\n const i = modes.indexOf(preference)\n const next = modes[(i + 1) % modes.length] ?? modes[0]\n if (next) setPreference(next)\n }, [modes, preference, setPreference])\n\n const value = useMemo<ColorModeContextValue>(\n () => ({preference, theme, setPreference, cycle, modes}),\n [preference, theme, setPreference, cycle, modes],\n )\n\n return (\n <ColorModeContext.Provider value={value}>\n {applyTheme ? <ThemeProvider theme={theme}>{children}</ThemeProvider> : children}\n </ColorModeContext.Provider>\n )\n}\n\ninterface ColorModeToggleProps {\n /** Icon size in px. Default `20`. */\n size?: number\n /** Override the announced label (otherwise auto-generated from current/next). */\n 'aria-label'?: string\n}\n\n/**\n * A compact icon button that cycles the color-mode preference through the\n * provider's `modes`. The glyph reflects the current preference\n * (sun/moon/monitor/contrast). Must be inside a {@link ColorModeProvider}.\n */\nexport function ColorModeToggle({size = 20, 'aria-label': ariaLabel}: ColorModeToggleProps) {\n const {preference, cycle, modes} = useColorMode()\n const i = modes.indexOf(preference)\n const next = modes[(i + 1) % modes.length] ?? modes[0] ?? preference\n const label = ariaLabel ?? `Color mode: ${LABEL[preference]}. Switch to ${LABEL[next]}.`\n\n return (\n <html.button type=\"button\" aria-label={label} onClick={cycle} style={styles.button}>\n <Icon name={ICON[preference]} size={size} />\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n error: {\n color: colors.errorText,\n },\n success: {\n color: colors.successText,\n },\n warning: {\n color: colors.warningText,\n },\n\n // Weight overrides\n weightNormal: {\n fontWeight: typography.fontWeightNormal,\n },\n weightMedium: {\n fontWeight: typography.fontWeightMedium,\n },\n weightSemibold: {\n fontWeight: typography.fontWeightSemibold,\n },\n weightBold: {\n fontWeight: typography.fontWeightBold,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n\n // Truncate. minWidth: 0 lets a truncating Text actually shrink inside a\n // flex/grid container — without it, the default `min-width: auto` would\n // keep the element at its content width, so text-overflow: ellipsis would\n // never trigger and the text would just overflow the parent instead.\n truncate: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type TextVariant = 'bodySm' | 'bodyMd' | 'bodyLg' | 'caption' | 'label' | 'code' | 'overline'\nexport type TextColor = 'default' | 'muted' | 'accent' | 'error' | 'success' | 'warning'\n\ninterface TextProps {\n variant?: TextVariant\n color?: TextColor\n weight?: 'normal' | 'medium' | 'semibold' | 'bold'\n align?: 'start' | 'center' | 'end'\n truncate?: boolean\n as?: 'span' | 'p' | 'div'\n children: ReactNode\n}\n\nconst weightMap = {\n normal: styles.weightNormal,\n medium: styles.weightMedium,\n semibold: styles.weightSemibold,\n bold: styles.weightBold,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Text({\n variant = 'bodyMd',\n color = 'default',\n weight,\n align,\n truncate,\n as = 'span',\n children,\n}: TextProps) {\n const style = [\n typePresets[variant],\n styles[color],\n weight && weightMap[weight],\n align && alignMap[align],\n truncate && styles.truncate,\n ]\n\n if (as === 'p') return <html.p style={style}>{children}</html.p>\n if (as === 'div') return <html.div style={style}>{children}</html.div>\n return <html.span style={style}>{children}</html.span>\n}\n","import {createContext, useContext} from 'react'\nimport type {ToggleSize} from '../Toggle/Toggle'\n\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport interface ToggleGroupContextValue {\n value: string[]\n toggle: (itemValue: string) => void\n disabled: boolean\n orientation: Orientation\n size: ToggleSize\n}\n\nexport const ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null)\n\nexport function useToggleGroup() {\n return useContext(ToggleGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 1,\n borderStyle: 'solid',\n cursor: 'pointer',\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightMedium,\n transitionProperty: 'background-color, border-color, color, opacity',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n },\n sizeDefault: {\n padding: `${spacing.sm} ${spacing.md}`,\n fontSize: typography.fontSizeSm,\n borderRadius: radii.sm,\n gap: spacing.sm,\n },\n sizeSmall: {\n padding: `${spacing.xs} ${spacing.sm}`,\n fontSize: typography.fontSizeXs,\n borderRadius: radii.sm,\n gap: spacing.xs,\n },\n unpressed: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n color: colors.textMuted,\n },\n pressed: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n borderColor: colors.accent,\n color: colors.accentContrast,\n },\n grouped: {\n borderWidth: 0,\n borderRadius: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n // Override any borderColor set by pressed state — dividers always use border token\n borderColor: colors.border,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n})\n","import {type ReactNode, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {useToggleGroup} from '../ToggleGroup/ToggleGroupContext'\nimport {styles} from './styles.css'\n\nexport type ToggleSize = 'default' | 'small'\n\ninterface ToggleProps {\n /** Controlled pressed state (standalone usage). */\n pressed?: boolean\n /** Initial pressed state (uncontrolled, standalone usage). */\n defaultPressed?: boolean\n /** Callback fired when the pressed state changes (standalone usage). */\n onPressedChange?: (pressed: boolean) => void\n /** Unique value when used inside a ToggleGroup. */\n value?: string\n /** Prevents user interaction. */\n disabled?: boolean\n /** Size variant (overridden by ToggleGroup when grouped). */\n size?: ToggleSize\n 'aria-label'?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function Toggle({\n pressed: controlledPressed,\n defaultPressed = false,\n onPressedChange,\n value,\n disabled: disabledProp = false,\n size: sizeProp = 'default',\n 'aria-label': ariaLabel,\n children,\n}: ToggleProps) {\n const group = useToggleGroup()\n\n // When inside a ToggleGroup, derive pressed state from group context\n const groupPressed = group && value !== undefined ? group.value.includes(value) : undefined\n const isGrouped = group !== null\n const disabled = disabledProp || (group?.disabled ?? false)\n const size = group?.size ?? sizeProp\n\n const [standalonePressed, setStandalonePressed] = useControllableValue(\n controlledPressed,\n defaultPressed,\n onPressedChange,\n )\n\n const pressed = groupPressed ?? standalonePressed\n\n const handleClick = useCallback(() => {\n if (disabled) return\n if (isGrouped && value !== undefined) {\n group.toggle(value)\n } else {\n setStandalonePressed(!pressed)\n }\n }, [disabled, isGrouped, value, group, pressed, setStandalonePressed])\n\n return (\n <html.button\n type=\"button\"\n aria-pressed={pressed}\n aria-label={ariaLabel}\n disabled={disabled}\n onClick={handleClick}\n data-pressed={pressed ? '' : undefined}\n style={[\n styles.base,\n sizeMap[size],\n pressed ? styles.pressed : styles.unpressed,\n isGrouped && styles.grouped,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n overflow: 'hidden',\n },\n vertical: {\n flexDirection: 'column',\n },\n})\n","import {type ReactNode, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {ToggleSize} from '../Toggle/Toggle'\nimport {ToggleGroupContext, type Orientation} from './ToggleGroupContext'\nimport {styles} from './styles.css'\n\ninterface ToggleGroupProps {\n /** Controlled value — array of pressed item values. */\n value?: string[]\n /** Initial value (uncontrolled). */\n defaultValue?: string[]\n /** Callback fired when the set of pressed values changes. */\n onValueChange?: (value: string[]) => void\n /** When false, at most one item can be pressed at a time. */\n multiple?: boolean\n /** Prevents interaction with all items. */\n disabled?: boolean\n /** Layout direction. */\n orientation?: Orientation\n /** Size applied to all child toggles. */\n size?: ToggleSize\n children: ReactNode\n}\n\nexport function ToggleGroup({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n multiple = false,\n disabled = false,\n orientation = 'horizontal',\n size = 'default',\n children,\n}: ToggleGroupProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const toggle = useCallback(\n (itemValue: string) => {\n const nextPressed = !value.includes(itemValue)\n let next: string[]\n if (multiple) {\n next = nextPressed ? [...value, itemValue] : value.filter((v) => v !== itemValue)\n } else {\n next = nextPressed ? [itemValue] : []\n }\n setValue(next)\n },\n [value, multiple, setValue],\n )\n\n return (\n <ToggleGroupContext.Provider value={{value, toggle, disabled, orientation, size}}>\n <html.div\n role=\"toolbar\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'vertical' && styles.vertical]}\n >\n {children}\n </html.div>\n </ToggleGroupContext.Provider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n popup: {\n position: 'absolute',\n zIndex: 50,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n },\n top: {\n bottom: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginBottom: spacing.xs,\n },\n bottom: {\n top: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginTop: spacing.xs,\n },\n left: {\n right: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginRight: spacing.xs,\n },\n right: {\n left: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginLeft: spacing.xs,\n },\n})\n","import {\n type ReactNode,\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n useId,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ntype Placement = 'top' | 'bottom' | 'left' | 'right'\n\ninterface TooltipContextValue {\n open: boolean\n show: () => void\n hide: () => void\n tooltipId: string\n placement: Placement\n}\n\nconst TooltipContext = createContext<TooltipContextValue | null>(null)\n\nfunction useTooltip() {\n const ctx = useContext(TooltipContext)\n if (!ctx) throw new Error('Tooltip compound components must be used within Tooltip.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n content: ReactNode\n placement?: Placement\n delay?: number\n}\n\nfunction Root({children, content, placement = 'top', delay = 300}: RootProps) {\n const [open, setOpen] = useState(false)\n const tooltipId = useId()\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const show = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = setTimeout(() => setOpen(true), delay)\n }, [delay])\n\n const hide = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = null\n setOpen(false)\n }, [])\n\n return (\n <TooltipContext.Provider value={{open, show, hide, tooltipId, placement}}>\n <html.div style={styles.root}>\n {children}\n {open && (\n <html.div id={tooltipId} role=\"tooltip\" style={[styles.popup, styles[placement]]}>\n {content}\n </html.div>\n )}\n </html.div>\n </TooltipContext.Provider>\n )\n}\n\n// --- Trigger ---\n\ninterface TriggerProps {\n children: ReactNode\n}\n\nfunction Trigger({children}: TriggerProps) {\n const {open, show, hide, tooltipId} = useTooltip()\n\n return (\n <html.div\n onPointerEnter={show}\n onPointerLeave={hide}\n onFocus={show}\n onBlur={hide}\n aria-describedby={open ? tooltipId : undefined}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tooltip = {\n Root,\n Trigger,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n rootDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n track: {\n position: 'relative',\n width: 36,\n height: 20,\n borderRadius: radii.full,\n borderWidth: 0,\n padding: 0,\n cursor: 'inherit',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n flexShrink: 0,\n },\n trackUnchecked: {\n backgroundColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n trackChecked: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n },\n thumb: {\n position: 'absolute',\n top: 2,\n left: 2,\n width: 16,\n height: 16,\n borderRadius: radii.full,\n backgroundColor: '#fff',\n transitionProperty: 'transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n thumbChecked: {\n transform: 'translateX(16px)',\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import {type ReactNode, useCallback, useRef} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {styles} from './styles.css'\n\ninterface SwitchProps {\n /** Controlled checked state. */\n checked?: boolean\n /** Initial checked state (uncontrolled). */\n defaultChecked?: boolean\n /** Callback fired when the checked state changes. */\n onCheckedChange?: (checked: boolean) => void\n /** Prevents user interaction. */\n disabled?: boolean\n /** Form field name for the hidden input. */\n name?: string\n /** Value submitted when checked. */\n value?: string\n /** Label content rendered beside the switch. */\n children?: ReactNode\n}\n\nexport function Switch({\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n disabled = false,\n name,\n value,\n children,\n}: SwitchProps) {\n const [checked, setChecked] = useControllableValue(\n controlledChecked,\n defaultChecked,\n onCheckedChange,\n )\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleClick = useCallback(() => {\n if (disabled) return\n setChecked(!checked)\n // Keep hidden input in sync for form submission\n if (inputRef.current) {\n inputRef.current.checked = !checked\n }\n }, [disabled, checked, setChecked])\n\n return (\n <html.label\n style={[styles.root, isNative && styles.nativeFlex, disabled && styles.rootDisabled]}\n >\n {!isNative && (\n // Web: hidden real checkbox carries a11y + form submission. RSD has no\n // <input type=checkbox> on native, so it's omitted there and the\n // button below carries the switch role instead.\n <html.input\n ref={inputRef}\n type=\"checkbox\"\n role=\"switch\"\n name={name}\n value={value}\n checked={controlledChecked !== undefined ? controlledChecked : undefined}\n defaultChecked={controlledChecked === undefined ? defaultChecked : undefined}\n disabled={disabled}\n aria-checked={checked}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n onCheckedChange?.(e.target.checked)\n }}\n style={styles.input}\n />\n )}\n <html.button\n type=\"button\"\n tabIndex={-1}\n aria-hidden={isNative ? undefined : true}\n role={isNative ? 'switch' : undefined}\n aria-checked={isNative ? checked : undefined}\n disabled={disabled}\n onClick={handleClick}\n style={[styles.track, checked ? styles.trackChecked : styles.trackUnchecked]}\n >\n <html.span style={[styles.thumb, checked && styles.thumbChecked]} />\n </html.button>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'column',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignStretch: {alignItems: 'stretch'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpacingKey = 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl'\n\ninterface StackProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'stretch'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n stretch: styles.alignStretch,\n} as const\n\nexport function Stack({gap = 'md', align = 'stretch', children}: StackProps) {\n return <html.div style={[styles.base, gapMap[gap], alignMap[align]]}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignBaseline: {alignItems: 'baseline'},\n alignStretch: {alignItems: 'stretch'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface InlineProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'baseline' | 'stretch'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n baseline: styles.alignBaseline,\n stretch: styles.alignStretch,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Inline({gap = 'sm', align = 'center', justify = 'start', children}: InlineProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface ClusterProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Cluster({gap = 'sm', align = 'start', justify = 'start', children}: ClusterProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'grid',\n },\n col1: {gridTemplateColumns: '1fr'},\n col2: {gridTemplateColumns: 'repeat(2, 1fr)'},\n col3: {gridTemplateColumns: 'repeat(3, 1fr)'},\n col4: {gridTemplateColumns: 'repeat(4, 1fr)'},\n col5: {gridTemplateColumns: 'repeat(5, 1fr)'},\n col6: {gridTemplateColumns: 'repeat(6, 1fr)'},\n autoFit: (minWidth: string) => ({\n gridTemplateColumns: `repeat(auto-fill, minmax(${minWidth}, 1fr))`,\n }),\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface GridProps {\n gap?: SpacingKey\n columns?: 1 | 2 | 3 | 4 | 5 | 6\n minColumnWidth?: string\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst columnsMap = {\n 1: styles.col1,\n 2: styles.col2,\n 3: styles.col3,\n 4: styles.col4,\n 5: styles.col5,\n 6: styles.col6,\n} as const\n\nexport function Grid({gap = 'md', columns, minColumnWidth, children}: GridProps) {\n const columnStyle = minColumnWidth\n ? styles.autoFit(minColumnWidth)\n : columns\n ? columnsMap[columns]\n : undefined\n\n return <html.div style={[styles.base, gapMap[gap], columnStyle]}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {layoutSpacing} from '@duro-app/tokens/tokens/layout-spacing.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n width: '100%',\n },\n container: {\n width: '100%',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n // Max-width presets\n maxSm: {maxWidth: 600},\n maxMd: {maxWidth: 800},\n maxLg: {maxWidth: 1200},\n // Horizontal padding\n padSm: {paddingLeft: layoutSpacing.containerSm, paddingRight: layoutSpacing.containerSm},\n padMd: {paddingLeft: layoutSpacing.containerMd, paddingRight: layoutSpacing.containerMd},\n padLg: {paddingLeft: layoutSpacing.containerLg, paddingRight: layoutSpacing.containerLg},\n // Vertical spacing\n headerPadding: {paddingTop: spacing.lg},\n mainPadding: {paddingTop: spacing.xl, paddingBottom: spacing.xl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type PageShellMaxWidth = 'sm' | 'md' | 'lg' | 'full'\nexport type PageShellPadding = 'sm' | 'md' | 'lg'\n\ninterface PageShellProps {\n /** Max-width preset: sm (600), md (800), lg (1200), full (none). Default: 'lg' */\n maxWidth?: PageShellMaxWidth\n /** Horizontal padding preset. Default: 'md' (24px) */\n padding?: PageShellPadding\n /** Header element rendered above the main content with same constraints */\n header?: ReactNode\n children: ReactNode\n}\n\nconst maxWidthMap = {\n sm: styles.maxSm,\n md: styles.maxMd,\n lg: styles.maxLg,\n full: null,\n} as const\n\nconst paddingMap = {\n sm: styles.padSm,\n md: styles.padMd,\n lg: styles.padLg,\n} as const\n\nexport function PageShell({maxWidth = 'lg', padding = 'md', header, children}: PageShellProps) {\n const mw = maxWidthMap[maxWidth]\n const pad = paddingMap[padding]\n\n return (\n <html.div style={styles.root}>\n {header != null && (\n <html.header style={[styles.container, styles.maxLg, pad, styles.headerPadding]}>\n {header}\n </html.header>\n )}\n <html.main style={[styles.container, mw, pad, styles.mainPadding]}>{children}</html.main>\n </html.div>\n )\n}\n","import {useRef, useState, useEffect} from 'react'\n\nexport type ContainerSize = 'compact' | 'default' | 'spacious'\n\ninterface UseContainerQueryOptions {\n compactBelow?: number\n spaciousAbove?: number\n}\n\nexport function useContainerQuery<T extends HTMLElement = HTMLElement>(\n options: UseContainerQueryOptions = {},\n): {\n ref: React.RefObject<T | null>\n size: ContainerSize\n} {\n const {compactBelow = 480, spaciousAbove = 768} = options\n const ref = useRef<T | null>(null)\n const [size, setSize] = useState<ContainerSize>('default')\n\n useEffect(() => {\n const element = ref.current\n if (!element) return\n\n let rafId: number | null = null\n\n const observer = new ResizeObserver((entries) => {\n if (rafId !== null) cancelAnimationFrame(rafId)\n\n rafId = requestAnimationFrame(() => {\n const entry = entries[0]\n if (!entry) return\n\n const width = entry.contentBoxSize?.[0]?.inlineSize ?? entry.contentRect.width\n\n if (width < compactBelow) {\n setSize('compact')\n } else if (width >= spaciousAbove) {\n setSize('spacious')\n } else {\n setSize('default')\n }\n })\n })\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n if (rafId !== null) cancelAnimationFrame(rafId)\n }\n }, [compactBelow, spaciousAbove])\n\n return {ref, size}\n}\n"],"names":["styleq$1","styleq_2","cache","compiledKey","createStyleq","options","disableCache","disableMix","transform","definedProperties","className","inlineStyle","debugString","nextCache","styles","i","possibleStyle","_i","style","classNameChunk","cacheEntry","definedPropertiesChunk","prop","value","compiledKeyValue","weakMap","subStyle","_prop","_value","styleProps","styleq","optimizedStyleq","merge","dataStyleSrc","result","chunks","pathsMap","chunk","trimmed","path","line","a","button","div","form","heading","header","input","label","main","nav","p","span","textarea","defaultStyles","ReactSharedInternals","require$$0","reactCompilerRuntime_production","size","reactCompilerRuntime_development","dispatcher","compilerRuntimeModule","require$$1","createActionBarStore","entries","listeners","Set","notify","forEach","l","subscribe","cb","add","delete","getSnapshot","push","id","render","update","map","e","remove","filter","ActionBarContext","createContext","ActionBarProvider","children","storeRef","useRef","current","store","useSyncExternalStore","topEntry","length","jsxs","useActionBarStack","$","_c","useContext","useId","t0","some","register","t1","unregister","t2","bb0","t3","entries_0","isTop","t4","managed","overlay","$$css","overlayEmphasized","selectedCount","selectedCountEmphasized","actions","closeButton","closeButtonEmphasized","separator","separatorEmphasized","ActionBarContent","selectedItemCount","selectedLabel","isEmphasized","onClearSelection","dismissible","undefined","countStr","t5","t6","t7","t8","jsx","_rsdMerge","_rsdDefaultStyles","t9","t10","t11","t12","t13","ActionBarInner","props","stack","isActive","renderBar","useEffect","ActionBar","strokeIcons","Fragment","clock","forbidden","shield","lock","key","layers","repeat","database","route","menu","users","mail","plug","pin","sun","moon","monitor","contrast","filledIcons","Icon","name","filled","base","iconWrap","content","error","success","warning","info","defaultIcons","resolveIcon","icon","variant","Alert","resolvedIcon","isNative","sizeMd","sizeSm","default","nativeFlex","sizeMap","sm","md","Badge","sizeDefault","sizeSmall","primary","secondary","link","inverseSecondary","danger","fullWidth","disabled","small","Button","type","onClick","ariaLabel","horizontal","vertical","alignStart","alignCenter","alignEnd","verticalAlignStart","verticalAlignCenter","verticalAlignEnd","gapXs","gapSm","gapMd","gapMap","xs","horizontalAlignMap","start","center","end","verticalAlignMap","ButtonGroup","orientation","align","gap","isVertical","alignStyle","Callout","elevated","outlined","interactive","sizeCompact","sizeFull","compact","full","Card","root","rootDisabled","box","boxUnchecked","boxChecked","Checkbox","checked","controlledChecked","defaultChecked","onChange","isControlled","internalChecked","setInternalChecked","useState","isChecked","target","handleChange","next","t14","opacity","t15","Symbol","for","t16","t17","t18","t19","useControllableValue","controlledValue","defaultValue","internal","setInternal","v","setValue","rootHorizontal","CheckboxGroupContext","useCheckboxGroup","ctx","Error","Root","onValueChange","itemValue","onToggle","Item","itemDisabled","groupValue","groupDisabled","includes","isDisabled","CheckboxGroup","FieldContext","useFieldContext","invalid","ColorInput","required","onBlur","ref","fieldCtx","field","effectiveName","effectiveValue","String","effectiveOnChange","effectiveOnBlur","effectiveRef","effectiveDisabled","controlId","descriptionId","errorId","trim","backdrop","backdropOpen","backdropClosing","viewport","popup","popupOpen","popupClosing","lg","title","description","body","footer","inlineWrapper","reducedMotion","DialogContext","useDialog","open","controlledOpen","defaultOpen","onOpenChange","dismissable","closeAnimationDuration","internalOpen","setInternalOpen","closing","setClosing","closingTimerRef","popupRef","isOpen","titleId","clearTimeout","requestOpen","setTimeout","requestClose","onKeyDown","stopPropagation","document","addEventListener","removeEventListener","prev","overflow","Trigger","Portal","handleBackdropClick","Header","Title","h2","Description","Body","Footer","Close","Dialog","InputGroupContext","useInputGroupContext","inGroup","mono","Input","font","placeholder","readOnly","minLength","maxLength","min","max","step","inputMode","list","pattern","autoComplete","autoFocus","ariaDescribedby","groupCtx","effectiveVariant","describedBy","extraProps","FormContext","useFormContext","rootSide","labelSide","fieldContent","necessityIcon","necessityLabel","formCtx","ControlledRoot","StaticRoot","labelPosition","invalidProp","control","useRHFFormContext","fieldState","useController","effectiveLabelPosition","effectiveNecessityIndicator","necessityIndicator","message","errorMessage","FieldLayout","labelNode","rest","Children","child","isValidElement","Label","isSide","indicator","Field","ConfirmDialog","confirmPhrase","promptLabel","cancelLabel","confirmSlot","onConfirm","confirmLabel","typed","setTyped","satisfied","handleOpenChange","wrapper","wrapperOpenSm","wrapperCloseSm","wrapperOpenMd","wrapperCloseMd","contentSm","contentMd","slideIn","slideOut","bodyPadded","DetailPanelContext","useDetailPanel","present","setPresent","panelRef","previousFocusRef","labelId","setLabelId","activeElement","focus","el","useCallback","registerTitle","unregisterTitle","wrapperOpenMap","wrapperCloseMap","Content","padded","DetailPanel","viewportRight","viewportLeft","viewportBottom","panel","panelHorizontal","panelVertical","panelLeftBorder","slideInRight","slideOutRight","slideInLeft","slideOutLeft","slideInBottom","slideOutBottom","DISMISS_THRESHOLD","VELOCITY_THRESHOLD","DISMISS_DURATION","OPPOSITE_MAX_OVERSCROLL","useSwipeDismiss","anchor","enabled","onDismiss","startX","startY","currentX","currentY","startTime","swiping","panelSize","stateRef","isHorizontal","state","dx","getMovement","movement","panelEl","Number","dataset","progress","sign","closest","previousElementSibling","Math","absMovement","abs","overscroll","shadowSpread","round","boxShadow","applyTransform","resetStyles","_temp","panelEl_1","dismissTransform","transition","backdrop_1","dismissed","done","once","animateDismiss","animateSnapBack","_temp2","handlePointerDown","rect","getBoundingClientRect","state_0","clientX","clientY","Date","now","width","height","setPointerCapture","pointerId","animation","handlePointerMove","e_0","state_1","dx_0","dy","sqrt","preventDefault","movement_0","handlePointerUp","_e","state_2","movement_1","elapsed","velocity","handlePointerCancel","state_3","handleTouchMove","e_1","passive","panelEl_2","backdrop_2","cleanup","panelEl_0","backdrop_0","DrawerContext","useDrawer","swipeDismiss","requestCloseImmediate","slideInMap","right","left","bottom","slideOutMap","viewportAnchorMap","swipeEnabled","t20","Drawer","action","EmptyState","typePresets","bodySm","bodyMd","bodyLg","caption","code","overline","headingSm","headingMd","headingLg","headingXl","displaySm","displayMd","displayLg","muted","accent","defaultVariantMap","alignMap","Heading","level","color","resolvedVariant","h1","h3","h4","h5","h6","item","itemSelected","text","empty","ListContext","selectionMode","useList","selected","ItemText","Actions","Empty","List","Text","formStyles","Form","schema","defaultValues","onSubmit","validationErrors","effectTsResolver","resolver","mode","reValidateMode","methods","useForm","prevErrorKeysRef","prevKeys","nextKeys","Object","keys","clearErrors","key_0","setError","formRef","errors","firstField","setFocus","onInvalid","handleSubmit","FormProvider","legend","gapMs","gapLg","gapXl","ms","xl","Legend","Fieldset","addon","addonStart","addonEnd","addonClickable","addonDisabled","dynamicStyles","minWidth","val","Addon","position","positionStyle","InputGroup","LinkButton","href","rel","trigger","popupEnd","itemHighlighted","linkItem","MenuContext","useMenu","useMenuRoot","setOpen","highlightedId","setHighlightedId","menuId","rootRef","triggerRef","Map","itemsRef","orderRef","needsInitialHighlightRef","close","toggle","order","element","set","ids","sort","b","elA","get","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","registerItem","handleKeyDown","order_0","bb54","prev_2","idx_0","indexOf","idx","prev_1","items","prev_0","click","localRef","Popup","isHighlighted","handleClick","LinkItem","Menu","bordered","Panel","circle","circleUnchecked","circleChecked","dot","RadioGroupContext","useRadioGroup","onSelect","RadioGroup","scrollbar","scrollbarVertical","scrollbarHorizontal","scrollbarHidden","scrollbarVisible","thumb","viewportMaxHeight","maxHeight","thumbVertical","thumbHorizontal","ScrollAreaContext","useScrollArea","useScrollAreaRoot","viewportId","viewportRef","contentRef","scrollTop","setScrollTop","scrollLeft","setScrollLeft","scrollHeight","setScrollHeight","scrollWidth","setScrollWidth","clientHeight","setClientHeight","clientWidth","setClientWidth","scrolling","setScrolling","scrollTimerRef","vp","handleScroll","vp_0","observer","ResizeObserver","observe","disconnect","vp_1","Viewport","Scrollbar","maxScroll","scrollOffset","valueNow","Thumb","draggingRef","startPosRef","startScrollRef","thumbSizePercent","trackSize","thumbPixelSize","thumbOffset","thumbStyle","delta","scrollRatio","scrollDelta","ScrollArea","inputWrapper","inputWrapperFocused","itemHidden","hidden","popupPosition","top","ComboboxContext","useCombobox","useComboboxRoot","inputValue","controlledInputValue","onInputChange","initialLabels","initial","internalInputValue","setInternalInputValue","setInputValue","labels","setLabels","listboxId","inputRef","found","openPopup","selectValue","v_0","label_0","registerLabel","id_0","itemValue_0","query","toLowerCase","id_1","item_0","getVisibleOrder","visibleOrder","bb137","item_1","scrollIntoView","block","lightTheme","xjvd03b","lightShadows","x13v825q","highContrastTheme","highContrastShadows","themeMap","light","portalMount","PortalMountContext","usePortalMount","ThemeProvider","theme","overrides","themeStyles","mount","setMount","focused","setFocused","coords","setCoords","window","useLayoutEffect","node","createPortal","selectedValue","isSelected","isVisible","textContent","el_0","values","Combobox","SelectContext","useSelect","useSelectRoot","items_0","bb86","prev_3","Value","display","Select","group","groupTrigger","groupTriggerActive","chevron","chevronOpen","section","sectionLabel","itemActive","marker","markerActive","itemIcon","itemLabel","SideNavContext","useSideNav","activeValue","expandedGroups","setExpandedGroups","has","toggleGroup","group_0","next_0","expandGroup","Group","groupKey","defaultExpanded","isExpanded","groupRef","querySelector","hasActiveChild","Section","SideNav","spinner","srOnly","Spinner","region","toast","iconSuccess","iconError","iconInfo","closeBtn","DEFAULT_DURATION","createToastStore","seq","opts","duration","variantIcon","variantIconStyle","ToastContext","useToast","ToastItem","entry","timer","ToastProvider","useMemo","dismiss","StatusIcon","TagGroupContext","useTagGroup","wrap","removableMd","removableSm","removeButton","removeButtonDisabled","removableSizeMap","Tag","removable","removableProp","onRemove","onRemoveProp","disabledProp","isGrouped","editable","removeTag","setFocusedIndex","removeLabel","tagContent","role","container","containerError","containerDisabled","containerStatic","liveRegion","useTagGroupCtx","onValidate","gridId","setValues","focusedIndex","setEditable","announcement","setAnnouncement","isInvalid","addTag","value_0","getElementById","querySelectorAll","validate","commitValueRef","raw","selectionStart","handlePaste","clipboardData","getData","split","s","Boolean","handleFocus","TagGroup","loggedMessages","errorMsg","msg","strictAttributeSet","isPropAllowed","validateStrictProps","createStrictDOMComponent","TagName","defaultStyle","debugStyle","Component","htmlFor","restProps","hostProps","hostStyleProps","a$1","article$1","aside$1","b$1","bdi$1","bdo$1","blockquote$1","br$1","button$1","code$1","del$1","div$1","em$1","fieldset$1","footer$1","form$1","header$1","hr$1","i$1","img$1","input$1","ins$1","kbd$1","label$1","li$1","main$1","mark$1","nav$1","ol$1","optgroup$1","option$1","p$1","pre$1","s$1","section$1","select$1","span$1","strong$1","sub$1","sup$1","textarea$1","u$1","ul$1","article","aside","bdi","bdo","blockquote","br","del","em","fieldset","hr","img","ins","kbd","li","mark","ol","optgroup","option","pre","select","strong","sub","sup","u","ul","html","rootContainer","clickableRow","rootResponsive","row","bodyRow","headerCell","cell","cellValue","cellLabel","cellActions","cellSm","cellMd","stripedEven","borderedCell","borderedCellLast","sortChip","rootStacked","headerStacked","rowStacked","bodyRowStacked","cellStacked","cellLabelStacked","cellActionsStacked","borderedCellStacked","sortChipStacked","gridColumns","template","gridColumnsResponsive","compactTemplate","buttonDisabled","pageInfo","Pagination","table","getState","pageIndex","pageSize","pagination","getPageCount","pageCount","getFilteredRowModel","rows","getCanPreviousPage","previousPage","getCanNextPage","nextPage","active","inactive","SortIndicator","column","getCanSort","sorted","getIsSorted","ColumnFilter","getCanFilter","getFilterValue","filterValue","setFilterValue","SortChip","forceShow","find","o","triggerLabel","desc","opt","isCurrent","nextDesc","displayName","FromTanstack","responsive","rowKey","onRowClick","rowAriaLabel","buildSortChip","sortChipNode","paginationNode","getHeaderGroups","TableRow","getVisibleCells","_temp3","getRowModel","Cell","columnDef","meta","isActions","flexRender","getContext","headers","def","labelFromHeader","stackLabel","HeaderCell","isPlaceholder","getAllColumns","c","fromHeader","sorting","setSorting","useIsoLayoutEffect","gridOverflows","grid","TOL","over","h","rowgroups","firstRow","TableContext","useTable","HeaderContext","_IS_PROD","process","env","NODE_ENV","_devWarned","devWarnOnce","console","warn","Container","extractText","out","unwrapElementType","t","extractColumnMeta","widths","compactWidths","walk","unwrappedType","compactWidth","explicit","fallback","join","inferredTemplateRef","containerRef","gridRef","stacked","setStacked","stackedAtWidthRef","HYSTERESIS","measure","ro","contentBoxSize","inlineSize","contentRect","sortChipEl","cloneElement","T0","T1","childArray","toArray","Provider","index","RowIndexContext","INTERACTIVE_SELECTOR","Row","isHeader","rowIndex","isEvenRow","isClickable","Element","CellIndexContext","total","isLast","Table","_temp4","scroll","scrollMax","head","headRow","headCell","headCellSortable","sortMark","bodyTotal","rowClickable","rowAbsolute","y","cellFlex","stackScroll","stackBody","stackRow","stackCell","stackCellLabel","stackCellValue","pos","VirtualTable","data","columns","onSortingChange","getRowId","rowLabel","initialPage","onVisiblePageChange","rangeLabel","estimateRowHeight","virtualizeThreshold","stackBelow","emptyLabel","internalSorting","setInternalSorting","useReactTable","sortingState","getCoreRowModel","getSortedRowModel","wrapRef","apply","virtualize","scrollRef","rv","useVirtualizer","count","getScrollElement","estimateSize","overscan","suppressWrite","scrollToIndex","vItems","getVirtualItems","firstIndex","lastIndex","pages","ceil","curPage","floor","range","from","to","page","lastReported","columnStackLabel","renderRow","positioned","measureRef","original","lbl","getSize","headerGroup","col","getToggleSortingHandler","getTotalSize","vi","measureElement","rootVertical","listVertical","tab","tabVertical","tabActiveHorizontal","tabActiveVertical","tabIndicatorActive","indicatorHorizontal","indicatorVertical","indicatorOffsetH","offset","indicatorOffsetV","tabDisabled","TabsContext","useTabs","useTabsRoot","tabsRef","indicatorActive","setIndicatorActive","registerTab","listRef","setIndicator","CSS","escape","offsetLeft","offsetWidth","offsetTop","offsetHeight","tabs","listEl","prevKey","nextKey","targetValue","currentIdx","Tab","tabId","panelId","Tabs","Textarea","PREFERENCES","ICON","system","dark","LABEL","ColorModeContext","useColorMode","canUseDom","matchMedia","isPreference","readStored","localStorage","getItem","writeStored","setItem","ColorModeProvider","defaultPreference","preference","controlled","onPreferenceChange","modes","storageKey","applyTheme","stored","setPreference","systemTheme","setSystemTheme","mq","matches","cycle","ColorModeToggle","weightNormal","weightMedium","weightSemibold","weightBold","truncate","weightMap","normal","medium","semibold","bold","weight","as","ToggleGroupContext","useToggleGroup","unpressed","pressed","grouped","Toggle","controlledPressed","defaultPressed","onPressedChange","sizeProp","groupPressed","standalonePressed","setStandalonePressed","ToggleGroup","multiple","nextPressed","TooltipContext","useTooltip","placement","delay","tooltipId","timerRef","show","hide","Tooltip","track","trackUnchecked","trackChecked","thumbChecked","Switch","onCheckedChange","setChecked","alignStretch","gapXxl","gapXxxl","xxl","xxxl","stretch","Stack","alignBaseline","justifyStart","justifyCenter","justifyEnd","justifyBetween","baseline","justifyMap","between","Inline","justify","Cluster","col1","col2","col3","col4","col5","col6","autoFit","columnsMap","Grid","minColumnWidth","columnStyle","maxSm","maxMd","maxLg","padSm","padMd","padLg","headerPadding","mainPadding","maxWidthMap","paddingMap","PageShell","maxWidth","padding","mw","pad","useContainerQuery","compactBelow","spaciousAbove","setSize","rafId","cancelAnimationFrame","requestAnimationFrame"],"mappings":"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","x_google_ignoreList":[0,1,2,3,94]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.6_react-dom@19.2.4_react@19.2.4__react-native@0.84._1278be21509893d955b57d0db9435779/node_modules/react-strict-dom/dist/web/runtime.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-compiler-runtime.production.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-compiler-runtime.development.js","../../../node_modules/.pnpm/react@19.2.4/node_modules/react/compiler-runtime.js","../src/components/ActionBar/ActionBarProvider.tsx","../src/components/ActionBar/styles.css.ts","../src/components/ActionBar/ActionBar.tsx","../src/components/Icon/Icon.tsx","../src/components/Alert/styles.css.ts","../src/components/Alert/Alert.tsx","../src/platform.ts","../src/components/Badge/styles.css.ts","../src/components/Badge/Badge.tsx","../src/components/Button/styles.css.ts","../src/components/Button/Button.tsx","../src/components/ButtonGroup/styles.css.ts","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Callout/styles.css.ts","../src/components/Callout/Callout.tsx","../src/components/Card/styles.css.ts","../src/components/Card/Card.tsx","../src/components/Checkbox/styles.css.ts","../src/components/Checkbox/Checkbox.tsx","../src/hooks/useControllableValue.ts","../src/components/CheckboxGroup/styles.css.ts","../src/components/CheckboxGroup/CheckboxGroup.tsx","../src/components/Field/FieldContext.ts","../src/components/ColorInput/styles.css.ts","../src/components/ColorInput/ColorInput.tsx","../src/components/Dialog/styles.css.ts","../src/components/Dialog/Dialog.tsx","../src/components/InputGroup/InputGroupContext.ts","../src/components/Input/styles.css.ts","../src/components/Input/Input.tsx","../src/components/Form/FormContext.ts","../src/components/Field/styles.css.ts","../src/components/Field/Field.tsx","../src/components/ConfirmDialog/ConfirmDialog.tsx","../src/components/DetailPanel/styles.css.ts","../src/components/DetailPanel/DetailPanel.tsx","../src/components/Drawer/styles.css.ts","../src/components/Drawer/useSwipeDismiss.ts","../src/components/Drawer/Drawer.tsx","../src/components/EmptyState/styles.css.ts","../src/components/EmptyState/EmptyState.tsx","../../tokens/src/tokens/type-presets.css.ts","../src/components/Heading/styles.css.ts","../src/components/Heading/Heading.tsx","../src/components/List/styles.css.ts","../src/components/List/List.tsx","../src/components/Form/Form.tsx","../src/components/Fieldset/styles.css.ts","../src/components/Fieldset/Fieldset.tsx","../src/components/InputGroup/styles.css.ts","../src/components/InputGroup/InputGroup.tsx","../src/components/LinkButton/styles.css.ts","../src/components/LinkButton/LinkButton.tsx","../src/components/Menu/styles.css.ts","../src/components/Menu/MenuContext.ts","../src/components/Menu/useMenuRoot.ts","../src/components/Menu/Menu.tsx","../src/components/Panel/styles.css.ts","../src/components/Panel/Panel.tsx","../src/components/RadioGroup/styles.css.ts","../src/components/RadioGroup/RadioGroup.tsx","../src/components/ScrollArea/styles.css.ts","../src/components/ScrollArea/ScrollAreaContext.ts","../src/components/ScrollArea/useScrollAreaRoot.ts","../src/components/ScrollArea/ScrollArea.tsx","../src/components/Combobox/styles.css.ts","../src/components/Combobox/ComboboxContext.ts","../src/components/Combobox/useComboboxRoot.ts","../../tokens/src/themes/light.css.ts","../../tokens/src/themes/high-contrast.css.ts","../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/Combobox/Combobox.tsx","../src/components/Select/styles.css.ts","../src/components/Select/SelectContext.ts","../src/components/Select/useSelectRoot.ts","../src/components/Select/Select.tsx","../src/components/SideNav/styles.css.ts","../src/components/SideNav/SideNavContext.ts","../src/components/SideNav/SideNav.tsx","../src/components/Spinner/styles.css.ts","../src/components/Spinner/Spinner.tsx","../src/components/Toast/styles.css.ts","../src/components/Toast/ToastProvider.tsx","../src/components/StatusIcon/styles.css.ts","../src/components/StatusIcon/StatusIcon.tsx","../src/components/TagGroup/TagGroupContext.ts","../src/components/Tag/styles.css.ts","../src/components/Tag/Tag.tsx","../src/components/TagGroup/styles.css.ts","../src/components/TagGroup/TagGroup.tsx","../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.6_react-dom@19.2.4_react@19.2.4__react-native@0.84._1278be21509893d955b57d0db9435779/node_modules/react-strict-dom/dist/web/index.js","../../tokens/src/tokens/breakpoints.css.ts","../src/components/Table/styles.css.ts","../src/components/Table/Pagination.tsx","../src/components/Table/SortIndicator.tsx","../src/components/Table/ColumnFilter.tsx","../src/components/Table/SortChip.tsx","../src/components/Table/FromTanstack.tsx","../src/components/Table/Table.tsx","../src/components/VirtualTable/styles.css.ts","../src/components/VirtualTable/VirtualTable.tsx","../src/components/Tabs/styles.css.ts","../src/components/Tabs/TabsContext.ts","../src/components/Tabs/useTabsRoot.ts","../src/components/Tabs/Tabs.tsx","../src/components/Textarea/styles.css.ts","../src/components/Textarea/Textarea.tsx","../src/components/ColorMode/styles.css.ts","../src/components/ColorMode/ColorMode.tsx","../src/components/Text/styles.css.ts","../src/components/Text/Text.tsx","../src/components/ToggleGroup/ToggleGroupContext.ts","../src/components/Toggle/styles.css.ts","../src/components/Toggle/Toggle.tsx","../src/components/ToggleGroup/styles.css.ts","../src/components/ToggleGroup/ToggleGroup.tsx","../src/components/Tooltip/styles.css.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Switch/styles.css.ts","../src/components/Switch/Switch.tsx","../src/components/Stack/styles.css.ts","../src/components/Stack/Stack.tsx","../src/components/Inline/styles.css.ts","../src/components/Inline/Inline.tsx","../src/components/Cluster/styles.css.ts","../src/components/Cluster/Cluster.tsx","../src/components/Grid/styles.css.ts","../src/components/Grid/Grid.tsx","../src/components/PageShell/styles.css.ts","../src/components/PageShell/PageShell.tsx","../src/hooks/useContainerQuery.ts"],"sourcesContent":["/**\n * @license react-strict-dom\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\nimport * as stylex from '@stylexjs/stylex';\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a = styles.inline;\nconst article = styles.block;\nconst aside = styles.block;\nconst b = styles.inline;\nconst bdi = styles.inline;\nconst bdo = styles.inline;\nconst blockquote = styles.block;\nconst br = null;\nconst button = [styles.inlineblock, styles.button];\nconst code = [styles.inline, styles.codePre];\nconst del = null;\nconst div = styles.block;\nconst em = styles.inline;\nconst fieldset = styles.block;\nconst footer = styles.block;\nconst form = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header = styles.block;\nconst hr = [styles.block, styles.hr];\nconst i = styles.inline;\nconst img = styles.img;\nconst input = [styles.inlineblock, styles.input];\nconst ins = null;\nconst kbd = null;\nconst label = styles.inline;\nconst li = styles.block;\nconst main = styles.block;\nconst mark = styles.inline;\nconst nav = styles.block;\nconst ol = [styles.list, styles.block];\nconst optgroup = null;\nconst option = null;\nconst p = styles.block;\nconst pre = [styles.block, styles.codePre];\nconst s = null;\nconst section = styles.block;\nconst select = styles.inlineblock;\nconst span = styles.inline;\nconst strong = [styles.inline, styles.strong];\nconst sub = styles.inline;\nconst sup = styles.inline;\nconst textarea = [styles.inlineblock, styles.textarea];\nconst u = null;\nconst ul = [styles.list, styles.block];\nconst defaultStyles = {\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n};\n\nexport { defaultStyles, merge };\n","/**\n * @license React\n * react-compiler-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nexports.c = function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n};\n","/**\n * @license React\n * react-compiler-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n var ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n exports.c = function (size) {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher.useMemoCache(size);\n };\n })();\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-compiler-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-compiler-runtime.development.js');\n}\n","import {\n createContext,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useSyncExternalStore,\n type ReactNode,\n} from 'react'\n\ninterface ActionBarEntry {\n id: string\n render: () => ReactNode\n}\n\ninterface ActionBarStore {\n subscribe: (cb: () => void) => () => void\n getSnapshot: () => readonly ActionBarEntry[]\n push: (id: string, render: () => ReactNode) => void\n update: (id: string, render: () => ReactNode) => void\n remove: (id: string) => void\n}\n\nfunction createActionBarStore(): ActionBarStore {\n let entries: ActionBarEntry[] = []\n const listeners = new Set<() => void>()\n\n const notify = () => listeners.forEach((l) => l())\n\n return {\n subscribe: (cb) => {\n listeners.add(cb)\n return () => listeners.delete(cb)\n },\n getSnapshot: () => entries,\n push: (id, render) => {\n entries = [...entries, {id, render}]\n notify()\n },\n update: (id, render) => {\n entries = entries.map((e) => (e.id === id ? {id, render} : e))\n notify()\n },\n remove: (id) => {\n entries = entries.filter((e) => e.id !== id)\n notify()\n },\n }\n}\n\nconst ActionBarContext = createContext<ActionBarStore | null>(null)\n\nexport function ActionBarProvider({children}: {children: ReactNode}) {\n const storeRef = useRef<ActionBarStore>(null)\n if (storeRef.current === null) {\n storeRef.current = createActionBarStore()\n }\n const store = storeRef.current\n\n const entries = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot)\n const topEntry = entries.length > 0 ? entries[entries.length - 1] : null\n\n return (\n <ActionBarContext.Provider value={store}>\n {children}\n {topEntry?.render()}\n </ActionBarContext.Provider>\n )\n}\n\nexport function useActionBarStack() {\n const store = useContext(ActionBarContext)\n const id = useId()\n\n const register = useCallback(\n (render: () => ReactNode) => {\n if (!store) return\n const entries = store.getSnapshot()\n if (entries.some((e) => e.id === id)) {\n store.update(id, render)\n } else {\n store.push(id, render)\n }\n },\n [store, id],\n )\n\n const unregister = useCallback(() => {\n store?.remove(id)\n }, [store, id])\n\n const isTop = useMemo(() => {\n if (!store) return false\n const entries = store.getSnapshot()\n return entries.length > 0 && entries[entries.length - 1].id === id\n }, [store, id])\n\n return {id, register, unregister, managed: store !== null, isTop}\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n overlay: {\n position: 'fixed',\n bottom: spacing.lg,\n left: '50%',\n transform: 'translateX(-50%)',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.md,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n boxShadow: shadows.lg,\n zIndex: 50,\n maxWidth: 'calc(100vw - 48px)',\n },\n overlayEmphasized: {\n backgroundColor: colors.accent,\n borderColor: colors.accent,\n },\n selectedCount: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n fontFamily: typography.fontFamily,\n color: colors.text,\n whiteSpace: 'nowrap',\n },\n selectedCountEmphasized: {\n color: colors.accentContrast,\n },\n actions: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.sm,\n },\n closeButton: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 28,\n height: 28,\n padding: 0,\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderRadius: radii.sm,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n cursor: 'pointer',\n transitionProperty: 'color, background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 2,\n },\n },\n closeButtonEmphasized: {\n color: {\n default: colors.accentContrast,\n ':hover': colors.accentContrast,\n },\n opacity: {\n default: 0.7,\n ':hover': 1,\n },\n },\n separator: {\n width: 1,\n alignSelf: 'stretch',\n backgroundColor: colors.border,\n marginTop: spacing.xs,\n marginBottom: spacing.xs,\n },\n separatorEmphasized: {\n backgroundColor: colors.accentContrast,\n opacity: 0.3,\n },\n})\n","import {useEffect, useCallback, type ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useActionBarStack} from './ActionBarProvider'\nimport {styles} from './styles.css'\n\nexport interface ActionBarProps {\n /** Number of selected items, or 'all'. Hidden when 0. */\n selectedItemCount: number | 'all'\n /** Label for the selection count. Receives the count string. */\n selectedLabel?: (count: string) => string\n /** Whether to use emphasized (accent) styling. */\n isEmphasized?: boolean\n /** Called when the clear/close button is pressed. */\n onClearSelection: () => void\n /** Whether the bar can be dismissed. When false, the close button is hidden. @default true */\n dismissible?: boolean\n /** Action buttons to display. */\n children: ReactNode\n}\n\nfunction ActionBarContent({\n selectedItemCount,\n selectedLabel,\n isEmphasized = false,\n onClearSelection,\n dismissible = true,\n children,\n}: ActionBarProps) {\n const countStr = selectedItemCount === 'all' ? 'All' : `${selectedItemCount}`\n const label = selectedLabel ? selectedLabel(countStr) : `${countStr} selected`\n\n return (\n <html.div\n role=\"toolbar\"\n aria-label={label}\n style={[styles.overlay, isEmphasized && styles.overlayEmphasized]}\n >\n <html.span style={[styles.selectedCount, isEmphasized && styles.selectedCountEmphasized]}>\n {label}\n </html.span>\n <html.div style={[styles.separator, isEmphasized && styles.separatorEmphasized]} />\n <html.div style={styles.actions}>{children}</html.div>\n {dismissible && (\n <html.button\n type=\"button\"\n aria-label=\"Clear selection\"\n onClick={onClearSelection}\n style={[styles.closeButton, isEmphasized && styles.closeButtonEmphasized]}\n >\n <svg width={10} height={10} viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M1 1l8 8M9 1l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )}\n </html.div>\n )\n}\n\nfunction ActionBarInner(props: ActionBarProps) {\n const {selectedItemCount} = props\n const stack = useActionBarStack()\n const isActive = selectedItemCount !== 0\n\n const renderBar = useCallback(() => <ActionBarContent {...props} />, [props])\n\n useEffect(() => {\n if (!stack.managed) return\n if (isActive) {\n stack.register(renderBar)\n } else {\n stack.unregister()\n }\n return () => stack.unregister()\n }, [stack, isActive, renderBar])\n\n // If no provider, fall back to standalone rendering\n if (!stack.managed) {\n if (!isActive) return null\n return <ActionBarContent {...props} />\n }\n\n // Managed by provider — rendering happens there\n return null\n}\n\nexport const ActionBar = ActionBarInner\n","import type {ReactNode} from 'react'\n\nexport type IconName =\n | 'x-circle'\n | 'check-circle'\n | 'check-done'\n | 'clock'\n | 'forbidden'\n | 'info-circle'\n | 'alert-triangle'\n | 'shield'\n | 'lock'\n | 'key'\n // Navigation / wayfinding glyphs\n | 'map'\n | 'layers'\n | 'repeat'\n | 'database'\n | 'shield-check'\n | 'route'\n | 'git-branch'\n | 'menu'\n | 'pin'\n // People / access / admin glyphs\n | 'users'\n | 'user-plus'\n | 'mail'\n | 'file-text'\n | 'plug'\n // Color-mode glyphs\n | 'sun'\n | 'moon'\n | 'monitor'\n | 'contrast'\n // Filled variants (solid shape with cutout symbol)\n | 'info-circle-filled'\n | 'alert-triangle-filled'\n | 'check-circle-filled'\n | 'x-circle-filled'\n | 'shield-filled'\n | 'lock-filled'\n\n/** Stroke-based icons (Feather/Lucide style) */\nconst strokeIcons: Partial<Record<IconName, ReactNode>> = {\n 'x-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </>\n ),\n 'check-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"16 10 11 15 8 12\" />\n </>\n ),\n 'check-done': (\n <>\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22 4 12 14.01 9 11.01\" />\n </>\n ),\n clock: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </>\n ),\n forbidden: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\" />\n </>\n ),\n 'info-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </>\n ),\n 'alert-triangle': (\n <>\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </>\n ),\n shield: <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />,\n lock: (\n <>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </>\n ),\n key: (\n <>\n <path d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.78 7.78 5.5 5.5 0 0 1 7.78-7.78zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\" />\n </>\n ),\n // ---- navigation / wayfinding ----\n map: (\n <>\n <polygon points=\"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"18\" />\n <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"22\" />\n </>\n ),\n layers: (\n <>\n <polygon points=\"12 2 2 7 12 12 22 7 12 2\" />\n <polyline points=\"2 17 12 22 22 17\" />\n <polyline points=\"2 12 12 17 22 12\" />\n </>\n ),\n // Two crossing arrows — exchange / interface flows.\n repeat: (\n <>\n <polyline points=\"17 1 21 5 17 9\" />\n <path d=\"M3 11V9a4 4 0 0 1 4-4h14\" />\n <polyline points=\"7 23 3 19 7 15\" />\n <path d=\"M21 13v2a4 4 0 0 1-4 4H3\" />\n </>\n ),\n database: (\n <>\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\" />\n <path d=\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\" />\n </>\n ),\n 'shield-check': (\n <>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <polyline points=\"9 12 11 14 15 10\" />\n </>\n ),\n // Milestone path — roadmap / itinerary.\n route: (\n <>\n <circle cx=\"6\" cy=\"19\" r=\"3\" />\n <path d=\"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15\" />\n <circle cx=\"18\" cy=\"5\" r=\"3\" />\n </>\n ),\n 'git-branch': (\n <>\n <line x1=\"6\" y1=\"3\" x2=\"6\" y2=\"15\" />\n <circle cx=\"18\" cy=\"6\" r=\"3\" />\n <circle cx=\"6\" cy=\"18\" r=\"3\" />\n <path d=\"M18 9a9 9 0 0 1-9 9\" />\n </>\n ),\n menu: (\n <>\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </>\n ),\n // ---- people / access / admin ----\n users: (\n <>\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\" />\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" />\n </>\n ),\n 'user-plus': (\n <>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\n <circle cx=\"8.5\" cy=\"7\" r=\"4\" />\n <line x1=\"20\" y1=\"8\" x2=\"20\" y2=\"14\" />\n <line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\" />\n </>\n ),\n mail: (\n <>\n <path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\" />\n <polyline points=\"22,6 12,13 2,6\" />\n </>\n ),\n 'file-text': (\n <>\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\n <polyline points=\"10 9 9 9 8 9\" />\n </>\n ),\n plug: (\n <>\n <path d=\"M12 22v-5\" />\n <path d=\"M9 8V2\" />\n <path d=\"M15 8V2\" />\n <path d=\"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z\" />\n </>\n ),\n pin: (\n <>\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"22\" />\n <path d=\"M9 10.76V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v6.76a2 2 0 0 0 .55 1.38l1.68 1.78A1 1 0 0 1 16.5 16h-9a1 1 0 0 1-.73-1.68l1.68-1.78A2 2 0 0 0 9 10.76z\" />\n </>\n ),\n // ---- color mode ----\n sun: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"5\" />\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" />\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" />\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" />\n <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" />\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" />\n <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" />\n <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\n </>\n ),\n moon: <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />,\n monitor: (\n <>\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\" />\n <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\" />\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\" />\n </>\n ),\n // Circle, half solid — high-contrast / mode indicator.\n contrast: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 2a10 10 0 0 1 0 20z\" fill=\"currentColor\" stroke=\"none\" />\n </>\n ),\n}\n\n/**\n * Filled icons — solid shape with evenodd cutout for the inner symbol.\n * The cutout reveals the background color, so they work on any theme.\n * Uses fill=\"currentColor\" only, no stroke.\n */\nconst filledIcons: Partial<Record<IconName, ReactNode>> = {\n // Filled circle with \"i\" cutout (dot + line)\n 'info-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-.75 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0zM11 11a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0v-5z\"\n />\n ),\n // Filled triangle with \"!\" cutout\n 'alert-triangle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM11 10a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0v-3zm.25 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0z\"\n />\n ),\n // Filled circle with checkmark cutout\n 'check-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm4.707 8.707a1 1 0 0 0-1.414-1.414L11 13.586l-2.293-2.293a1 1 0 0 0-1.414 1.414l3 3a1 1 0 0 0 1.414 0l5-5z\"\n />\n ),\n // Filled circle with X cutout\n 'x-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zM9.707 8.293a1 1 0 0 0-1.414 1.414L10.586 12l-2.293 2.293a1 1 0 1 0 1.414 1.414L12 13.414l2.293 2.293a1 1 0 0 0 1.414-1.414L13.414 12l2.293-2.293a1 1 0 0 0-1.414-1.414L12 10.586 9.707 8.293z\"\n />\n ),\n // Filled shield with checkmark cutout\n 'shield-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 1L3 5v7c0 6.5 8.5 10.5 9 10.73.5-.23 9-4.23 9-10.73V5l-9-4zm3.707 8.707a1 1 0 0 0-1.414-1.414L11 11.586l-1.293-1.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4z\"\n />\n ),\n // Filled lock body with stroke shackle\n 'lock-filled': (\n <>\n <path\n d=\"M7 11V7a5 5 0 0 1 10 0v4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n </>\n ),\n}\n\ninterface IconProps {\n name: IconName\n size?: number\n}\n\nexport function Icon({name, size = 24}: IconProps) {\n const filled = filledIcons[name]\n if (filled) {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" width={size} height={size}>\n {filled}\n </svg>\n )\n }\n\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width={size}\n height={size}\n >\n {strokeIcons[name]}\n </svg>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n },\n iconWrap: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: 1,\n },\n content: {\n flex: 1,\n minWidth: 0,\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type AlertVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<AlertVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface AlertProps {\n variant?: AlertVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n children: ReactNode\n}\n\nfunction resolveIcon(icon: AlertProps['icon'], variant: AlertVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={18} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={18} />\n return icon\n}\n\nexport function Alert({variant = 'info', icon, children}: AlertProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div role=\"alert\" style={[styles.base, styles[variant]]}>\n {resolvedIcon ? (\n <>\n <html.div style={styles.iconWrap}>{resolvedIcon}</html.div>\n <html.div style={styles.content}>{children}</html.div>\n </>\n ) : (\n children\n )}\n </html.div>\n )\n}\n","/**\n * Platform flag resolved by the bundler's platform extensions: web bundlers\n * (Vite/Rollup) read THIS file (`isNative = false`); Metro reads\n * `platform.native.ts` (`isNative = true`) on React Native / Expo.\n *\n * It lets shared components layer a native-only style override without\n * importing `react-native` on web (the DS web build has no react-native).\n * Typed `boolean` (not the `false` literal) so `isNative && styles.x` stays a\n * `false | Style` union in style arrays rather than narrowing to `false`.\n */\nexport const isNative: boolean = false\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightMedium,\n lineHeight: 1,\n borderRadius: radii.full,\n whiteSpace: 'nowrap',\n },\n sizeMd: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n sizeSm: {\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n fontSize: '0.625rem',\n },\n default: {\n backgroundColor: colors.bgCardHover,\n color: colors.textMuted,\n },\n success: {\n backgroundColor: colors.successBg,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n color: colors.warningText,\n },\n error: {\n backgroundColor: colors.errorBg,\n color: colors.errorText,\n },\n info: {\n backgroundColor: colors.infoBg,\n color: colors.infoText,\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {styles} from './styles.css'\n\nexport type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type BadgeSize = 'sm' | 'md'\n\ninterface BadgeProps {\n variant?: BadgeVariant\n size?: BadgeSize\n children: ReactNode\n}\n\nconst sizeMap = {\n sm: styles.sizeSm,\n md: styles.sizeMd,\n} as const\n\nexport function Badge({variant = 'default', size = 'md', children}: BadgeProps) {\n return (\n <html.span style={[styles.base, isNative && styles.nativeFlex, sizeMap[size], styles[variant]]}>\n {children}\n </html.span>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, color, opacity, transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n textDecoration: 'none',\n whiteSpace: 'nowrap',\n // Tactile press feedback. The scale is suppressed under reduced motion (and\n // duration.fast collapses to 0ms there too), so it's inert for those users.\n transform: {\n default: 'scale(1)',\n ':active': {\n default: 'scale(0.97)',\n '@media (prefers-reduced-motion: reduce)': 'scale(1)',\n },\n },\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 2,\n },\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n ':active': colors.accentHover,\n },\n borderColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderColor: colors.border,\n color: colors.textMuted,\n },\n link: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n color: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n textDecoration: {\n default: 'none',\n ':hover': 'underline',\n },\n paddingLeft: 0,\n paddingRight: 0,\n },\n inverseSecondary: {\n backgroundColor: {\n default: 'rgba(0, 0, 0, 0.10)',\n ':hover': 'rgba(0, 0, 0, 0.18)',\n },\n borderColor: {\n default: 'rgba(0, 0, 0, 0.55)',\n ':hover': 'rgba(0, 0, 0, 0.70)',\n },\n color: colors.accentContrast,\n },\n danger: {\n backgroundColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n ':active': colors.errorHover,\n },\n borderColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n },\n color: colors.errorContrast,\n },\n fullWidth: {\n width: '100%',\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {styles} from './styles.css'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'inverseSecondary' | 'link' | 'danger'\nexport type ButtonSize = 'default' | 'small'\n\ninterface ButtonProps {\n variant?: ButtonVariant\n size?: ButtonSize\n fullWidth?: boolean\n disabled?: boolean\n type?: 'button' | 'submit'\n onClick?: () => void\n /** Accessible name override — e.g. for buttons whose visible text isn't unique. */\n 'aria-label'?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function Button({\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n disabled = false,\n type = 'button',\n onClick,\n 'aria-label': ariaLabel,\n children,\n}: ButtonProps) {\n return (\n <html.button\n type={type}\n disabled={disabled}\n onClick={onClick}\n aria-label={ariaLabel}\n style={[\n styles.base,\n isNative && styles.nativeFlex,\n sizeMap[size],\n styles[variant],\n fullWidth && styles.fullWidth,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n },\n horizontal: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n vertical: {\n flexDirection: 'column',\n },\n alignStart: {justifyContent: 'flex-start'},\n alignCenter: {justifyContent: 'center'},\n alignEnd: {justifyContent: 'flex-end'},\n verticalAlignStart: {alignItems: 'flex-start'},\n verticalAlignCenter: {alignItems: 'center'},\n verticalAlignEnd: {alignItems: 'flex-end'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMd: {gap: spacing.md},\n disabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport interface ButtonGroupProps {\n children: ReactNode\n /** Layout direction. Default: 'horizontal' */\n orientation?: 'horizontal' | 'vertical'\n /** Alignment within container. Default: 'start' */\n align?: 'start' | 'end' | 'center'\n /** Disable all buttons in group */\n disabled?: boolean\n /** Gap between buttons. Default: 'sm' */\n gap?: 'xs' | 'sm' | 'md'\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n md: styles.gapMd,\n} as const\n\nconst horizontalAlignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nconst verticalAlignMap = {\n start: styles.verticalAlignStart,\n center: styles.verticalAlignCenter,\n end: styles.verticalAlignEnd,\n} as const\n\nexport function ButtonGroup({\n children,\n orientation = 'horizontal',\n align = 'start',\n disabled = false,\n gap = 'sm',\n}: ButtonGroupProps) {\n const isVertical = orientation === 'vertical'\n const alignStyle = isVertical ? verticalAlignMap[align] : horizontalAlignMap[align]\n\n return (\n <html.div\n role=\"group\"\n style={[\n styles.base,\n isVertical ? styles.vertical : styles.horizontal,\n gapMap[gap],\n alignStyle,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n },\n // Vertically centres the icon with the message — the right default for the\n // short, single/two-line messages callouts usually carry.\n alignCenter: {\n alignItems: 'center',\n },\n // Aligns the icon to the first line — for long, multi-paragraph messages.\n alignStart: {\n alignItems: 'flex-start',\n },\n icon: {\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n content: {\n flexGrow: 1,\n minWidth: 0,\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type CalloutVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<CalloutVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface CalloutProps {\n variant?: CalloutVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n /**\n * Vertical alignment of the icon against the message. `center` (default)\n * suits short single/two-line messages; `start` aligns the icon to the first\n * line for long multi-paragraph content.\n */\n align?: 'center' | 'start'\n children: ReactNode\n}\n\nfunction resolveIcon(icon: CalloutProps['icon'], variant: CalloutVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={36} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={36} />\n return icon\n}\n\nexport function Callout({variant = 'info', icon, align = 'center', children}: CalloutProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div\n role=\"note\"\n style={[\n styles.base,\n styles[variant],\n align === 'center' ? styles.alignCenter : styles.alignStart,\n ]}\n >\n {resolvedIcon && <html.span style={styles.icon}>{resolvedIcon}</html.span>}\n <html.div style={styles.content}>{children}</html.div>\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n },\n // Variants\n elevated: {\n borderRadius: radii.lg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n },\n outlined: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n filled: {\n borderRadius: radii.md,\n },\n interactive: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n backgroundColor: {\n default: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n // Lift on hover; suppressed under reduced motion so there's no positional\n // shift (the token duration also collapses to 0ms there).\n transform: {\n default: 'translateY(0)',\n ':hover': {\n default: 'translateY(-2px)',\n '@media (prefers-reduced-motion: reduce)': 'translateY(0)',\n },\n },\n },\n // Sizes (padding)\n sizeDefault: {\n padding: spacing.lg,\n },\n sizeCompact: {\n padding: spacing.md,\n },\n sizeFull: {\n padding: spacing.xl,\n },\n // Header\n header: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n marginBottom: spacing.md,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type CardVariant = 'elevated' | 'outlined' | 'filled' | 'interactive'\nexport type CardSize = 'default' | 'compact' | 'full'\n\ninterface CardProps {\n variant?: CardVariant\n size?: CardSize\n header?: string\n onClick?: () => void\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n compact: styles.sizeCompact,\n full: styles.sizeFull,\n} as const\n\nexport function Card({\n variant = 'outlined',\n size = 'default',\n header,\n onClick,\n children,\n}: CardProps) {\n return (\n <html.div onClick={onClick} style={[styles.base, styles[variant], sizeMap[size]]}>\n {header && <html.div style={styles.header}>{header}</html.div>}\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n rootDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n box: {\n width: 18,\n height: 18,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.xs,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n transitionProperty: 'background-color, border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n boxUnchecked: {\n backgroundColor: colors.bg,\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n boxChecked: {\n backgroundColor: colors.accent,\n borderColor: colors.accent,\n },\n // Native-only checkmark: a small box showing just its right + bottom border,\n // rotated 45° into a tick. Pure CSS (RSD translates the transform string to\n // an RN transform), so no SVG / react-native-svg weight reaches web.\n checkmark: {\n width: 5,\n height: 9,\n borderRightWidth: 2,\n borderRightStyle: 'solid',\n borderRightColor: colors.accentContrast,\n borderBottomWidth: 2,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.accentContrast,\n transform: 'rotate(45deg)',\n marginTop: -2,\n },\n checkmarkVisible: {\n opacity: 1,\n },\n checkmarkHidden: {\n opacity: 0,\n },\n // Native label text — RN <Text> doesn't inherit color/size from the button\n // ancestor the way web inherits from <label>, so set it explicitly.\n labelText: {\n fontSize: typography.fontSizeSm,\n color: colors.text,\n },\n // Strip the default button chrome RSD gives <button> on native (border/bg/\n // padding mimic the browser default) so the row matches the web checkbox.\n nativeButton: {\n borderWidth: 0,\n backgroundColor: 'transparent',\n padding: 0,\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` (on both .root and .box); web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import {type ReactNode, useState, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {styles} from './styles.css'\n\ninterface CheckboxProps {\n name?: string\n value?: string\n checked?: boolean\n defaultChecked?: boolean\n disabled?: boolean\n /** Accessible label when no visible label (children) is provided. */\n 'aria-label'?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n children?: ReactNode\n}\n\nexport function Checkbox({\n name,\n value,\n checked: controlledChecked,\n defaultChecked = false,\n disabled = false,\n 'aria-label': ariaLabel,\n onChange,\n children,\n}: CheckboxProps) {\n const isControlled = controlledChecked !== undefined\n const [internalChecked, setInternalChecked] = useState(defaultChecked)\n const isChecked = isControlled ? controlledChecked : internalChecked\n\n // Web: the real <input type=checkbox> drives toggling, a11y and form submit.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(e.target.checked)\n }\n onChange?.(e)\n },\n [isControlled, onChange],\n )\n\n // Native: RSD only makes <button> pressable and has no <input type=checkbox>,\n // so the whole row is a button and we synthesize the change payload that\n // consumers read (e.target.checked).\n const handlePress = useCallback(() => {\n if (disabled) return\n const next = !isChecked\n if (!isControlled) {\n setInternalChecked(next)\n }\n onChange?.({\n target: {checked: next, name, value},\n } as unknown as React.ChangeEvent<HTMLInputElement>)\n }, [disabled, isChecked, isControlled, onChange, name, value])\n\n if (isNative) {\n return (\n <html.button\n type=\"button\"\n onClick={handlePress}\n disabled={disabled}\n role=\"checkbox\"\n aria-checked={isChecked}\n aria-label={!children ? ariaLabel : undefined}\n style={[\n styles.root,\n styles.nativeFlex,\n styles.nativeButton,\n disabled && styles.rootDisabled,\n ]}\n >\n <html.div\n style={[\n styles.box,\n styles.nativeFlex,\n isChecked ? styles.boxChecked : styles.boxUnchecked,\n ]}\n >\n {/* CSS-border checkmark (rotated right+bottom borders) — no SVG, no\n react-native-svg dep, so nothing is added to the web bundle. */}\n <html.div\n style={[styles.checkmark, isChecked ? styles.checkmarkVisible : styles.checkmarkHidden]}\n />\n </html.div>\n {children && <html.span style={styles.labelText}>{children}</html.span>}\n </html.button>\n )\n }\n\n return (\n <html.label style={[styles.root, disabled && styles.rootDisabled]}>\n <html.input\n type=\"checkbox\"\n name={name}\n value={value}\n checked={isControlled ? controlledChecked : undefined}\n defaultChecked={!isControlled ? defaultChecked : undefined}\n disabled={disabled}\n aria-label={!children ? ariaLabel : undefined}\n onChange={handleChange}\n style={styles.input}\n />\n <html.span\n style={[styles.box, isChecked ? styles.boxChecked : styles.boxUnchecked]}\n aria-hidden\n >\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n style={{opacity: isChecked ? 1 : 0}}\n >\n <polyline\n points=\"2.5 6 5 8.5 9.5 3.5\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {useState, useCallback} from 'react'\n\nexport function useControllableValue<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void,\n) {\n const [internal, setInternal] = useState(defaultValue)\n const value = controlledValue !== undefined ? controlledValue : internal\n const setValue = useCallback(\n (v: T) => {\n if (controlledValue === undefined) setInternal(v)\n onChange?.(v)\n },\n [controlledValue, onChange],\n )\n return [value, setValue] as const\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n rootHorizontal: {\n flexDirection: 'row',\n },\n})\n","import {type ReactNode, createContext, useContext, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {Checkbox} from '../Checkbox/Checkbox'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ninterface CheckboxGroupContextValue {\n value: string[]\n onToggle: (itemValue: string, checked: boolean) => void\n disabled: boolean\n}\n\nconst CheckboxGroupContext = createContext<CheckboxGroupContextValue | null>(null)\n\nfunction useCheckboxGroup() {\n const ctx = useContext(CheckboxGroupContext)\n if (!ctx) {\n throw new Error('CheckboxGroup.Item must be used within CheckboxGroup.Root')\n }\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n value?: string[]\n defaultValue?: string[]\n onValueChange?: (value: string[]) => void\n orientation?: 'horizontal' | 'vertical'\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Root({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n orientation = 'vertical',\n disabled = false,\n children,\n}: RootProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const onToggle = useCallback(\n (itemValue: string, checked: boolean) => {\n if (disabled) return\n const next = checked ? [...value, itemValue] : value.filter((v) => v !== itemValue)\n setValue(next)\n },\n [disabled, value, setValue],\n )\n\n return (\n <CheckboxGroupContext.Provider value={{value, onToggle, disabled}}>\n <html.div\n role=\"group\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'horizontal' && styles.rootHorizontal]}\n >\n {children}\n </html.div>\n </CheckboxGroupContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Item({value, disabled: itemDisabled = false, children}: ItemProps) {\n const {value: groupValue, onToggle, disabled: groupDisabled} = useCheckboxGroup()\n const isChecked = groupValue.includes(value)\n const isDisabled = groupDisabled || itemDisabled\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onToggle(value, e.target.checked)\n },\n [value, onToggle],\n )\n\n return (\n <Checkbox value={value} checked={isChecked} disabled={isDisabled} onChange={handleChange}>\n {children}\n </Checkbox>\n )\n}\n\nexport const CheckboxGroup = {\n Root,\n Item,\n}\n","import {createContext, useContext} from 'react'\nimport type {LabelPosition, NecessityIndicator} from '../Form/FormContext'\n\ninterface FieldContextValue {\n controlId: string\n descriptionId: string\n errorId: string\n invalid: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n necessityIndicator?: NecessityIndicator\n field?: {\n value: unknown\n onChange: (...event: unknown[]) => void\n onBlur: () => void\n ref: React.RefCallback<unknown>\n name: string\n }\n errorMessage?: string\n}\n\nexport type {FieldContextValue}\n\nexport const FieldContext = createContext<FieldContextValue | null>(null)\n\nexport function useFieldContext() {\n return useContext(FieldContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n width: 44,\n height: 34,\n padding: 2,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.sm,\n cursor: 'pointer',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: 1,\n },\n invalid: {\n borderColor: colors.error,\n },\n disabled: {\n cursor: 'not-allowed',\n opacity: 0.5,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {styles} from './styles.css'\n\ninterface ColorInputProps {\n /** Hex color, controlled (e.g. \"#cfc8ba\"). */\n value?: string\n defaultValue?: string\n name?: string\n /** Explicit id — overrides the Field-context controlId when set. */\n id?: string\n disabled?: boolean\n required?: boolean\n /** Accessible name when there is no associated <Field.Label>. */\n 'aria-label'?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLInputElement>\n}\n\n/**\n * A styled native `<input type=\"color\">` swatch. Mirrors <Input>'s native\n * surface (value/defaultValue/name/onChange/ref/disabled/required) and adopts\n * the parent <Field.Root> context (controlId for label association, value/\n * onChange when bound to a Form, invalid border, disabled) — so it drops into a\n * <Field> exactly like <Input>. The text <Input> can't render type=color, hence\n * a dedicated leaf.\n */\nexport function ColorInput({\n value,\n defaultValue,\n name,\n id,\n disabled,\n required,\n 'aria-label': ariaLabel,\n onChange,\n onBlur,\n ref,\n}: ColorInputProps) {\n const ctx = useFieldContext()\n const fieldCtx = ctx?.field\n\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveDisabled = disabled ?? ctx?.disabled\n\n return (\n <html.input\n type=\"color\"\n id={id ?? ctx?.controlId}\n name={effectiveName}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={effectiveDisabled}\n required={required}\n aria-label={ariaLabel}\n aria-invalid={ctx?.invalid || undefined}\n aria-describedby={\n ctx\n ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() || undefined\n : undefined\n }\n onChange={effectiveOnChange as React.ComponentProps<typeof html.input>['onChange']}\n onBlur={effectiveOnBlur as React.ComponentProps<typeof html.input>['onBlur']}\n ref={effectiveRef as React.Ref<HTMLInputElement>}\n style={[styles.base, ctx?.invalid && styles.invalid, effectiveDisabled && styles.disabled]}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n // --- Backdrop ---\n backdrop: {\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n zIndex: 1000,\n },\n backdropOpen: {\n opacity: 1,\n animationName: css.keyframes({\n from: {opacity: 0},\n to: {opacity: 1},\n }),\n animationDuration: '180ms',\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n backdropClosing: {\n opacity: 0,\n animationName: css.keyframes({\n from: {opacity: 1},\n to: {opacity: 0},\n }),\n animationDuration: '140ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Viewport (centering container) ---\n viewport: {\n position: 'fixed',\n inset: 0,\n zIndex: 1001,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: spacing.lg,\n // Allow clicking backdrop through viewport when clicking outside popup\n pointerEvents: 'none',\n },\n\n // --- Popup ---\n popup: {\n position: 'relative',\n backgroundColor: colors.bgCard,\n borderRadius: radii.lg,\n boxShadow: shadows.lg,\n width: '100%',\n maxHeight: '85vh',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n pointerEvents: 'auto',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n popupOpen: {\n opacity: 1,\n animationName: css.keyframes({\n from: {\n opacity: 0,\n transform: 'scale(0.97) translateY(8px)',\n },\n to: {\n opacity: 1,\n transform: 'scale(1) translateY(0)',\n },\n }),\n animationDuration: '180ms',\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n popupClosing: {\n opacity: 0,\n animationName: css.keyframes({\n from: {\n opacity: 1,\n transform: 'scale(1) translateY(0)',\n },\n to: {\n opacity: 0,\n transform: 'scale(0.97) translateY(8px)',\n },\n }),\n animationDuration: '140ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Sizes ---\n sm: {maxWidth: 400},\n md: {maxWidth: 520},\n lg: {maxWidth: 680},\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n gap: spacing.md,\n },\n\n // --- Title ---\n title: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n },\n\n // --- Description ---\n description: {\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n },\n\n // --- Body ---\n body: {\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n overflowY: 'auto',\n flex: 1,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: radii.sm,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n\n // --- Inline wrapper (for Trigger / Close children) ---\n inlineWrapper: {\n display: 'inline-flex',\n },\n\n // --- Reduced motion ---\n reducedMotion: {\n animationDuration: '1ms',\n },\n})\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type DialogSize = 'sm' | 'md' | 'lg'\n\n// --- Context ---\n\ninterface DialogContextValue {\n open: boolean\n closing: boolean\n dismissable: boolean\n requestOpen: () => void\n requestClose: () => void\n titleId: string\n descriptionId: string\n popupRef: RefObject<HTMLDivElement | null>\n}\n\nconst DialogContext = createContext<DialogContextValue | null>(null)\n\nfunction useDialog() {\n const ctx = useContext(DialogContext)\n if (!ctx) throw new Error('Dialog compound components must be used within Dialog.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when dialog open state changes */\n onOpenChange?: (open: boolean) => void\n /** Whether clicking backdrop closes the dialog. Default: true */\n dismissable?: boolean\n /** Duration of the close animation in ms. Default: 140 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n dismissable = true,\n closeAnimationDuration = 140,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const popupRef = useRef<HTMLDivElement>(null)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const titleId = useId()\n const descriptionId = useId()\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n closingTimerRef.current = null\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, closeAnimationDuration)\n }, [isControlled, onOpenChange, closeAnimationDuration])\n\n // If controlled open goes false externally, trigger close animation\n useEffect(() => {\n if (isControlled && !controlledOpen && !closing) {\n // Already closed, nothing to animate\n }\n }, [isControlled, controlledOpen, closing])\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n // Handle Escape key\n useEffect(() => {\n if (!isOpen && !closing) return\n if (!dismissable) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [isOpen, closing, dismissable, requestClose])\n\n // Lock body scroll when open\n useEffect(() => {\n if (isOpen || closing) {\n const prev = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = prev\n }\n }\n }, [isOpen, closing])\n\n return (\n <DialogContext.Provider\n value={{\n open: isOpen || closing,\n closing,\n dismissable,\n requestOpen,\n requestClose,\n titleId,\n descriptionId,\n popupRef,\n }}\n >\n {children}\n </DialogContext.Provider>\n )\n}\n\n// --- Trigger ---\n\ninterface TriggerProps {\n children: ReactNode\n}\n\nfunction Trigger({children}: TriggerProps) {\n const {requestOpen} = useDialog()\n\n return (\n <html.div onClick={requestOpen} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n}\n\n// --- Portal (renders backdrop + viewport + popup) ---\n\ninterface PortalProps {\n children: ReactNode\n size?: DialogSize\n}\n\nfunction Portal({children, size = 'md'}: PortalProps) {\n const {open, closing, dismissable, requestClose, titleId, descriptionId, popupRef} = useDialog()\n\n const handleBackdropClick = useCallback(() => {\n if (dismissable) {\n requestClose()\n }\n }, [dismissable, requestClose])\n\n if (!open) return null\n\n return (\n <>\n {/* Backdrop — click to dismiss */}\n <html.div\n style={[\n styles.backdrop,\n closing && styles.backdropClosing,\n !closing && styles.backdropOpen,\n ]}\n aria-hidden\n onClick={handleBackdropClick}\n />\n\n {/* Viewport (centering container, pointer-events: none) */}\n <html.div style={styles.viewport}>\n <html.div\n ref={popupRef}\n role=\"dialog\"\n aria-modal={true}\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n style={[\n styles.popup,\n styles[size],\n closing && styles.popupClosing,\n !closing && styles.popupOpen,\n ]}\n >\n {children}\n </html.div>\n </html.div>\n </>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId} = useDialog()\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Description ---\n\nfunction Description({children}: {children: ReactNode}) {\n const {descriptionId} = useDialog()\n return (\n <html.p id={descriptionId} style={styles.description}>\n {children}\n </html.p>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n return <html.div style={styles.body}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDialog()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const Dialog = {\n Root,\n Trigger,\n Portal,\n Header,\n Title,\n Description,\n Body,\n Footer,\n Close,\n}\n","import {createContext, useContext} from 'react'\n\ninterface InputGroupContextValue {\n inGroup: boolean\n}\n\nexport const InputGroupContext = createContext<InputGroupContextValue | null>(null)\n\nexport function useInputGroupContext() {\n return useContext(InputGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n inGroup: {\n borderWidth: 0,\n borderRadius: 0,\n outlineWidth: 0,\n },\n // orthogonal to variant (default/error) — composes on top so a mono field\n // still shows its error border. For slugs, identifiers, hashes.\n mono: {\n fontFamily: typography.fontFamilyMono,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {useInputGroupContext} from '../InputGroup/InputGroupContext'\nimport {styles} from './styles.css'\n\ntype StrictInputProps = React.ComponentProps<typeof html.input>\nexport type InputType = NonNullable<StrictInputProps['type']>\n\nexport type InputVariant = 'default' | 'error'\n\ninterface InputProps {\n variant?: InputVariant\n /** Orthogonal to variant — `mono` keeps the error border but uses the\n * monospace family (slugs, identifiers, hashes). */\n font?: 'mono'\n type?: InputType\n /** Explicit id — overrides the Field-context controlId when set (e.g. a\n * control used outside a Field that still needs a stable id). */\n id?: string\n name?: string\n placeholder?: string\n required?: boolean\n readOnly?: boolean\n minLength?: number\n maxLength?: number\n /** Numeric/range hints — forwarded to the native input (date/number/etc). */\n min?: string | number\n max?: string | number\n step?: string | number\n inputMode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'\n /** id of a <datalist> for native typeahead. */\n list?: string\n pattern?: string\n autoComplete?:\n | 'on'\n | 'off'\n | 'email'\n | 'username'\n | 'current-password'\n | 'new-password'\n | 'name'\n | 'tel'\n | 'url'\n value?: string\n defaultValue?: string\n disabled?: boolean\n autoFocus?: boolean\n /** Accessible name when there's no associated <Field.Label>. */\n 'aria-label'?: string\n /** Extra describedby ids (merged with the Field context's, if any). */\n 'aria-describedby'?: string\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLInputElement>\n}\n\nexport function Input({\n variant = 'default',\n font,\n type = 'text',\n id,\n name,\n placeholder,\n required,\n readOnly,\n minLength,\n maxLength,\n min,\n max,\n step,\n inputMode,\n list,\n pattern,\n autoComplete,\n value,\n defaultValue,\n disabled,\n autoFocus,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedby,\n onChange,\n onBlur,\n ref,\n}: InputProps) {\n const ctx = useFieldContext()\n const groupCtx = useInputGroupContext()\n\n const fieldCtx = ctx?.field\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveDisabled = disabled ?? ctx?.disabled\n const effectiveVariant = ctx?.invalid ? 'error' : variant\n // Field context owns describedby (description + error); fall back to the\n // explicit prop only when standalone.\n const describedBy = ctx\n ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim()\n : ariaDescribedby\n\n // react-strict-dom omits some web-only props from its types, but the\n // underlying DOM element supports them. Type-assert to pass them through.\n const extraProps: Record<string, unknown> = {}\n if (pattern !== undefined) extraProps.pattern = pattern\n if (autoFocus) extraProps.autoFocus = true\n if (readOnly) extraProps.readOnly = true\n if (maxLength !== undefined) extraProps.maxLength = maxLength\n if (min !== undefined) extraProps.min = min\n if (max !== undefined) extraProps.max = max\n if (step !== undefined) extraProps.step = step\n if (inputMode !== undefined) extraProps.inputMode = inputMode\n if (list !== undefined) extraProps.list = list\n if (ariaLabel !== undefined) extraProps['aria-label'] = ariaLabel\n\n return (\n <html.input\n id={id ?? ctx?.controlId}\n type={type}\n name={effectiveName}\n placeholder={placeholder}\n required={required}\n minLength={minLength}\n autoComplete={autoComplete}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={effectiveDisabled}\n aria-describedby={describedBy || undefined}\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={effectiveOnChange as StrictInputProps['onChange']}\n onBlur={effectiveOnBlur as StrictInputProps['onBlur']}\n ref={effectiveRef as React.Ref<HTMLInputElement>}\n style={[\n styles.base,\n styles[effectiveVariant],\n font === 'mono' && styles.mono,\n groupCtx?.inGroup && styles.inGroup,\n ]}\n {...extraProps}\n />\n )\n}\n","import {createContext, useContext} from 'react'\n\nexport type LabelPosition = 'top' | 'side'\nexport type NecessityIndicator = 'icon' | 'label' | false\n\nexport interface FormContextValue {\n disabled: boolean\n labelPosition: LabelPosition\n necessityIndicator: NecessityIndicator\n}\n\nexport const FormContext = createContext<FormContextValue | null>(null)\n\nexport function useFormContext() {\n return useContext(FormContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n },\n rootSide: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.md,\n },\n label: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: colors.text,\n },\n labelSide: {\n minWidth: 120,\n paddingTop: spacing.sm,\n flexShrink: 0,\n },\n description: {\n fontSize: typography.fontSizeXs,\n color: colors.textMuted,\n },\n error: {\n fontSize: typography.fontSizeXs,\n color: colors.errorText,\n },\n fieldContent: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n flex: 1,\n minWidth: 0,\n },\n necessityIcon: {\n color: colors.error,\n },\n necessityLabel: {\n color: colors.textMuted,\n fontWeight: typography.fontWeightNormal,\n fontSize: typography.fontSizeXs,\n },\n})\n","import {type ReactNode, Children, isValidElement, useId, useMemo} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useFormContext as useRHFFormContext, useController} from 'react-hook-form'\nimport {FieldContext, useFieldContext} from './FieldContext'\nimport {useFormContext} from '../Form/FormContext'\nimport type {LabelPosition, NecessityIndicator} from '../Form/FormContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n invalid?: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n children: ReactNode\n}\n\nfunction Root({name, ...props}: RootProps) {\n const formCtx = useFormContext()\n if (name && formCtx) {\n return <ControlledRoot name={name} formCtx={formCtx} {...props} />\n }\n return <StaticRoot {...props} />\n}\n\n// Always calls useController — no conditional hooks\nfunction ControlledRoot({\n name,\n formCtx,\n invalid: invalidProp = false,\n required,\n disabled,\n labelPosition,\n children,\n}: {\n name: string\n formCtx: NonNullable<ReturnType<typeof useFormContext>>\n invalid?: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n children: ReactNode\n}) {\n const id = useId()\n const {control} = useRHFFormContext()\n const {field, fieldState} = useController({control, name})\n const invalid = invalidProp || !!fieldState.error\n\n const effectiveDisabled = disabled ?? formCtx.disabled\n const effectiveLabelPosition = labelPosition ?? formCtx.labelPosition\n const effectiveNecessityIndicator = formCtx.necessityIndicator\n\n const ctx = useMemo(\n () => ({\n controlId: `${id}-control`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n invalid,\n required,\n disabled: effectiveDisabled,\n labelPosition: effectiveLabelPosition,\n necessityIndicator: effectiveNecessityIndicator,\n field: {\n value: field.value,\n onChange: field.onChange,\n onBlur: field.onBlur,\n ref: field.ref,\n name: field.name,\n },\n errorMessage: fieldState.error?.message,\n }),\n [\n id,\n invalid,\n required,\n effectiveDisabled,\n effectiveLabelPosition,\n effectiveNecessityIndicator,\n field.value,\n field.onChange,\n field.onBlur,\n field.ref,\n field.name,\n fieldState.error,\n ],\n )\n\n return (\n <FieldContext.Provider value={ctx}>\n <FieldLayout labelPosition={effectiveLabelPosition}>{children}</FieldLayout>\n </FieldContext.Provider>\n )\n}\n\n// Current behavior, no RHF dependency\nfunction StaticRoot({\n invalid = false,\n required,\n disabled,\n labelPosition = 'top',\n children,\n}: {\n invalid?: boolean\n required?: boolean\n disabled?: boolean\n labelPosition?: LabelPosition\n children: ReactNode\n}) {\n const id = useId()\n const ctx = useMemo(\n () => ({\n controlId: `${id}-control`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n invalid,\n required,\n disabled,\n labelPosition,\n }),\n [id, invalid, required, disabled, labelPosition],\n )\n\n return (\n <FieldContext.Provider value={ctx}>\n <FieldLayout labelPosition={labelPosition}>{children}</FieldLayout>\n </FieldContext.Provider>\n )\n}\n\n// --- FieldLayout ---\n// When labelPosition is 'side', separates Label from other children\n// and wraps the non-label children in a content column.\nfunction FieldLayout({\n labelPosition,\n children,\n}: {\n labelPosition: LabelPosition\n children: ReactNode\n}) {\n if (labelPosition !== 'side') {\n return <html.div style={styles.root}>{children}</html.div>\n }\n\n let labelNode: ReactNode = null\n const rest: ReactNode[] = []\n\n Children.forEach(children, (child) => {\n if (isValidElement(child) && child.type === Label && !labelNode) {\n labelNode = child\n } else {\n rest.push(child)\n }\n })\n\n return (\n <html.div style={styles.rootSide}>\n {labelNode}\n <html.div style={styles.fieldContent}>{rest}</html.div>\n </html.div>\n )\n}\n\n// --- Label ---\ninterface LabelProps {\n children: ReactNode\n}\n\nfunction Label({children}: LabelProps) {\n const ctx = useFieldContext()\n const isSide = ctx?.labelPosition === 'side'\n const indicator = ctx?.necessityIndicator\n\n return (\n <html.label for={ctx?.controlId} style={[styles.label, isSide && styles.labelSide]}>\n {children}\n {indicator === 'icon' && ctx?.required && (\n <html.span style={styles.necessityIcon} aria-hidden={true}>\n {' *'}\n </html.span>\n )}\n {indicator === 'label' && (\n <html.span style={styles.necessityLabel}>\n {ctx?.required ? ' (required)' : ' (optional)'}\n </html.span>\n )}\n </html.label>\n )\n}\n\n// --- Description ---\ninterface DescriptionProps {\n children: ReactNode\n}\n\nfunction Description({children}: DescriptionProps) {\n const ctx = useFieldContext()\n return (\n <html.span id={ctx?.descriptionId} style={styles.description}>\n {children}\n </html.span>\n )\n}\n\n// --- Error ---\ninterface ErrorProps {\n children?: ReactNode\n}\n\nfunction Error({children}: ErrorProps) {\n const ctx = useFieldContext()\n const content = children ?? ctx?.errorMessage\n if (!ctx?.invalid && !content) return null\n\n return (\n <html.span id={ctx?.errorId} role=\"alert\" style={styles.error}>\n {content}\n </html.span>\n )\n}\n\nexport const Field = {\n Root,\n Label,\n Description,\n Error,\n}\n","import {type ReactNode, useState} from 'react'\nimport {Dialog} from '../Dialog/Dialog'\nimport {Button} from '../Button/Button'\nimport {Input} from '../Input/Input'\nimport {Field} from '../Field/Field'\n\ntype DialogSize = 'sm' | 'md' | 'lg'\n\ninterface ConfirmDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: ReactNode\n /** Warning / cascade body. */\n children?: ReactNode\n /** When set, the confirm action stays DISABLED until the user types this\n * exact phrase (org name, slug…). The typed value is a client-side gate\n * only — it is never submitted. */\n confirmPhrase?: string\n /** Prompt shown above the phrase input. */\n promptLabel?: ReactNode\n cancelLabel?: ReactNode\n /**\n * App-owned confirm control. Receives whether the phrase gate is satisfied,\n * so the app can render its OWN <Button type=\"submit\"> INSIDE its form\n * (e.g. a react-router fetcher.Form with hidden intent fields) — the DS does\n * NOT own the submit, avoiding a fight with the app's form flow. Takes\n * precedence over onConfirm/confirmLabel.\n */\n confirmSlot?: (gate: {satisfied: boolean}) => ReactNode\n /** Simple case (no app form): the DS renders a danger Button calling this. */\n onConfirm?: () => void\n confirmLabel?: ReactNode\n size?: DialogSize\n}\n\n/**\n * Generic destructive-confirmation dialog: layout + an optional type-a-phrase\n * gate. The DS owns the shell and the gate; the APP owns the actual submit\n * (via `confirmSlot`) so it composes with form libraries instead of forcing a\n * callback. Domain warning text goes in `children`.\n */\nexport function ConfirmDialog({\n open,\n onOpenChange,\n title,\n children,\n confirmPhrase,\n promptLabel,\n cancelLabel = 'Cancel',\n confirmSlot,\n onConfirm,\n confirmLabel = 'Confirm',\n size = 'sm',\n}: ConfirmDialogProps) {\n const [typed, setTyped] = useState('')\n const satisfied = !confirmPhrase || typed.trim() === confirmPhrase\n\n const handleOpenChange = (next: boolean) => {\n if (!next) setTyped('') // reset the gate when the dialog closes\n onOpenChange(next)\n }\n\n return (\n <Dialog.Root open={open} onOpenChange={handleOpenChange}>\n <Dialog.Portal size={size}>\n <Dialog.Header>\n <Dialog.Title>{title}</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n {children}\n {confirmPhrase ? (\n <Field.Root>\n {promptLabel ? <Field.Label>{promptLabel}</Field.Label> : null}\n <Input\n font=\"mono\"\n value={typed}\n onChange={(e) => setTyped(e.target.value)}\n autoFocus\n aria-label=\"confirmation phrase\"\n />\n </Field.Root>\n ) : null}\n </Dialog.Body>\n <Dialog.Footer>\n <Button variant=\"secondary\" onClick={() => handleOpenChange(false)}>\n {cancelLabel}\n </Button>\n {confirmSlot ? (\n confirmSlot({satisfied})\n ) : onConfirm ? (\n <Button variant=\"danger\" disabled={!satisfied} onClick={onConfirm}>\n {confirmLabel}\n </Button>\n ) : null}\n </Dialog.Footer>\n </Dialog.Portal>\n </Dialog.Root>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\n// The \"Apple ease\" curves and the 280ms open now live in the shared motion\n// tokens (easing.easeOut/easeIn, duration.slow). The 220ms close is specific to\n// this panel's exit, so it stays local.\nconst CLOSE_DURATION = '220ms'\n\nexport const styles = css.create({\n // --- Outer wrapper: animates width from 0 → target ---\n wrapper: {\n overflow: 'hidden',\n flexShrink: 0,\n position: 'relative',\n },\n\n // --- Wrapper open/close: SM (360px) ---\n wrapperOpenSm: {\n animationName: css.keyframes({\n from: {width: 0},\n to: {width: 360},\n }),\n animationDuration: duration.slow,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n wrapperCloseSm: {\n animationName: css.keyframes({\n from: {width: 360},\n to: {width: 0},\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Wrapper open/close: MD (480px) ---\n wrapperOpenMd: {\n animationName: css.keyframes({\n from: {width: 0},\n to: {width: 480},\n }),\n animationDuration: duration.slow,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n wrapperCloseMd: {\n animationName: css.keyframes({\n from: {width: 480},\n to: {width: 0},\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Content panel ---\n content: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: colors.bgCard,\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n boxShadow: shadows.sm,\n position: 'relative',\n },\n\n // Content must maintain its target width even while wrapper is narrower\n contentSm: {width: 360},\n contentMd: {width: 480},\n\n // --- Content slide + fade animations ---\n slideIn: {\n animationName: css.keyframes({\n from: {\n transform: 'translateX(40px)',\n opacity: 0,\n },\n to: {\n transform: 'translateX(0)',\n opacity: 1,\n },\n }),\n animationDuration: duration.slow,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOut: {\n animationName: css.keyframes({\n from: {\n transform: 'translateX(0)',\n opacity: 1,\n },\n to: {\n transform: 'translateX(40px)',\n opacity: 0,\n },\n }),\n animationDuration: CLOSE_DURATION,\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n gap: spacing.md,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n\n // --- Title ---\n title: {\n fontSize: 18,\n fontWeight: 600,\n lineHeight: 1.4,\n color: colors.text,\n margin: 0,\n flex: 1,\n minWidth: 0,\n },\n\n // --- Body ---\n body: {\n flex: 1,\n overflowY: 'auto',\n // Minimal inset prevents child borders from touching panel structural borders\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n },\n bodyPadded: {\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: 8,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n\n inlineWrapper: {\n display: 'inline-flex',\n },\n})\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type DetailPanelSize = 'sm' | 'md'\n\n// --- Context ---\n\ninterface DetailPanelContextValue {\n present: boolean\n closing: boolean\n requestOpen: () => void\n requestClose: () => void\n titleId: string\n labelId: string | undefined\n registerTitle: (id: string) => void\n unregisterTitle: () => void\n panelRef: RefObject<HTMLDivElement | null>\n}\n\nconst DetailPanelContext = createContext<DetailPanelContextValue | null>(null)\n\nfunction useDetailPanel() {\n const ctx = useContext(DetailPanelContext)\n if (!ctx) throw new Error('DetailPanel compound components must be used within DetailPanel.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Duration of the close animation in ms. Default: 220 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n closeAnimationDuration = 220,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [present, setPresent] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const panelRef = useRef<HTMLDivElement>(null)\n const previousFocusRef = useRef<Element | null>(null)\n\n const titleId = useId()\n const [labelId, setLabelId] = useState<string | undefined>(undefined)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n // Sync presence with open state\n useEffect(() => {\n if (isOpen && !present) {\n setPresent(true)\n setClosing(false)\n } else if (!isOpen && present && !closing) {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n setPresent(false)\n closingTimerRef.current = null\n }, closeAnimationDuration)\n }\n }, [isOpen, present, closing, closeAnimationDuration])\n\n // Focus management: move focus on open, restore on close\n useEffect(() => {\n if (present && !closing) {\n previousFocusRef.current = document.activeElement\n panelRef.current?.focus()\n }\n }, [present]) // eslint-disable-line react-hooks/exhaustive-deps -- only on present change\n\n useEffect(() => {\n if (!present && previousFocusRef.current) {\n const el = previousFocusRef.current as HTMLElement\n if (typeof el.focus === 'function') {\n el.focus()\n }\n previousFocusRef.current = null\n }\n }, [present])\n\n // ESC handler\n useEffect(() => {\n if (!present || closing) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [present, closing]) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n setClosing(false)\n }\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, [isControlled, onOpenChange])\n\n const registerTitle = useCallback((id: string) => {\n setLabelId(id)\n }, [])\n\n const unregisterTitle = useCallback(() => {\n setLabelId(undefined)\n }, [])\n\n return (\n <DetailPanelContext.Provider\n value={{\n present,\n closing,\n requestOpen,\n requestClose,\n titleId,\n labelId,\n registerTitle,\n unregisterTitle,\n panelRef,\n }}\n >\n {children}\n </DetailPanelContext.Provider>\n )\n}\n\n// --- Content ---\n\ninterface ContentProps {\n children: ReactNode\n /** Width of the panel. Default: 'sm' (360px) */\n size?: DetailPanelSize\n /** Accessible name for the complementary landmark */\n label: string\n}\n\nconst wrapperOpenMap = {\n sm: styles.wrapperOpenSm,\n md: styles.wrapperOpenMd,\n} as const\n\nconst wrapperCloseMap = {\n sm: styles.wrapperCloseSm,\n md: styles.wrapperCloseMd,\n} as const\n\nfunction Content({children, size = 'sm', label}: ContentProps) {\n const {present, closing, labelId, panelRef} = useDetailPanel()\n\n if (!present) return null\n\n return (\n <html.div style={[styles.wrapper, closing ? wrapperCloseMap[size] : wrapperOpenMap[size]]}>\n <html.div\n ref={panelRef}\n role=\"complementary\"\n aria-label={!labelId ? label : undefined}\n aria-labelledby={labelId || undefined}\n tabIndex={-1}\n style={[\n styles.content,\n size === 'sm' ? styles.contentSm : styles.contentMd,\n closing ? styles.slideOut : styles.slideIn,\n ]}\n >\n {children}\n </html.div>\n </html.div>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId, registerTitle, unregisterTitle} = useDetailPanel()\n\n useEffect(() => {\n registerTitle(titleId)\n return () => unregisterTitle()\n }, [titleId, registerTitle, unregisterTitle])\n\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Body ---\n\ninterface BodyProps {\n children: ReactNode\n /** Adds inner padding. Default: true */\n padded?: boolean\n}\n\nfunction Body({children, padded = true}: BodyProps) {\n return <html.div style={[styles.body, padded && styles.bodyPadded]}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDetailPanel()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const DetailPanel = {\n Root,\n Content,\n Header,\n Title,\n Body,\n Footer,\n Close,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n // --- Backdrop ---\n backdrop: {\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n zIndex: 1000,\n },\n backdropOpen: {\n animationName: css.keyframes({\n from: {opacity: 0},\n to: {opacity: 1},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n backdropClosing: {\n animationName: css.keyframes({\n from: {opacity: 1},\n to: {opacity: 0},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Viewport (positioning container) ---\n viewport: {\n position: 'fixed',\n inset: 0,\n zIndex: 1001,\n display: 'flex',\n pointerEvents: 'none',\n },\n\n // Right anchor (desktop default)\n viewportRight: {\n justifyContent: 'flex-end',\n alignItems: 'stretch',\n },\n // Left anchor\n viewportLeft: {\n justifyContent: 'flex-start',\n alignItems: 'stretch',\n },\n // Bottom anchor (mobile default)\n viewportBottom: {\n justifyContent: 'stretch',\n alignItems: 'flex-end',\n },\n\n // --- Panel ---\n panel: {\n position: 'relative',\n backgroundColor: colors.bgCard,\n boxShadow: shadows.lg,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n pointerEvents: 'auto',\n borderWidth: 0,\n touchAction: 'none',\n },\n\n // Panel sizing per anchor\n panelHorizontal: {\n width: '100%',\n height: '100%',\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n },\n panelVertical: {\n width: '100%',\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n borderTopLeftRadius: radii.lg,\n borderTopRightRadius: radii.lg,\n maxHeight: '85vh',\n },\n panelLeftBorder: {\n borderLeftWidth: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n\n // --- Panel widths (horizontal anchors) ---\n sm: {maxWidth: 360},\n md: {maxWidth: 480},\n lg: {maxWidth: 640},\n\n // --- Slide animations: Right ---\n slideInRight: {\n animationName: css.keyframes({\n from: {transform: 'translateX(100%)'},\n to: {transform: 'translateX(0)'},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOutRight: {\n animationName: css.keyframes({\n from: {transform: 'translateX(0)'},\n to: {transform: 'translateX(100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Slide animations: Left ---\n slideInLeft: {\n animationName: css.keyframes({\n from: {transform: 'translateX(-100%)'},\n to: {transform: 'translateX(0)'},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOutLeft: {\n animationName: css.keyframes({\n from: {transform: 'translateX(0)'},\n to: {transform: 'translateX(-100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Slide animations: Bottom ---\n slideInBottom: {\n animationName: css.keyframes({\n from: {transform: 'translateY(100%)'},\n to: {transform: 'translateY(0)'},\n }),\n animationDuration: duration.base,\n animationTimingFunction: easing.easeOut,\n animationFillMode: 'both',\n },\n slideOutBottom: {\n animationName: css.keyframes({\n from: {transform: 'translateY(0)'},\n to: {transform: 'translateY(100%)'},\n }),\n animationDuration: '160ms',\n animationTimingFunction: easing.easeIn,\n animationFillMode: 'both',\n },\n\n // --- Header ---\n header: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n gap: spacing.md,\n },\n\n // --- Title ---\n title: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n },\n\n // --- Description ---\n description: {\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.md,\n },\n\n // --- Body ---\n body: {\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n overflowY: 'auto',\n flex: 1,\n },\n\n // --- Footer ---\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // --- Close button ---\n closeButton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n borderRadius: radii.sm,\n borderWidth: 0,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.textMuted,\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n\n // --- Inline wrapper ---\n inlineWrapper: {\n display: 'inline-flex',\n },\n})\n","import {useRef, useCallback, useEffect} from 'react'\nimport type {DrawerAnchor} from './Drawer'\n\n/** Threshold: fraction of panel size the user must drag to dismiss */\nconst DISMISS_THRESHOLD = 0.3\n\n/** Minimum velocity (px/ms) to dismiss even below threshold */\nconst VELOCITY_THRESHOLD = 0.5\n\n/** Duration for the dismiss slide-out animation (ms) */\nconst DISMISS_DURATION = 160\n\n/**\n * Max pixels the panel visually \"grows\" when dragged in the opposite direction.\n * iOS-style: panel stays anchored to its edge, doesn't translate.\n * Instead we show a subtle shadow/scale hint capped at this value.\n */\nconst OPPOSITE_MAX_OVERSCROLL = 12\n\ninterface UseSwipeDismissOptions {\n anchor: DrawerAnchor\n enabled: boolean\n onDismiss: () => void\n panelRef: React.RefObject<HTMLDivElement | null>\n}\n\ninterface SwipeState {\n startX: number\n startY: number\n currentX: number\n currentY: number\n startTime: number\n swiping: boolean\n panelSize: number\n}\n\n/**\n * Hook that adds swipe-to-dismiss gesture to a drawer panel.\n *\n * Dismiss direction: panel follows finger 1:1, backdrop fades.\n * Opposite direction: iOS-style — panel stays anchored, shows subtle\n * overscroll feedback (box-shadow intensifies), then snaps back.\n */\nexport function useSwipeDismiss({anchor, enabled, onDismiss, panelRef}: UseSwipeDismissOptions) {\n const stateRef = useRef<SwipeState>({\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n startTime: 0,\n swiping: false,\n panelSize: 0,\n })\n\n const isHorizontal = anchor === 'left' || anchor === 'right'\n\n /** Returns positive = dismiss direction, negative = opposite */\n const getMovement = useCallback(\n (state: SwipeState) => {\n if (isHorizontal) {\n const dx = state.currentX - state.startX\n return anchor === 'right' ? dx : -dx\n }\n return state.currentY - state.startY\n },\n [anchor, isHorizontal],\n )\n\n const applyTransform = useCallback(\n (movement: number, panelEl: HTMLDivElement) => {\n const size = Number(panelEl.dataset.panelSize) || 1\n\n if (movement >= 0) {\n // Dismiss direction — 1:1 tracking\n const progress = movement / size\n\n if (isHorizontal) {\n const sign = anchor === 'right' ? 1 : -1\n panelEl.style.transform = `translateX(${sign * movement}px)`\n } else {\n panelEl.style.transform = `translateY(${movement}px)`\n }\n\n // Fade backdrop proportionally\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.opacity = String(Math.max(0, 1 - progress))\n }\n } else {\n // Opposite direction — iOS behavior:\n // Panel stays anchored (no translate). Show subtle overscroll via box-shadow.\n // Diminishing resistance: asymptotically approaches OPPOSITE_MAX_OVERSCROLL.\n const absMovement = Math.abs(movement)\n const overscroll = (absMovement / (absMovement + size * 0.5)) * OPPOSITE_MAX_OVERSCROLL\n const shadowSpread = Math.round(overscroll)\n\n panelEl.style.transform = ''\n panelEl.style.boxShadow =\n shadowSpread > 0 ? `0 0 ${shadowSpread * 2}px ${shadowSpread}px rgba(0, 0, 0, 0.15)` : ''\n }\n },\n [anchor, isHorizontal],\n )\n\n /** Reset all inline styles (snap back) */\n const resetStyles = useCallback((panelEl: HTMLDivElement) => {\n panelEl.style.transform = ''\n panelEl.style.boxShadow = ''\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.opacity = ''\n }\n }, [])\n\n /** Animate to fully dismissed position, then call onDismiss */\n const animateDismiss = useCallback(\n (panelEl: HTMLDivElement) => {\n const dismissTransform = isHorizontal\n ? `translateX(${anchor === 'right' ? '100%' : '-100%'})`\n : 'translateY(100%)'\n\n panelEl.style.transition = `transform ${DISMISS_DURATION}ms ease-in`\n panelEl.style.transform = dismissTransform\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.transition = `opacity ${DISMISS_DURATION}ms ease-in`\n backdrop.style.opacity = '0'\n }\n\n // When the slide-out transition finishes, just call onDismiss.\n // Do NOT reset inline styles before unmount — that causes a 1-frame flash\n // where the panel appears at its original position. React will unmount the\n // DOM node entirely, so the inline styles don't need cleanup.\n let dismissed = false\n const done = () => {\n if (dismissed) return\n dismissed = true\n onDismiss()\n }\n panelEl.addEventListener('transitionend', done, {once: true})\n setTimeout(done, DISMISS_DURATION + 50)\n },\n [anchor, isHorizontal, onDismiss],\n )\n\n /** Animate snap-back for dismiss-direction undershoot */\n const animateSnapBack = useCallback((panelEl: HTMLDivElement) => {\n panelEl.style.transition = 'transform 200ms cubic-bezier(0.25, 1, 0.5, 1)'\n panelEl.style.transform = ''\n\n const backdrop = panelEl.closest('[data-drawer-viewport]')\n ?.previousElementSibling as HTMLElement | null\n if (backdrop) {\n backdrop.style.transition = 'opacity 200ms cubic-bezier(0.25, 1, 0.5, 1)'\n backdrop.style.opacity = ''\n }\n\n const cleanup = () => {\n panelEl.style.transition = ''\n if (backdrop) backdrop.style.transition = ''\n }\n panelEl.addEventListener('transitionend', cleanup, {once: true})\n setTimeout(cleanup, 250)\n }, [])\n\n useEffect(() => {\n if (!enabled) return\n const panel = panelRef.current\n if (!panel) return\n\n function handlePointerDown(e: PointerEvent) {\n if (e.button !== 0) return\n const target = e.target as HTMLElement\n if (target.closest('button, a, input, textarea, select, [role=\"button\"]')) {\n return\n }\n\n const rect = panel!.getBoundingClientRect()\n const state = stateRef.current\n state.startX = e.clientX\n state.startY = e.clientY\n state.currentX = e.clientX\n state.currentY = e.clientY\n state.startTime = Date.now()\n state.swiping = false\n state.panelSize = isHorizontal ? rect.width : rect.height\n\n panel!.dataset.panelSize = String(state.panelSize)\n panel!.setPointerCapture(e.pointerId)\n\n // Freeze CSS animation — we take over positioning.\n // Never restore it; the panel is already at its final resting position.\n panel!.style.animation = 'none'\n }\n\n function handlePointerMove(e: PointerEvent) {\n const state = stateRef.current\n if (state.startTime === 0) return\n\n state.currentX = e.clientX\n state.currentY = e.clientY\n\n const dx = Math.abs(state.currentX - state.startX)\n const dy = Math.abs(state.currentY - state.startY)\n\n if (!state.swiping) {\n const totalMovement = Math.sqrt(dx * dx + dy * dy)\n if (totalMovement < 8) return\n\n if (isHorizontal && dx > dy) {\n state.swiping = true\n } else if (!isHorizontal && dy > dx) {\n state.swiping = true\n } else {\n // Wrong axis — abort gesture\n state.startTime = 0\n return\n }\n }\n\n if (state.swiping) {\n e.preventDefault()\n const movement = getMovement(state)\n applyTransform(movement, panel!)\n }\n }\n\n function handlePointerUp(_e: PointerEvent) {\n const state = stateRef.current\n if (state.startTime === 0) return\n\n const movement = getMovement(state)\n const elapsed = Date.now() - state.startTime\n const velocity = movement / elapsed\n\n state.startTime = 0\n\n if (!state.swiping) {\n return\n }\n\n state.swiping = false\n\n if (movement <= 0) {\n // Was dragging in opposite direction — just reset (no translate was applied)\n resetStyles(panel!)\n return\n }\n\n const fraction = movement / state.panelSize\n const shouldDismiss = fraction > DISMISS_THRESHOLD || velocity > VELOCITY_THRESHOLD\n\n if (shouldDismiss) {\n animateDismiss(panel!)\n } else {\n animateSnapBack(panel!)\n }\n }\n\n function handlePointerCancel() {\n const state = stateRef.current\n state.startTime = 0\n state.swiping = false\n resetStyles(panel!)\n }\n\n panel.addEventListener('pointerdown', handlePointerDown)\n panel.addEventListener('pointermove', handlePointerMove)\n panel.addEventListener('pointerup', handlePointerUp)\n panel.addEventListener('pointercancel', handlePointerCancel)\n\n function handleTouchMove(e: TouchEvent) {\n if (stateRef.current.swiping) {\n e.preventDefault()\n }\n }\n panel.addEventListener('touchmove', handleTouchMove, {passive: false})\n\n return () => {\n panel.removeEventListener('pointerdown', handlePointerDown)\n panel.removeEventListener('pointermove', handlePointerMove)\n panel.removeEventListener('pointerup', handlePointerUp)\n panel.removeEventListener('pointercancel', handlePointerCancel)\n panel.removeEventListener('touchmove', handleTouchMove)\n }\n }, [\n enabled,\n panelRef,\n anchor,\n isHorizontal,\n getMovement,\n applyTransform,\n resetStyles,\n animateSnapBack,\n animateDismiss,\n ])\n}\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useId,\n useRef,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {useSwipeDismiss} from './useSwipeDismiss'\n\n// --- Types ---\n\nexport type DrawerAnchor = 'right' | 'left' | 'bottom'\nexport type DrawerSize = 'sm' | 'md' | 'lg'\n\n// --- Context ---\n\ninterface DrawerContextValue {\n open: boolean\n closing: boolean\n anchor: DrawerAnchor\n dismissable: boolean\n swipeDismiss: boolean\n requestOpen: () => void\n requestClose: () => void\n /** Close immediately without CSS animation (used by swipe dismiss which handles its own exit animation) */\n requestCloseImmediate: () => void\n titleId: string\n descriptionId: string\n panelRef: RefObject<HTMLDivElement | null>\n}\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null)\n\nfunction useDrawer() {\n const ctx = useContext(DrawerContext)\n if (!ctx) throw new Error('Drawer compound components must be used within Drawer.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Controlled open state */\n open?: boolean\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean\n /** Called when drawer open state changes */\n onOpenChange?: (open: boolean) => void\n /** Which edge the drawer slides from. Default: 'right' */\n anchor?: DrawerAnchor\n /** Whether clicking backdrop or pressing Escape closes the drawer. Default: true */\n dismissable?: boolean\n /** Whether swipe gesture dismisses the drawer. Default: true */\n swipeDismiss?: boolean\n /** Duration of the close animation in ms. Default: 160 */\n closeAnimationDuration?: number\n}\n\nfunction Root({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n anchor = 'right',\n dismissable = true,\n swipeDismiss = true,\n closeAnimationDuration = 160,\n}: RootProps) {\n const isControlled = controlledOpen !== undefined\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [closing, setClosing] = useState(false)\n const closingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const panelRef = useRef<HTMLDivElement>(null)\n\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const titleId = useId()\n const descriptionId = useId()\n\n const requestOpen = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(true)\n onOpenChange?.(true)\n }, [isControlled, onOpenChange])\n\n const requestClose = useCallback(() => {\n setClosing(true)\n closingTimerRef.current = setTimeout(() => {\n setClosing(false)\n closingTimerRef.current = null\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, closeAnimationDuration)\n }, [isControlled, onOpenChange, closeAnimationDuration])\n\n const requestCloseImmediate = useCallback(() => {\n if (closingTimerRef.current) {\n clearTimeout(closingTimerRef.current)\n closingTimerRef.current = null\n }\n setClosing(false)\n if (!isControlled) setInternalOpen(false)\n onOpenChange?.(false)\n }, [isControlled, onOpenChange])\n\n // Clean up timer on unmount\n useEffect(() => {\n return () => {\n if (closingTimerRef.current) clearTimeout(closingTimerRef.current)\n }\n }, [])\n\n // Handle Escape key\n useEffect(() => {\n if (!isOpen && !closing) return\n if (!dismissable) return\n\n function onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.stopPropagation()\n requestClose()\n }\n }\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [isOpen, closing, dismissable, requestClose])\n\n // Lock body scroll when open\n useEffect(() => {\n if (isOpen || closing) {\n const prev = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = prev\n }\n }\n }, [isOpen, closing])\n\n return (\n <DrawerContext.Provider\n value={{\n open: isOpen || closing,\n closing,\n anchor,\n dismissable,\n swipeDismiss,\n requestOpen,\n requestClose,\n requestCloseImmediate,\n titleId,\n descriptionId,\n panelRef,\n }}\n >\n {children}\n </DrawerContext.Provider>\n )\n}\n\n// --- Trigger ---\n\nfunction Trigger({children}: {children: ReactNode}) {\n const {requestOpen} = useDrawer()\n\n return (\n <html.div onClick={requestOpen} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n}\n\n// --- Portal ---\n\ninterface PortalProps {\n children: ReactNode\n size?: DrawerSize\n}\n\n// Slide animation maps\nconst slideInMap = {\n right: styles.slideInRight,\n left: styles.slideInLeft,\n bottom: styles.slideInBottom,\n} as const\n\nconst slideOutMap = {\n right: styles.slideOutRight,\n left: styles.slideOutLeft,\n bottom: styles.slideOutBottom,\n} as const\n\nconst viewportAnchorMap = {\n right: styles.viewportRight,\n left: styles.viewportLeft,\n bottom: styles.viewportBottom,\n} as const\n\nfunction Portal({children, size = 'md'}: PortalProps) {\n const {\n open,\n closing,\n anchor,\n dismissable,\n swipeDismiss: swipeEnabled,\n requestClose,\n requestCloseImmediate,\n titleId,\n descriptionId,\n panelRef,\n } = useDrawer()\n\n const handleBackdropClick = useCallback(() => {\n if (dismissable) {\n requestClose()\n }\n }, [dismissable, requestClose])\n\n // Swipe-to-dismiss — uses immediate close since the hook handles its own exit animation\n useSwipeDismiss({\n anchor,\n enabled: swipeEnabled && open && !closing,\n onDismiss: requestCloseImmediate,\n panelRef,\n })\n\n if (!open) return null\n\n const isHorizontal = anchor === 'left' || anchor === 'right'\n\n return (\n <>\n {/* Backdrop — click to dismiss */}\n <html.div\n style={[\n styles.backdrop,\n closing && styles.backdropClosing,\n !closing && styles.backdropOpen,\n ]}\n aria-hidden\n onClick={handleBackdropClick}\n />\n\n {/* Viewport */}\n <html.div style={[styles.viewport, viewportAnchorMap[anchor]]} data-drawer-viewport=\"\">\n <html.div\n ref={panelRef}\n role=\"dialog\"\n aria-modal={true}\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n style={[\n styles.panel,\n isHorizontal && styles.panelHorizontal,\n isHorizontal && styles[size],\n !isHorizontal && styles.panelVertical,\n anchor === 'left' && styles.panelLeftBorder,\n closing && slideOutMap[anchor],\n !closing && slideInMap[anchor],\n ]}\n >\n {children}\n </html.div>\n </html.div>\n </>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Title ---\n\nfunction Title({children}: {children: ReactNode}) {\n const {titleId} = useDrawer()\n return (\n <html.h2 id={titleId} style={styles.title}>\n {children}\n </html.h2>\n )\n}\n\n// --- Description ---\n\nfunction Description({children}: {children: ReactNode}) {\n const {descriptionId} = useDrawer()\n return (\n <html.p id={descriptionId} style={styles.description}>\n {children}\n </html.p>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n return <html.div style={styles.body}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Close ---\n\ninterface CloseProps {\n children?: ReactNode\n 'aria-label'?: string\n}\n\nfunction Close({children, 'aria-label': ariaLabel = 'Close'}: CloseProps) {\n const {requestClose} = useDrawer()\n\n if (children) {\n return (\n <html.div onClick={requestClose} style={styles.inlineWrapper}>\n {children}\n </html.div>\n )\n }\n\n return (\n <html.button onClick={requestClose} aria-label={ariaLabel} style={styles.closeButton}>\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n )\n}\n\n// --- Export ---\n\nexport const Drawer = {\n Root,\n Trigger,\n Portal,\n Header,\n Title,\n Description,\n Body,\n Footer,\n Close,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n textAlign: 'center',\n },\n message: {\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n lineHeight: typography.lineHeight,\n },\n action: {\n marginTop: spacing.sm,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\ninterface EmptyStateProps {\n message: string\n icon?: ReactNode\n action?: ReactNode\n}\n\nexport function EmptyState({message, icon, action}: EmptyStateProps) {\n return (\n <html.div style={styles.root}>\n {icon}\n <html.p style={styles.message}>{message}</html.p>\n {action && <html.div style={styles.action}>{action}</html.div>}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {typography, typeScale} from './typography.css'\n\nexport const typePresets = css.create({\n // Body\n bodySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize4,\n lineHeight: typeScale.lineHeight4,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize5,\n lineHeight: typeScale.lineHeight5,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n\n // UI\n caption: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingWide,\n },\n label: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightMedium,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n code: {\n fontFamily: typography.fontFamilyMono,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n overline: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingWide,\n textTransform: 'uppercase' as const,\n },\n\n // Heading\n headingSm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize6,\n lineHeight: typeScale.lineHeight6,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize7,\n lineHeight: typeScale.lineHeight7,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize8,\n lineHeight: typeScale.lineHeight8,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingXl: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize9,\n lineHeight: typeScale.lineHeight9,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n\n // Display (fluid)\n displaySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displaySm,\n lineHeight: 1.2,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayMd,\n lineHeight: 1.15,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayLg,\n lineHeight: 1.1,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type HeadingVariant =\n | 'displayLg'\n | 'displayMd'\n | 'displaySm'\n | 'headingXl'\n | 'headingLg'\n | 'headingMd'\n | 'headingSm'\n\ninterface HeadingProps {\n level: 1 | 2 | 3 | 4 | 5 | 6\n variant?: HeadingVariant\n color?: 'default' | 'muted' | 'accent'\n align?: 'start' | 'center' | 'end'\n children: ReactNode\n}\n\nconst defaultVariantMap: Record<number, HeadingVariant> = {\n 1: 'headingXl',\n 2: 'headingLg',\n 3: 'headingMd',\n 4: 'headingSm',\n 5: 'headingSm',\n 6: 'headingSm',\n}\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Heading({level, variant, color = 'default', align, children}: HeadingProps) {\n const resolvedVariant = variant ?? defaultVariantMap[level]\n const style = [typePresets[resolvedVariant], styles[color], align && alignMap[align]]\n\n if (level === 1) return <html.h1 style={style}>{children}</html.h1>\n if (level === 2) return <html.h2 style={style}>{children}</html.h2>\n if (level === 3) return <html.h3 style={style}>{children}</html.h3>\n if (level === 4) return <html.h4 style={style}>{children}</html.h4>\n if (level === 5) return <html.h5 style={style}>{children}</html.h5>\n return <html.h6 style={style}>{children}</html.h6>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // --- Root ---\n root: {\n display: 'flex',\n flexDirection: 'column',\n margin: 0,\n padding: 0,\n },\n\n // --- Item ---\n item: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.ms,\n paddingRight: spacing.ms,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: '120ms',\n cursor: 'default',\n },\n itemSelected: {\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCardHover,\n },\n },\n itemDisabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n itemLast: {\n borderBottomWidth: 0,\n },\n\n // --- Item content area (text + description) ---\n content: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n minWidth: 0,\n },\n\n // --- Primary text ---\n text: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n color: colors.text,\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n // --- Description text ---\n description: {\n fontSize: typography.fontSizeXs,\n lineHeight: typography.lineHeight,\n color: colors.textMuted,\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n // --- Actions slot ---\n actions: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.xs,\n flexShrink: 0,\n },\n\n // --- Empty state ---\n empty: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n color: colors.textMuted,\n fontSize: typography.fontSizeSm,\n },\n})\n","import {type ReactNode, createContext, useContext} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type ListSelectionMode = 'none' | 'single' | 'multiple'\n\n// --- Context ---\n\ninterface ListContextValue {\n selectionMode: ListSelectionMode\n}\n\nconst ListContext = createContext<ListContextValue>({selectionMode: 'none'})\n\nfunction useList() {\n return useContext(ListContext)\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Selection mode: 'none' (default), 'single', or 'multiple' */\n selectionMode?: ListSelectionMode\n /** Accessible label for the list */\n 'aria-label'?: string\n}\n\nfunction Root({children, selectionMode = 'none', 'aria-label': ariaLabel}: RootProps) {\n return (\n <ListContext.Provider value={{selectionMode}}>\n <html.div role=\"list\" aria-label={ariaLabel} style={styles.root}>\n {children}\n </html.div>\n </ListContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n children: ReactNode\n /** Whether this item is selected */\n selected?: boolean\n /** Whether this item is disabled */\n disabled?: boolean\n /** Click handler for the item */\n onClick?: () => void\n}\n\nfunction Item({children, selected, disabled, onClick}: ItemProps) {\n const {selectionMode} = useList()\n const isSelectable = selectionMode !== 'none'\n\n return (\n <html.div\n role=\"listitem\"\n aria-selected={isSelectable ? selected : undefined}\n aria-disabled={disabled || undefined}\n onClick={disabled ? undefined : onClick}\n style={[styles.item, selected && styles.itemSelected, disabled && styles.itemDisabled]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Content: wraps primary text + description ---\n\nfunction Content({children}: {children: ReactNode}) {\n return <html.div style={styles.content}>{children}</html.div>\n}\n\n// --- Text: primary label ---\n\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.p style={styles.text}>{children}</html.p>\n}\n\n// --- Description: secondary text ---\n\nfunction Description({children}: {children: ReactNode}) {\n return <html.p style={styles.description}>{children}</html.p>\n}\n\n// --- Actions: slot for buttons, badges, etc. ---\n\nfunction Actions({children}: {children: ReactNode}) {\n return <html.div style={styles.actions}>{children}</html.div>\n}\n\n// --- Empty: placeholder when list has no items ---\n\nfunction Empty({children}: {children: ReactNode}) {\n return (\n <html.div role=\"listitem\" style={styles.empty}>\n {children}\n </html.div>\n )\n}\n\n// --- Export ---\n\nexport const List = {\n Root,\n Item,\n Content,\n Text: ItemText,\n Description,\n Actions,\n Empty,\n}\n","import {type ReactNode, useCallback, useEffect, useMemo, useRef} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {\n useForm,\n FormProvider,\n type UseFormReturn,\n type DefaultValues,\n type FieldValues,\n type FieldErrors,\n type Path,\n} from 'react-hook-form'\nimport {effectTsResolver} from '@hookform/resolvers/effect-ts'\nimport type {Schema} from 'effect'\nimport {FormContext, type LabelPosition, type NecessityIndicator} from './FormContext'\n\nexport interface FormProps<T extends FieldValues> {\n schema: Schema.Schema<T>\n defaultValues: DefaultValues<T>\n onSubmit: (data: T) => void | Promise<void>\n disabled?: boolean\n labelPosition?: LabelPosition\n necessityIndicator?: NecessityIndicator\n validationErrors?: Partial<Record<Path<T>, string>>\n children: ReactNode | ((methods: UseFormReturn<T>) => ReactNode)\n}\n\nconst formStyles = css.create({\n disabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n})\n\nexport function Form<T extends FieldValues>({\n schema,\n defaultValues,\n onSubmit,\n disabled = false,\n labelPosition = 'top',\n necessityIndicator = false,\n validationErrors,\n children,\n}: FormProps<T>) {\n const methods = useForm<T>({\n resolver: effectTsResolver(schema),\n defaultValues,\n mode: 'onTouched',\n reValidateMode: 'onChange',\n })\n\n // Sync server-side validation errors into RHF\n const prevErrorKeysRef = useRef<string[]>([])\n useEffect(() => {\n const prevKeys = prevErrorKeysRef.current\n const nextKeys = validationErrors ? Object.keys(validationErrors) : []\n\n // Clear errors that were removed\n for (const key of prevKeys) {\n if (!nextKeys.includes(key)) {\n methods.clearErrors(key as Path<T>)\n }\n }\n\n // Set new errors\n if (validationErrors) {\n for (const [key, message] of Object.entries(validationErrors)) {\n if (message) {\n methods.setError(key as Path<T>, {type: 'server', message: message as string})\n }\n }\n }\n\n prevErrorKeysRef.current = nextKeys\n }, [validationErrors, methods])\n\n const formRef = useRef<HTMLFormElement>(null)\n\n const onInvalid = useCallback(\n (errors: FieldErrors<T>) => {\n const firstField = Object.keys(errors)[0]\n if (firstField) {\n methods.setFocus(firstField as Path<T>)\n }\n },\n [methods],\n )\n\n const handleSubmit = useCallback(\n (e: Event) => {\n e.preventDefault()\n void methods.handleSubmit(onSubmit, onInvalid)()\n },\n [methods, onSubmit, onInvalid],\n )\n\n useEffect(() => {\n const el = formRef.current\n if (!el) return\n el.addEventListener('submit', handleSubmit)\n return () => el.removeEventListener('submit', handleSubmit)\n }, [handleSubmit])\n\n const formCtx = useMemo(\n () => ({disabled, labelPosition, necessityIndicator}),\n [disabled, labelPosition, necessityIndicator],\n )\n\n return (\n <FormProvider {...methods}>\n <FormContext.Provider value={formCtx}>\n <html.form\n ref={formRef}\n aria-disabled={disabled || undefined}\n style={disabled && formStyles.disabled}\n >\n {typeof children === 'function' ? children(methods) : children}\n </html.form>\n </FormContext.Provider>\n </FormProvider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n // Reset native fieldset chrome\n borderWidth: 0,\n margin: 0,\n padding: 0,\n minWidth: 0,\n },\n legend: {\n // Reset native legend quirks\n padding: 0,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: colors.text,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type FieldsetGap = 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl'\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n} as const\n\n// --- Root ---\ninterface RootProps {\n /** Disables all form controls within the fieldset */\n disabled?: boolean\n /** Gap between child elements */\n gap?: FieldsetGap\n children: ReactNode\n}\n\nfunction Root({disabled = false, gap = 'md', children}: RootProps) {\n return (\n <html.div\n role=\"group\"\n aria-disabled={disabled || undefined}\n style={[styles.root, gapMap[gap], disabled && styles.disabled]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Legend ---\ninterface LegendProps {\n children: ReactNode\n}\n\nfunction Legend({children}: LegendProps) {\n return <html.span style={styles.legend}>{children}</html.span>\n}\n\nexport const Fieldset = {\n Root,\n Legend,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n wrapper: {\n display: 'flex',\n alignItems: 'stretch',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':focus-within': colors.accent,\n },\n borderRadius: radii.sm,\n overflow: 'hidden',\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n addon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n backgroundColor: colors.bgCardHover,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n userSelect: 'none',\n borderWidth: 0,\n },\n addonStart: {\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n addonEnd: {\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n },\n addonClickable: {\n cursor: 'pointer',\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCard,\n ':active': colors.bg,\n },\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n addonDisabled: {\n opacity: 0.4,\n cursor: 'not-allowed',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import type {ReactNode} from 'react'\nimport {useMemo} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {InputGroupContext} from './InputGroupContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useMemo(() => ({inGroup: true}), [])\n\n return (\n <InputGroupContext.Provider value={ctx}>\n <html.div style={styles.wrapper}>{children}</html.div>\n </InputGroupContext.Provider>\n )\n}\n\n// --- Addon ---\nconst dynamicStyles = css.create({\n minWidth: (value: number | string) => ({minWidth: value}),\n})\n\ninterface AddonProps {\n position?: 'start' | 'end'\n onClick?: () => void\n disabled?: boolean\n /** Optional minimum width to prevent layout shift (e.g. Copy → Copied!) */\n minWidth?: number | string\n children: ReactNode\n}\n\nfunction Addon({position = 'end', onClick, disabled, minWidth, children}: AddonProps) {\n const positionStyle = position === 'start' ? styles.addonStart : styles.addonEnd\n const style = [\n styles.addon,\n isNative && styles.nativeFlex,\n positionStyle,\n onClick && !disabled && styles.addonClickable,\n disabled && styles.addonDisabled,\n minWidth != null && dynamicStyles.minWidth(minWidth),\n ]\n\n if (onClick) {\n return (\n <html.button type=\"button\" onClick={onClick} disabled={disabled} style={style}>\n {children}\n </html.button>\n )\n }\n\n return <html.span style={style}>{children}</html.span>\n}\n\nexport const InputGroup = {\n Root,\n Addon,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n cursor: 'pointer',\n textDecoration: 'none',\n transitionProperty: 'background-color, border-color, color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n color: colors.textMuted,\n },\n fullWidth: {\n width: '100%',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type LinkButtonVariant = 'primary' | 'secondary'\nexport type LinkButtonSize = 'default' | 'small'\n\ninterface LinkButtonProps {\n href: string\n variant?: LinkButtonVariant\n size?: LinkButtonSize\n fullWidth?: boolean\n target?: '_blank' | '_self'\n rel?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function LinkButton({\n href,\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n target,\n rel,\n children,\n}: LinkButtonProps) {\n return (\n <html.a\n href={href}\n target={target}\n rel={rel}\n style={[styles.base, sizeMap[size], styles[variant], fullWidth && styles.fullWidth]}\n >\n {children}\n </html.a>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color',\n transitionDuration: duration.fast,\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n position: 'absolute',\n top: '100%',\n left: 0,\n marginTop: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 160,\n zIndex: 50,\n },\n popupEnd: {\n left: 'auto',\n right: 0,\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n linkItem: {\n textDecoration: 'none',\n color: {\n default: colors.text,\n ':hover': colors.text,\n },\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface MenuContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n menuId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null)\n\nexport function useMenu() {\n const ctx = useContext(MenuContext)\n if (!ctx) throw new Error('Menu compound components must be used within Menu.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useId, useEffect} from 'react'\nimport type {MenuContextValue} from './MenuContext'\n\nexport function useMenuRoot() {\n const [open, setOpen] = useState(false)\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const menuId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, HTMLElement>())\n const orderRef = useRef<string[]>([])\n const needsInitialHighlightRef = useRef(false)\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n needsInitialHighlightRef.current = true\n } else {\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n }\n return !prev\n })\n }, [])\n\n // Highlight the first item after items register on open.\n // Child effects (item registration) run before this parent effect,\n // so orderRef is populated by the time this runs.\n useEffect(() => {\n if (open && needsInitialHighlightRef.current) {\n needsInitialHighlightRef.current = false\n const order = orderRef.current\n if (order.length > 0) {\n setHighlightedId(order[0])\n }\n }\n }, [open])\n\n const registerItem = useCallback((id: string, element: HTMLElement) => {\n itemsRef.current.set(id, element)\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)\n const elB = map.get(b)\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n const items = itemsRef.current\n setHighlightedId((prev) => {\n if (prev) {\n const el = items.get(prev)\n el?.click()\n }\n return prev\n })\n break\n }\n case 'Escape':\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close])\n\n const ctx: MenuContextValue = {\n open,\n toggle,\n close,\n menuId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {MenuContext, useMenu} from './MenuContext'\nimport {useMenuRoot} from './useMenuRoot'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const {ctx, rootRef} = useMenuRoot()\n\n return (\n <MenuContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {children}\n </html.div>\n </MenuContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({children}: {children: ReactNode}) {\n const {open, toggle, menuId, triggerRef} = useMenu()\n const localRef = useRef<HTMLButtonElement>(null)\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n return (\n <html.button\n ref={localRef}\n type=\"button\"\n onClick={toggle}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n aria-controls={open ? menuId : undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Popup ---\ninterface PopupProps {\n children: ReactNode\n align?: 'start' | 'end'\n}\n\nfunction Popup({children, align = 'start'}: PopupProps) {\n const {open, close, menuId, highlightedId} = useMenu()\n\n if (!open) return null\n\n return (\n <>\n <html.div style={styles.backdrop} onClick={close} />\n <html.div\n id={menuId}\n role=\"menu\"\n aria-activedescendant={highlightedId ?? undefined}\n style={[styles.popup, align === 'end' && styles.popupEnd]}\n >\n {children}\n </html.div>\n </>\n )\n}\n\n// --- Item ---\ninterface ItemProps {\n onClick?: () => void\n children: ReactNode\n}\n\nfunction Item({onClick, children}: ItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n const handleClick = () => {\n onClick?.()\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"menuitem\"\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- LinkItem ---\ninterface LinkItemProps {\n href: string\n children: ReactNode\n}\n\nfunction LinkItem({href, children}: LinkItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLAnchorElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n return (\n <html.a\n ref={ref}\n id={id}\n href={href}\n onClick={close}\n role=\"menuitem\"\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, styles.linkItem, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.a>\n )\n}\n\nexport const Menu = {\n Root,\n Trigger,\n Popup,\n Item,\n LinkItem,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: colors.bgCard,\n },\n bordered: {\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n gap: spacing.md,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n\n body: {\n flex: 1,\n overflowY: 'auto',\n // Minimal inset prevents child borders from touching panel structural borders\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n },\n bodyPadded: {\n paddingTop: spacing.lg,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n paddingBottom: spacing.lg,\n },\n\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: spacing.sm,\n paddingTop: spacing.md,\n paddingBottom: spacing.md,\n paddingLeft: spacing.lg,\n paddingRight: spacing.lg,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n /** Adds an outer border. Default: false */\n bordered?: boolean\n}\n\nfunction Root({children, bordered = false}: RootProps) {\n return <html.div style={[styles.root, bordered && styles.bordered]}>{children}</html.div>\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return <html.div style={styles.header}>{children}</html.div>\n}\n\n// --- Body ---\n\ninterface BodyProps {\n children: ReactNode\n /** Adds inner padding. Default: true */\n padded?: boolean\n}\n\nfunction Body({children, padded = true}: BodyProps) {\n return <html.div style={[styles.body, padded && styles.bodyPadded]}>{children}</html.div>\n}\n\n// --- Footer ---\n\nfunction Footer({children}: {children: ReactNode}) {\n return <html.div style={styles.footer}>{children}</html.div>\n}\n\n// --- Export ---\n\nexport const Panel = {\n Root,\n Header,\n Body,\n Footer,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n rootHorizontal: {\n flexDirection: 'row',\n },\n item: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n itemDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n circle: {\n width: 18,\n height: 18,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.full,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n transitionProperty: 'background-color, border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n circleUnchecked: {\n backgroundColor: colors.bg,\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n circleChecked: {\n backgroundColor: colors.bg,\n borderColor: colors.accent,\n },\n dot: {\n width: 8,\n height: 8,\n borderRadius: radii.full,\n backgroundColor: colors.accent,\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n})\n","import {type ReactNode, createContext, useContext, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ninterface RadioGroupContextValue {\n value: string\n onSelect: (value: string) => void\n disabled: boolean\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null)\n\nfunction useRadioGroup() {\n const ctx = useContext(RadioGroupContext)\n if (!ctx) {\n throw new Error('RadioGroup.Item must be used within RadioGroup.Root')\n }\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Root({\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n orientation = 'vertical',\n disabled = false,\n children,\n}: RootProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const onSelect = useCallback(\n (itemValue: string) => {\n if (!disabled) {\n setValue(itemValue)\n }\n },\n [disabled, setValue],\n )\n\n return (\n <RadioGroupContext.Provider value={{value, onSelect, disabled}}>\n <html.div\n role=\"radiogroup\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'horizontal' && styles.rootHorizontal]}\n >\n {children}\n </html.div>\n </RadioGroupContext.Provider>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Item({value, disabled: itemDisabled = false, children}: ItemProps) {\n const {value: groupValue, onSelect, disabled: groupDisabled} = useRadioGroup()\n const isChecked = groupValue === value\n const isDisabled = groupDisabled || itemDisabled\n\n const handleClick = () => {\n if (!isDisabled) {\n onSelect(value)\n }\n }\n\n return (\n <html.label style={[styles.item, isDisabled && styles.itemDisabled]} onClick={handleClick}>\n <html.input\n type=\"radio\"\n value={value}\n checked={isChecked}\n disabled={isDisabled}\n onChange={() => onSelect(value)}\n style={styles.input}\n />\n <html.span\n style={[styles.circle, isChecked ? styles.circleChecked : styles.circleUnchecked]}\n aria-hidden\n >\n {isChecked && <html.span style={styles.dot} />}\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n\nexport const RadioGroup = {\n Root,\n Item,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n overflow: 'hidden',\n },\n viewport: {\n width: '100%',\n height: '100%',\n overflowX: 'auto',\n overflowY: 'auto',\n // Hide native scrollbar\n scrollbarWidth: 'none',\n },\n content: {\n minWidth: '100%',\n minHeight: '100%',\n },\n scrollbar: {\n position: 'absolute',\n zIndex: 1,\n display: 'flex',\n touchAction: 'none',\n userSelect: 'none',\n transitionProperty: 'opacity',\n transitionDuration: duration.base,\n transitionTimingFunction: easing.standard,\n },\n scrollbarVertical: {\n top: 0,\n right: 0,\n bottom: 0,\n width: 8,\n flexDirection: 'column',\n paddingTop: 2,\n paddingBottom: 2,\n paddingRight: 2,\n },\n scrollbarHorizontal: {\n left: 0,\n right: 0,\n bottom: 0,\n height: 8,\n flexDirection: 'row',\n paddingLeft: 2,\n paddingRight: 2,\n paddingBottom: 2,\n },\n scrollbarHidden: {\n opacity: 0,\n },\n scrollbarVisible: {\n opacity: 1,\n },\n thumb: {\n position: 'relative',\n flex: 1,\n backgroundColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.full,\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n // Dynamic styles — simple identifier params only (StyleX constraint)\n viewportMaxHeight: (maxHeight: number | string) => ({\n maxHeight,\n }),\n thumbVertical: (height: string, transform: string) => ({\n height,\n transform,\n }),\n thumbHorizontal: (width: string, transform: string) => ({\n width,\n transform,\n }),\n})\n","import {createContext, useContext} from 'react'\n\nexport interface ScrollAreaContextValue {\n viewportRef: React.RefObject<HTMLDivElement | null>\n contentRef: React.RefObject<HTMLDivElement | null>\n viewportId: string\n scrollTop: number\n scrollLeft: number\n scrollHeight: number\n scrollWidth: number\n clientHeight: number\n clientWidth: number\n scrolling: boolean\n}\n\nexport const ScrollAreaContext = createContext<ScrollAreaContextValue | null>(null)\n\nexport function useScrollArea() {\n const ctx = useContext(ScrollAreaContext)\n if (!ctx) throw new Error('ScrollArea compound components must be used within ScrollArea.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useEffect, useId} from 'react'\nimport type {ScrollAreaContextValue} from './ScrollAreaContext'\n\nexport function useScrollAreaRoot(): ScrollAreaContextValue {\n const viewportId = useId()\n const viewportRef = useRef<HTMLDivElement | null>(null)\n const contentRef = useRef<HTMLDivElement | null>(null)\n const [scrollTop, setScrollTop] = useState(0)\n const [scrollLeft, setScrollLeft] = useState(0)\n const [scrollHeight, setScrollHeight] = useState(0)\n const [scrollWidth, setScrollWidth] = useState(0)\n const [clientHeight, setClientHeight] = useState(0)\n const [clientWidth, setClientWidth] = useState(0)\n const [scrolling, setScrolling] = useState(false)\n const scrollTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const handleScroll = useCallback(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n setScrollTop(vp.scrollTop)\n setScrollLeft(vp.scrollLeft)\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n setScrolling(true)\n\n if (scrollTimerRef.current) clearTimeout(scrollTimerRef.current)\n scrollTimerRef.current = setTimeout(() => setScrolling(false), 1000)\n }, [])\n\n // Observe viewport size changes\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n const observer = new ResizeObserver(() => {\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n })\n observer.observe(vp)\n // Initial measurement\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n\n return () => observer.disconnect()\n }, [])\n\n // Attach scroll listener directly to ensure we capture it\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n vp.addEventListener('scroll', handleScroll, {passive: true})\n return () => vp.removeEventListener('scroll', handleScroll)\n }, [handleScroll])\n\n return {\n viewportRef,\n contentRef,\n viewportId,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n scrolling,\n }\n}\n","import {type ReactNode, useRef, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {ScrollAreaContext, useScrollArea} from './ScrollAreaContext'\nimport {useScrollAreaRoot} from './useScrollAreaRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useScrollAreaRoot()\n\n return (\n <ScrollAreaContext.Provider value={ctx}>\n <html.div style={styles.root}>{children}</html.div>\n </ScrollAreaContext.Provider>\n )\n}\n\n// --- Viewport ---\n\ninterface ViewportProps {\n children: ReactNode\n maxHeight?: number | string\n}\n\nfunction Viewport({children, maxHeight}: ViewportProps) {\n const {viewportRef, viewportId} = useScrollArea()\n\n return (\n <html.div\n ref={viewportRef}\n id={viewportId}\n tabIndex={0}\n role=\"region\"\n aria-label=\"Scrollable content\"\n style={[styles.viewport, maxHeight != null && styles.viewportMaxHeight(maxHeight)]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Content ---\n\ninterface ContentProps {\n children: ReactNode\n}\n\nfunction Content({children}: ContentProps) {\n const {contentRef} = useScrollArea()\n return (\n <html.div ref={contentRef} style={styles.content}>\n {children}\n </html.div>\n )\n}\n\n// --- Scrollbar ---\n\ntype ScrollbarOrientation = 'vertical' | 'horizontal'\n\ninterface ScrollbarProps {\n orientation?: ScrollbarOrientation\n children: ReactNode\n}\n\nfunction Scrollbar({orientation = 'vertical', children}: ScrollbarProps) {\n const {\n viewportId,\n scrolling,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n } = useScrollArea()\n\n // Hide scrollbar when content fits\n const hasOverflow =\n orientation === 'vertical' ? scrollHeight > clientHeight : scrollWidth > clientWidth\n\n if (!hasOverflow) return null\n\n const isVertical = orientation === 'vertical'\n const maxScroll = isVertical ? scrollHeight - clientHeight : scrollWidth - clientWidth\n const scrollOffset = isVertical ? scrollTop : scrollLeft\n const valueNow = maxScroll > 0 ? Math.round((scrollOffset / maxScroll) * 100) : 0\n\n return (\n <html.div\n role=\"scrollbar\"\n aria-controls={viewportId}\n aria-orientation={orientation}\n aria-valuenow={valueNow}\n aria-valuemin={0}\n aria-valuemax={100}\n style={[\n styles.scrollbar,\n isVertical ? styles.scrollbarVertical : styles.scrollbarHorizontal,\n scrolling ? styles.scrollbarVisible : styles.scrollbarHidden,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Thumb ---\n\ninterface ThumbProps {\n orientation?: ScrollbarOrientation\n}\n\nfunction Thumb({orientation = 'vertical'}: ThumbProps) {\n const {viewportRef, scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth} =\n useScrollArea()\n const draggingRef = useRef(false)\n const startPosRef = useRef(0)\n const startScrollRef = useRef(0)\n\n const isVertical = orientation === 'vertical'\n\n const thumbSizePercent = isVertical\n ? Math.max((clientHeight / scrollHeight) * 100, 10)\n : Math.max((clientWidth / scrollWidth) * 100, 10)\n\n const maxScroll = isVertical ? scrollHeight - clientHeight : scrollWidth - clientWidth\n const trackSize = isVertical ? clientHeight : clientWidth\n const thumbPixelSize = (thumbSizePercent / 100) * trackSize\n const scrollOffset = isVertical ? scrollTop : scrollLeft\n const thumbOffset = maxScroll > 0 ? (scrollOffset / maxScroll) * (trackSize - thumbPixelSize) : 0\n\n const thumbStyle = isVertical\n ? styles.thumbVertical(`${thumbSizePercent}%`, `translateY(${thumbOffset}px)`)\n : styles.thumbHorizontal(`${thumbSizePercent}%`, `translateX(${thumbOffset}px)`)\n\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault()\n draggingRef.current = true\n startPosRef.current = isVertical ? e.clientY : e.clientX\n startScrollRef.current = isVertical\n ? (viewportRef.current?.scrollTop ?? 0)\n : (viewportRef.current?.scrollLeft ?? 0)\n ;(e.target as HTMLElement).setPointerCapture(e.pointerId)\n },\n [isVertical, viewportRef],\n )\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent) => {\n if (!draggingRef.current) return\n const vp = viewportRef.current\n if (!vp) return\n\n const delta = (isVertical ? e.clientY : e.clientX) - startPosRef.current\n const scrollRatio = maxScroll / (trackSize - thumbPixelSize)\n const scrollDelta = delta * scrollRatio\n\n if (isVertical) {\n vp.scrollTop = startScrollRef.current + scrollDelta\n } else {\n vp.scrollLeft = startScrollRef.current + scrollDelta\n }\n },\n [isVertical, maxScroll, trackSize, thumbPixelSize, viewportRef],\n )\n\n const handlePointerUp = useCallback(() => {\n draggingRef.current = false\n }, [])\n\n return (\n <html.div\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n style={[styles.thumb, thumbStyle]}\n />\n )\n}\n\nexport const ScrollArea = {\n Root,\n Viewport,\n Content,\n Scrollbar,\n Thumb,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n inputWrapper: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n borderRadius: radii.sm,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n },\n inputWrapperFocused: {\n borderColor: colors.accent,\n },\n input: {\n flex: 1,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: 'transparent',\n borderWidth: 0,\n outline: 'none',\n minWidth: 0,\n },\n trigger: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n backgroundColor: 'transparent',\n borderWidth: 0,\n color: colors.textMuted,\n cursor: 'pointer',\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n // Position is `fixed` and the top/left/width are applied inline by Popup\n // (computed from the root's bounding rect) so the dropdown can escape any\n // ancestor with `overflow: hidden` or `transform` (e.g. inside a Dialog).\n position: 'fixed',\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n maxHeight: 200,\n overflowY: 'auto',\n // Re-enable pointer events: the portal mount is pointer-events: none so\n // clicks fall through except on the popup itself.\n pointerEvents: 'auto',\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n itemSelected: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n itemHidden: {\n display: 'none',\n },\n empty: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n },\n hidden: {\n display: 'none',\n },\n // Dynamic position — applied at runtime from the input's bounding rect.\n popupPosition: (top: number, left: number, width: number) => ({\n top,\n left,\n width,\n }),\n})\n","import {createContext, useContext} from 'react'\n\nexport interface ComboboxContextValue {\n open: boolean\n openPopup: () => void\n close: () => void\n value: string | null\n setValue: (value: string) => void\n inputValue: string\n setInputValue: (value: string) => void\n labels: Record<string, string>\n registerLabel: (value: string, label: string) => void\n listboxId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, value: string, element: HTMLElement) => () => void\n inputRef: React.RefObject<HTMLInputElement | null>\n rootRef: React.RefObject<HTMLDivElement | null>\n}\n\nexport const ComboboxContext = createContext<ComboboxContextValue | null>(null)\n\nexport function useCombobox() {\n const ctx = useContext(ComboboxContext)\n if (!ctx) throw new Error('Combobox compound components must be used within Combobox.Root')\n return ctx\n}\n","import {useState, useCallback, useMemo, useRef, useId, useEffect} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {ComboboxContextValue} from './ComboboxContext'\n\ninterface UseComboboxRootOptions {\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n inputValue?: string\n onInputChange?: (value: string) => void\n initialLabels?: Record<string, string>\n}\n\nexport function useComboboxRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\n inputValue: controlledInputValue,\n onInputChange,\n initialLabels,\n}: UseComboboxRootOptions) {\n const [value, setValue] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange,\n )\n // Seed the visible text from the initially-selected value's label, so a\n // defaultValue/value shows its label on mount — and so the reconcile effect\n // below doesn't see \"value set but input empty\" and wipe the selection.\n const [internalInputValue, setInternalInputValue] = useState<string>(() => {\n const initial = controlledValue ?? defaultValue\n return initial ? (initialLabels?.[initial] ?? '') : ''\n })\n const inputValue = controlledInputValue !== undefined ? controlledInputValue : internalInputValue\n const setInputValue = useCallback(\n (v: string) => {\n if (controlledInputValue === undefined) setInternalInputValue(v)\n onInputChange?.(v)\n },\n [controlledInputValue, onInputChange],\n )\n\n const [open, setOpen] = useState(false)\n const [labels, setLabels] = useState<Record<string, string>>(initialLabels ?? {})\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const listboxId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const itemsRef = useRef(new Map<string, {value: string; element: HTMLElement}>())\n const orderRef = useRef<string[]>([])\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n }, [])\n\n const openPopup = useCallback(() => {\n setOpen(true)\n // Highlight the selected item or first visible item\n const items = itemsRef.current\n const order = orderRef.current\n let found: string | null = null\n for (const id of order) {\n const item = items.get(id)\n if (item && item.value === value) {\n found = id\n break\n }\n }\n setHighlightedId(found ?? (order.length > 0 ? order[0] : null))\n }, [value])\n\n const selectValue = useCallback(\n (itemValue: string) => {\n setValue(itemValue)\n // Set input to show the selected label\n const label = labels[itemValue] ?? itemValue\n setInputValue(label)\n close()\n inputRef.current?.focus()\n },\n [setValue, labels, setInputValue, close],\n )\n\n const registerLabel = useCallback((v: string, label: string) => {\n setLabels((prev) => {\n if (prev[v] === label) return prev\n return {...prev, [v]: label}\n })\n }, [])\n\n const registerItem = useCallback((id: string, itemValue: string, element: HTMLElement) => {\n itemsRef.current.set(id, {value: itemValue, element})\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)?.element\n const elB = map.get(b)?.element\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Get visible items (those matching the filter)\n const getVisibleOrder = useCallback(() => {\n const query = inputValue.toLowerCase()\n if (!query) return orderRef.current\n return orderRef.current.filter((id) => {\n const item = itemsRef.current.get(id)\n if (!item) return false\n const label = labels[item.value] ?? item.value\n return label.toLowerCase().includes(query)\n })\n }, [inputValue, labels])\n\n // Keyboard navigation\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const visibleOrder = getVisibleOrder()\n if (visibleOrder.length === 0 && e.key !== 'Escape' && e.key !== 'Tab') return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n if (!open) {\n setOpen(true)\n return\n }\n setHighlightedId((prev) => {\n const idx = prev ? visibleOrder.indexOf(prev) : -1\n return visibleOrder[(idx + 1) % visibleOrder.length] ?? null\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? visibleOrder.indexOf(prev) : 0\n return visibleOrder[(idx - 1 + visibleOrder.length) % visibleOrder.length] ?? null\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(visibleOrder[0] ?? null)\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(visibleOrder[visibleOrder.length - 1] ?? null)\n break\n }\n case 'Enter': {\n e.preventDefault()\n setHighlightedId((prev) => {\n if (prev) {\n const item = itemsRef.current.get(prev)\n if (item) selectValue(item.value)\n } else if (!inputValue.trim()) {\n // Empty input + Enter = clear selection (reset to \"All\")\n selectValue('')\n }\n return prev\n })\n break\n }\n case 'Escape': {\n e.preventDefault()\n close()\n inputRef.current?.focus()\n break\n }\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close, selectValue, getVisibleOrder])\n\n // Scroll highlighted item into view\n useEffect(() => {\n if (!highlightedId) return\n const item = itemsRef.current.get(highlightedId)\n item?.element.scrollIntoView({block: 'nearest'})\n }, [highlightedId])\n\n // Reconcile input text with the committed value once the popup closes.\n // Three cases when transitioning from open → closed:\n // - inputValue is empty: user cleared the field, treat that as\n // \"remove the selection\" so the consumer's onValueChange fires\n // with null and downstream UI (e.g. dependent fields) can reset.\n // - inputValue doesn't match the selected label: user typed something\n // but didn't pick anything; restore the label so the visible text\n // and the committed value stay consistent.\n // - inputValue equals the selected label: nothing to do.\n useEffect(() => {\n if (open) return\n // Treat an empty value (null OR '') as \"no selection\" — nothing to\n // reconcile. Without this, a controlled value=\"\" (e.g. a table column\n // filter) fires setValue(null) every render → inline onValueChange →\n // parent state change → re-render → infinite \"Maximum update depth\" loop.\n if (!value) return\n if (inputValue === '') {\n setValue(null)\n return\n }\n if (labels[value] && inputValue !== labels[value]) {\n setInputValue(labels[value])\n }\n }, [open, value, labels, inputValue, setInputValue, setValue])\n\n const ctx: ComboboxContextValue = useMemo(\n () => ({\n open,\n openPopup,\n close,\n value,\n setValue: selectValue,\n inputValue,\n setInputValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n inputRef,\n rootRef,\n }),\n [\n open,\n openPopup,\n close,\n value,\n selectValue,\n inputValue,\n setInputValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n ],\n )\n\n return {ctx, rootRef}\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const lightTheme = css.createTheme(colors, {\n bg: '#ffffff',\n bgCard: '#f5f5f5',\n bgCardHover: '#ebebeb',\n text: '#1a1a1a',\n textMuted: '#4a4a4a',\n accent: '#1e40af',\n accentHover: '#1a3799',\n accentContrast: '#ffffff',\n border: '#d4d4d4',\n error: '#991b1b',\n errorHover: '#7f1d1d',\n errorBg: 'rgba(153, 27, 27, 0.08)',\n errorBorder: 'rgba(153, 27, 27, 0.3)',\n errorText: '#7f1d1d',\n errorContrast: '#ffffff',\n success: '#166534',\n successBg: 'rgba(22, 101, 52, 0.08)',\n successBorder: 'rgba(22, 101, 52, 0.3)',\n successText: '#14532d',\n warning: '#92400e',\n warningBg: 'rgba(146, 64, 14, 0.08)',\n warningBorder: 'rgba(146, 64, 14, 0.3)',\n warningText: '#78350f',\n info: '#1e40af',\n infoBg: 'rgba(30, 64, 175, 0.08)',\n infoBorder: 'rgba(30, 64, 175, 0.3)',\n infoText: '#1e40af',\n})\n\nexport const lightShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.08)',\n md: '0 4px 12px rgba(0, 0, 0, 0.12)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.16)',\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const highContrastTheme = css.createTheme(colors, {\n bg: '#000000',\n bgCard: '#111111',\n bgCardHover: '#1a1a1a',\n text: '#ffffff',\n textMuted: '#b0b0b0',\n accent: '#60a5fa',\n accentHover: '#93c5fd',\n accentContrast: '#000000',\n border: '#555555',\n error: '#f87171',\n errorHover: '#fca5a5',\n errorBg: 'rgba(248, 113, 113, 0.15)',\n errorBorder: 'rgba(248, 113, 113, 0.5)',\n errorText: '#fca5a5',\n errorContrast: '#000000',\n success: '#4ade80',\n successBg: 'rgba(74, 222, 128, 0.15)',\n successBorder: 'rgba(74, 222, 128, 0.5)',\n successText: '#86efac',\n warning: '#fcd34d',\n warningBg: 'rgba(252, 211, 77, 0.15)',\n warningBorder: 'rgba(252, 211, 77, 0.5)',\n warningText: '#fef08a',\n info: '#60a5fa',\n infoBg: 'rgba(96, 165, 250, 0.15)',\n infoBorder: 'rgba(96, 165, 250, 0.5)',\n infoText: '#bfdbfe',\n})\n\nexport const highContrastShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.6)',\n md: '0 4px 12px rgba(0, 0, 0, 0.7)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.8)',\n})\n","import {createContext, type ReactNode, useContext, useState} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {lightTheme, lightShadows} from '@duro-app/tokens/themes/light.css'\nimport {highContrastTheme, highContrastShadows} from '@duro-app/tokens/themes/high-contrast.css'\n\nexport type ThemeName = 'dark' | 'light' | 'high-contrast'\n\ninterface ThemeProviderProps {\n theme?: ThemeName\n children: ReactNode\n}\n\nconst themeMap: Partial<Record<ThemeName, readonly [typeof lightTheme, typeof lightShadows]>> = {\n light: [lightTheme, lightShadows],\n 'high-contrast': [highContrastTheme, highContrastShadows],\n}\n\nconst styles = css.create({\n root: {\n display: 'contents',\n color: colors.text,\n },\n // Sibling overlay where floating popups (Combobox, Menu, Tooltip) portal to.\n // Lives inside ThemeProvider so theme tokens cascade. Fixed + inset 0 so\n // popups can position freely with viewport coords; pointer-events: none lets\n // clicks fall through except where children re-enable them.\n portalMount: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n pointerEvents: 'none',\n // Above Dialog (1001) so popups inside dialogs render on top.\n zIndex: 1100,\n },\n})\n\n// react-strict-dom's style prop rejects Theme<VarGroup<{named keys}>> because the\n// concrete VarGroup lacks the generic index signature. This is a known typing gap.\ntype DivStyle = Parameters<typeof html.div>[0]['style']\n\nconst PortalMountContext = createContext<HTMLElement | null>(null)\n\nexport function usePortalMount(): HTMLElement | null {\n return useContext(PortalMountContext)\n}\n\nexport function ThemeProvider({theme = 'dark', children}: ThemeProviderProps) {\n const overrides = themeMap[theme]\n const themeStyles = [overrides?.[0], overrides?.[1], styles.root] as DivStyle\n const [mount, setMount] = useState<HTMLElement | null>(null)\n\n return (\n <html.div data-theme={theme} style={themeStyles}>\n <PortalMountContext.Provider value={mount}>{children}</PortalMountContext.Provider>\n <html.div ref={setMount} data-portal-mount style={styles.portalMount} />\n </html.div>\n )\n}\n","import {type ReactNode, useRef, useId, useEffect, useLayoutEffect, useState} from 'react'\nimport {createPortal} from 'react-dom'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {ComboboxContext, useCombobox} from './ComboboxContext'\nimport {useComboboxRoot} from './useComboboxRoot'\nimport {usePortalMount} from '../ThemeProvider/ThemeProvider'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n inputValue?: string\n onInputChange?: (value: string) => void\n initialLabels?: Record<string, string>\n children: ReactNode\n}\n\nfunction Root({\n name,\n defaultValue,\n value,\n onValueChange,\n inputValue,\n onInputChange,\n initialLabels,\n children,\n}: RootProps) {\n const {ctx, rootRef} = useComboboxRoot({\n defaultValue,\n value,\n onValueChange,\n inputValue,\n onInputChange,\n initialLabels,\n })\n\n return (\n <ComboboxContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {name && <html.input type=\"hidden\" name={name} value={ctx.value ?? ''} />}\n {children}\n </html.div>\n </ComboboxContext.Provider>\n )\n}\n\n// --- Input ---\nfunction Input({placeholder, children}: {placeholder?: string; children?: ReactNode}) {\n const {open, openPopup, close, inputValue, setInputValue, listboxId, highlightedId, inputRef} =\n useCombobox()\n const localRef = useRef<HTMLInputElement>(null)\n const [focused, setFocused] = useState(false)\n\n useEffect(() => {\n inputRef.current = localRef.current\n })\n\n return (\n <html.div style={[styles.inputWrapper, focused && styles.inputWrapperFocused]}>\n <html.input\n ref={localRef}\n type=\"text\"\n role={'combobox' as 'listbox'}\n value={inputValue}\n placeholder={placeholder}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={highlightedId ?? undefined}\n aria-autocomplete={'list' as 'none'}\n autoComplete=\"off\"\n style={styles.input}\n onFocus={() => {\n setFocused(true)\n openPopup()\n }}\n onBlur={() => {\n setFocused(false)\n // Delay close to allow item click to register\n setTimeout(close, 150)\n }}\n onChange={(e: any) => {\n setInputValue(e.target.value)\n if (!open) openPopup()\n }}\n />\n {children}\n </html.div>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({children}: {children?: ReactNode}) {\n const {open, openPopup, close, inputRef} = useCombobox()\n\n return (\n <html.button\n type=\"button\"\n tabIndex={-1}\n aria-label={open ? 'Close' : 'Open'}\n onClick={() => {\n if (open) {\n close()\n } else {\n openPopup()\n }\n inputRef.current?.focus()\n }}\n style={styles.trigger}\n >\n {children ?? (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n )}\n </html.button>\n )\n}\n\n// --- Popup ---\n// Rendered into the ThemeProvider portal mount and positioned with viewport\n// coordinates so it escapes ancestor `overflow: hidden` / `transform`\n// containing blocks (notably Dialog and Drawer).\nfunction Popup({children}: {children: ReactNode}) {\n const {open, listboxId, rootRef} = useCombobox()\n const mount = usePortalMount()\n const [coords, setCoords] = useState<{top: number; left: number; width: number} | null>(null)\n\n // Measure the root each time the popup opens, and re-measure on scroll/resize\n // so the dropdown follows the input. Capture-phase scroll listener catches\n // scroll on any ancestor (e.g. Dialog body).\n useLayoutEffect(() => {\n if (!open) {\n setCoords(null)\n return\n }\n const update = () => {\n const el = rootRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n // Position immediately below the input with a small gap. `xs` token = 4px.\n setCoords({top: rect.bottom + 4, left: rect.left, width: rect.width})\n }\n update()\n window.addEventListener('resize', update)\n window.addEventListener('scroll', update, true)\n return () => {\n window.removeEventListener('resize', update)\n window.removeEventListener('scroll', update, true)\n }\n }, [open, rootRef])\n\n if (!open || !coords) return null\n\n const node = (\n <html.div\n id={listboxId}\n role=\"listbox\"\n style={[styles.popup, styles.popupPosition(coords.top, coords.left, coords.width)]}\n >\n {children}\n </html.div>\n )\n\n // SSR / pre-mount fallback: render inline (will be invisible under\n // overflow:hidden parents but won't crash). Once the mount is available,\n // portal into it.\n return mount ? createPortal(node, mount) : node\n}\n\n// --- Item ---\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value: itemValue, children}: ItemProps) {\n const {\n value: selectedValue,\n setValue,\n inputValue,\n labels,\n registerLabel,\n highlightedId,\n setHighlightedId,\n registerItem,\n } = useCombobox()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isSelected = selectedValue === itemValue\n const isHighlighted = highlightedId === id\n\n // Filter: check if this item matches the input\n const label = labels[itemValue] ?? itemValue\n const query = inputValue.toLowerCase()\n const isVisible = !query || label.toLowerCase().includes(query)\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n const text = el.textContent\n if (text) registerLabel(itemValue, text)\n }, [itemValue, registerLabel])\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, itemValue, el)\n }, [id, itemValue, registerItem])\n\n if (!isVisible) return null\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n onClick={() => setValue(itemValue)}\n onPointerEnter={() => setHighlightedId(id)}\n style={[\n styles.item,\n isSelected && styles.itemSelected,\n isHighlighted && styles.itemHighlighted,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- ItemText ---\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.span>{children}</html.span>\n}\n\n// --- Empty ---\nfunction Empty({children}: {children: ReactNode}) {\n const {open, inputValue, labels} = useCombobox()\n\n if (!open) return null\n\n // Check if any items are visible\n const query = inputValue.toLowerCase()\n const hasVisibleItems = query\n ? Object.values(labels).some((label) => label.toLowerCase().includes(query))\n : true\n\n if (hasVisibleItems) return null\n\n return <html.div style={styles.empty}>{children}</html.div>\n}\n\nexport const Combobox = {\n Root,\n Input,\n Trigger,\n Popup,\n Item,\n ItemText,\n Empty,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n },\n value: {\n color: colors.text,\n },\n placeholder: {\n color: colors.textMuted,\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n color: colors.textMuted,\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n // The portal mount is pointer-events: none, so re-enable here to catch\n // outside clicks that close the popup.\n pointerEvents: 'auto',\n },\n popup: {\n // Position is `fixed` and top/left/minWidth are applied inline by Popup\n // (computed from the trigger's bounding rect) so the dropdown escapes any\n // ancestor with `overflow: hidden` / `transform` (notably inside a Dialog).\n position: 'fixed',\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 120,\n maxHeight: 280,\n overflowY: 'auto',\n zIndex: 50,\n // Re-enable pointer events: the portal mount is pointer-events: none.\n pointerEvents: 'auto',\n },\n popupPosition: (top: number, left: number, minWidth: number) => ({\n top,\n left,\n minWidth,\n }),\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n itemSelected: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n hidden: {\n display: 'none',\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SelectContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n value: string | null\n setValue: (value: string) => void\n labels: Record<string, string>\n registerLabel: (value: string, label: string) => void\n listboxId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, value: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const SelectContext = createContext<SelectContextValue | null>(null)\n\nexport function useSelect() {\n const ctx = useContext(SelectContext)\n if (!ctx) throw new Error('Select compound components must be used within Select.Root')\n return ctx\n}\n","import {useState, useCallback, useMemo, useRef, useId, useEffect} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {SelectContextValue} from './SelectContext'\n\ninterface UseSelectRootOptions {\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n}\n\nexport function useSelectRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\n initialLabels,\n}: UseSelectRootOptions) {\n const [value, setValue] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange,\n )\n const [open, setOpen] = useState(false)\n const [labels, setLabels] = useState<Record<string, string>>(initialLabels ?? {})\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const listboxId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, {value: string; element: HTMLElement}>())\n const orderRef = useRef<string[]>([])\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n const items = itemsRef.current\n const order = orderRef.current\n let found: string | null = null\n for (const id of order) {\n const item = items.get(id)\n if (item && item.value === value) {\n found = id\n break\n }\n }\n setHighlightedId(found ?? (order.length > 0 ? order[0] : null))\n } else {\n setHighlightedId(null)\n }\n return !prev\n })\n }, [value])\n\n const registerLabel = useCallback((v: string, label: string) => {\n setLabels((prev) => {\n if (prev[v] === label) return prev\n return {...prev, [v]: label}\n })\n }, [])\n\n const registerItem = useCallback((id: string, itemValue: string, element: HTMLElement) => {\n itemsRef.current.set(id, {value: itemValue, element})\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)?.element\n const elB = map.get(b)?.element\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n const items = itemsRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n setHighlightedId((prev) => {\n if (prev) {\n const item = items.get(prev)\n if (item) {\n setValue(item.value)\n close()\n }\n }\n return prev\n })\n break\n }\n case 'Escape':\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close, setValue])\n\n const ctx: SelectContextValue = useMemo(\n () => ({\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }),\n [\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n ],\n )\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect, useLayoutEffect, useState} from 'react'\nimport {createPortal} from 'react-dom'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {SelectContext, useSelect} from './SelectContext'\nimport {useSelectRoot} from './useSelectRoot'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {usePortalMount} from '../ThemeProvider/ThemeProvider'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n children: ReactNode\n}\n\nfunction Root({name, defaultValue, value, onValueChange, initialLabels, children}: RootProps) {\n const {ctx, rootRef} = useSelectRoot({defaultValue, value, onValueChange, initialLabels})\n\n return (\n <SelectContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {name && <html.input type=\"hidden\" name={name} value={ctx.value ?? ''} />}\n {children}\n </html.div>\n </SelectContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({\n children,\n 'aria-label': ariaLabel,\n}: {\n children: ReactNode\n 'aria-label'?: string\n}) {\n const {open, toggle, listboxId, highlightedId, triggerRef} = useSelect()\n const localRef = useRef<HTMLButtonElement>(null)\n // Inside a <Field.Root>, adopt its controlId so <Field.Label for={controlId}>\n // labels the trigger (a labelable <button>) — no manual aria-label needed; and\n // surface the field's description/error + invalid state, mirroring <Input>.\n const fieldCtx = useFieldContext()\n const describedBy = fieldCtx\n ? `${fieldCtx.descriptionId} ${fieldCtx.invalid ? fieldCtx.errorId : ''}`.trim()\n : undefined\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n return (\n <html.button\n ref={localRef}\n id={fieldCtx?.controlId}\n type=\"button\"\n role={'combobox' as 'listbox'}\n onClick={toggle}\n aria-label={ariaLabel}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={highlightedId ?? undefined}\n aria-describedby={describedBy || undefined}\n aria-invalid={fieldCtx?.invalid || undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Value ---\nfunction Value({placeholder}: {placeholder?: string}) {\n const {value, labels} = useSelect()\n const display = value ? (labels[value] ?? value) : null\n\n return (\n <html.span style={display ? styles.value : styles.placeholder}>\n {display ?? placeholder}\n </html.span>\n )\n}\n\n// --- Icon ---\nfunction Icon({children}: {children?: ReactNode}) {\n return (\n <html.span style={styles.icon}>\n {children ?? (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n )}\n </html.span>\n )\n}\n\n// --- Popup ---\n// Rendered into the ThemeProvider portal mount and positioned with viewport\n// coordinates (measured off the trigger) so it escapes ancestor\n// `overflow: hidden` / `transform` containing blocks (notably Dialog/Drawer).\n// The listbox stays mounted while closed (display: none) so Items can register\n// their labels from DOM text before the popup is ever opened.\nfunction Popup({children}: {children: ReactNode}) {\n const {open, close, listboxId, triggerRef} = useSelect()\n const mount = usePortalMount()\n const [coords, setCoords] = useState<{top: number; left: number; width: number} | null>(null)\n\n // Measure the trigger when the popup opens, and re-measure on scroll/resize so\n // the dropdown follows it. Capture-phase scroll catches scroll on any ancestor\n // (e.g. a Dialog body).\n useLayoutEffect(() => {\n if (!open) return\n const update = () => {\n const el = triggerRef.current\n if (!el) return\n const rect = el.getBoundingClientRect()\n // `xs` token = 4px gap below the trigger.\n setCoords({top: rect.bottom + 4, left: rect.left, width: rect.width})\n }\n update()\n window.addEventListener('resize', update)\n window.addEventListener('scroll', update, true)\n return () => {\n window.removeEventListener('resize', update)\n window.removeEventListener('scroll', update, true)\n }\n }, [open, triggerRef])\n\n const node = (\n <>\n {open && <html.div style={styles.backdrop} onClick={close} />}\n <html.div\n id={listboxId}\n role=\"listbox\"\n aria-hidden={!open}\n style={[\n styles.popup,\n (!open || !coords) && styles.hidden,\n coords && styles.popupPosition(coords.top, coords.left, coords.width),\n ]}\n >\n {children}\n </html.div>\n </>\n )\n\n // SSR / pre-mount fallback: render inline (hidden under overflow parents but\n // won't crash). Once the mount exists, portal into it.\n return mount ? createPortal(node, mount) : node\n}\n\n// --- Item ---\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value: itemValue, children}: ItemProps) {\n const {\n value: selectedValue,\n setValue,\n close,\n registerLabel,\n highlightedId,\n setHighlightedId,\n registerItem,\n } = useSelect()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isSelected = selectedValue === itemValue\n const isHighlighted = highlightedId === id\n\n // Register label from DOM text content (works with both string and JSX children)\n useEffect(() => {\n const el = ref.current\n if (!el) return\n const text = el.textContent\n if (text) registerLabel(itemValue, text)\n }, [itemValue, registerLabel])\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, itemValue, el)\n }, [id, itemValue, registerItem])\n\n const handleClick = () => {\n setValue(itemValue)\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[\n styles.item,\n isSelected && styles.itemSelected,\n isHighlighted && styles.itemHighlighted,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- ItemText ---\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.span>{children}</html.span>\n}\n\nexport const Select = {\n Root,\n Trigger,\n Value,\n Icon,\n Popup,\n Item,\n ItemText,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 0,\n },\n group: {\n display: 'flex',\n flexDirection: 'column',\n },\n groupTrigger: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.xs,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n fontWeight: typography.fontWeightSemibold,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.05em',\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n cursor: 'pointer',\n transitionProperty: 'color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n groupTriggerActive: {\n color: colors.text,\n },\n chevron: {\n display: 'inline-flex',\n alignItems: 'center',\n transitionProperty: 'transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n chevronOpen: {\n transform: 'rotate(90deg)',\n },\n // Static (non-collapsible) section — see SideNav.Section.\n section: {\n display: 'flex',\n flexDirection: 'column',\n },\n sectionLabel: {\n paddingTop: spacing.md,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n fontWeight: typography.fontWeightSemibold,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.06em',\n color: colors.textMuted,\n },\n item: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: '6px',\n paddingBottom: '6px',\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightNormal,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 0,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'color, background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n textAlign: 'left' as const,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n },\n itemActive: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n backgroundColor: colors.bgCardHover,\n },\n // Active indicator — a bar at the rail's left edge that grows in on select.\n marker: {\n position: 'absolute',\n left: 0,\n top: '50%',\n width: '3px',\n height: 0,\n transform: 'translateY(-50%)',\n borderTopRightRadius: radii.full,\n borderBottomRightRadius: radii.full,\n backgroundColor: colors.accent,\n transitionProperty: 'height',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n markerActive: {\n height: '18px',\n },\n itemIcon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n width: '18px',\n height: '18px',\n },\n itemLabel: {\n flexGrow: 1,\n minWidth: 0,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SideNavContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n expandedGroups: Set<string>\n toggleGroup: (group: string) => void\n /** Idempotent expand (add-only) — used by auto-expand/defaultExpanded so a\n * group that qualifies twice (e.g. defaultExpanded AND holding the active\n * item) doesn't get toggled back closed. `toggleGroup` stays for user clicks. */\n expandGroup: (group: string) => void\n registerItem: (value: string) => () => void\n orderRef: React.RefObject<string[]>\n}\n\nexport const SideNavContext = createContext<SideNavContextValue | null>(null)\n\nexport function useSideNav() {\n const ctx = useContext(SideNavContext)\n if (!ctx) throw new Error('SideNav compound components must be used within SideNav.Root')\n return ctx\n}\n","import {type ReactNode, useState, useCallback, useRef, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {SideNavContext, useSideNav} from './SideNavContext'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n}\n\nfunction Root({children, value: controlledValue, defaultValue, onValueChange}: RootProps) {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const [expandedGroups, setExpandedGroups] = useState<Set<string>>(new Set())\n const orderRef = useRef<string[]>([])\n\n const toggleGroup = useCallback((group: string) => {\n setExpandedGroups((prev) => {\n const next = new Set(prev)\n if (next.has(group)) {\n next.delete(group)\n } else {\n next.add(group)\n }\n return next\n })\n }, [])\n\n // Idempotent expand — never closes an already-open group. The mount effects\n // in Group (defaultExpanded + auto-expand-active) use this instead of\n // toggleGroup so a group that qualifies on both counts stays open rather than\n // being toggled open-then-closed.\n const expandGroup = useCallback((group: string) => {\n setExpandedGroups((prev) => {\n if (prev.has(group)) return prev\n const next = new Set(prev)\n next.add(group)\n return next\n })\n }, [])\n\n const registerItem = useCallback((value: string) => {\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n return (\n <SideNavContext.Provider\n value={{\n activeValue,\n onSelect,\n expandedGroups,\n toggleGroup,\n expandGroup,\n registerItem,\n orderRef,\n }}\n >\n <html.nav role=\"navigation\" style={styles.root}>\n {children}\n </html.nav>\n </SideNavContext.Provider>\n )\n}\n\n// --- Group ---\n\ninterface GroupProps {\n children: ReactNode\n label: string\n groupKey?: string\n defaultExpanded?: boolean\n}\n\nfunction Group({children, label, groupKey, defaultExpanded}: GroupProps) {\n const key = groupKey ?? label\n const {expandedGroups, toggleGroup, expandGroup, activeValue} = useSideNav()\n const isExpanded = expandedGroups.has(key)\n const groupRef = useRef<HTMLDivElement>(null)\n\n // Auto-expand if this group contains the active item. Uses expandGroup (not\n // toggleGroup) so it never races the defaultExpanded effect into a closed\n // state when the active item lives in a defaultExpanded group.\n useEffect(() => {\n if (!activeValue || expandedGroups.has(key)) return\n const el = groupRef.current\n if (!el) return\n const activeBtn = el.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n if (activeBtn) {\n expandGroup(key)\n }\n }, [activeValue, key, expandedGroups, expandGroup])\n\n // Expand on first render if defaultExpanded (idempotent add, not a toggle).\n useEffect(() => {\n if (defaultExpanded) {\n expandGroup(key)\n }\n // Only run on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const hasActiveChild = (() => {\n if (!activeValue || !groupRef.current) return false\n return !!groupRef.current.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n })()\n\n return (\n <html.div ref={groupRef} style={styles.group}>\n <html.button\n type=\"button\"\n onClick={() => toggleGroup(key)}\n style={[styles.groupTrigger, hasActiveChild && styles.groupTriggerActive]}\n aria-expanded={isExpanded}\n >\n <html.span style={[styles.chevron, isExpanded && styles.chevronOpen]}>\n <svg\n width={10}\n height={10}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n </html.span>\n {label}\n </html.button>\n {isExpanded && children}\n </html.div>\n )\n}\n\n// --- Section ---\n\ninterface SectionProps {\n children: ReactNode\n label: string\n}\n\n/**\n * A static, non-collapsible grouping: an always-visible uppercase header with\n * its items below. Unlike `Group` there is no chevron, toggle, or hidden state\n * — use it when every section should stay open at a glance (a flat menu with\n * labelled regions rather than an accordion).\n */\nfunction Section({children, label}: SectionProps) {\n return (\n <html.div style={styles.section}>\n <html.div style={styles.sectionLabel}>{label}</html.div>\n {children}\n </html.div>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n children: ReactNode\n /** Optional leading glyph (e.g. a design-system `<Icon />`). Inherits the\n * item's text color, so it turns accent when the item is active. */\n icon?: ReactNode\n}\n\nfunction Item({value, children, icon}: ItemProps) {\n const {activeValue, onSelect, registerItem} = useSideNav()\n const isActive = activeValue === value\n\n useEffect(() => {\n return registerItem(value)\n }, [value, registerItem])\n\n return (\n <html.button\n type=\"button\"\n data-nav-value={value}\n onClick={() => onSelect(value)}\n style={[styles.item, isActive && styles.itemActive]}\n aria-current={isActive ? 'page' : undefined}\n >\n <html.span aria-hidden style={[styles.marker, isActive && styles.markerActive]} />\n {icon ? (\n <html.span aria-hidden style={styles.itemIcon}>\n {icon}\n </html.span>\n ) : null}\n <html.span style={styles.itemLabel}>{children}</html.span>\n </html.button>\n )\n}\n\nexport const SideNav = {\n Root,\n Group,\n Section,\n Item,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nconst spin = css.keyframes({\n '0%': {transform: 'rotate(0deg)'},\n '100%': {transform: 'rotate(360deg)'},\n})\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n spinner: {\n borderRadius: '50%',\n borderStyle: 'solid',\n borderColor: colors.border,\n borderTopColor: colors.accent,\n animationName: spin,\n animationDuration: '0.6s',\n animationTimingFunction: 'linear',\n animationIterationCount: 'infinite',\n },\n sm: {\n width: 16,\n height: 16,\n borderWidth: 2,\n },\n md: {\n width: 24,\n height: 24,\n borderWidth: 2,\n },\n lg: {\n width: 40,\n height: 40,\n borderWidth: 3,\n },\n srOnly: {\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n },\n})\n","import {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\n\ninterface SpinnerProps {\n size?: SpinnerSize\n label?: string\n}\n\nconst sizeMap = {\n sm: styles.sm,\n md: styles.md,\n lg: styles.lg,\n} as const\n\nexport function Spinner({size = 'md', label = 'Loading'}: SpinnerProps) {\n return (\n <html.div role=\"status\" style={styles.root}>\n <html.div style={[styles.spinner, sizeMap[size]]} aria-hidden />\n <html.span style={styles.srOnly}>{label}</html.span>\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {easing} from '@duro-app/tokens/tokens/motion.css'\n\nconst enter = css.keyframes({\n from: {opacity: 0, transform: 'translateY(10px)'},\n to: {opacity: 1, transform: 'translateY(0)'},\n})\n\nexport const styles = css.create({\n // Fixed, viewport-anchored stack. Portaled into the ThemeProvider mount so it\n // layers above dialogs; the container itself is click-through, each toast\n // re-enables pointer events.\n region: {\n position: 'fixed',\n bottom: spacing.lg,\n left: 0,\n right: 0,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n pointerEvents: 'none',\n },\n toast: {\n pointerEvents: 'auto',\n boxSizing: 'border-box',\n width: '100%',\n maxWidth: 440,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderLeftWidth: 3,\n backgroundColor: colors.bgCard,\n boxShadow: shadows.lg,\n color: colors.text,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n animationName: {\n default: enter,\n '@media (prefers-reduced-motion: reduce)': 'none',\n },\n animationDuration: '160ms',\n animationTimingFunction: easing.easeOut,\n },\n success: {borderLeftColor: colors.successBorder},\n error: {borderLeftColor: colors.errorBorder},\n info: {borderLeftColor: colors.infoBorder},\n\n iconWrap: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: 1,\n },\n iconSuccess: {color: colors.successText},\n iconError: {color: colors.errorText},\n iconInfo: {color: colors.infoText},\n\n content: {\n flex: 1,\n minWidth: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n },\n message: {\n color: colors.text,\n },\n action: {\n alignSelf: 'flex-start',\n marginTop: 2,\n padding: 0,\n borderWidth: 0,\n backgroundColor: 'transparent',\n color: colors.accent,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n textDecorationLine: 'underline',\n cursor: 'pointer',\n outlineStyle: {default: 'none', ':focus-visible': 'solid'},\n outlineWidth: 2,\n outlineColor: colors.accent,\n outlineOffset: 2,\n borderRadius: radii.sm,\n },\n closeBtn: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 2,\n marginTop: -1,\n borderWidth: 0,\n backgroundColor: 'transparent',\n color: {default: colors.textMuted, ':hover': colors.text},\n cursor: 'pointer',\n borderRadius: radii.sm,\n outlineStyle: {default: 'none', ':focus-visible': 'solid'},\n outlineWidth: 2,\n outlineColor: colors.accent,\n outlineOffset: 1,\n },\n})\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useSyncExternalStore,\n type ReactNode,\n} from 'react'\nimport {createPortal} from 'react-dom'\nimport {html} from 'react-strict-dom'\nimport {Icon, type IconName} from '../Icon'\nimport {usePortalMount} from '../ThemeProvider/ThemeProvider'\nimport {styles} from './styles.css'\n\nexport type ToastVariant = 'success' | 'error' | 'info'\n\nexport interface ToastAction {\n label: string\n onClick: () => void\n}\n\nexport interface ToastOptions {\n /** Visual + semantic tone. Errors announce assertively and linger longer. */\n variant?: ToastVariant\n message: ReactNode\n /** Optional single action, e.g. Undo. Runs, then dismisses the toast. */\n action?: ToastAction\n /** Auto-dismiss delay in ms. `0` (or negative) keeps it until dismissed. */\n duration?: number\n}\n\nexport interface ToastContextValue {\n /** Show a toast; returns its id so it can be dismissed programmatically. */\n toast: (opts: ToastOptions) => string\n dismiss: (id: string) => void\n}\n\ninterface ToastEntry {\n id: string\n variant: ToastVariant\n message: ReactNode\n action?: ToastAction\n duration: number\n}\n\ninterface ToastStore {\n subscribe: (cb: () => void) => () => void\n getSnapshot: () => readonly ToastEntry[]\n add: (opts: ToastOptions) => string\n remove: (id: string) => void\n}\n\nconst DEFAULT_DURATION: Record<ToastVariant, number> = {\n success: 5000,\n info: 5000,\n error: 8000,\n}\n\nfunction createToastStore(): ToastStore {\n let entries: ToastEntry[] = []\n let seq = 0\n const listeners = new Set<() => void>()\n const notify = () => listeners.forEach((l) => l())\n\n return {\n subscribe: (cb) => {\n listeners.add(cb)\n return () => listeners.delete(cb)\n },\n getSnapshot: () => entries,\n add: (opts) => {\n const variant = opts.variant ?? 'info'\n const id = `toast-${++seq}`\n const duration = opts.duration ?? DEFAULT_DURATION[variant]\n entries = [...entries, {id, variant, message: opts.message, action: opts.action, duration}]\n notify()\n return id\n },\n remove: (id) => {\n const next = entries.filter((e) => e.id !== id)\n if (next.length !== entries.length) {\n entries = next\n notify()\n }\n },\n }\n}\n\nconst variantIcon: Record<ToastVariant, IconName> = {\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n info: 'info-circle-filled',\n}\nconst variantIconStyle = {\n success: styles.iconSuccess,\n error: styles.iconError,\n info: styles.iconInfo,\n} as const\n\nconst ToastContext = createContext<ToastContextValue | null>(null)\n\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastContext)\n if (!ctx) throw new Error('useToast must be used within a <ToastProvider>')\n return ctx\n}\n\nfunction ToastItem({entry, onDismiss}: {entry: ToastEntry; onDismiss: (id: string) => void}) {\n const {id, variant, message, action, duration} = entry\n\n useEffect(() => {\n if (duration <= 0) return\n const timer = setTimeout(() => onDismiss(id), duration)\n return () => clearTimeout(timer)\n }, [id, duration, onDismiss])\n\n return (\n <html.div\n role={variant === 'error' ? 'alert' : 'status'}\n aria-live={variant === 'error' ? 'assertive' : 'polite'}\n style={[styles.toast, styles[variant]]}\n >\n <html.div style={[styles.iconWrap, variantIconStyle[variant]]}>\n <Icon name={variantIcon[variant]} size={18} />\n </html.div>\n <html.div style={styles.content}>\n <html.div style={styles.message}>{message}</html.div>\n {action ? (\n <html.button\n type=\"button\"\n style={styles.action}\n onClick={() => {\n action.onClick()\n onDismiss(id)\n }}\n >\n {action.label}\n </html.button>\n ) : null}\n </html.div>\n <html.button\n type=\"button\"\n aria-label=\"Dismiss\"\n style={styles.closeBtn}\n onClick={() => onDismiss(id)}\n >\n <Icon name=\"x-circle\" size={16} />\n </html.button>\n </html.div>\n )\n}\n\nexport function ToastProvider({children}: {children: ReactNode}) {\n const storeRef = useRef<ToastStore>(null)\n if (storeRef.current === null) {\n storeRef.current = createToastStore()\n }\n const store = storeRef.current\n\n const entries = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot)\n const mount = usePortalMount()\n\n const value = useMemo<ToastContextValue>(\n () => ({\n toast: (opts) => store.add(opts),\n dismiss: (id) => store.remove(id),\n }),\n [store],\n )\n\n const dismiss = useCallback((id: string) => store.remove(id), [store])\n\n const region = (\n <html.div role=\"region\" aria-label=\"Notifications\" style={styles.region}>\n {entries.map((entry) => (\n <ToastItem key={entry.id} entry={entry} onDismiss={dismiss} />\n ))}\n </html.div>\n )\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n {mount ? createPortal(region, mount) : region}\n </ToastContext.Provider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: spacing.md,\n },\n error: {\n color: colors.error,\n },\n success: {\n color: colors.success,\n },\n warning: {\n color: colors.warning,\n },\n info: {\n color: colors.info,\n },\n muted: {\n color: colors.textMuted,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type StatusIconName = Extract<\n IconName,\n 'x-circle' | 'check-circle' | 'check-done' | 'clock' | 'forbidden'\n>\nexport type StatusIconVariant = 'error' | 'success' | 'warning' | 'info' | 'muted'\n\ninterface StatusIconProps {\n name: StatusIconName\n size?: number\n variant?: StatusIconVariant\n}\n\nexport function StatusIcon({name, size = 48, variant = 'muted'}: StatusIconProps) {\n return (\n <html.div style={[styles.root, styles[variant]]}>\n <Icon name={name} size={size} />\n </html.div>\n )\n}\n","import {createContext, useContext} from 'react'\n\nexport interface TagGroupContextValue {\n values: string[]\n addTag: (value: string) => void\n removeTag: (value: string) => void\n editable: boolean\n setEditable: (v: boolean) => void\n disabled: boolean\n validate?: (value: string) => true | string\n focusedIndex: number\n setFocusedIndex: (index: number) => void\n inputRef: React.RefObject<HTMLInputElement | null>\n gridId: string\n name?: string\n}\n\nexport const TagGroupContext = createContext<TagGroupContextValue | null>(null)\n\nexport function useTagGroup(): TagGroupContextValue | null {\n return useContext(TagGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightNormal,\n lineHeight: 1,\n borderRadius: 4,\n whiteSpace: 'nowrap',\n minWidth: 0,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n sizeMd: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.ms,\n paddingRight: spacing.ms,\n fontSize: typography.fontSizeSm,\n },\n sizeSm: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n // Opt-in wrapping for long identifier-style labels. Overrides the base\n // nowrap so the text breaks within its container (e.g. a table cell)\n // instead of overflowing into the next column. `anywhere` also lets the\n // tag shrink below its content's intrinsic width so a flex/grid parent can\n // actually give it a narrow track.\n wrap: {\n whiteSpace: 'normal',\n overflowWrap: 'anywhere',\n lineHeight: 1.35,\n textAlign: 'start',\n },\n // Reduce right padding when removable to keep visual balance with the button\n removableMd: {\n paddingRight: spacing.sm,\n },\n removableSm: {\n paddingRight: spacing.xs,\n },\n default: {\n backgroundColor: {\n default: colors.bg,\n ':hover': colors.bgCardHover,\n },\n color: colors.text,\n },\n success: {\n backgroundColor: colors.successBg,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n color: colors.warningText,\n },\n error: {\n backgroundColor: colors.errorBg,\n color: colors.errorText,\n },\n info: {\n backgroundColor: colors.infoBg,\n color: colors.infoText,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n removeButton: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 0,\n borderWidth: 0,\n backgroundColor: 'transparent',\n color: 'inherit',\n cursor: 'pointer',\n borderRadius: radii.full,\n opacity: {\n default: 0.6,\n ':hover': 1,\n },\n outlineWidth: 0,\n },\n removeButtonDisabled: {\n cursor: 'not-allowed',\n opacity: 0.4,\n },\n})\n","import {type ReactNode, useCallback, useRef} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useTagGroup} from '../TagGroup/TagGroupContext'\nimport {styles} from './styles.css'\n\nexport type TagVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type TagSize = 'sm' | 'md'\n\ninterface TagProps {\n /** Value identifier — required when used inside TagGroup */\n value?: string\n variant?: TagVariant\n size?: TagSize\n /** Show remove button. Auto-derived from TagGroup context when inside one. */\n removable?: boolean\n /** Called when remove button is clicked. Auto-wired to TagGroup when inside one. */\n onRemove?: () => void\n disabled?: boolean\n /**\n * Allow the label to wrap / break instead of staying on one line. Tags are\n * `white-space: nowrap` by default (they read as pills); set this for long\n * identifier-style values (e.g. `lldap.group.member.remove`) sitting in a\n * constrained column, so they break within their cell instead of leaking\n * into the next one.\n */\n wrap?: boolean\n children: ReactNode\n}\n\nconst sizeMap = {\n sm: styles.sizeSm,\n md: styles.sizeMd,\n} as const\n\nconst removableSizeMap = {\n sm: styles.removableSm,\n md: styles.removableMd,\n} as const\n\nexport function Tag({\n value,\n variant = 'default',\n size = 'md',\n removable: removableProp,\n onRemove: onRemoveProp,\n disabled: disabledProp = false,\n wrap = false,\n children,\n}: TagProps) {\n const group = useTagGroup()\n const contentRef = useRef<HTMLElement>(null)\n\n const isGrouped = group !== null\n const disabled = disabledProp || (group?.disabled ?? false)\n const removable = removableProp ?? (isGrouped ? group.editable : false)\n\n const onRemove = useCallback(() => {\n if (disabled) return\n if (onRemoveProp) {\n onRemoveProp()\n } else if (isGrouped && value !== undefined) {\n group.removeTag(value)\n }\n }, [disabled, onRemoveProp, isGrouped, value, group])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return\n if ((e.key === 'Backspace' || e.key === 'Delete') && removable) {\n e.preventDefault()\n onRemove()\n }\n // Arrow key navigation delegated to TagGroup via context\n if (isGrouped && (e.key === 'ArrowLeft' || e.key === 'ArrowRight')) {\n e.preventDefault()\n const idx = value !== undefined ? group.values.indexOf(value) : -1\n if (e.key === 'ArrowLeft' && idx > 0) {\n group.setFocusedIndex(idx - 1)\n } else if (e.key === 'ArrowRight') {\n if (idx < group.values.length - 1) {\n group.setFocusedIndex(idx + 1)\n } else {\n // Move focus to input\n group.inputRef.current?.focus()\n group.setFocusedIndex(-1)\n }\n }\n }\n },\n [disabled, removable, onRemove, isGrouped, value, group],\n )\n\n const removeLabel = contentRef.current?.textContent\n ? `Remove ${contentRef.current.textContent}`\n : 'Remove'\n\n const tagContent = (\n <>\n <html.span ref={contentRef} {...(isGrouped ? {role: 'gridcell' as any} : {})}>\n {children}\n </html.span>\n {removable && (\n <html.span {...(isGrouped ? {role: 'gridcell' as any} : {})}>\n <html.button\n type=\"button\"\n aria-label={removeLabel}\n disabled={disabled}\n onClick={(e) => {\n ;(e as any).stopPropagation?.()\n onRemove()\n }}\n tabIndex={-1}\n style={[styles.removeButton, disabled && styles.removeButtonDisabled]}\n >\n <svg\n width={size === 'sm' ? 10 : 12}\n height={size === 'sm' ? 10 : 12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n >\n <path\n d=\"M3 3l6 6M9 3l-6 6\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </svg>\n </html.button>\n </html.span>\n )}\n </>\n )\n\n return (\n <html.span\n {...(isGrouped ? {role: 'row' as any} : {})}\n tabIndex={isGrouped ? 0 : undefined}\n onKeyDown={isGrouped ? (handleKeyDown as any) : undefined}\n style={[\n styles.base,\n sizeMap[size],\n removable && removableSizeMap[size],\n styles[variant],\n disabled && styles.disabled,\n wrap && styles.wrap,\n ]}\n >\n {tagContent}\n </html.span>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n container: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n containerError: {},\n containerDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n // Static display (no Input) — no gap needed\n containerStatic: {\n gap: 0,\n },\n list: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: spacing.xs,\n alignItems: 'center',\n },\n input: {\n width: '100%',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':focus': colors.accent,\n },\n borderRadius: radii.sm,\n backgroundColor: colors.bg,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n minHeight: 40,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus': 1,\n },\n boxSizing: 'border-box',\n },\n inputError: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n liveRegion: {\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n },\n})\n","import {\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {TagGroupContext, type TagGroupContextValue} from './TagGroupContext'\nimport {styles} from './styles.css'\n\n// ---------------------------------------------------------------------------\n// Local context accessor (non-throwing, returns null)\n// ---------------------------------------------------------------------------\n\nfunction useTagGroupCtx() {\n return useContext(TagGroupContext)\n}\n\n// ---------------------------------------------------------------------------\n// TagGroup.Root\n// ---------------------------------------------------------------------------\n\ninterface RootProps {\n value?: string[]\n defaultValue?: string[]\n onValueChange?: (values: string[]) => void\n /** Validate a value before adding. Return `true` if valid, or an error string. */\n onValidate?: (value: string) => true | string\n disabled?: boolean\n /** Form field name — renders hidden inputs for each tag value */\n name?: string\n 'aria-label'?: string\n children: ReactNode\n}\n\nfunction Root({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n onValidate,\n disabled: disabledProp = false,\n name,\n 'aria-label': ariaLabel,\n children,\n}: RootProps) {\n const gridId = useId()\n const fieldCtx = useFieldContext()\n const [values, setValues] = useControllableValue(controlledValue, defaultValue, onValueChange)\n const [focusedIndex, setFocusedIndex] = useState(-1)\n const [editable, setEditable] = useState(false)\n const [announcement, setAnnouncement] = useState('')\n const inputRef = useRef<HTMLInputElement>(null)\n\n const disabled = disabledProp || (fieldCtx?.disabled ?? false)\n const isInvalid = fieldCtx?.invalid ?? false\n\n const addTag = useCallback(\n (value: string) => {\n const trimmed = value.trim()\n if (!trimmed) return\n if (values.includes(trimmed)) return\n if (onValidate) {\n const result = onValidate(trimmed)\n if (result !== true) return\n }\n setValues([...values, trimmed])\n setAnnouncement(`Added ${trimmed}`)\n },\n [values, setValues, onValidate],\n )\n\n const removeTag = useCallback(\n (value: string) => {\n const idx = values.indexOf(value)\n if (idx === -1) return\n const next = values.filter((v) => v !== value)\n setValues(next)\n setAnnouncement(`Removed ${value}`)\n\n // Focus management: move to next tag, or previous, or input\n if (next.length === 0) {\n inputRef.current?.focus()\n setFocusedIndex(-1)\n } else if (idx >= next.length) {\n setFocusedIndex(next.length - 1)\n } else {\n setFocusedIndex(idx)\n }\n },\n [values, setValues],\n )\n\n // Focus the tag at focusedIndex when it changes\n useEffect(() => {\n if (focusedIndex >= 0 && focusedIndex < values.length) {\n const container = document.getElementById(gridId)\n if (!container) return\n const rows = container.querySelectorAll('[role=\"row\"]')\n const target = rows[focusedIndex] as HTMLElement | undefined\n target?.focus()\n }\n }, [focusedIndex, gridId, values.length])\n\n const ctx = useMemo<TagGroupContextValue>(\n () => ({\n values,\n addTag,\n removeTag,\n editable,\n setEditable,\n disabled,\n validate: onValidate,\n focusedIndex,\n setFocusedIndex,\n inputRef,\n gridId,\n name,\n }),\n [values, addTag, removeTag, editable, disabled, onValidate, focusedIndex, gridId, name],\n )\n\n return (\n <TagGroupContext.Provider value={ctx}>\n <html.div style={styles.root} aria-label={ariaLabel}>\n <html.div\n style={[\n styles.container,\n !editable && styles.containerStatic,\n isInvalid && styles.containerError,\n disabled && styles.containerDisabled,\n ]}\n aria-describedby={\n fieldCtx\n ? `${fieldCtx.descriptionId} ${fieldCtx.invalid ? fieldCtx.errorId : ''}`.trim()\n : undefined\n }\n aria-invalid={isInvalid || undefined}\n >\n {children}\n </html.div>\n\n {/* Hidden inputs for form submission */}\n {name && values.map((v) => <html.input key={v} type=\"hidden\" name={name} value={v} />)}\n\n {/* Live region for screen reader announcements */}\n <html.div role=\"status\" aria-live=\"polite\" aria-atomic style={styles.liveRegion}>\n {announcement}\n </html.div>\n </html.div>\n </TagGroupContext.Provider>\n )\n}\n\n// ---------------------------------------------------------------------------\n// TagGroup.List\n// ---------------------------------------------------------------------------\n\ninterface ListProps {\n children: ReactNode\n 'aria-label'?: string\n}\n\nfunction List({children, 'aria-label': ariaLabel}: ListProps) {\n const ctx = useTagGroupCtx()\n\n return (\n <html.div role={'grid' as any} aria-label={ariaLabel} id={ctx?.gridId} style={styles.list}>\n {children}\n </html.div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// TagGroup.Input\n// ---------------------------------------------------------------------------\n\ninterface InputProps {\n placeholder?: string\n}\n\nfunction Input({placeholder}: InputProps) {\n const ctx = useTagGroupCtx()\n const [inputValue, setInputValue] = useState('')\n const localRef = useRef<HTMLInputElement>(null)\n\n // Sync local ref with context inputRef\n useEffect(() => {\n if (ctx?.inputRef) {\n ;(ctx.inputRef as React.MutableRefObject<HTMLInputElement | null>).current = localRef.current\n }\n })\n\n // Register as editable on mount\n useEffect(() => {\n ctx?.setEditable(true)\n return () => ctx?.setEditable(false)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n const commitValueRef = useRef<(raw: string) => boolean>(() => false)\n commitValueRef.current = (raw: string) => {\n const trimmed = raw.trim()\n if (!trimmed || !ctx) return false\n ctx.addTag(trimmed)\n setInputValue('')\n return true\n }\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const el = localRef.current\n if (!el) return\n\n function handleKeyDown(e: KeyboardEvent) {\n if (!ctx) return\n const target = e.target as HTMLInputElement\n\n if (e.key === 'Enter' || e.key === ',' || e.key === ';') {\n e.preventDefault()\n commitValueRef.current(target.value)\n return\n }\n\n if (e.key === 'Tab' && target.value.trim()) {\n e.preventDefault()\n commitValueRef.current(target.value)\n return\n }\n\n if (e.key === 'Backspace' && !target.value && ctx.values.length > 0) {\n e.preventDefault()\n ctx.removeTag(ctx.values[ctx.values.length - 1])\n return\n }\n\n if (e.key === 'ArrowLeft' && (target.selectionStart ?? 0) === 0 && ctx.values.length > 0) {\n e.preventDefault()\n ctx.setFocusedIndex(ctx.values.length - 1)\n return\n }\n\n if (e.key === 'Escape') {\n setInputValue('')\n }\n }\n\n function handlePaste(e: ClipboardEvent) {\n if (!ctx) return\n const text = e.clipboardData?.getData('text') ?? ''\n const items = text\n .split(/[\\n,;]+/)\n .map((s) => s.trim())\n .filter(Boolean)\n if (items.length > 1) {\n e.preventDefault()\n for (const item of items) {\n ctx.addTag(item)\n }\n }\n }\n\n function handleFocus() {\n ctx?.setFocusedIndex(-1)\n }\n\n el.addEventListener('keydown', handleKeyDown)\n el.addEventListener('paste', handlePaste)\n el.addEventListener('focus', handleFocus)\n return () => {\n el.removeEventListener('keydown', handleKeyDown)\n el.removeEventListener('paste', handlePaste)\n el.removeEventListener('focus', handleFocus)\n }\n }, [ctx])\n\n return (\n <html.input\n ref={localRef as React.Ref<HTMLInputElement>}\n type=\"text\"\n value={inputValue}\n onChange={(e: any) => setInputValue(e.target.value)}\n placeholder={placeholder}\n disabled={ctx?.disabled}\n style={styles.input}\n />\n )\n}\n\n// ---------------------------------------------------------------------------\n// Namespace export\n// ---------------------------------------------------------------------------\n\nexport const TagGroup = {\n Root,\n List,\n Input,\n}\n","/**\n * @license react-strict-dom\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\nimport { jsx } from 'react/jsx-runtime';\nimport * as stylex from '@stylexjs/stylex';\nexport { stylex as css };\n\nconst loggedMessages = {};\nfunction errorMsg(msg) {\n if (process.env.NODE_ENV !== 'test' && loggedMessages[msg]) {\n return;\n }\n loggedMessages[msg] = true;\n console.error(`[error] React Strict DOM: ${msg}`);\n}\n\nconst strictAttributeSet = new Set(['alt', 'aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colindextext', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowindextext', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'autoCapitalize', 'autoComplete', 'autoFocus', 'checked', 'children', 'crossOrigin', 'decoding', 'defaultChecked', 'defaultValue', 'dir', 'disabled', 'download', 'draggable', 'elementTiming', 'enterKeyHint', 'fetchPriority', 'for', 'height', 'hidden', 'href', 'id', 'inert', 'inputMode', 'label', 'lang', 'loading', 'max', 'maxLength', 'min', 'minLength', 'multiple', 'name', 'onAuxClick', 'onBeforeInput', 'onBlur', 'onChange', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onError', 'onFocus', 'onFocusIn', 'onFocusOut', 'onFullscreenChange', 'onFullscreenError', 'onGotPointerCapture', 'onInput', 'onInvalid', 'onKeyDown', 'onKeyUp', 'onLoad', 'onLostPointerCapture', 'onPaste', 'onPointerCancel', 'onPointerDown', 'onPointerEnter', 'onPointerLeave', 'onPointerMove', 'onPointerOut', 'onPointerOver', 'onPointerUp', 'onScroll', 'onSelect', 'onSelectionChange', 'onWheel', 'placeholder', 'readOnly', 'referrerPolicy', 'rel', 'required', 'role', 'rows', 'selected', 'spellCheck', 'src', 'srcSet', 'step', 'style', 'tabIndex', 'target', 'type', 'value', 'width', 'suppressHydrationWarning', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart']);\nfunction isPropAllowed(key) {\n return strictAttributeSet.has(key) || key.indexOf('data-') > -1;\n}\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nfunction validateStrictProps(props) {\n Object.keys(props).forEach(key => {\n const isValid = isPropAllowed(key);\n if (!isValid) {\n errorMsg(`invalid prop \"${key}\"`);\n delete props[key];\n }\n });\n}\nfunction createStrictDOMComponent(TagName, defaultStyle) {\n const debugStyle = {\n $$css: true,\n 'debug::name': `html-${TagName}`\n };\n function Component({\n ref,\n ...props\n }) {\n const {\n for: htmlFor,\n style,\n ...restProps\n } = props;\n const hostProps = restProps;\n validateStrictProps(hostProps);\n if (htmlFor != null) {\n hostProps.htmlFor = htmlFor;\n }\n if (props.role != null) {\n hostProps.role = props.role === 'none' ? 'presentation' : props.role;\n }\n if (TagName === 'button') {\n hostProps.type = hostProps.type ? hostProps.type : 'button';\n } else if (TagName === 'input' || TagName === 'textarea') {\n hostProps.dir = hostProps.dir ? hostProps.dir : 'auto';\n }\n const hostStyleProps = merge([debugStyle, defaultStyle, style]);\n const element = jsx(TagName, {\n ...hostProps,\n ...hostStyleProps,\n ref: ref\n });\n return element;\n }\n Component.displayName = `html.${TagName}`;\n return Component;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a$1 = styles.inline;\nconst article$1 = styles.block;\nconst aside$1 = styles.block;\nconst b$1 = styles.inline;\nconst bdi$1 = styles.inline;\nconst bdo$1 = styles.inline;\nconst blockquote$1 = styles.block;\nconst br$1 = null;\nconst button$1 = [styles.inlineblock, styles.button];\nconst code$1 = [styles.inline, styles.codePre];\nconst del$1 = null;\nconst div$1 = styles.block;\nconst em$1 = styles.inline;\nconst fieldset$1 = styles.block;\nconst footer$1 = styles.block;\nconst form$1 = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header$1 = styles.block;\nconst hr$1 = [styles.block, styles.hr];\nconst i$1 = styles.inline;\nconst img$1 = styles.img;\nconst input$1 = [styles.inlineblock, styles.input];\nconst ins$1 = null;\nconst kbd$1 = null;\nconst label$1 = styles.inline;\nconst li$1 = styles.block;\nconst main$1 = styles.block;\nconst mark$1 = styles.inline;\nconst nav$1 = styles.block;\nconst ol$1 = [styles.list, styles.block];\nconst optgroup$1 = null;\nconst option$1 = null;\nconst p$1 = styles.block;\nconst pre$1 = [styles.block, styles.codePre];\nconst s$1 = null;\nconst section$1 = styles.block;\nconst select$1 = styles.inlineblock;\nconst span$1 = styles.inline;\nconst strong$1 = [styles.inline, styles.strong];\nconst sub$1 = styles.inline;\nconst sup$1 = styles.inline;\nconst textarea$1 = [styles.inlineblock, styles.textarea];\nconst u$1 = null;\nconst ul$1 = [styles.list, styles.block];\nconst defaultStyles = {\n a: a$1,\n article: article$1,\n aside: aside$1,\n b: b$1,\n bdi: bdi$1,\n bdo: bdo$1,\n blockquote: blockquote$1,\n br: br$1,\n button: button$1,\n code: code$1,\n del: del$1,\n div: div$1,\n em: em$1,\n fieldset: fieldset$1,\n footer: footer$1,\n form: form$1,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header$1,\n hr: hr$1,\n i: i$1,\n img: img$1,\n input: input$1,\n ins: ins$1,\n kbd: kbd$1,\n label: label$1,\n li: li$1,\n main: main$1,\n mark: mark$1,\n nav: nav$1,\n ol: ol$1,\n optgroup: optgroup$1,\n option: option$1,\n p: p$1,\n pre: pre$1,\n s: s$1,\n section: section$1,\n select: select$1,\n span: span$1,\n strong: strong$1,\n sub: sub$1,\n sup: sup$1,\n textarea: textarea$1,\n u: u$1,\n ul: ul$1\n};\n\nconst a = createStrictDOMComponent('a', defaultStyles.a);\nconst article = createStrictDOMComponent('article', defaultStyles.article);\nconst aside = createStrictDOMComponent('aside', defaultStyles.aside);\nconst b = createStrictDOMComponent('b', defaultStyles.b);\nconst bdi = createStrictDOMComponent('bdi', defaultStyles.bdi);\nconst bdo = createStrictDOMComponent('bdo', defaultStyles.bdo);\nconst blockquote = createStrictDOMComponent('blockquote', defaultStyles.blockquote);\nconst br = createStrictDOMComponent('br', defaultStyles.br);\nconst button = createStrictDOMComponent('button', defaultStyles.button);\nconst code = createStrictDOMComponent('code', defaultStyles.code);\nconst del = createStrictDOMComponent('del', defaultStyles.del);\nconst div = createStrictDOMComponent('div', defaultStyles.div);\nconst em = createStrictDOMComponent('em', defaultStyles.em);\nconst fieldset = createStrictDOMComponent('fieldset', defaultStyles.fieldset);\nconst footer = createStrictDOMComponent('footer', defaultStyles.footer);\nconst form = createStrictDOMComponent('form', defaultStyles.form);\nconst h1 = createStrictDOMComponent('h1', defaultStyles.h1);\nconst h2 = createStrictDOMComponent('h2', defaultStyles.h2);\nconst h3 = createStrictDOMComponent('h3', defaultStyles.h3);\nconst h4 = createStrictDOMComponent('h4', defaultStyles.h4);\nconst h5 = createStrictDOMComponent('h5', defaultStyles.h5);\nconst h6 = createStrictDOMComponent('h6', defaultStyles.h6);\nconst header = createStrictDOMComponent('header', defaultStyles.header);\nconst hr = createStrictDOMComponent('hr', defaultStyles.hr);\nconst i = createStrictDOMComponent('i', defaultStyles.i);\nconst img = createStrictDOMComponent('img', defaultStyles.img);\nconst input = createStrictDOMComponent('input', defaultStyles.input);\nconst ins = createStrictDOMComponent('ins', defaultStyles.ins);\nconst kbd = createStrictDOMComponent('kbd', defaultStyles.kbd);\nconst label = createStrictDOMComponent('label', defaultStyles.label);\nconst li = createStrictDOMComponent('li', defaultStyles.li);\nconst main = createStrictDOMComponent('main', defaultStyles.main);\nconst mark = createStrictDOMComponent('mark', defaultStyles.mark);\nconst nav = createStrictDOMComponent('nav', defaultStyles.nav);\nconst ol = createStrictDOMComponent('ol', defaultStyles.ol);\nconst optgroup = createStrictDOMComponent('optgroup', defaultStyles.optgroup);\nconst option = createStrictDOMComponent('option', defaultStyles.option);\nconst p = createStrictDOMComponent('p', defaultStyles.p);\nconst pre = createStrictDOMComponent('pre', defaultStyles.pre);\nconst s = createStrictDOMComponent('s', defaultStyles.s);\nconst section = createStrictDOMComponent('section', defaultStyles.section);\nconst select = createStrictDOMComponent('select', defaultStyles.select);\nconst span = createStrictDOMComponent('span', defaultStyles.span);\nconst strong = createStrictDOMComponent('strong', defaultStyles.strong);\nconst sub = createStrictDOMComponent('sub', defaultStyles.sub);\nconst sup = createStrictDOMComponent('sup', defaultStyles.sup);\nconst textarea = createStrictDOMComponent('textarea', defaultStyles.textarea);\nconst u = createStrictDOMComponent('u', defaultStyles.u);\nconst ul = createStrictDOMComponent('ul', defaultStyles.ul);\n\nvar html = /*#__PURE__*/Object.freeze({\n __proto__: null,\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: h1,\n h2: h2,\n h3: h3,\n h4: h4,\n h5: h5,\n h6: h6,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n});\n\nexport { html };\n","import {css} from 'react-strict-dom'\n\n// Breakpoint scale — the widths at which responsive layouts change.\n//\n// These use `css.defineConsts` rather than `css.defineVars` because CSS media\n// and container queries cannot read custom properties: a query threshold has\n// to be a literal. `defineConsts` values are inlined into the query text at\n// build time by the StyleX babel plugin (that's their whole reason to exist),\n// so `@container (max-width: ${breakpoints.sm})` compiles to a real `640px`.\n//\n// For runtime JS comparisons (`containerWidth < breakpointsPx.sm`) use the\n// plain-number mirror below — defineConsts values are query strings, not\n// numbers. Keep the two in sync. Values follow the common Tailwind-aligned scale.\nexport const breakpoints = css.defineConsts({\n /** Phones — dense tables card up below here. */\n xs: '480px',\n /** Large phone / small tablet. The default \"go to the mobile layout\" line. */\n sm: '640px',\n /** Tablet portrait. */\n md: '768px',\n /** Tablet landscape / small laptop. */\n lg: '1024px',\n /** Desktop. */\n xl: '1280px',\n})\n\nexport const breakpointsPx = {\n xs: 480,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n} as const\n\nexport type Breakpoint = keyof typeof breakpointsPx\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\nimport {breakpoints} from '@duro-app/tokens/tokens/breakpoints.css'\n\n// Container-query thresholds, from the shared breakpoint scale. `sm` (640px)\n// is the single \"card up\" line used across every table (Table + VirtualTable);\n// below it dense tables become cards, above it they stay tabular and scroll\n// horizontally. `md` (768px) is the compact band (tighter padding, nowrap\n// headers). These are inlined into the @container query text at build time.\nconst COMPACT_BP = breakpoints.md\nconst STACK_BP = breakpoints.sm\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 // Size the grid to its content so it can OVERFLOW the scroll wrapper\n // rather than shrink: `min-content` here is the sum of each column's\n // minimum track (the minmax() floor / its content), so a dense table\n // grows past the container and Root's `scrollX` wrapper scrolls sideways.\n // In stack mode the grid is a single column, so drop the floor to let the\n // card fill the width instead of forcing a horizontal scrollbar.\n minWidth: {\n default: 'min-content',\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n // The card-list look needs the outer border to disappear in stack\n // mode — each row paints its own border.\n borderWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n backgroundColor: {\n default: colors.bgCard,\n [`@container (max-width: ${STACK_BP})`]: 'transparent',\n },\n overflow: {\n default: 'hidden',\n [`@container (max-width: ${STACK_BP})`]: 'visible',\n },\n rowGap: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n },\n\n // Header group — hidden entirely in stack mode\n header: {\n display: {\n default: 'grid',\n [`@container (max-width: ${STACK_BP})`]: 'none',\n },\n gridColumn: '1 / -1',\n gridTemplateColumns: 'subgrid',\n backgroundColor: colors.bgCard,\n },\n\n // Body group\n body: {\n display: 'grid',\n gridColumn: '1 / -1',\n gridTemplateColumns: 'subgrid',\n },\n\n // Row — spans all columns. In stack mode its template flips to 1fr so\n // children stack as grid items in a single column (we keep grid context\n // so cells with `gridColumn` overrides still compute).\n row: {\n display: 'grid',\n gridColumn: '1 / -1',\n gridTemplateColumns: {\n default: 'subgrid',\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n borderBottomWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n bodyRow: {\n backgroundColor: {\n default: 'transparent',\n [`@container (max-width: ${STACK_BP})`]: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n // Stack-mode card chrome\n padding: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n borderRadius: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: radii.sm,\n },\n borderWidth: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: 1,\n },\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n\n // Header cell — keeps headers on a single line in compact mode\n headerCell: {\n fontWeight: typography.fontWeightSemibold,\n color: colors.textMuted,\n textAlign: 'start',\n // Match the body cell: shrink inside the track + wrap, so header labels\n // don't overlap when many columns are cramped.\n minWidth: 0,\n overflowWrap: 'break-word',\n whiteSpace: {\n default: 'normal',\n [`@container (max-width: ${COMPACT_BP})`]: 'nowrap',\n },\n },\n\n // Body cell. Text wraps by default — preferring \"wrap to a 2nd line\" over\n // \"truncate with ellipsis\" matches BI/data-reporting conventions where\n // hiding content (even with a visual hint) is treated as data loss.\n // Consumers that explicitly want single-line truncation use Text's\n // `truncate` prop, which sets its own nowrap + overflow + ellipsis chain\n // on the Text element itself. Buttons and badges already enforce\n // `white-space: nowrap` internally, so they're unaffected by this\n // default. In stack mode the cell becomes a 2-column grid for\n // label / value.\n cell: {\n color: colors.text,\n display: {\n default: 'flex',\n [`@container (max-width: ${STACK_BP})`]: 'grid',\n },\n alignItems: 'center',\n // Always let the cell shrink inside its `minmax(0, 1fr)` track. Previously\n // this was `auto` in the default (wide) band on the assumption there's\n // \"enough room\" — but a table with many columns (or wide content) whose\n // combined intrinsic width exceeds the container then can't shrink, so\n // content spills its track and overlaps the next column. `0` + the\n // wrapping below keeps every cell inside its column at any width.\n minWidth: 0,\n overflow: {\n // Safety against pathological unbreakable content (long URLs,\n // dataless ids) at narrow widths.\n default: 'visible',\n [`@container (max-width: ${COMPACT_BP})`]: 'hidden',\n },\n whiteSpace: 'normal',\n // Break long unbreakable tokens (emails, UUIDs) so they wrap within the\n // column instead of forcing it wider / overflowing.\n overflowWrap: 'break-word',\n gridTemplateColumns: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: '1fr 2fr',\n },\n gap: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n },\n\n // Wrapper around a (non-actions) cell's value. A raw text node is an\n // anonymous flex item with `min-width: auto`, so it refuses to shrink and\n // overflows its column even when the cell itself can shrink. Giving the value\n // its own `min-width: 0` flex item lets the text wrap inside the column.\n cellValue: {\n minWidth: 0,\n flexGrow: 1,\n overflowWrap: 'break-word',\n },\n\n // Label rendered as a real <span> inside each cell. Display:none in\n // default/compact, shown only in stack — matches StyleX guidance to\n // prefer real elements over ::before/::after for non-shadow-DOM cases.\n cellLabel: {\n display: {\n default: 'none',\n [`@container (max-width: ${STACK_BP})`]: 'block',\n },\n color: colors.textMuted,\n fontWeight: typography.fontWeightMedium,\n fontSize: typography.fontSizeXs,\n },\n\n // Actions cell. In default/compact behaves like any cell. In stack\n // mode: full-width footer of the card, right-aligned, with a top\n // separator. Label span is suppressed in JSX (Cell does not render it\n // when isActions=true).\n cellActions: {\n gridTemplateColumns: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n justifyContent: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: 'flex-end',\n },\n marginTop: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n paddingTop: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n borderTopWidth: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: 1,\n },\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // Size: sm\n cellSm: {\n paddingTop: {\n default: spacing.xs,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.xs,\n },\n paddingBottom: {\n default: spacing.xs,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.xs,\n },\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n // Size: md\n cellMd: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: {\n default: spacing.md,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.sm,\n },\n paddingRight: {\n default: spacing.md,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.sm,\n },\n fontSize: typography.fontSizeSm,\n },\n\n // Variant: striped (even body rows). Suppressed in stack — cards have\n // their own surface and zebra-striping reads as a bug there.\n stripedEven: {\n backgroundColor: {\n default: colors.bgCardHover,\n [`@container (max-width: ${STACK_BP})`]: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n },\n\n // Variant: bordered (cells get side borders). Suppressed in stack.\n borderedCell: {\n borderRightWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n borderedCellLast: {\n borderRightWidth: 0,\n },\n\n // SortChip — visible only in stack mode\n sortChip: {\n display: {\n default: 'none',\n [`@container (max-width: ${STACK_BP})`]: 'inline-flex',\n },\n alignSelf: 'flex-start',\n },\n\n // Horizontal-scroll frame around the grid (responsive path). Above the\n // stack breakpoint the grid keeps each column at least `minColumnWidth`\n // wide (see the minmax() template), so a dense table overflows and this\n // wrapper scrolls sideways instead of crushing its cells — the standard\n // data-table behavior. In stack mode the grid collapses to one column, so\n // nothing overflows and no scrollbar appears.\n scrollX: {\n overflowX: 'auto',\n // Contain the scroll to this axis; vertical growth (rows) is natural.\n overflowY: 'visible',\n // Momentum scroll on touch + a stable gutter so the layout doesn't jump\n // when the scrollbar shows.\n WebkitOverflowScrolling: 'touch',\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 // - compact band (STACK_BP < width ≤ COMPACT_BP): consumer-supplied\n // \"compact\" template. This is written as an explicit RANGE, not just\n // `max-width: COMPACT_BP`, so it does NOT also match below STACK_BP —\n // otherwise both the compact and the stack rule would set\n // gridTemplateColumns at card widths and StyleX's ordering could let the\n // (wider, 4-column) compact template shadow the single-column stack one.\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 (${STACK_BP} < 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 /** Min width (px) each flexible column keeps before the table scrolls\n * horizontally. Forwarded to Table.Root — see its `minColumnWidth`. */\n readonly minColumnWidth?: number\n /** Render a SortChip above the grid (stack-mode only). Options derive from\n * columns where `column.getCanSort()` returns true. Wires value/onChange\n * through the TanStack sorting state automatically. */\n readonly sortChip?: boolean\n /** Render Pagination below the grid. */\n readonly pagination?: boolean\n /** Key extractor; defaults to TanStack's row.id. */\n readonly rowKey?: (row: Row<TData>) => string\n}\n\n// Discriminated union: rowAriaLabel is required when onRowClick is set so\n// keyboard / screen-reader users always get an accessible name for the\n// interactive row.\nexport type FromTanstackProps<TData> = FromTanstackBaseProps<TData> &\n (\n | {\n readonly onRowClick: (row: Row<TData>) => void\n /** Accessible name for each clickable row. Required because the row's\n * visible cell content alone is rarely a useful accessible name. */\n readonly rowAriaLabel: (row: Row<TData>) => string\n }\n | {\n readonly onRowClick?: undefined\n readonly rowAriaLabel?: undefined\n }\n )\n\n/**\n * Renders a styled Table directly from a TanStack table instance.\n *\n * Labels for stack mode are derived in this order:\n * 1. `column.columnDef.meta?.stackLabel` (explicit override)\n * 2. `column.columnDef.header` when it's a string\n * 3. Empty (use only for the actions column or when meta.stackLabel is set)\n *\n * Mark the actions column with `meta: { isActions: true }` to apply the\n * stack-mode footer styling to its body cells.\n *\n * @example\n * <Table.FromTanstack table={tanstackTable} sortChip pagination onRowClick={(r) => nav(r)} />\n */\nexport function FromTanstack<TData>({\n table,\n variant = 'default',\n size = 'md',\n responsive = true,\n minColumnWidth,\n sortChip,\n pagination,\n rowKey,\n onRowClick,\n rowAriaLabel,\n}: FromTanstackProps<TData>) {\n const sortChipNode: ReactNode = sortChip ? buildSortChip(table) : undefined\n const paginationNode: ReactNode = pagination ? <Pagination table={table} /> : undefined\n\n return (\n <Root\n variant={variant}\n size={size}\n responsive={responsive}\n minColumnWidth={minColumnWidth}\n sortChip={sortChipNode}\n pagination={paginationNode}\n >\n <Header>\n {table.getHeaderGroups().map((group) => (\n <TableRow key={group.id}>\n {group.headers.map((header) => {\n const def = header.column.columnDef\n const meta = def.meta\n const labelFromHeader = typeof def.header === 'string' ? def.header : undefined\n const label = meta?.stackLabel ?? labelFromHeader ?? ''\n return (\n <HeaderCell\n key={header.id}\n label={label}\n aria-label={meta?.isActions ? label || 'Actions' : undefined}\n >\n {header.isPlaceholder ? null : flexRender(def.header, header.getContext())}\n </HeaderCell>\n )\n })}\n </TableRow>\n ))}\n </Header>\n <Body>\n {table.getRowModel().rows.map((row) => {\n const key = rowKey?.(row) ?? row.id\n // Row handles its own click/keyboard/focus affordance — no outer\n // wrapper, so the role=\"rowgroup\" → role=\"row\" ARIA hierarchy\n // stays intact, and clicks inside interactive cell content (e.g.\n // an action button) are correctly attributed to the inner widget.\n return (\n <TableRow\n key={key}\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n aria-label={rowAriaLabel?.(row)}\n >\n {row.getVisibleCells().map((cell) => (\n <Cell key={cell.id} isActions={cell.column.columnDef.meta?.isActions === true}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Cell>\n ))}\n </TableRow>\n )\n })}\n </Body>\n </Root>\n )\n}\nFromTanstack.displayName = 'FromTanstack'\n\n// --- helpers ---\n\nfunction buildSortChip<TData>(table: TanstackTable<TData>): ReactNode {\n const options = table\n .getAllColumns()\n .filter((c) => c.getCanSort())\n .map((c) => {\n const fromHeader = typeof c.columnDef.header === 'string' ? c.columnDef.header : c.id\n return {id: c.id, label: c.columnDef.meta?.stackLabel ?? fromHeader}\n })\n\n if (options.length === 0) return null\n\n const current = table.getState().sorting[0]\n const value: SortValue | null = current ? {id: current.id, desc: current.desc} : null\n\n return (\n <SortChip\n options={options}\n value={value}\n onChange={(next) => table.setSorting(next ? [{id: next.id, desc: next.desc}] : [])}\n />\n )\n}\n","import {\n type ReactElement,\n type ReactNode,\n type MutableRefObject,\n createContext,\n 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(\n children: ReactNode,\n minColumnWidth: number,\n): {\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 each column to `minmax(<minColumnWidth>px, 1fr)`: columns\n // share the row evenly (1fr) but never shrink below a readable floor.\n // That floor is what makes a dense table overflow its container\n // instead of crushing — Root's scroll wrapper then scrolls sideways.\n // Narrow columns (a checkbox) or naturally-wide ones (an actions\n // cell) override this with an explicit `width` (e.g. '40px',\n // 'max-content').\n const width = props.width || `minmax(${minColumnWidth}px, 1fr)`\n widths.push(width)\n // `compactWidth` lets the consumer switch to a content-aware\n // layout in the compact band while staying evenly distributed\n // at desktop. Falls back to `width` so columns that don't opt\n // in keep one template across both breakpoints.\n compactWidths.push(props.compactWidth || width)\n const explicit = typeof props.label === 'string' ? props.label : undefined\n const fallback = extractText(props.children).trim()\n const label = explicit ?? fallback\n if (!explicit && fallback === '' && props.children != null) {\n // Children are JSX with no string content — stack mode will render\n // an unlabeled cell. Tell the developer once.\n devWarnOnce(\n 'headerCell-missing-label',\n 'Table.HeaderCell with JSX children must set `label` for stack-mode rendering.',\n )\n }\n labels.push(label)\n } else if (props.children) {\n walk(props.children)\n }\n })\n }\n\n walk(children)\n return {\n template: widths.join(' '),\n compactTemplate: compactWidths.join(' '),\n labels,\n }\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n variant?: TableVariant\n size?: TableSize\n /** Opt out of responsive behavior (horizontal scroll + card breakpoint). Default true. */\n responsive?: boolean\n /**\n * Minimum width (px) each flexible column keeps before the table scrolls\n * horizontally rather than crushing its cells. Columns still share the row\n * evenly (`minmax(<minColumnWidth>px, 1fr)`); this is only the floor. Raise\n * it for roomier columns (more scrolling), lower it to fit more before\n * scrolling. Columns with an explicit `width` are unaffected. Default 120.\n */\n minColumnWidth?: number\n /**\n * Optional sort UI rendered above the grid. Visible only in stack mode\n * (SortChip carries its own `display: none → inline-flex` rule). Typical\n * value: `<Table.SortChip options={...} value={...} onChange={...} />`.\n */\n sortChip?: ReactNode\n /**\n * Optional pagination UI rendered below the grid. Typical value:\n * `<Table.Pagination table={tanstackTable} />`.\n */\n pagination?: ReactNode\n}\n\nexport function Root({\n children,\n variant = 'default',\n size = 'md',\n responsive = true,\n minColumnWidth = 120,\n sortChip,\n pagination,\n}: RootProps) {\n const inferredTemplateRef = useRef<string | null>(null)\n const {template, compactTemplate, labels} = extractColumnMeta(children, minColumnWidth)\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 // Above the stack breakpoint the grid keeps each column ≥ minColumnWidth, so\n // a dense table overflows this wrapper and scrolls sideways instead of\n // crushing. Below it (@container ≤ sm) the grid is one column and there's\n // nothing to scroll. Non-responsive tables opt out of the frame entirely.\n const framedGrid = responsive ? <html.div style={styles.scrollX}>{grid}</html.div> : grid\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. SortChip\n // reveals itself in card mode via its own @container rule — no JS needed.\n const body = (\n <>\n {sortChip}\n {framedGrid}\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 {isActions ? children : <html.div style={styles.cellValue}>{children}</html.div>}\n </html.div>\n )\n}\n\n// --- Export ---\n\nimport {FromTanstack} from './FromTanstack'\n\nexport const Table = {\n /** @deprecated Wrap behaviour is built into Table.Root. Drop this wrapper from new code. */\n Container,\n Root,\n Header,\n Body,\n Row,\n HeaderCell,\n Cell,\n Pagination,\n SortIndicator,\n ColumnFilter,\n SortChip,\n /** Renders a styled Table directly from a TanStack table instance. */\n FromTanstack,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n wrap: {\n position: 'relative',\n width: '100%',\n },\n scroll: {\n position: 'relative',\n width: '100%',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n backgroundColor: colors.bgCard,\n },\n // Dynamic: only virtualized lists get a capped, scrollable viewport.\n scrollMax: (maxHeight: number | string) => ({\n maxHeight,\n overflowY: 'auto',\n overscrollBehavior: 'contain',\n }),\n head: {\n position: 'sticky',\n top: 0,\n zIndex: 1,\n backgroundColor: colors.bgCard,\n },\n headRow: {\n display: 'flex',\n flexDirection: 'row',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n headCell: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.xs,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n fontWeight: typography.fontWeightSemibold,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.03em',\n color: colors.textMuted,\n },\n headCellSortable: {\n cursor: 'pointer',\n userSelect: 'none',\n color: {default: colors.textMuted, ':hover': colors.text},\n },\n sortMark: {\n fontSize: typography.fontSizeXs,\n color: colors.accent,\n },\n bodyTotal: (height: number) => ({\n position: 'relative',\n width: '100%',\n height,\n }),\n row: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n rowClickable: {\n cursor: 'pointer',\n backgroundColor: {default: 'transparent', ':hover': colors.bgCardHover},\n },\n // Dynamic: absolute placement of a windowed row.\n rowAbsolute: (y: number) => ({\n position: 'absolute',\n top: 0,\n left: 0,\n transform: `translateY(${y}px)`,\n }),\n cell: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n // Dynamic: proportional column width from the TanStack column size (fr-like).\n cellFlex: (size: number) => ({\n flexGrow: size,\n flexShrink: 1,\n flexBasis: 0,\n minWidth: 0,\n }),\n // --- Stack (card) mode: narrow containers ---\n // The scroll frame drops its border/background so each row card stands on\n // its own; windowing is off in this mode so no capped viewport.\n stackScroll: {\n position: 'relative',\n width: '100%',\n backgroundColor: 'transparent',\n },\n stackBody: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n stackRow: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n width: '100%',\n padding: spacing.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n backgroundColor: colors.bgCard,\n },\n stackCell: {\n display: 'grid',\n gridTemplateColumns: '1fr 2fr',\n gap: spacing.sm,\n alignItems: 'center',\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n },\n stackCellLabel: {\n color: colors.textMuted,\n fontWeight: typography.fontWeightMedium,\n fontSize: typography.fontSizeXs,\n },\n stackCellValue: {\n minWidth: 0,\n overflowWrap: 'break-word',\n },\n empty: {\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n textAlign: 'center' as const,\n color: colors.textMuted,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n },\n // Floating position indicator, pinned bottom-right of the viewport.\n pos: {\n position: 'absolute',\n right: spacing.sm,\n bottom: spacing.sm,\n paddingTop: 3,\n paddingBottom: 3,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n borderRadius: radii.full,\n backgroundColor: colors.bgCardHover,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n color: colors.textMuted,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n pointerEvents: 'none',\n },\n})\n","import {useEffect, useLayoutEffect, useRef, useState, type ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n flexRender,\n type ColumnDef,\n type SortingState,\n type OnChangeFn,\n type Row,\n} from '@tanstack/react-table'\nimport {useVirtualizer} from '@tanstack/react-virtual'\nimport {breakpointsPx} from '@duro-app/tokens/tokens/breakpoints.css'\nimport {styles} from './styles.css'\n\n// Measure + commit before paint on the client; no-op-safe on the server.\nconst useIsoLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n\nexport interface VirtualTableRange {\n /** 1-based index of the first visible row (0 when empty). */\n from: number\n /** 1-based index of the last visible row (0 when empty). */\n to: number\n total: number\n /** 1-based page the first visible row falls in. */\n page: number\n pages: number\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface VirtualTableProps<TData> {\n data: TData[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnDef<TData, any>[]\n /** Controlled sorting (pairs with a SortChip in the caller). */\n sorting?: SortingState\n onSortingChange?: OnChangeFn<SortingState>\n getRowId?: (row: TData, index: number) => string\n onRowClick?: (row: TData) => void\n rowLabel?: (row: TData) => string\n /**\n * 1-based page to restore the scroll position to on mount (read from the URL\n * by the caller). Only meaningful when the list virtualizes.\n */\n initialPage?: number\n /**\n * Fired (debounced) when the top-visible page changes — wire it to the URL.\n * Only fires in the virtualized branch; small lists render in one scroll and\n * have no page concept.\n */\n onVisiblePageChange?: (range: VirtualTableRange) => void\n /** Build the floating position-indicator label (i18n stays with the caller). */\n rangeLabel?: (range: VirtualTableRange) => string\n /** Rows per \"page\" for the URL/indicator math. Default 50. */\n pageSize?: number\n /** Estimated row height for the virtualizer. Default 44. */\n estimateRowHeight?: number\n /** Max height of the scroll viewport once virtualized. Default '70vh'. */\n maxHeight?: number | string\n /** Render every row (no windowing) at or below this count. Default 150. */\n virtualizeThreshold?: number\n /**\n * Below this container width (px) the table cards up: the header hides and\n * each row becomes a label/value card (like Table's stack mode). Defaults to\n * the shared `sm` breakpoint (640px) so every table cards up at the same\n * line. Cards disable windowing (variable heights), so keep phone lists\n * reasonably short. Set `responsive={false}` to disable entirely.\n */\n stackBelow?: number\n /** Opt out of the card-up-on-narrow behavior. Default true. */\n responsive?: boolean\n emptyLabel?: ReactNode\n}\n\n/**\n * A sortable data table that windows its rows above a threshold (default 150)\n * via @tanstack/react-virtual, keeps a floating position indicator, and reports\n * the visible page so the caller can mirror it in the URL. Below the threshold\n * it renders every row in one scroll (find-in-page + a11y intact) — no\n * pagination, no windowing. Web-only (uses DOM scroll measurement).\n *\n * URL-decoupled by design: pass `initialPage` (restore) and `onVisiblePageChange`\n * (persist); the component never touches the router itself.\n */\nexport function VirtualTable<TData>({\n data,\n columns,\n sorting,\n onSortingChange,\n getRowId,\n onRowClick,\n rowLabel,\n initialPage,\n onVisiblePageChange,\n rangeLabel,\n pageSize = 50,\n estimateRowHeight = 44,\n maxHeight = '70vh',\n virtualizeThreshold = 150,\n stackBelow = breakpointsPx.sm,\n responsive = true,\n emptyLabel,\n}: VirtualTableProps<TData>) {\n // Support both controlled sorting (SortChip in the caller) and standalone use.\n const [internalSorting, setInternalSorting] = useState<SortingState>([])\n const sortingState = sorting ?? internalSorting\n const handleSortingChange = onSortingChange ?? setInternalSorting\n\n const table = useReactTable({\n data,\n columns,\n state: {sorting: sortingState},\n onSortingChange: handleSortingChange,\n getRowId,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n })\n\n const rows = table.getRowModel().rows\n\n // Card-up on narrow containers. Flex cells truncate rather than overflow, so\n // there's no content-overflow signal to measure (as in Table) — we use a\n // deliberate phone-width breakpoint. Cards render every row (no windowing),\n // so `virtualize` is forced off while stacked.\n const wrapRef = useRef<HTMLDivElement>(null)\n const [stacked, setStacked] = useState(false)\n useIsoLayoutEffect(() => {\n if (!responsive) {\n setStacked(false)\n return\n }\n const el = wrapRef.current\n if (!el || typeof ResizeObserver === 'undefined') return\n const apply = (width: number) => {\n if (width > 0) setStacked(width < stackBelow)\n }\n apply(el.getBoundingClientRect().width)\n const ro = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (!entry) return\n const box = entry.contentBoxSize?.[0]\n apply(box ? box.inlineSize : entry.contentRect.width)\n })\n ro.observe(el)\n return () => ro.disconnect()\n }, [responsive, stackBelow])\n\n const virtualize = rows.length > virtualizeThreshold && !stacked\n\n const scrollRef = useRef<HTMLDivElement>(null)\n const rv = useVirtualizer({\n count: rows.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => estimateRowHeight,\n overscan: 12,\n })\n\n // Restore the scroll position from `initialPage` on mount, and suppress the\n // page-change callback briefly so that restore scroll doesn't immediately\n // report (and overwrite) the URL.\n const suppressWrite = useRef(true)\n useEffect(() => {\n if (!virtualize) {\n suppressWrite.current = false\n return\n }\n if (initialPage && initialPage > 1) {\n rv.scrollToIndex((initialPage - 1) * pageSize, {align: 'start'})\n }\n const id = setTimeout(() => {\n suppressWrite.current = false\n }, 300)\n return () => clearTimeout(id)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [virtualize])\n\n const vItems = rv.getVirtualItems()\n const firstIndex = vItems[0]?.index ?? 0\n const lastIndex = vItems.length ? vItems[vItems.length - 1].index : 0\n const pages = Math.max(1, Math.ceil(rows.length / pageSize))\n // page = which pageSize-sized block the top visible row is in, so it only\n // changes when you cross a boundary (no per-scroll-tick churn).\n const curPage = Math.floor(Math.max(0, firstIndex) / pageSize) + 1\n\n const range: VirtualTableRange = {\n from: rows.length ? firstIndex + 1 : 0,\n to: rows.length ? lastIndex + 1 : 0,\n total: rows.length,\n page: curPage,\n pages,\n }\n\n // Report the visible page so the caller can sync the URL. Fire once per\n // distinct page rather than debouncing a timer — `curPage` only changes at a\n // pageSize boundary (coarse), and react-virtual's frequent re-renders during\n // scroll/measurement would keep resetting a debounce timer so it never fires.\n // The `lastReported` guard prevents redundant calls; callers use replace, so\n // there's no history churn.\n const lastReported = useRef<number | null>(null)\n useEffect(() => {\n if (!virtualize || !onVisiblePageChange) return\n if (suppressWrite.current) {\n // Still in the mount-restore window — record the page so we don't emit a\n // spurious change once it clears, but don't call out.\n lastReported.current = curPage\n return\n }\n if (lastReported.current === curPage) return\n lastReported.current = curPage\n onVisiblePageChange({\n from: rows.length ? firstIndex + 1 : 0,\n to: rows.length ? lastIndex + 1 : 0,\n total: rows.length,\n page: curPage,\n pages,\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [curPage, virtualize])\n\n // Stack-mode label for a column: explicit meta override, else the string\n // header, else nothing (value renders label-less, e.g. an actions column).\n const columnStackLabel = (columnDef: {\n header?: unknown\n meta?: {stackLabel?: string; label?: string}\n }): string => {\n const meta = columnDef.meta\n if (typeof meta?.stackLabel === 'string') return meta.stackLabel\n if (typeof meta?.label === 'string') return meta.label\n return typeof columnDef.header === 'string' ? columnDef.header : ''\n }\n\n const renderRow = (\n row: Row<TData>,\n index: number,\n positioned?: ReturnType<typeof styles.rowAbsolute>,\n measureRef?: (node: Element | null) => void,\n ) =>\n stacked ? (\n <html.div\n key={row.id}\n role=\"row\"\n aria-label={rowLabel?.(row.original)}\n onClick={onRowClick ? () => onRowClick(row.original) : undefined}\n style={[styles.stackRow, Boolean(onRowClick) && styles.rowClickable]}\n >\n {row.getVisibleCells().map((cell) => {\n const lbl = columnStackLabel(cell.column.columnDef)\n return (\n <html.div key={cell.id} role=\"cell\" style={styles.stackCell}>\n {lbl ? <html.span style={styles.stackCellLabel}>{lbl}</html.span> : null}\n <html.div style={styles.stackCellValue}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </html.div>\n </html.div>\n )\n })}\n </html.div>\n ) : (\n <html.div\n key={row.id}\n ref={measureRef}\n data-index={index}\n role=\"row\"\n aria-label={rowLabel?.(row.original)}\n onClick={onRowClick ? () => onRowClick(row.original) : undefined}\n style={[styles.row, Boolean(onRowClick) && styles.rowClickable, positioned]}\n >\n {row.getVisibleCells().map((cell) => (\n <html.div\n key={cell.id}\n role=\"cell\"\n style={[styles.cell, styles.cellFlex(cell.column.getSize())]}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </html.div>\n ))}\n </html.div>\n )\n\n const label =\n rangeLabel?.(range) ?? (rows.length ? `${range.from}–${range.to} / ${range.total}` : '')\n\n return (\n <html.div ref={wrapRef} style={styles.wrap}>\n <html.div\n ref={scrollRef}\n role=\"table\"\n style={[\n stacked ? styles.stackScroll : styles.scroll,\n virtualize && styles.scrollMax(maxHeight),\n ]}\n >\n {stacked ? null : (\n <html.div role=\"rowgroup\" style={styles.head}>\n {table.getHeaderGroups().map((headerGroup) => (\n <html.div key={headerGroup.id} role=\"row\" style={styles.headRow}>\n {headerGroup.headers.map((header) => {\n const col = header.column\n const sorted = col.getIsSorted()\n return (\n <html.div\n key={header.id}\n role=\"columnheader\"\n aria-sort={\n sorted === 'asc'\n ? 'ascending'\n : sorted === 'desc'\n ? 'descending'\n : undefined\n }\n onClick={col.getCanSort() ? col.getToggleSortingHandler() : undefined}\n style={[\n styles.headCell,\n col.getCanSort() && styles.headCellSortable,\n styles.cellFlex(header.getSize()),\n ]}\n >\n {header.isPlaceholder\n ? null\n : flexRender(col.columnDef.header, header.getContext())}\n {sorted ? (\n <html.span style={styles.sortMark}>\n {sorted === 'asc' ? '↑' : '↓'}\n </html.span>\n ) : null}\n </html.div>\n )\n })}\n </html.div>\n ))}\n </html.div>\n )}\n\n {rows.length === 0 ? (\n <html.div style={styles.empty}>{emptyLabel}</html.div>\n ) : (\n <html.div\n role=\"rowgroup\"\n style={\n stacked\n ? styles.stackBody\n : virtualize\n ? styles.bodyTotal(rv.getTotalSize())\n : undefined\n }\n >\n {virtualize\n ? vItems.map((vi) =>\n renderRow(\n rows[vi.index],\n vi.index,\n styles.rowAbsolute(vi.start),\n rv.measureElement,\n ),\n )\n : rows.map((row, i) => renderRow(row, i))}\n </html.div>\n )}\n </html.div>\n\n {virtualize && rows.length > 0 ? (\n <html.div aria-live=\"polite\" style={styles.pos}>\n {label}\n </html.div>\n ) : null}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n rootVertical: {\n flexDirection: 'row',\n },\n list: {\n display: 'flex',\n flexDirection: 'row',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n gap: spacing.xs,\n // Positioning context for the sliding indicator.\n position: 'relative',\n },\n listVertical: {\n flexDirection: 'column',\n borderBottomWidth: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n gap: 0,\n },\n tab: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderBottomWidth: 2,\n borderBottomStyle: 'solid',\n borderBottomColor: 'transparent',\n cursor: 'pointer',\n transitionProperty: 'color, border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': -2,\n },\n },\n tabVertical: {\n justifyContent: 'flex-start',\n borderBottomWidth: 0,\n borderRightWidth: 2,\n borderRightStyle: 'solid',\n borderRightColor: 'transparent',\n },\n tabActiveHorizontal: {\n color: colors.text,\n borderBottomColor: colors.accent,\n },\n tabActiveVertical: {\n color: colors.text,\n borderRightColor: colors.accent,\n },\n // Applied to the active tab once JS drives the sliding indicator: drop the\n // per-tab accent border so the single sliding bar is the only underline\n // (avoids a double line and an instant-pop that would undercut the slide).\n tabIndicatorActive: {\n borderBottomColor: 'transparent',\n borderRightColor: 'transparent',\n },\n // --- Sliding active indicator (positioned by measuring the active tab) ---\n indicator: {\n position: 'absolute',\n backgroundColor: colors.accent,\n pointerEvents: 'none',\n transitionProperty: 'transform, width, height',\n transitionDuration: duration.base,\n transitionTimingFunction: easing.easeOut,\n },\n indicatorHorizontal: {\n bottom: -1,\n left: 0,\n height: 2,\n },\n indicatorVertical: {\n right: -1,\n top: 0,\n width: 2,\n },\n // Dynamic transform/size from the measured active tab (StyleX dynamic style:\n // simple identifier params only).\n indicatorOffsetH: (offset: number, size: number) => ({\n transform: `translateX(${offset}px)`,\n width: size,\n }),\n indicatorOffsetV: (offset: number, size: number) => ({\n transform: `translateY(${offset}px)`,\n height: size,\n }),\n tabDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n color: colors.textMuted,\n },\n panel: {\n paddingTop: spacing.md,\n },\n panelVertical: {\n paddingTop: 0,\n paddingLeft: spacing.md,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport interface TabsContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n orientation: Orientation\n registerTab: (value: string, disabled: boolean) => () => void\n tabsRef: React.RefObject<Map<string, boolean>>\n orderRef: React.RefObject<string[]>\n // True once the List has measured the active tab and is driving a sliding\n // indicator. Tabs suppress their own accent border while it's true so the\n // single sliding bar is the only underline; it stays false without JS\n // (SSR / no-hydration), where the per-tab border is the graceful fallback.\n indicatorActive: boolean\n setIndicatorActive: (active: boolean) => void\n}\n\nexport const TabsContext = createContext<TabsContextValue | null>(null)\n\nexport function useTabs() {\n const ctx = useContext(TabsContext)\n if (!ctx) throw new Error('Tabs compound components must be used within Tabs.Root')\n return ctx\n}\n","import {useCallback, useRef, useState} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {Orientation, TabsContextValue} from './TabsContext'\n\ninterface UseTabsRootOptions {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: Orientation\n}\n\nexport function useTabsRoot({\n value: controlledValue,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: UseTabsRootOptions): TabsContextValue {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const tabsRef = useRef(new Map<string, boolean>())\n const orderRef = useRef<string[]>([])\n const [indicatorActive, setIndicatorActive] = useState(false)\n\n const registerTab = useCallback((value: string, disabled: boolean) => {\n tabsRef.current.set(value, disabled)\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n tabsRef.current.delete(value)\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n return {\n activeValue,\n onSelect,\n orientation,\n registerTab,\n tabsRef,\n orderRef,\n indicatorActive,\n setIndicatorActive,\n }\n}\n","import {type ReactNode, useRef, useId, useEffect, useLayoutEffect, useState} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {TabsContext, useTabs} from './TabsContext'\nimport {useTabsRoot} from './useTabsRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n}\n\nfunction Root({\n children,\n value,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: RootProps) {\n const ctx = useTabsRoot({value, defaultValue, onValueChange, orientation})\n\n return (\n <TabsContext.Provider value={ctx}>\n <html.div style={[styles.root, orientation === 'vertical' && styles.rootVertical]}>\n {children}\n </html.div>\n </TabsContext.Provider>\n )\n}\n\n// --- List ---\n\ninterface ListProps {\n children: ReactNode\n}\n\nfunction List({children}: ListProps) {\n const {orientation, activeValue, onSelect, tabsRef, orderRef, setIndicatorActive} = useTabs()\n const listRef = useRef<HTMLDivElement>(null)\n const [indicator, setIndicator] = useState<{offset: number; size: number} | null>(null)\n\n // Measure the active tab and drive the sliding indicator. useLayoutEffect so\n // the first position is set before paint (the indicator element mounts already\n // in place — no slide-in from zero; only later tab changes animate). Observes\n // the active tab (its own size, e.g. a changing \"(3)\" count) and the list\n // (container resize / reflow). A non-active sibling resizing while you're on\n // another tab is the one case not caught; it self-corrects on the next\n // selection or resize.\n useLayoutEffect(() => {\n const list = listRef.current\n if (!list || !activeValue) {\n setIndicator(null)\n setIndicatorActive(false)\n return\n }\n const el = list.querySelector<HTMLElement>(`[data-tab-value=\"${CSS.escape(activeValue)}\"]`)\n if (!el) {\n setIndicator(null)\n setIndicatorActive(false)\n return\n }\n const measure = () => {\n setIndicator(\n orientation === 'horizontal'\n ? {offset: el.offsetLeft, size: el.offsetWidth}\n : {offset: el.offsetTop, size: el.offsetHeight},\n )\n setIndicatorActive(true)\n }\n measure()\n const ro = new ResizeObserver(measure)\n ro.observe(el)\n ro.observe(list)\n return () => ro.disconnect()\n }, [activeValue, orientation, setIndicatorActive])\n\n useEffect(() => {\n const el = listRef.current\n if (!el) return\n\n function handleKeyDown(this: HTMLElement, e: KeyboardEvent) {\n const order = orderRef.current\n const tabs = tabsRef.current\n if (order.length === 0) return\n const listEl = this\n\n const prevKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp'\n const nextKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown'\n\n let targetValue: string | null = null\n\n switch (e.key) {\n case nextKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : -1\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx + i) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case prevKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : 0\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx - i + order.length) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'Home': {\n e.preventDefault()\n for (const val of order) {\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'End': {\n e.preventDefault()\n for (let i = order.length - 1; i >= 0; i--) {\n if (!tabs.get(order[i])) {\n targetValue = order[i]\n break\n }\n }\n break\n }\n }\n\n if (targetValue) {\n onSelect(targetValue)\n // Focus the newly activated tab button\n const tabEl = listEl.querySelector(\n `[data-tab-value=\"${targetValue}\"]`,\n ) as HTMLElement | null\n tabEl?.focus()\n }\n }\n\n el.addEventListener('keydown', handleKeyDown)\n return () => el.removeEventListener('keydown', handleKeyDown)\n }, [orientation, activeValue, onSelect, tabsRef, orderRef])\n\n return (\n <html.div\n ref={listRef}\n role=\"tablist\"\n aria-orientation={orientation}\n style={[styles.list, orientation === 'vertical' && styles.listVertical]}\n >\n {children}\n {indicator && (\n <html.div\n aria-hidden\n style={[\n styles.indicator,\n orientation === 'horizontal' ? styles.indicatorHorizontal : styles.indicatorVertical,\n orientation === 'horizontal'\n ? styles.indicatorOffsetH(indicator.offset, indicator.size)\n : styles.indicatorOffsetV(indicator.offset, indicator.size),\n ]}\n />\n )}\n </html.div>\n )\n}\n\n// --- Tab ---\n\ninterface TabProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Tab({value, disabled = false, children}: TabProps) {\n const {activeValue, onSelect, orientation, registerTab, indicatorActive} = useTabs()\n const isActive = activeValue === value\n const tabId = useId()\n const panelId = `${tabId}-panel`\n\n useEffect(() => {\n return registerTab(value, disabled)\n }, [value, disabled, registerTab])\n\n const handleClick = () => {\n if (!disabled) {\n onSelect(value)\n }\n }\n\n return (\n <html.button\n type=\"button\"\n role=\"tab\"\n id={tabId}\n aria-selected={isActive}\n aria-controls={panelId}\n aria-disabled={disabled || undefined}\n data-tab-value={value}\n tabIndex={isActive ? 0 : -1}\n onClick={handleClick}\n style={[\n styles.tab,\n orientation === 'vertical' && styles.tabVertical,\n isActive &&\n (orientation === 'vertical' ? styles.tabActiveVertical : styles.tabActiveHorizontal),\n isActive && indicatorActive && styles.tabIndicatorActive,\n disabled && styles.tabDisabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Panel ---\n\ninterface PanelProps {\n value: string\n children: ReactNode\n}\n\nfunction Panel({value, children}: PanelProps) {\n const {activeValue, orientation} = useTabs()\n\n if (activeValue !== value) return null\n\n return (\n <html.div\n role=\"tabpanel\"\n style={[styles.panel, orientation === 'vertical' && styles.panelVertical]}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tabs = {\n Root,\n List,\n Tab,\n Panel,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n resize: 'vertical' as const,\n transitionProperty: 'border-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {styles} from './styles.css'\n\ntype StrictTextareaProps = React.ComponentProps<typeof html.textarea>\n\nexport type TextareaVariant = 'default' | 'error'\n\ninterface TextareaProps {\n variant?: TextareaVariant\n name?: string\n placeholder?: string\n required?: boolean\n rows?: number\n value?: string\n defaultValue?: string\n disabled?: boolean\n autoFocus?: boolean\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void\n onBlur?: () => void\n ref?: React.Ref<HTMLTextAreaElement>\n}\n\nexport function Textarea({\n variant = 'default',\n name,\n placeholder,\n required,\n rows = 3,\n value,\n defaultValue,\n disabled,\n autoFocus,\n onChange,\n onBlur,\n ref,\n}: TextareaProps) {\n const ctx = useFieldContext()\n\n const fieldCtx = ctx?.field\n const effectiveName = name ?? fieldCtx?.name\n const effectiveValue = value ?? (fieldCtx ? String(fieldCtx.value ?? '') : undefined)\n const effectiveOnChange = onChange ?? fieldCtx?.onChange\n const effectiveOnBlur = onBlur ?? fieldCtx?.onBlur\n const effectiveRef = ref ?? fieldCtx?.ref\n const effectiveDisabled = disabled ?? ctx?.disabled\n const effectiveVariant = ctx?.invalid ? 'error' : variant\n\n const extraProps: Record<string, unknown> = {}\n if (autoFocus) extraProps.autoFocus = true\n\n return (\n <html.textarea\n id={ctx?.controlId}\n name={effectiveName}\n placeholder={placeholder}\n required={required}\n rows={rows}\n value={effectiveValue}\n defaultValue={defaultValue}\n disabled={effectiveDisabled}\n aria-describedby={\n ctx ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() : undefined\n }\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={effectiveOnChange as StrictTextareaProps['onChange']}\n onBlur={effectiveOnBlur as StrictTextareaProps['onBlur']}\n ref={effectiveRef as React.Ref<HTMLTextAreaElement>}\n style={[styles.base, styles[effectiveVariant]]}\n {...extraProps}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n button: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: spacing.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.sm,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n color: colors.text,\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n },\n})\n","import {\n createContext,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {Icon, type IconName} from '../Icon/Icon'\nimport {ThemeProvider, type ThemeName} from '../ThemeProvider/ThemeProvider'\nimport {styles} from './styles.css'\n\n/**\n * The user's *preference*. `'system'` follows the OS `prefers-color-scheme`;\n * the others pin a concrete {@link ThemeName}. Resolves to a ThemeName via\n * {@link useColorMode}().theme.\n */\nexport type ColorModePreference = 'system' | ThemeName\n\nconst PREFERENCES: readonly ColorModePreference[] = ['system', 'light', 'dark', 'high-contrast']\n\nconst ICON: Record<ColorModePreference, IconName> = {\n system: 'monitor',\n light: 'sun',\n dark: 'moon',\n 'high-contrast': 'contrast',\n}\n\nconst LABEL: Record<ColorModePreference, string> = {\n system: 'system',\n light: 'light',\n dark: 'dark',\n 'high-contrast': 'high contrast',\n}\n\ninterface ColorModeContextValue {\n /** The user's chosen preference. */\n preference: ColorModePreference\n /** The concrete theme the preference resolves to (system → OS scheme). */\n theme: ThemeName\n /** Set the preference explicitly. */\n setPreference: (preference: ColorModePreference) => void\n /** Advance to the next preference in {@link modes} (wraps). */\n cycle: () => void\n /** The cycle order used by `cycle()` and the toggle. */\n modes: readonly ColorModePreference[]\n}\n\nconst ColorModeContext = createContext<ColorModeContextValue | null>(null)\n\n/**\n * Read the active color mode. Throws if used outside a {@link ColorModeProvider}.\n */\nexport function useColorMode(): ColorModeContextValue {\n const ctx = useContext(ColorModeContext)\n if (!ctx) {\n throw new Error('useColorMode must be used within a <ColorModeProvider>')\n }\n return ctx\n}\n\nconst canUseDom =\n !isNative && typeof window !== 'undefined' && typeof window.matchMedia === 'function'\n\nfunction isPreference(value: unknown): value is ColorModePreference {\n return typeof value === 'string' && (PREFERENCES as readonly string[]).includes(value)\n}\n\nfunction readStored(key: string | null): ColorModePreference | null {\n if (!key || isNative || typeof window === 'undefined') return null\n try {\n const raw = window.localStorage.getItem(key)\n return isPreference(raw) ? raw : null\n } catch {\n // Private mode / blocked storage — degrade to no persistence.\n return null\n }\n}\n\nfunction writeStored(key: string | null, value: ColorModePreference): void {\n if (!key || isNative || typeof window === 'undefined') return\n try {\n window.localStorage.setItem(key, value)\n } catch {\n /* ignore */\n }\n}\n\ninterface ColorModeProviderProps {\n children: ReactNode\n /** Initial preference (uncontrolled). Default `'system'`. For SSR with no\n * hydration flash, pass the value you persisted server-side (e.g. a cookie). */\n defaultPreference?: ColorModePreference\n /** Controlled preference — when set, the provider does not own the state. */\n preference?: ColorModePreference\n /** Fired whenever the preference changes (controlled or not). */\n onPreferenceChange?: (preference: ColorModePreference) => void\n /** Cycle order for `cycle()` / `<ColorModeToggle>`. Default `['light', 'dark']`. */\n modes?: readonly ColorModePreference[]\n /** localStorage key for persistence; `null` disables it. Default `'duro-color-mode'`. */\n storageKey?: string | null\n /** Wrap children in the DS `ThemeProvider` with the resolved theme. Default `true`.\n * Set `false` to drive your own ThemeProvider from `useColorMode().theme`. */\n applyTheme?: boolean\n}\n\n/**\n * Owns color-mode state, resolves `'system'` against the OS scheme, persists the\n * choice, and (by default) applies the resolved theme via `ThemeProvider`.\n * Pair with {@link ColorModeToggle} or read state via {@link useColorMode}.\n */\nexport function ColorModeProvider({\n children,\n defaultPreference = 'system',\n preference: controlled,\n onPreferenceChange,\n modes = ['light', 'dark'],\n storageKey = 'duro-color-mode',\n applyTheme = true,\n}: ColorModeProviderProps) {\n const [internal, setInternal] = useState<ColorModePreference>(controlled ?? defaultPreference)\n const preference = controlled ?? internal\n\n // Hydrate from storage AFTER mount (not in the initializer) so the first\n // client render matches the server and React doesn't warn about a mismatch.\n useEffect(() => {\n if (controlled !== undefined) return\n const stored = readStored(storageKey)\n if (stored) setInternal(stored)\n // Only on mount / when the key changes.\n }, [controlled, storageKey])\n\n const setPreference = useCallback(\n (next: ColorModePreference) => {\n if (controlled === undefined) setInternal(next)\n writeStored(storageKey, next)\n onPreferenceChange?.(next)\n },\n [controlled, storageKey, onPreferenceChange],\n )\n\n // Track the OS scheme so `'system'` stays live. The initial value MUST be the\n // SSR-stable default ('dark', what the server renders without a DOM) so the\n // first client render matches the server — reading matchMedia in the\n // initializer would diverge (server 'dark' vs client's real scheme) and trip\n // a hydration mismatch. The effect reconciles to the real scheme after mount.\n const [systemTheme, setSystemTheme] = useState<'light' | 'dark'>('dark')\n useEffect(() => {\n if (!canUseDom) return\n const mq = window.matchMedia('(prefers-color-scheme: dark)')\n const onChange = () => setSystemTheme(mq.matches ? 'dark' : 'light')\n onChange()\n mq.addEventListener('change', onChange)\n return () => mq.removeEventListener('change', onChange)\n }, [])\n\n const theme: ThemeName = preference === 'system' ? systemTheme : preference\n\n const cycle = useCallback(() => {\n const i = modes.indexOf(preference)\n const next = modes[(i + 1) % modes.length] ?? modes[0]\n if (next) setPreference(next)\n }, [modes, preference, setPreference])\n\n const value = useMemo<ColorModeContextValue>(\n () => ({preference, theme, setPreference, cycle, modes}),\n [preference, theme, setPreference, cycle, modes],\n )\n\n return (\n <ColorModeContext.Provider value={value}>\n {applyTheme ? <ThemeProvider theme={theme}>{children}</ThemeProvider> : children}\n </ColorModeContext.Provider>\n )\n}\n\ninterface ColorModeToggleProps {\n /** Icon size in px. Default `20`. */\n size?: number\n /** Override the announced label (otherwise auto-generated from current/next). */\n 'aria-label'?: string\n}\n\n/**\n * A compact icon button that cycles the color-mode preference through the\n * provider's `modes`. The glyph reflects the current preference\n * (sun/moon/monitor/contrast). Must be inside a {@link ColorModeProvider}.\n */\nexport function ColorModeToggle({size = 20, 'aria-label': ariaLabel}: ColorModeToggleProps) {\n const {preference, cycle, modes} = useColorMode()\n const i = modes.indexOf(preference)\n const next = modes[(i + 1) % modes.length] ?? modes[0] ?? preference\n const label = ariaLabel ?? `Color mode: ${LABEL[preference]}. Switch to ${LABEL[next]}.`\n\n return (\n <html.button type=\"button\" aria-label={label} onClick={cycle} style={styles.button}>\n <Icon name={ICON[preference]} size={size} />\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n error: {\n color: colors.errorText,\n },\n success: {\n color: colors.successText,\n },\n warning: {\n color: colors.warningText,\n },\n\n // Weight overrides\n weightNormal: {\n fontWeight: typography.fontWeightNormal,\n },\n weightMedium: {\n fontWeight: typography.fontWeightMedium,\n },\n weightSemibold: {\n fontWeight: typography.fontWeightSemibold,\n },\n weightBold: {\n fontWeight: typography.fontWeightBold,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n\n // Truncate. minWidth: 0 lets a truncating Text actually shrink inside a\n // flex/grid container — without it, the default `min-width: auto` would\n // keep the element at its content width, so text-overflow: ellipsis would\n // never trigger and the text would just overflow the parent instead.\n truncate: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type TextVariant = 'bodySm' | 'bodyMd' | 'bodyLg' | 'caption' | 'label' | 'code' | 'overline'\nexport type TextColor = 'default' | 'muted' | 'accent' | 'error' | 'success' | 'warning'\n\ninterface TextProps {\n variant?: TextVariant\n color?: TextColor\n weight?: 'normal' | 'medium' | 'semibold' | 'bold'\n align?: 'start' | 'center' | 'end'\n truncate?: boolean\n as?: 'span' | 'p' | 'div'\n children: ReactNode\n}\n\nconst weightMap = {\n normal: styles.weightNormal,\n medium: styles.weightMedium,\n semibold: styles.weightSemibold,\n bold: styles.weightBold,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Text({\n variant = 'bodyMd',\n color = 'default',\n weight,\n align,\n truncate,\n as = 'span',\n children,\n}: TextProps) {\n const style = [\n typePresets[variant],\n styles[color],\n weight && weightMap[weight],\n align && alignMap[align],\n truncate && styles.truncate,\n ]\n\n if (as === 'p') return <html.p style={style}>{children}</html.p>\n if (as === 'div') return <html.div style={style}>{children}</html.div>\n return <html.span style={style}>{children}</html.span>\n}\n","import {createContext, useContext} from 'react'\nimport type {ToggleSize} from '../Toggle/Toggle'\n\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport interface ToggleGroupContextValue {\n value: string[]\n toggle: (itemValue: string) => void\n disabled: boolean\n orientation: Orientation\n size: ToggleSize\n}\n\nexport const ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null)\n\nexport function useToggleGroup() {\n return useContext(ToggleGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 1,\n borderStyle: 'solid',\n cursor: 'pointer',\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightMedium,\n transitionProperty: 'background-color, border-color, color, opacity',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n },\n sizeDefault: {\n padding: `${spacing.sm} ${spacing.md}`,\n fontSize: typography.fontSizeSm,\n borderRadius: radii.sm,\n gap: spacing.sm,\n },\n sizeSmall: {\n padding: `${spacing.xs} ${spacing.sm}`,\n fontSize: typography.fontSizeXs,\n borderRadius: radii.sm,\n gap: spacing.xs,\n },\n unpressed: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n color: colors.textMuted,\n },\n pressed: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n borderColor: colors.accent,\n color: colors.accentContrast,\n },\n grouped: {\n borderWidth: 0,\n borderRadius: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n // Override any borderColor set by pressed state — dividers always use border token\n borderColor: colors.border,\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n})\n","import {type ReactNode, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {useToggleGroup} from '../ToggleGroup/ToggleGroupContext'\nimport {styles} from './styles.css'\n\nexport type ToggleSize = 'default' | 'small'\n\ninterface ToggleProps {\n /** Controlled pressed state (standalone usage). */\n pressed?: boolean\n /** Initial pressed state (uncontrolled, standalone usage). */\n defaultPressed?: boolean\n /** Callback fired when the pressed state changes (standalone usage). */\n onPressedChange?: (pressed: boolean) => void\n /** Unique value when used inside a ToggleGroup. */\n value?: string\n /** Prevents user interaction. */\n disabled?: boolean\n /** Size variant (overridden by ToggleGroup when grouped). */\n size?: ToggleSize\n 'aria-label'?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function Toggle({\n pressed: controlledPressed,\n defaultPressed = false,\n onPressedChange,\n value,\n disabled: disabledProp = false,\n size: sizeProp = 'default',\n 'aria-label': ariaLabel,\n children,\n}: ToggleProps) {\n const group = useToggleGroup()\n\n // When inside a ToggleGroup, derive pressed state from group context\n const groupPressed = group && value !== undefined ? group.value.includes(value) : undefined\n const isGrouped = group !== null\n const disabled = disabledProp || (group?.disabled ?? false)\n const size = group?.size ?? sizeProp\n\n const [standalonePressed, setStandalonePressed] = useControllableValue(\n controlledPressed,\n defaultPressed,\n onPressedChange,\n )\n\n const pressed = groupPressed ?? standalonePressed\n\n const handleClick = useCallback(() => {\n if (disabled) return\n if (isGrouped && value !== undefined) {\n group.toggle(value)\n } else {\n setStandalonePressed(!pressed)\n }\n }, [disabled, isGrouped, value, group, pressed, setStandalonePressed])\n\n return (\n <html.button\n type=\"button\"\n aria-pressed={pressed}\n aria-label={ariaLabel}\n disabled={disabled}\n onClick={handleClick}\n data-pressed={pressed ? '' : undefined}\n style={[\n styles.base,\n sizeMap[size],\n pressed ? styles.pressed : styles.unpressed,\n isGrouped && styles.grouped,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n overflow: 'hidden',\n },\n vertical: {\n flexDirection: 'column',\n },\n})\n","import {type ReactNode, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {ToggleSize} from '../Toggle/Toggle'\nimport {ToggleGroupContext, type Orientation} from './ToggleGroupContext'\nimport {styles} from './styles.css'\n\ninterface ToggleGroupProps {\n /** Controlled value — array of pressed item values. */\n value?: string[]\n /** Initial value (uncontrolled). */\n defaultValue?: string[]\n /** Callback fired when the set of pressed values changes. */\n onValueChange?: (value: string[]) => void\n /** When false, at most one item can be pressed at a time. */\n multiple?: boolean\n /** Prevents interaction with all items. */\n disabled?: boolean\n /** Layout direction. */\n orientation?: Orientation\n /** Size applied to all child toggles. */\n size?: ToggleSize\n children: ReactNode\n}\n\nexport function ToggleGroup({\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n multiple = false,\n disabled = false,\n orientation = 'horizontal',\n size = 'default',\n children,\n}: ToggleGroupProps) {\n const [value, setValue] = useControllableValue(controlledValue, defaultValue, onValueChange)\n\n const toggle = useCallback(\n (itemValue: string) => {\n const nextPressed = !value.includes(itemValue)\n let next: string[]\n if (multiple) {\n next = nextPressed ? [...value, itemValue] : value.filter((v) => v !== itemValue)\n } else {\n next = nextPressed ? [itemValue] : []\n }\n setValue(next)\n },\n [value, multiple, setValue],\n )\n\n return (\n <ToggleGroupContext.Provider value={{value, toggle, disabled, orientation, size}}>\n <html.div\n role=\"toolbar\"\n aria-orientation={orientation}\n style={[styles.root, orientation === 'vertical' && styles.vertical]}\n >\n {children}\n </html.div>\n </ToggleGroupContext.Provider>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n popup: {\n position: 'absolute',\n zIndex: 50,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n },\n top: {\n bottom: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginBottom: spacing.xs,\n },\n bottom: {\n top: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginTop: spacing.xs,\n },\n left: {\n right: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginRight: spacing.xs,\n },\n right: {\n left: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginLeft: spacing.xs,\n },\n})\n","import {\n type ReactNode,\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n useId,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ntype Placement = 'top' | 'bottom' | 'left' | 'right'\n\ninterface TooltipContextValue {\n open: boolean\n show: () => void\n hide: () => void\n tooltipId: string\n placement: Placement\n}\n\nconst TooltipContext = createContext<TooltipContextValue | null>(null)\n\nfunction useTooltip() {\n const ctx = useContext(TooltipContext)\n if (!ctx) throw new Error('Tooltip compound components must be used within Tooltip.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n content: ReactNode\n placement?: Placement\n delay?: number\n}\n\nfunction Root({children, content, placement = 'top', delay = 300}: RootProps) {\n const [open, setOpen] = useState(false)\n const tooltipId = useId()\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const show = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = setTimeout(() => setOpen(true), delay)\n }, [delay])\n\n const hide = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = null\n setOpen(false)\n }, [])\n\n return (\n <TooltipContext.Provider value={{open, show, hide, tooltipId, placement}}>\n <html.div style={styles.root}>\n {children}\n {open && (\n <html.div id={tooltipId} role=\"tooltip\" style={[styles.popup, styles[placement]]}>\n {content}\n </html.div>\n )}\n </html.div>\n </TooltipContext.Provider>\n )\n}\n\n// --- Trigger ---\n\ninterface TriggerProps {\n children: ReactNode\n}\n\nfunction Trigger({children}: TriggerProps) {\n const {open, show, hide, tooltipId} = useTooltip()\n\n return (\n <html.div\n onPointerEnter={show}\n onPointerLeave={hide}\n onFocus={show}\n onBlur={hide}\n aria-describedby={open ? tooltipId : undefined}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tooltip = {\n Root,\n Trigger,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n rootDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n track: {\n position: 'relative',\n width: 36,\n height: 20,\n borderRadius: radii.full,\n borderWidth: 0,\n padding: 0,\n cursor: 'inherit',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n outlineWidth: {default: 0, ':focus-visible': 2},\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: 2,\n flexShrink: 0,\n },\n trackUnchecked: {\n backgroundColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n trackChecked: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n },\n thumb: {\n position: 'absolute',\n top: 2,\n left: 2,\n width: 16,\n height: 16,\n borderRadius: radii.full,\n backgroundColor: '#fff',\n transitionProperty: 'transform',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n thumbChecked: {\n transform: 'translateX(16px)',\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n // RSD-native only honors display:'flex' (not 'inline-flex'). Layered on\n // native via `isNative` so the flex container applies; web keeps inline-flex.\n nativeFlex: {\n display: 'flex',\n },\n})\n","import {type ReactNode, useCallback, useRef} from 'react'\nimport {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {styles} from './styles.css'\n\ninterface SwitchProps {\n /** Controlled checked state. */\n checked?: boolean\n /** Initial checked state (uncontrolled). */\n defaultChecked?: boolean\n /** Callback fired when the checked state changes. */\n onCheckedChange?: (checked: boolean) => void\n /** Prevents user interaction. */\n disabled?: boolean\n /** Form field name for the hidden input. */\n name?: string\n /** Value submitted when checked. */\n value?: string\n /** Label content rendered beside the switch. */\n children?: ReactNode\n}\n\nexport function Switch({\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n disabled = false,\n name,\n value,\n children,\n}: SwitchProps) {\n const [checked, setChecked] = useControllableValue(\n controlledChecked,\n defaultChecked,\n onCheckedChange,\n )\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleClick = useCallback(() => {\n if (disabled) return\n setChecked(!checked)\n // Keep hidden input in sync for form submission\n if (inputRef.current) {\n inputRef.current.checked = !checked\n }\n }, [disabled, checked, setChecked])\n\n return (\n <html.label\n style={[styles.root, isNative && styles.nativeFlex, disabled && styles.rootDisabled]}\n >\n {!isNative && (\n // Web: hidden real checkbox carries a11y + form submission. RSD has no\n // <input type=checkbox> on native, so it's omitted there and the\n // button below carries the switch role instead.\n <html.input\n ref={inputRef}\n type=\"checkbox\"\n role=\"switch\"\n name={name}\n value={value}\n checked={controlledChecked !== undefined ? controlledChecked : undefined}\n defaultChecked={controlledChecked === undefined ? defaultChecked : undefined}\n disabled={disabled}\n aria-checked={checked}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n onCheckedChange?.(e.target.checked)\n }}\n style={styles.input}\n />\n )}\n <html.button\n type=\"button\"\n tabIndex={-1}\n aria-hidden={isNative ? undefined : true}\n role={isNative ? 'switch' : undefined}\n aria-checked={isNative ? checked : undefined}\n disabled={disabled}\n onClick={handleClick}\n style={[styles.track, checked ? styles.trackChecked : styles.trackUnchecked]}\n >\n <html.span style={[styles.thumb, checked && styles.thumbChecked]} />\n </html.button>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'column',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignStretch: {alignItems: 'stretch'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpacingKey = 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl'\n\ninterface StackProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'stretch'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n stretch: styles.alignStretch,\n} as const\n\nexport function Stack({gap = 'md', align = 'stretch', children}: StackProps) {\n return <html.div style={[styles.base, gapMap[gap], alignMap[align]]}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignBaseline: {alignItems: 'baseline'},\n alignStretch: {alignItems: 'stretch'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface InlineProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'baseline' | 'stretch'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n baseline: styles.alignBaseline,\n stretch: styles.alignStretch,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Inline({gap = 'sm', align = 'center', justify = 'start', children}: InlineProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface ClusterProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Cluster({gap = 'sm', align = 'start', justify = 'start', children}: ClusterProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'grid',\n },\n col1: {gridTemplateColumns: '1fr'},\n col2: {gridTemplateColumns: 'repeat(2, 1fr)'},\n col3: {gridTemplateColumns: 'repeat(3, 1fr)'},\n col4: {gridTemplateColumns: 'repeat(4, 1fr)'},\n col5: {gridTemplateColumns: 'repeat(5, 1fr)'},\n col6: {gridTemplateColumns: 'repeat(6, 1fr)'},\n autoFit: (minWidth: string) => ({\n gridTemplateColumns: `repeat(auto-fill, minmax(${minWidth}, 1fr))`,\n }),\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface GridProps {\n gap?: SpacingKey\n columns?: 1 | 2 | 3 | 4 | 5 | 6\n minColumnWidth?: string\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst columnsMap = {\n 1: styles.col1,\n 2: styles.col2,\n 3: styles.col3,\n 4: styles.col4,\n 5: styles.col5,\n 6: styles.col6,\n} as const\n\nexport function Grid({gap = 'md', columns, minColumnWidth, children}: GridProps) {\n const columnStyle = minColumnWidth\n ? styles.autoFit(minColumnWidth)\n : columns\n ? columnsMap[columns]\n : undefined\n\n return <html.div style={[styles.base, gapMap[gap], columnStyle]}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {layoutSpacing} from '@duro-app/tokens/tokens/layout-spacing.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n width: '100%',\n },\n container: {\n width: '100%',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n // Max-width presets\n maxSm: {maxWidth: 600},\n maxMd: {maxWidth: 800},\n maxLg: {maxWidth: 1200},\n // Horizontal padding\n padSm: {paddingLeft: layoutSpacing.containerSm, paddingRight: layoutSpacing.containerSm},\n padMd: {paddingLeft: layoutSpacing.containerMd, paddingRight: layoutSpacing.containerMd},\n padLg: {paddingLeft: layoutSpacing.containerLg, paddingRight: layoutSpacing.containerLg},\n // Vertical spacing\n headerPadding: {paddingTop: spacing.lg},\n mainPadding: {paddingTop: spacing.xl, paddingBottom: spacing.xl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type PageShellMaxWidth = 'sm' | 'md' | 'lg' | 'full'\nexport type PageShellPadding = 'sm' | 'md' | 'lg'\n\ninterface PageShellProps {\n /** Max-width preset: sm (600), md (800), lg (1200), full (none). Default: 'lg' */\n maxWidth?: PageShellMaxWidth\n /** Horizontal padding preset. Default: 'md' (24px) */\n padding?: PageShellPadding\n /** Header element rendered above the main content with same constraints */\n header?: ReactNode\n children: ReactNode\n}\n\nconst maxWidthMap = {\n sm: styles.maxSm,\n md: styles.maxMd,\n lg: styles.maxLg,\n full: null,\n} as const\n\nconst paddingMap = {\n sm: styles.padSm,\n md: styles.padMd,\n lg: styles.padLg,\n} as const\n\nexport function PageShell({maxWidth = 'lg', padding = 'md', header, children}: PageShellProps) {\n const mw = maxWidthMap[maxWidth]\n const pad = paddingMap[padding]\n\n return (\n <html.div style={styles.root}>\n {header != null && (\n <html.header style={[styles.container, styles.maxLg, pad, styles.headerPadding]}>\n {header}\n </html.header>\n )}\n <html.main style={[styles.container, mw, pad, styles.mainPadding]}>{children}</html.main>\n </html.div>\n )\n}\n","import {useRef, useState, useEffect} from 'react'\n\nexport type ContainerSize = 'compact' | 'default' | 'spacious'\n\ninterface UseContainerQueryOptions {\n compactBelow?: number\n spaciousAbove?: number\n}\n\nexport function useContainerQuery<T extends HTMLElement = HTMLElement>(\n options: UseContainerQueryOptions = {},\n): {\n ref: React.RefObject<T | null>\n size: ContainerSize\n} {\n const {compactBelow = 480, spaciousAbove = 768} = options\n const ref = useRef<T | null>(null)\n const [size, setSize] = useState<ContainerSize>('default')\n\n useEffect(() => {\n const element = ref.current\n if (!element) return\n\n let rafId: number | null = null\n\n const observer = new ResizeObserver((entries) => {\n if (rafId !== null) cancelAnimationFrame(rafId)\n\n rafId = requestAnimationFrame(() => {\n const entry = entries[0]\n if (!entry) return\n\n const width = entry.contentBoxSize?.[0]?.inlineSize ?? entry.contentRect.width\n\n if (width < compactBelow) {\n setSize('compact')\n } else if (width >= spaciousAbove) {\n setSize('spacious')\n } else {\n setSize('default')\n }\n })\n })\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n if (rafId !== null) cancelAnimationFrame(rafId)\n }\n }, [compactBelow, spaciousAbove])\n\n return {ref, size}\n}\n"],"names":["styleq$1","styleq_2","cache","compiledKey","createStyleq","options","disableCache","disableMix","transform","definedProperties","className","inlineStyle","debugString","nextCache","styles","i","possibleStyle","_i","style","classNameChunk","cacheEntry","definedPropertiesChunk","prop","value","compiledKeyValue","weakMap","subStyle","_prop","_value","styleProps","styleq","optimizedStyleq","merge","dataStyleSrc","result","chunks","pathsMap","chunk","trimmed","path","line","a","button","div","form","heading","header","input","label","main","nav","p","span","textarea","defaultStyles","ReactSharedInternals","require$$0","reactCompilerRuntime_production","size","reactCompilerRuntime_development","dispatcher","compilerRuntimeModule","require$$1","createActionBarStore","entries","listeners","Set","notify","forEach","l","subscribe","cb","add","delete","getSnapshot","push","id","render","update","map","e","remove","filter","ActionBarContext","createContext","ActionBarProvider","children","storeRef","useRef","current","store","useSyncExternalStore","topEntry","length","jsxs","useActionBarStack","$","_c","useContext","useId","t0","some","register","t1","unregister","t2","bb0","t3","entries_0","isTop","t4","managed","overlay","$$css","overlayEmphasized","selectedCount","selectedCountEmphasized","actions","closeButton","closeButtonEmphasized","separator","separatorEmphasized","ActionBarContent","selectedItemCount","selectedLabel","isEmphasized","onClearSelection","dismissible","undefined","countStr","t5","t6","t7","t8","jsx","_rsdMerge","_rsdDefaultStyles","t9","t10","t11","t12","t13","ActionBarInner","props","stack","isActive","renderBar","useEffect","ActionBar","strokeIcons","Fragment","clock","forbidden","shield","lock","key","layers","repeat","database","route","menu","users","mail","plug","pin","sun","moon","monitor","contrast","filledIcons","Icon","name","filled","base","iconWrap","content","error","success","warning","info","defaultIcons","resolveIcon","icon","variant","Alert","resolvedIcon","isNative","sizeMd","sizeSm","default","nativeFlex","sizeMap","sm","md","Badge","sizeDefault","sizeSmall","primary","secondary","link","inverseSecondary","danger","fullWidth","disabled","small","Button","type","onClick","ariaLabel","horizontal","vertical","alignStart","alignCenter","alignEnd","verticalAlignStart","verticalAlignCenter","verticalAlignEnd","gapXs","gapSm","gapMd","gapMap","xs","horizontalAlignMap","start","center","end","verticalAlignMap","ButtonGroup","orientation","align","gap","isVertical","alignStyle","Callout","elevated","outlined","interactive","sizeCompact","sizeFull","compact","full","Card","root","rootDisabled","box","boxUnchecked","boxChecked","Checkbox","checked","controlledChecked","defaultChecked","onChange","isControlled","internalChecked","setInternalChecked","useState","isChecked","target","handleChange","next","t14","opacity","t15","Symbol","for","t16","t17","t18","t19","useControllableValue","controlledValue","defaultValue","internal","setInternal","v","setValue","rootHorizontal","CheckboxGroupContext","useCheckboxGroup","ctx","Error","Root","onValueChange","itemValue","onToggle","Item","itemDisabled","groupValue","groupDisabled","includes","isDisabled","CheckboxGroup","FieldContext","useFieldContext","invalid","ColorInput","required","onBlur","ref","fieldCtx","field","effectiveName","effectiveValue","String","effectiveOnChange","effectiveOnBlur","effectiveRef","effectiveDisabled","controlId","descriptionId","errorId","trim","backdrop","backdropOpen","backdropClosing","viewport","popup","popupOpen","popupClosing","lg","title","description","body","footer","inlineWrapper","reducedMotion","DialogContext","useDialog","open","controlledOpen","defaultOpen","onOpenChange","dismissable","closeAnimationDuration","internalOpen","setInternalOpen","closing","setClosing","closingTimerRef","popupRef","isOpen","titleId","clearTimeout","requestOpen","setTimeout","requestClose","onKeyDown","stopPropagation","document","addEventListener","removeEventListener","prev","overflow","Trigger","Portal","handleBackdropClick","Header","Title","h2","Description","Body","Footer","Close","Dialog","InputGroupContext","useInputGroupContext","inGroup","mono","Input","font","placeholder","readOnly","minLength","maxLength","min","max","step","inputMode","list","pattern","autoComplete","autoFocus","ariaDescribedby","groupCtx","effectiveVariant","describedBy","extraProps","FormContext","useFormContext","rootSide","labelSide","fieldContent","necessityIcon","necessityLabel","formCtx","ControlledRoot","StaticRoot","labelPosition","invalidProp","control","useRHFFormContext","fieldState","useController","effectiveLabelPosition","effectiveNecessityIndicator","necessityIndicator","message","errorMessage","FieldLayout","labelNode","rest","Children","child","isValidElement","Label","isSide","indicator","Field","ConfirmDialog","confirmPhrase","promptLabel","cancelLabel","confirmSlot","onConfirm","confirmLabel","typed","setTyped","satisfied","handleOpenChange","wrapper","wrapperOpenSm","wrapperCloseSm","wrapperOpenMd","wrapperCloseMd","contentSm","contentMd","slideIn","slideOut","bodyPadded","DetailPanelContext","useDetailPanel","present","setPresent","panelRef","previousFocusRef","labelId","setLabelId","activeElement","focus","el","useCallback","registerTitle","unregisterTitle","wrapperOpenMap","wrapperCloseMap","Content","padded","DetailPanel","viewportRight","viewportLeft","viewportBottom","panel","panelHorizontal","panelVertical","panelLeftBorder","slideInRight","slideOutRight","slideInLeft","slideOutLeft","slideInBottom","slideOutBottom","DISMISS_THRESHOLD","VELOCITY_THRESHOLD","DISMISS_DURATION","OPPOSITE_MAX_OVERSCROLL","useSwipeDismiss","anchor","enabled","onDismiss","startX","startY","currentX","currentY","startTime","swiping","panelSize","stateRef","isHorizontal","state","dx","getMovement","movement","panelEl","Number","dataset","progress","sign","closest","previousElementSibling","Math","absMovement","abs","overscroll","shadowSpread","round","boxShadow","applyTransform","resetStyles","_temp","panelEl_1","dismissTransform","transition","backdrop_1","dismissed","done","once","animateDismiss","animateSnapBack","_temp2","handlePointerDown","rect","getBoundingClientRect","state_0","clientX","clientY","Date","now","width","height","setPointerCapture","pointerId","animation","handlePointerMove","e_0","state_1","dx_0","dy","sqrt","preventDefault","movement_0","handlePointerUp","_e","state_2","movement_1","elapsed","velocity","handlePointerCancel","state_3","handleTouchMove","e_1","passive","panelEl_2","backdrop_2","cleanup","panelEl_0","backdrop_0","DrawerContext","useDrawer","swipeDismiss","requestCloseImmediate","slideInMap","right","left","bottom","slideOutMap","viewportAnchorMap","swipeEnabled","t20","Drawer","action","EmptyState","typePresets","bodySm","bodyMd","bodyLg","caption","code","overline","headingSm","headingMd","headingLg","headingXl","displaySm","displayMd","displayLg","muted","accent","defaultVariantMap","alignMap","Heading","level","color","resolvedVariant","h1","h3","h4","h5","h6","item","itemSelected","text","empty","ListContext","selectionMode","useList","selected","ItemText","Actions","Empty","List","Text","formStyles","Form","schema","defaultValues","onSubmit","validationErrors","effectTsResolver","resolver","mode","reValidateMode","methods","useForm","prevErrorKeysRef","prevKeys","nextKeys","Object","keys","clearErrors","key_0","setError","formRef","errors","firstField","setFocus","onInvalid","handleSubmit","FormProvider","legend","gapMs","gapLg","gapXl","ms","xl","Legend","Fieldset","addon","addonStart","addonEnd","addonClickable","addonDisabled","dynamicStyles","minWidth","val","Addon","position","positionStyle","InputGroup","LinkButton","href","rel","trigger","popupEnd","itemHighlighted","linkItem","MenuContext","useMenu","useMenuRoot","setOpen","highlightedId","setHighlightedId","menuId","rootRef","triggerRef","Map","itemsRef","orderRef","needsInitialHighlightRef","close","toggle","order","element","set","ids","sort","b","elA","get","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","registerItem","handleKeyDown","order_0","bb54","prev_2","idx_0","indexOf","idx","prev_1","items","prev_0","click","localRef","Popup","isHighlighted","handleClick","LinkItem","Menu","bordered","Panel","circle","circleUnchecked","circleChecked","dot","RadioGroupContext","useRadioGroup","onSelect","RadioGroup","scrollbar","scrollbarVertical","scrollbarHorizontal","scrollbarHidden","scrollbarVisible","thumb","viewportMaxHeight","maxHeight","thumbVertical","thumbHorizontal","ScrollAreaContext","useScrollArea","useScrollAreaRoot","viewportId","viewportRef","contentRef","scrollTop","setScrollTop","scrollLeft","setScrollLeft","scrollHeight","setScrollHeight","scrollWidth","setScrollWidth","clientHeight","setClientHeight","clientWidth","setClientWidth","scrolling","setScrolling","scrollTimerRef","vp","handleScroll","vp_0","observer","ResizeObserver","observe","disconnect","vp_1","Viewport","Scrollbar","maxScroll","scrollOffset","valueNow","Thumb","draggingRef","startPosRef","startScrollRef","thumbSizePercent","trackSize","thumbPixelSize","thumbOffset","thumbStyle","delta","scrollRatio","scrollDelta","ScrollArea","inputWrapper","inputWrapperFocused","itemHidden","hidden","popupPosition","top","ComboboxContext","useCombobox","useComboboxRoot","inputValue","controlledInputValue","onInputChange","initialLabels","initial","internalInputValue","setInternalInputValue","setInputValue","labels","setLabels","listboxId","inputRef","found","openPopup","selectValue","v_0","label_0","registerLabel","id_0","itemValue_0","query","toLowerCase","id_1","item_0","getVisibleOrder","visibleOrder","bb137","item_1","scrollIntoView","block","lightTheme","xjvd03b","lightShadows","x13v825q","highContrastTheme","highContrastShadows","themeMap","light","portalMount","PortalMountContext","usePortalMount","ThemeProvider","theme","overrides","themeStyles","mount","setMount","focused","setFocused","coords","setCoords","window","useLayoutEffect","node","createPortal","selectedValue","isSelected","isVisible","textContent","el_0","values","Combobox","SelectContext","useSelect","useSelectRoot","items_0","bb86","prev_3","Value","display","Select","group","groupTrigger","groupTriggerActive","chevron","chevronOpen","section","sectionLabel","itemActive","marker","markerActive","itemIcon","itemLabel","SideNavContext","useSideNav","activeValue","expandedGroups","setExpandedGroups","has","toggleGroup","group_0","next_0","expandGroup","Group","groupKey","defaultExpanded","isExpanded","groupRef","querySelector","hasActiveChild","Section","SideNav","spinner","srOnly","Spinner","region","toast","iconSuccess","iconError","iconInfo","closeBtn","DEFAULT_DURATION","createToastStore","seq","opts","duration","variantIcon","variantIconStyle","ToastContext","useToast","ToastItem","entry","timer","ToastProvider","useMemo","dismiss","StatusIcon","TagGroupContext","useTagGroup","wrap","removableMd","removableSm","removeButton","removeButtonDisabled","removableSizeMap","Tag","removable","removableProp","onRemove","onRemoveProp","disabledProp","isGrouped","editable","removeTag","setFocusedIndex","removeLabel","tagContent","role","container","containerError","containerDisabled","containerStatic","liveRegion","useTagGroupCtx","onValidate","gridId","setValues","focusedIndex","setEditable","announcement","setAnnouncement","isInvalid","addTag","value_0","getElementById","querySelectorAll","validate","commitValueRef","raw","selectionStart","handlePaste","clipboardData","getData","split","s","Boolean","handleFocus","TagGroup","loggedMessages","errorMsg","msg","strictAttributeSet","isPropAllowed","validateStrictProps","createStrictDOMComponent","TagName","defaultStyle","debugStyle","Component","htmlFor","restProps","hostProps","hostStyleProps","a$1","article$1","aside$1","b$1","bdi$1","bdo$1","blockquote$1","br$1","button$1","code$1","del$1","div$1","em$1","fieldset$1","footer$1","form$1","header$1","hr$1","i$1","img$1","input$1","ins$1","kbd$1","label$1","li$1","main$1","mark$1","nav$1","ol$1","optgroup$1","option$1","p$1","pre$1","s$1","section$1","select$1","span$1","strong$1","sub$1","sup$1","textarea$1","u$1","ul$1","article","aside","bdi","bdo","blockquote","br","del","em","fieldset","hr","img","ins","kbd","li","mark","ol","optgroup","option","pre","select","strong","sub","sup","u","ul","html","breakpointsPx","rootContainer","clickableRow","rootResponsive","row","bodyRow","headerCell","cell","cellValue","cellLabel","cellActions","cellSm","cellMd","stripedEven","borderedCell","borderedCellLast","sortChip","scrollX","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","minColumnWidth","rowKey","onRowClick","rowAriaLabel","buildSortChip","sortChipNode","paginationNode","getHeaderGroups","TableRow","getVisibleCells","_temp3","getRowModel","Cell","columnDef","meta","isActions","flexRender","getContext","headers","def","labelFromHeader","stackLabel","HeaderCell","isPlaceholder","getAllColumns","c","fromHeader","sorting","setSorting","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","framedGrid","T0","T1","childArray","toArray","Provider","index","RowIndexContext","INTERACTIVE_SELECTOR","Row","isHeader","rowIndex","isEvenRow","isClickable","Element","CellIndexContext","total","isLast","Table","_temp4","scroll","scrollMax","head","headRow","headCell","headCellSortable","sortMark","bodyTotal","rowClickable","rowAbsolute","y","cellFlex","stackScroll","stackBody","stackRow","stackCell","stackCellLabel","stackCellValue","pos","useIsoLayoutEffect","VirtualTable","data","columns","onSortingChange","getRowId","rowLabel","initialPage","onVisiblePageChange","rangeLabel","estimateRowHeight","virtualizeThreshold","stackBelow","emptyLabel","internalSorting","setInternalSorting","useReactTable","sortingState","getCoreRowModel","getSortedRowModel","wrapRef","stacked","setStacked","apply","ro","contentBoxSize","inlineSize","contentRect","virtualize","scrollRef","rv","useVirtualizer","count","getScrollElement","estimateSize","overscan","suppressWrite","scrollToIndex","vItems","getVirtualItems","firstIndex","lastIndex","pages","ceil","curPage","floor","range","from","to","page","lastReported","columnStackLabel","renderRow","positioned","measureRef","original","lbl","getSize","headerGroup","col","getToggleSortingHandler","getTotalSize","vi","measureElement","rootVertical","listVertical","tab","tabVertical","tabActiveHorizontal","tabActiveVertical","tabIndicatorActive","indicatorHorizontal","indicatorVertical","indicatorOffsetH","offset","indicatorOffsetV","tabDisabled","TabsContext","useTabs","useTabsRoot","tabsRef","indicatorActive","setIndicatorActive","registerTab","listRef","setIndicator","CSS","escape","measure","offsetLeft","offsetWidth","offsetTop","offsetHeight","tabs","listEl","prevKey","nextKey","targetValue","currentIdx","Tab","tabId","panelId","Tabs","Textarea","PREFERENCES","ICON","system","dark","LABEL","ColorModeContext","useColorMode","canUseDom","matchMedia","isPreference","readStored","localStorage","getItem","writeStored","setItem","ColorModeProvider","defaultPreference","preference","controlled","onPreferenceChange","modes","storageKey","applyTheme","stored","setPreference","systemTheme","setSystemTheme","mq","matches","cycle","ColorModeToggle","weightNormal","weightMedium","weightSemibold","weightBold","truncate","weightMap","normal","medium","semibold","bold","weight","as","ToggleGroupContext","useToggleGroup","unpressed","pressed","grouped","Toggle","controlledPressed","defaultPressed","onPressedChange","sizeProp","groupPressed","standalonePressed","setStandalonePressed","ToggleGroup","multiple","nextPressed","TooltipContext","useTooltip","placement","delay","tooltipId","timerRef","show","hide","Tooltip","track","trackUnchecked","trackChecked","thumbChecked","Switch","onCheckedChange","setChecked","alignStretch","gapXxl","gapXxxl","xxl","xxxl","stretch","Stack","alignBaseline","justifyStart","justifyCenter","justifyEnd","justifyBetween","baseline","justifyMap","between","Inline","justify","Cluster","col1","col2","col3","col4","col5","col6","autoFit","columnsMap","Grid","columnStyle","maxSm","maxMd","maxLg","padSm","padMd","padLg","headerPadding","mainPadding","maxWidthMap","paddingMap","PageShell","maxWidth","padding","mw","pad","useContainerQuery","compactBelow","spaciousAbove","setSize","rafId","cancelAnimationFrame","requestAnimationFrame"],"mappings":"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","x_google_ignoreList":[0,1,2,3,94]}
|