@duro-app/ui 3.4.2 → 3.6.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/{Table-P-UHkEqJ.js → Table-B4F8XyqK.js} +222 -216
- package/dist/{Table-P-UHkEqJ.js.map → Table-B4F8XyqK.js.map} +1 -1
- package/dist/components/Icon/Icon.d.ts +1 -1
- package/dist/components/Icon/Icon.d.ts.map +1 -1
- package/dist/components/InputGroup/InputGroup.stories.d.ts +1 -0
- package/dist/components/InputGroup/InputGroup.stories.d.ts.map +1 -1
- package/dist/components/Tree/Tree.d.ts +35 -0
- package/dist/components/Tree/Tree.d.ts.map +1 -0
- package/dist/components/Tree/Tree.meta.d.ts +3 -0
- package/dist/components/Tree/Tree.meta.d.ts.map +1 -0
- package/dist/components/Tree/Tree.stories.d.ts +9 -0
- package/dist/components/Tree/Tree.stories.d.ts.map +1 -0
- package/dist/components/Tree/TreeContext.d.ts +18 -0
- package/dist/components/Tree/TreeContext.d.ts.map +1 -0
- package/dist/components/Tree/styles.css.d.ts +84 -0
- package/dist/components/Tree/styles.css.d.ts.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2525 -2215
- package/dist/index.js.map +1 -1
- package/dist/table.js +1 -1
- package/package.json +2 -2
- package/src/components/Icon/Icon.tsx +20 -0
- package/src/components/InputGroup/InputGroup.stories.tsx +21 -0
- package/src/components/Tree/Tree.meta.ts +41 -0
- package/src/components/Tree/Tree.stories.tsx +151 -0
- package/src/components/Tree/Tree.tsx +304 -0
- package/src/components/Tree/TreeContext.ts +26 -0
- package/src/components/Tree/styles.css.ts +96 -0
- package/src/index.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table-P-UHkEqJ.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/Menu/styles.css.ts","../src/components/Menu/MenuContext.ts","../src/components/Menu/useMenuRoot.ts","../src/components/Menu/Menu.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/Table.tsx"],"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 {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","/**\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 // Positioning context for the scroll-affordance edge fades, which sit on\n // top of the scroll port (not inside it, so they don't scroll away).\n scrollFrame: {\n position: 'relative',\n },\n // A soft fade pinned to a scroll edge that hints \"there's more this way\".\n // It fades the content into the surface colour, so it reads in any theme.\n // Toggled by opacity from JS scroll position; pointer-events off so it\n // never eats clicks. Sits just inside the rounded frame border.\n edgeFade: {\n position: 'absolute',\n top: 1,\n bottom: 1,\n width: spacing.xl,\n pointerEvents: 'none',\n opacity: 0,\n transitionProperty: 'opacity',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n edgeFadeLeft: {\n left: 1,\n borderTopLeftRadius: radii.md,\n borderBottomLeftRadius: radii.md,\n backgroundImage: `linear-gradient(to left, transparent, ${colors.bgCard})`,\n },\n edgeFadeRight: {\n right: 1,\n borderTopRightRadius: radii.md,\n borderBottomRightRadius: radii.md,\n backgroundImage: `linear-gradient(to right, transparent, ${colors.bgCard})`,\n },\n edgeFadeVisible: {\n opacity: 1,\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 {\n type ReactElement,\n type ReactNode,\n type MutableRefObject,\n createContext,\n useContext,\n useEffect,\n useRef,\n useState,\n Children,\n isValidElement,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\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\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// --- ScrollFrame ---\n//\n// Wraps the grid in the horizontal-scroll port and paints a soft fade at\n// whichever edge still has hidden columns, so a scrollable table advertises\n// that there's more to see (and stops advertising once you reach the end).\n// This is the ONLY JS the responsive Table uses, and it's purely cosmetic —\n// it reads scroll position and toggles fade opacity; it never changes layout,\n// so none of the flicker/oscillation risk of the old auto-stacking applies.\nfunction ScrollFrame({children}: {children: ReactNode}) {\n const scrollRef = useRef<HTMLDivElement>(null)\n const [edges, setEdges] = useState({start: false, end: false})\n\n useEffect(() => {\n const el = scrollRef.current\n if (!el) return\n const update = () => {\n const overflowing = el.scrollWidth - el.clientWidth > 1\n setEdges({\n start: overflowing && el.scrollLeft > 1,\n end: overflowing && el.scrollLeft + el.clientWidth < el.scrollWidth - 1,\n })\n }\n update()\n el.addEventListener('scroll', update, {passive: true})\n const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(update) : null\n ro?.observe(el)\n return () => {\n el.removeEventListener('scroll', update)\n ro?.disconnect()\n }\n }, [])\n\n return (\n <html.div style={styles.scrollFrame}>\n <html.div ref={scrollRef} style={styles.scrollX}>\n {children}\n </html.div>\n <html.div\n aria-hidden\n style={[styles.edgeFade, styles.edgeFadeLeft, edges.start && styles.edgeFadeVisible]}\n />\n <html.div\n aria-hidden\n style={[styles.edgeFade, styles.edgeFadeRight, edges.end && styles.edgeFadeVisible]}\n />\n </html.div>\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 ? <ScrollFrame>{grid}</ScrollFrame> : 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 '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 'aria-label'?: string\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\n/**\n * The presentational table. Deliberately free of any TanStack import: this is\n * reachable from the package root, and a static import here would put\n * `@tanstack/react-table` in the module graph of every consumer, including the\n * ones that never render a data table. A bundler has to RESOLVE an import\n * before it can tree-shake the code behind it, so that made an optional\n * feature's peer dependency mandatory for everyone.\n *\n * The TanStack-aware parts — Pagination, SortIndicator, ColumnFilter,\n * SortChip, FromTanstack, useDataTable, VirtualTable — live behind\n * `@duro-app/ui/table`, which re-exports this object with them attached. So\n * `Table.Root` is identical either way; only the import specifier differs.\n */\nexport const TableCore = {\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}\n\nexport const Table = TableCore\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","root","$$css","trigger","backdrop","popup","popupEnd","item","itemHighlighted","linkItem","MenuContext","createContext","useMenu","ctx","useContext","Error","useMenuRoot","$","_c","open","setOpen","useState","highlightedId","setHighlightedId","menuId","useId","rootRef","useRef","triggerRef","t0","Symbol","for","Map","itemsRef","t1","orderRef","needsInitialHighlightRef","t2","current","focus","close","t3","prev","toggle","t4","t5","order","length","useEffect","t6","id","element","set","map","ids","keys","sort","b","elA","get","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","delete","filter","registerItem","t7","t8","handleKeyDown","e","order_0","bb54","key","preventDefault","prev_2","idx_0","indexOf","idx","prev_1","items","prev_0","click","addEventListener","removeEventListener","t9","Root","children","_rsdMerge","_rsdDefaultStyles","Trigger","localRef","undefined","Popup","align","jsx","Item","onClick","ref","isHighlighted","el","handleClick","LinkItem","href","Menu","loggedMessages","errorMsg","msg","strictAttributeSet","isPropAllowed","validateStrictProps","props","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","code","del","em","fieldset","footer","h1","h2","h3","h4","h5","h6","hr","img","ins","kbd","li","mark","ol","optgroup","option","pre","s","section","select","strong","sub","sup","u","ul","html","breakpointsPx","xs","sm","md","lg","xl","container","rootContainer","clickableRow","rootResponsive","body","row","bodyRow","headerCell","cell","cellValue","cellLabel","cellActions","cellSm","cellMd","stripedEven","borderedCell","borderedCellLast","sortChip","scrollX","scrollFrame","edgeFade","edgeFadeLeft","edgeFadeRight","edgeFadeVisible","gridColumns","template","gridColumnsResponsive","compactTemplate","TableContext","useTable","HeaderContext","_IS_PROD","process","env","NODE_ENV","_devWarned","Set","devWarnOnce","message","has","add","console","warn","Container","extractText","node","out","Children","forEach","child","String","unwrapElementType","t","next","type","render","extractColumnMeta","minColumnWidth","widths","compactWidths","labels","walk","isValidElement","unwrappedType","displayName","name","HeaderCell","width","push","compactWidth","explicit","fallback","trim","join","ScrollFrame","scrollRef","start","end","edges","setEdges","update","overflowing","scrollWidth","clientWidth","scrollLeft","passive","ro","ResizeObserver","observe","disconnect","jsxs","variant","responsive","pagination","inferredTemplateRef","grid","Fragment","Header","Body","T0","T1","childArray","toArray","Provider","index","RowIndexContext","INTERACTIVE_SELECTOR","Row","ariaLabel","isHeader","rowIndex","isEvenRow","isClickable","target","Element","closest","e_0","CellIndexContext","total","isLast","Cell","isActions","TableCore","Table"],"mappings":"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","x_google_ignoreList":[0,1,2,3,8]}
|
|
1
|
+
{"version":3,"file":"Table-B4F8XyqK.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/Menu/styles.css.ts","../src/components/Menu/MenuContext.ts","../src/components/Menu/useMenuRoot.ts","../src/components/Menu/Menu.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/Table.tsx"],"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 {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","/**\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 // Positioning context for the scroll-affordance edge fades, which sit on\n // top of the scroll port (not inside it, so they don't scroll away).\n scrollFrame: {\n position: 'relative',\n },\n // A soft fade pinned to a scroll edge that hints \"there's more this way\".\n // It fades the content into the surface colour, so it reads in any theme.\n // Toggled by opacity from JS scroll position; pointer-events off so it\n // never eats clicks. Sits just inside the rounded frame border.\n edgeFade: {\n position: 'absolute',\n top: 1,\n bottom: 1,\n width: spacing.xl,\n pointerEvents: 'none',\n opacity: 0,\n transitionProperty: 'opacity',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n edgeFadeLeft: {\n left: 1,\n borderTopLeftRadius: radii.md,\n borderBottomLeftRadius: radii.md,\n backgroundImage: `linear-gradient(to left, transparent, ${colors.bgCard})`,\n },\n edgeFadeRight: {\n right: 1,\n borderTopRightRadius: radii.md,\n borderBottomRightRadius: radii.md,\n backgroundImage: `linear-gradient(to right, transparent, ${colors.bgCard})`,\n },\n edgeFadeVisible: {\n opacity: 1,\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 {\n type ReactElement,\n type ReactNode,\n type MutableRefObject,\n createContext,\n useContext,\n useEffect,\n useRef,\n useState,\n Children,\n isValidElement,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\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\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// --- ScrollFrame ---\n//\n// Wraps the grid in the horizontal-scroll port and paints a soft fade at\n// whichever edge still has hidden columns, so a scrollable table advertises\n// that there's more to see (and stops advertising once you reach the end).\n// This is the ONLY JS the responsive Table uses, and it's purely cosmetic —\n// it reads scroll position and toggles fade opacity; it never changes layout,\n// so none of the flicker/oscillation risk of the old auto-stacking applies.\nfunction ScrollFrame({children}: {children: ReactNode}) {\n const scrollRef = useRef<HTMLDivElement>(null)\n const [edges, setEdges] = useState({start: false, end: false})\n\n useEffect(() => {\n const el = scrollRef.current\n if (!el) return\n const update = () => {\n const overflowing = el.scrollWidth - el.clientWidth > 1\n setEdges({\n start: overflowing && el.scrollLeft > 1,\n end: overflowing && el.scrollLeft + el.clientWidth < el.scrollWidth - 1,\n })\n }\n update()\n el.addEventListener('scroll', update, {passive: true})\n const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(update) : null\n ro?.observe(el)\n return () => {\n el.removeEventListener('scroll', update)\n ro?.disconnect()\n }\n }, [])\n\n return (\n <html.div style={styles.scrollFrame}>\n <html.div ref={scrollRef} style={styles.scrollX}>\n {children}\n </html.div>\n <html.div\n aria-hidden\n style={[styles.edgeFade, styles.edgeFadeLeft, edges.start && styles.edgeFadeVisible]}\n />\n <html.div\n aria-hidden\n style={[styles.edgeFade, styles.edgeFadeRight, edges.end && styles.edgeFadeVisible]}\n />\n </html.div>\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 ? <ScrollFrame>{grid}</ScrollFrame> : 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 '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 'aria-label'?: string\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\n/**\n * The presentational table. Deliberately free of any TanStack import: this is\n * reachable from the package root, and a static import here would put\n * `@tanstack/react-table` in the module graph of every consumer, including the\n * ones that never render a data table. A bundler has to RESOLVE an import\n * before it can tree-shake the code behind it, so that made an optional\n * feature's peer dependency mandatory for everyone.\n *\n * The TanStack-aware parts — Pagination, SortIndicator, ColumnFilter,\n * SortChip, FromTanstack, useDataTable, VirtualTable — live behind\n * `@duro-app/ui/table`, which re-exports this object with them attached. So\n * `Table.Root` is identical either way; only the import specifier differs.\n */\nexport const TableCore = {\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}\n\nexport const Table = TableCore\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","li","main","nav","p","span","textarea","ul","defaultStyles","ReactSharedInternals","require$$0","reactCompilerRuntime_production","size","reactCompilerRuntime_development","dispatcher","compilerRuntimeModule","require$$1","root","$$css","trigger","backdrop","popup","popupEnd","item","itemHighlighted","linkItem","MenuContext","createContext","useMenu","ctx","useContext","Error","useMenuRoot","$","_c","open","setOpen","useState","highlightedId","setHighlightedId","menuId","useId","rootRef","useRef","triggerRef","t0","Symbol","for","Map","itemsRef","t1","orderRef","needsInitialHighlightRef","t2","current","focus","close","t3","prev","toggle","t4","t5","order","length","useEffect","t6","id","element","set","map","ids","keys","sort","b","elA","get","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","delete","filter","registerItem","t7","t8","handleKeyDown","e","order_0","bb54","key","preventDefault","prev_2","idx_0","indexOf","idx","prev_1","items","prev_0","click","addEventListener","removeEventListener","t9","Root","children","_rsdMerge","_rsdDefaultStyles","Trigger","localRef","undefined","Popup","align","jsx","Item","onClick","ref","isHighlighted","el","handleClick","LinkItem","href","Menu","loggedMessages","errorMsg","msg","strictAttributeSet","isPropAllowed","validateStrictProps","props","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","code","del","em","fieldset","footer","h1","h2","h3","h4","h5","h6","hr","img","ins","kbd","mark","ol","optgroup","option","pre","s","section","select","strong","sub","sup","u","html","breakpointsPx","xs","sm","md","lg","xl","container","rootContainer","clickableRow","rootResponsive","body","row","bodyRow","headerCell","cell","cellValue","cellLabel","cellActions","cellSm","cellMd","stripedEven","borderedCell","borderedCellLast","sortChip","scrollX","scrollFrame","edgeFade","edgeFadeLeft","edgeFadeRight","edgeFadeVisible","gridColumns","template","gridColumnsResponsive","compactTemplate","TableContext","useTable","HeaderContext","_IS_PROD","process","env","NODE_ENV","_devWarned","Set","devWarnOnce","message","has","add","console","warn","Container","extractText","node","out","Children","forEach","child","String","unwrapElementType","t","next","type","render","extractColumnMeta","minColumnWidth","widths","compactWidths","labels","walk","isValidElement","unwrappedType","displayName","name","HeaderCell","width","push","compactWidth","explicit","fallback","trim","join","ScrollFrame","scrollRef","start","end","edges","setEdges","update","overflowing","scrollWidth","clientWidth","scrollLeft","passive","ro","ResizeObserver","observe","disconnect","jsxs","variant","responsive","pagination","inferredTemplateRef","grid","Fragment","Header","Body","T0","T1","childArray","toArray","Provider","index","RowIndexContext","INTERACTIVE_SELECTOR","Row","ariaLabel","isHeader","rowIndex","isEvenRow","isClickable","target","Element","closest","e_0","CellIndexContext","total","isLast","Cell","isActions","TableCore","Table"],"mappings":"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","x_google_ignoreList":[0,1,2,3,8]}
|