twico-ui 0.1.0 → 1.0.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../components/navigation/Accordion.jsx","../components/feedback/Alert.jsx","../components/data-display/Avatar.jsx","../components/overlay/Menu.jsx","../components/data-display/AvatarMenu.jsx","../components/data-display/Badge.jsx","../components/breadcrumb/Breadcrumb.jsx","../components/buttons/Button.jsx","../components/data-display/Card.jsx","../components/carousel/Carousel.jsx","../components/chart/Chart.jsx","../components/toggles/Checkbox.jsx","../components/color-picker/ColorPicker.jsx","../components/selects/Combobox.jsx","../components/command-palette/CommandPalette.jsx","../components/inputs/Currency.jsx","../components/selects/Select.jsx","../components/inputs/CurrencyField.jsx","../components/inputs/Input.jsx","../components/selects/MultiSelect.jsx","../components/table/Pagination.jsx","../components/datatable/Datatable.jsx","../components/datepicker/DatePicker.jsx","../components/date-range/DateRangePicker.jsx","../components/overlay/Dialog.jsx","../components/divider/Divider.jsx","../components/drawer/Drawer.jsx","../components/empty-state/EmptyState.jsx","../components/file-upload/FileUpload.jsx","../components/buttons/IconButton.jsx","../components/kanban/Kanban.jsx","../components/list/List.jsx","../components/navbar/Navbar.jsx","../components/popover/Popover.jsx","../components/feedback/Progress.jsx","../components/toggles/Radio.jsx","../components/rating/Rating.jsx","../components/sidebar/Sidebar.jsx","../components/feedback/Skeleton.jsx","../components/slider/Slider.jsx","../components/feedback/Spinner.jsx","../components/stat/Stat.jsx","../components/stepper/Stepper.jsx","../components/toggles/Switch.jsx","../components/table/Table.jsx","../components/navigation/Tabs.jsx","../components/data-display/Tag.jsx","../components/inputs/Textarea.jsx","../components/timeline/Timeline.jsx","../components/feedback/Toast.jsx","../components/overlay/Tooltip.jsx","../components/tree-view/TreeView.jsx"],"names":["React","jsx","jsxs","createPortal","Fragment","Tag","size","toOpt","normalizeGroups","ensureVisible","matches","text","aggOf","MONTHS","DOW"],"mappings":"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","file":"index.cjs","sourcesContent":["import React from \"react\";\r\n\r\nconst ACCORDION_CSS = `\r\n.twc-accordion { display: flex; flex-direction: column; font-family: var(--font-sans);\r\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg); overflow: hidden; background: var(--color-surface); }\r\n.twc-accordion__item { border-bottom: var(--border-thin) solid var(--color-divider); }\r\n.twc-accordion__item:last-child { border-bottom: none; }\r\n.twc-accordion__trigger {\r\n display: flex; align-items: center; gap: var(--space-3); width: 100%;\r\n padding: var(--space-4); border: none; background: transparent; cursor: pointer;\r\n font-family: inherit; font-size: var(--text-sm); font-weight: var(--font-semibold);\r\n color: var(--color-text); text-align: left;\r\n transition: background-color var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-accordion__trigger:hover { background: var(--color-surface-sunken); }\r\n.twc-accordion__trigger:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-accordion__label { flex: 1; }\r\n.twc-accordion__chevron { flex: none; color: var(--color-text-subtle); transition: transform var(--duration-base) var(--ease-spring); }\r\n.twc-accordion__chevron svg { width: 18px; height: 18px; display: block; }\r\n.twc-accordion__trigger[data-open=\"true\"] .twc-accordion__chevron { transform: rotate(180deg); color: var(--color-primary); }\r\n.twc-accordion__panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--duration-base) var(--ease-standard); }\r\n.twc-accordion__panel[data-open=\"true\"] { grid-template-rows: 1fr; }\r\n.twc-accordion__panel-inner { overflow: hidden; }\r\n.twc-accordion__content { padding: 0 var(--space-4) var(--space-4); font-size: var(--text-sm); color: var(--color-text-muted); line-height: var(--leading-normal); }\r\n`;\r\n\r\nexport function Accordion({\r\n items,\r\n multiple = false,\r\n defaultOpen = [],\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-accordion-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-accordion-styles\";\r\n el.textContent = ACCORDION_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [open, setOpen] = React.useState(new Set(defaultOpen));\r\n\r\n function toggle(val) {\r\n setOpen((prev) => {\r\n const next = new Set(prev);\r\n if (next.has(val)) next.delete(val);\r\n else { if (!multiple) next.clear(); next.add(val); }\r\n return next;\r\n });\r\n }\r\n\r\n return (\r\n <div className={`twc-accordion ${className}`} {...rest}>\r\n {items.map((it) => {\r\n const isOpen = open.has(it.value);\r\n return (\r\n <div className=\"twc-accordion__item\" key={it.value}>\r\n <button className=\"twc-accordion__trigger\" data-open={isOpen || undefined} aria-expanded={isOpen} onClick={() => toggle(it.value)}>\r\n {it.icon}\r\n <span className=\"twc-accordion__label\">{it.label}</span>\r\n <span className=\"twc-accordion__chevron\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>\r\n </span>\r\n </button>\r\n <div className=\"twc-accordion__panel\" data-open={isOpen || undefined}>\r\n <div className=\"twc-accordion__panel-inner\">\r\n <div className=\"twc-accordion__content\">{it.content}</div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst ALERT_CSS = `\r\n.twc-alert {\r\n display: flex; gap: var(--space-3); align-items: flex-start;\r\n padding: var(--space-3) var(--space-4);\r\n border-radius: var(--radius-lg); font-family: var(--font-sans);\r\n border: var(--border-thin) solid transparent;\r\n animation: twico-slide-down var(--duration-base) var(--ease-out);\r\n}\r\n.twc-alert[data-tone=\"info\"] { background: var(--color-info-subtle); color: var(--color-info-subtle-fg); border-color: color-mix(in srgb, var(--color-info) 30%, transparent); }\r\n.twc-alert[data-tone=\"success\"] { background: var(--color-success-subtle); color: var(--color-success-subtle-fg); border-color: color-mix(in srgb, var(--color-success) 30%, transparent); }\r\n.twc-alert[data-tone=\"warning\"] { background: var(--color-warning-subtle); color: var(--color-warning-subtle-fg); border-color: color-mix(in srgb, var(--color-warning) 30%, transparent); }\r\n.twc-alert[data-tone=\"danger\"] { background: var(--color-danger-subtle); color: var(--color-danger-subtle-fg); border-color: color-mix(in srgb, var(--color-danger) 30%, transparent); }\r\n.twc-alert__icon { flex: none; margin-top: 1px; }\r\n.twc-alert__icon svg { width: 20px; height: 20px; }\r\n.twc-alert__body { flex: 1; min-width: 0; }\r\n.twc-alert__title { font-weight: var(--font-bold); font-size: var(--text-sm); margin-bottom: 2px; }\r\n.twc-alert__desc { font-size: var(--text-sm); color: var(--color-text-muted); line-height: var(--leading-snug); }\r\n.twc-alert__close {\r\n flex: none; display: inline-grid; place-items: center; width: 24px; height: 24px;\r\n border: none; background: transparent; color: currentColor; opacity: 0.6; cursor: pointer;\r\n border-radius: var(--radius-sm); transition: opacity var(--duration-fast), background-color var(--duration-fast);\r\n}\r\n.twc-alert__close:hover { opacity: 1; background: color-mix(in srgb, currentColor 12%, transparent); }\r\n.twc-alert__close svg { width: 15px; height: 15px; }\r\n`;\r\n\r\nconst ICONS = {\r\n info: \"M12 16v-4M12 8h.01\",\r\n success: \"m9 12 2 2 4-4\",\r\n warning: \"M12 9v4M12 17h.01\",\r\n danger: \"M15 9l-6 6M9 9l6 6\",\r\n};\r\n\r\nexport function Alert({\r\n children,\r\n tone = \"info\",\r\n title,\r\n icon,\r\n onClose,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-alert-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-alert-styles\";\r\n el.textContent = ALERT_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n return (\r\n <div className={`twc-alert ${className}`} data-tone={tone} role=\"alert\" {...rest}>\r\n <span className=\"twc-alert__icon\" aria-hidden=\"true\">\r\n {icon || (\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <path d={ICONS[tone]} />\r\n </svg>\r\n )}\r\n </span>\r\n <div className=\"twc-alert__body\">\r\n {title ? <div className=\"twc-alert__title\">{title}</div> : null}\r\n {children ? <div className=\"twc-alert__desc\">{children}</div> : null}\r\n </div>\r\n {onClose ? (\r\n <button className=\"twc-alert__close\" onClick={onClose} aria-label=\"Dismiss\" type=\"button\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\r\n </button>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst AVATAR_CSS = `\r\n.twc-avatar {\r\n --_sz: 40px;\r\n position: relative; flex: none; display: inline-grid; place-items: center;\r\n width: var(--_sz); height: var(--_sz);\r\n border-radius: var(--radius-full);\r\n background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg);\r\n font-family: var(--font-sans); font-weight: var(--font-semibold);\r\n font-size: calc(var(--_sz) * 0.4); line-height: 1;\r\n overflow: visible; user-select: none;\r\n}\r\n.twc-avatar[data-size=\"xs\"] { --_sz: 24px; }\r\n.twc-avatar[data-size=\"sm\"] { --_sz: 32px; }\r\n.twc-avatar[data-size=\"lg\"] { --_sz: 56px; }\r\n.twc-avatar[data-size=\"xl\"] { --_sz: 72px; }\r\n.twc-avatar__img { width: 100%; height: 100%; border-radius: var(--radius-full); object-fit: cover; }\r\n.twc-avatar[data-square=\"true\"], .twc-avatar[data-square=\"true\"] .twc-avatar__img { border-radius: var(--radius-md); }\r\n.twc-avatar__ring { box-shadow: 0 0 0 2px var(--color-surface), 0 0 0 4px var(--color-primary); }\r\n.twc-avatar__status {\r\n position: absolute; right: 0; bottom: 0;\r\n width: 28%; height: 28%; min-width: 8px; min-height: 8px;\r\n border-radius: var(--radius-full); border: 2px solid var(--color-surface);\r\n}\r\n.twc-avatar__status[data-status=\"online\"] { background: var(--color-success); }\r\n.twc-avatar__status[data-status=\"busy\"] { background: var(--color-danger); }\r\n.twc-avatar__status[data-status=\"away\"] { background: var(--color-warning); }\r\n.twc-avatar__status[data-status=\"offline\"] { background: var(--color-text-subtle); }\r\n`;\r\n\r\nfunction initials(name) {\r\n if (!name) return \"?\";\r\n const parts = name.trim().split(/\\s+/);\r\n return (parts[0][0] + (parts[1] ? parts[1][0] : \"\")).toUpperCase();\r\n}\r\n\r\nexport function Avatar({\r\n src,\r\n name,\r\n size = \"md\",\r\n square = false,\r\n status,\r\n ring = false,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-avatar-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-avatar-styles\";\r\n el.textContent = AVATAR_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [errored, setErrored] = React.useState(false);\r\n const showImg = src && !errored;\r\n\r\n return (\r\n <span\r\n className={`twc-avatar ${ring ? \"twc-avatar__ring\" : \"\"} ${className}`}\r\n data-size={size}\r\n data-square={square || undefined}\r\n role=\"img\"\r\n aria-label={name || \"avatar\"}\r\n {...rest}\r\n >\r\n {showImg\r\n ? <img className=\"twc-avatar__img\" src={src} alt={name || \"\"} onError={() => setErrored(true)} />\r\n : initials(name)}\r\n {status ? <span className=\"twc-avatar__status\" data-status={status} /> : null}\r\n </span>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nconst MENU_CSS = `\r\n.twc-menu-wrap { position: relative; display: inline-flex; }\r\n.twc-menu {\r\n position: fixed; z-index: var(--z-dropdown); min-width: 200px;\r\n padding: var(--space-1-5); background: var(--color-surface-raised);\r\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg);\r\n box-shadow: var(--shadow-lg); font-family: var(--font-sans);\r\n transform-origin: top; animation: twico-scale-in var(--duration-fast) var(--ease-spring);\r\n}\r\n.twc-menu[data-flip=\"true\"] { transform-origin: bottom; }\r\n.twc-menu__header { display: flex; align-items: center; gap: var(--space-2-5); padding: 8px 10px 10px; margin-bottom: var(--space-1-5); border-bottom: var(--border-thin) solid var(--color-divider); }\r\n.twc-menu__header-main { min-width: 0; }\r\n.twc-menu__header-title { font-size: var(--text-sm); font-weight: var(--font-bold); color: var(--color-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\r\n.twc-menu__header-sub { font-size: var(--text-xs); color: var(--color-text-subtle); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\r\n.twc-menu__label { padding: 6px 10px 4px; font-size: var(--text-xs); font-weight: var(--font-semibold); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); }\r\n.twc-menu__sep { height: 1px; background: var(--color-divider); margin: var(--space-1-5) 0; }\r\n.twc-menu__item {\r\n display: flex; align-items: center; gap: var(--space-2-5); width: 100%;\r\n padding: 8px 10px; border: none; background: transparent; cursor: pointer;\r\n font-family: inherit; font-size: var(--text-sm); font-weight: var(--font-medium);\r\n color: var(--color-text); text-align: left; border-radius: var(--radius-md);\r\n transition: background-color var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-menu__item:hover:not(:disabled), .twc-menu__item[data-active=\"true\"]:not(:disabled) { background: var(--color-surface-sunken); }\r\n.twc-menu__item:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-menu__item:disabled { opacity: 0.45; cursor: not-allowed; }\r\n.twc-menu__item[data-danger=\"true\"] { color: var(--color-danger-subtle-fg); }\r\n.twc-menu__item[data-danger=\"true\"]:hover:not(:disabled), .twc-menu__item[data-danger=\"true\"][data-active=\"true\"]:not(:disabled) { background: var(--color-danger-subtle); }\r\n.twc-menu__item svg { width: 16px; height: 16px; flex: none; }\r\n.twc-menu__item-label { flex: 1 1 auto; min-width: 0; }\r\n.twc-menu__shortcut { margin-left: auto; padding-left: var(--space-3); font-size: var(--text-xs); color: var(--color-text-subtle); font-family: var(--font-mono); }\r\n`;\r\n\r\nexport function Menu({\r\n trigger,\r\n items,\r\n align = \"start\",\r\n header,\r\n width,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-menu-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-menu-styles\";\r\n el.textContent = MENU_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [open, setOpen] = React.useState(false);\r\n const [pos, setPos] = React.useState(null);\r\n const [active, setActive] = React.useState(-1);\r\n const wrapRef = React.useRef(null);\r\n const menuRef = React.useRef(null);\r\n const menuId = React.useId();\r\n const RD = { createPortal: (typeof createPortal === \"function\" ? createPortal : (typeof window !== \"undefined\" && window.ReactDOM && window.ReactDOM.createPortal)) };\r\n\r\n const interactiveIdx = items.map((it, i) => (!it.separator && !it.heading ? i : -1)).filter((i) => i >= 0);\r\n\r\n const place = React.useCallback(() => {\r\n const t = wrapRef.current; if (!t) return;\r\n const r = t.getBoundingClientRect();\r\n const w = width || Math.max(200, r.width);\r\n const gap = 6, M = 8, vw = window.innerWidth, vh = window.innerHeight;\r\n const estH = menuRef.current ? menuRef.current.offsetHeight : 220;\r\n const flip = vh - r.bottom < estH + gap && r.top > vh - r.bottom;\r\n const top = flip ? undefined : r.bottom + gap;\r\n const bottom = flip ? vh - r.top + gap : undefined;\r\n let left = align === \"end\" ? r.right - w : r.left;\r\n left = Math.max(M, Math.min(left, vw - w - M));\r\n setPos({ top, bottom, left, width: w, flip });\r\n }, [align, width]);\r\n\r\n React.useEffect(() => {\r\n if (!open) return;\r\n place();\r\n const onMove = () => place();\r\n const onDown = (e) => {\r\n if (wrapRef.current?.contains(e.target)) return;\r\n if (menuRef.current?.contains(e.target)) return;\r\n setOpen(false);\r\n };\r\n window.addEventListener(\"scroll\", onMove, true);\r\n window.addEventListener(\"resize\", onMove);\r\n document.addEventListener(\"mousedown\", onDown);\r\n return () => {\r\n window.removeEventListener(\"scroll\", onMove, true);\r\n window.removeEventListener(\"resize\", onMove);\r\n document.removeEventListener(\"mousedown\", onDown);\r\n };\r\n }, [open, place]);\r\n\r\n const toggle = () => { setOpen((o) => !o); setActive(-1); };\r\n\r\n function onKeyDown(e) {\r\n if (!open) {\r\n if (e.key === \"Enter\" || e.key === \" \" || e.key === \"ArrowDown\") { e.preventDefault(); setOpen(true); setActive(-1); }\r\n return;\r\n }\r\n if (e.key === \"Escape\") { e.preventDefault(); setOpen(false); return; }\r\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n const list = interactiveIdx;\r\n const curPos = list.indexOf(active);\r\n let next = e.key === \"ArrowDown\" ? curPos + 1 : curPos - 1;\r\n if (next < 0) next = list.length - 1; if (next >= list.length) next = 0;\r\n setActive(list[next]);\r\n } else if (e.key === \"Enter\" && active >= 0) {\r\n e.preventDefault();\r\n const it = items[active];\r\n if (it && !it.disabled) { it.onClick?.(); setOpen(false); }\r\n }\r\n }\r\n\r\n const menu = open && pos ? (\r\n <div className=\"twc-menu\" id={menuId} ref={menuRef} data-align={align} data-flip={pos.flip || undefined} role=\"menu\"\r\n style={{ top: pos.top, bottom: pos.bottom, left: pos.left, minWidth: pos.width }}>\r\n {header ? <div className=\"twc-menu__header\">{header}</div> : null}\r\n {items.map((it, i) => {\r\n if (it.separator) return <div key={`s${i}`} className=\"twc-menu__sep\" role=\"separator\" />;\r\n if (it.label && it.heading) return <div key={`h${i}`} className=\"twc-menu__label\">{it.label}</div>;\r\n return (\r\n <button\r\n key={i}\r\n className=\"twc-menu__item\"\r\n role=\"menuitem\"\r\n data-danger={it.danger || undefined}\r\n data-active={active === i || undefined}\r\n disabled={it.disabled}\r\n onMouseEnter={() => setActive(i)}\r\n onClick={() => { it.onClick?.(); setOpen(false); }}\r\n >\r\n {it.icon}\r\n <span className=\"twc-menu__item-label\">{it.label}</span>\r\n {it.shortcut ? <span className=\"twc-menu__shortcut\">{it.shortcut}</span> : null}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n ) : null;\r\n\r\n // Make the trigger a proper, focusable menu button that announces its popup +\r\n // open state. Clone a passed element (so a <button>/IconButton keeps its own\r\n // semantics) or wrap a non-element trigger in a focusable role=\"button\" span.\r\n const triggerEl = React.isValidElement(trigger)\r\n ? React.cloneElement(trigger, {\r\n onClick: (e) => { trigger.props.onClick?.(e); toggle(); },\r\n tabIndex: trigger.props.tabIndex ?? 0,\r\n \"aria-haspopup\": \"menu\",\r\n \"aria-expanded\": open,\r\n \"aria-controls\": open ? menuId : undefined,\r\n })\r\n : (\r\n <span role=\"button\" tabIndex={0} aria-haspopup=\"menu\" aria-expanded={open}\r\n aria-controls={open ? menuId : undefined} onClick={toggle}>\r\n {trigger}\r\n </span>\r\n );\r\n\r\n return (\r\n <span className={`twc-menu-wrap ${className}`} ref={wrapRef} onKeyDown={onKeyDown} {...rest}>\r\n {triggerEl}\r\n {menu && RD && RD.createPortal ? RD.createPortal(menu, document.body) : menu}\r\n </span>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Avatar } from \"./Avatar\";\r\nimport { Menu } from \"../overlay/Menu\";\r\n\r\nconst AVATARMENU_CSS = `\r\n.twc-avatar-menu { display: inline-flex; align-items: center; gap: var(--space-2); padding: 3px 4px 3px 3px; border: none; background: transparent;\r\n cursor: pointer; border-radius: var(--radius-full); font-family: var(--font-sans); color: var(--color-text);\r\n transition: background-color var(--duration-fast) var(--ease-standard); }\r\n.twc-avatar-menu:hover { background: var(--color-surface-sunken); }\r\n.twc-avatar-menu:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-avatar-menu__text { display: flex; flex-direction: column; align-items: flex-start; gap: 0; min-width: 0; line-height: 1.2; }\r\n.twc-avatar-menu__name { font-size: var(--text-sm); font-weight: var(--font-semibold); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 140px; }\r\n.twc-avatar-menu__sub { font-size: var(--text-xs); color: var(--color-text-subtle); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 140px; }\r\n.twc-avatar-menu__chev { color: var(--color-text-subtle); display: inline-flex; flex: none; margin-right: 2px; transition: transform var(--duration-base) var(--ease-spring); }\r\n.twc-avatar-menu__chev svg { width: 15px; height: 15px; }\r\n`;\r\n\r\nexport function AvatarMenu({\r\n name,\r\n src,\r\n email,\r\n subtitle,\r\n status,\r\n size = \"sm\",\r\n items,\r\n showName = false,\r\n showChevron,\r\n align = \"end\",\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-avatar-menu-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-avatar-menu-styles\";\r\n el.textContent = AVATARMENU_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const sub = subtitle ?? email;\r\n const showChev = showChevron ?? showName;\r\n\r\n const header = (\r\n <>\r\n <Avatar name={name} src={src} size=\"md\" status={status} />\r\n <span className=\"twc-menu__header-main\">\r\n <span className=\"twc-menu__header-title\">{name}</span>\r\n {sub ? <span className=\"twc-menu__header-sub\">{sub}</span> : null}\r\n </span>\r\n </>\r\n );\r\n\r\n const trigger = (\r\n <span className=\"twc-avatar-menu\" role=\"button\" tabIndex={0} aria-haspopup=\"menu\" aria-label={`${name || \"Account\"} menu`}>\r\n <Avatar name={name} src={src} size={size} status={status} />\r\n {showName ? (\r\n <span className=\"twc-avatar-menu__text\">\r\n <span className=\"twc-avatar-menu__name\">{name}</span>\r\n {sub ? <span className=\"twc-avatar-menu__sub\">{sub}</span> : null}\r\n </span>\r\n ) : null}\r\n {showChev ? (\r\n <span className=\"twc-avatar-menu__chev\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>\r\n </span>\r\n ) : null}\r\n </span>\r\n );\r\n\r\n return <Menu className={className} trigger={trigger} items={items} header={header} align={align} width={240} {...rest} />;\r\n}\r\n","import React from \"react\";\r\n\r\nconst BADGE_CSS = `\r\n.twc-badge {\r\n display: inline-flex; align-items: center; gap: 5px;\r\n padding: 2px 9px; height: 22px;\r\n font-family: var(--font-sans); font-size: var(--text-xs); font-weight: var(--font-semibold);\r\n line-height: 1; letter-spacing: 0.01em; border-radius: var(--radius-full);\r\n border: var(--border-thin) solid transparent; white-space: nowrap;\r\n}\r\n.twc-badge[data-size=\"lg\"] { height: 26px; font-size: var(--text-sm); padding: 3px 12px; }\r\n.twc-badge__dot { width: 6px; height: 6px; border-radius: var(--radius-full); background: currentColor; }\r\n\r\n/* soft (default) */\r\n.twc-badge[data-variant=\"soft\"][data-tone=\"primary\"] { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\r\n.twc-badge[data-variant=\"soft\"][data-tone=\"success\"] { background: var(--color-success-subtle); color: var(--color-success-subtle-fg); }\r\n.twc-badge[data-variant=\"soft\"][data-tone=\"warning\"] { background: var(--color-warning-subtle); color: var(--color-warning-subtle-fg); }\r\n.twc-badge[data-variant=\"soft\"][data-tone=\"danger\"] { background: var(--color-danger-subtle); color: var(--color-danger-subtle-fg); }\r\n.twc-badge[data-variant=\"soft\"][data-tone=\"info\"] { background: var(--color-info-subtle); color: var(--color-info-subtle-fg); }\r\n.twc-badge[data-variant=\"soft\"][data-tone=\"neutral\"] { background: var(--color-surface-sunken); color: var(--color-text-muted); }\r\n\r\n/* solid */\r\n.twc-badge[data-variant=\"solid\"][data-tone=\"primary\"] { background: var(--color-primary); color: var(--color-primary-fg); }\r\n.twc-badge[data-variant=\"solid\"][data-tone=\"success\"] { background: var(--color-success); color: var(--color-success-fg); }\r\n.twc-badge[data-variant=\"solid\"][data-tone=\"warning\"] { background: var(--color-warning); color: var(--color-warning-fg); }\r\n.twc-badge[data-variant=\"solid\"][data-tone=\"danger\"] { background: var(--color-danger); color: var(--color-danger-fg); }\r\n.twc-badge[data-variant=\"solid\"][data-tone=\"info\"] { background: var(--color-info); color: var(--color-info-fg); }\r\n.twc-badge[data-variant=\"solid\"][data-tone=\"neutral\"] { background: var(--color-text); color: var(--color-surface); }\r\n\r\n/* outline */\r\n.twc-badge[data-variant=\"outline\"] { background: transparent; }\r\n.twc-badge[data-variant=\"outline\"][data-tone=\"primary\"] { color: var(--color-primary); border-color: var(--color-primary-border); }\r\n.twc-badge[data-variant=\"outline\"][data-tone=\"success\"] { color: var(--color-success-subtle-fg); border-color: var(--color-success); }\r\n.twc-badge[data-variant=\"outline\"][data-tone=\"warning\"] { color: var(--color-warning-subtle-fg); border-color: var(--color-warning); }\r\n.twc-badge[data-variant=\"outline\"][data-tone=\"danger\"] { color: var(--color-danger-subtle-fg); border-color: var(--color-danger); }\r\n.twc-badge[data-variant=\"outline\"][data-tone=\"info\"] { color: var(--color-info-subtle-fg); border-color: var(--color-info); }\r\n.twc-badge[data-variant=\"outline\"][data-tone=\"neutral\"] { color: var(--color-text-muted); border-color: var(--color-border-strong); }\r\n`;\r\n\r\nexport function Badge({\r\n children,\r\n tone = \"primary\",\r\n variant = \"soft\",\r\n size = \"md\",\r\n dot = false,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-badge-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-badge-styles\";\r\n el.textContent = BADGE_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n return (\r\n <span className={`twc-badge ${className}`} data-tone={tone} data-variant={variant} data-size={size} {...rest}>\r\n {dot ? <span className=\"twc-badge__dot\" /> : null}\r\n {children}\r\n </span>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst BREADCRUMB_CSS = `\r\n.twc-breadcrumb { display: flex; align-items: center; flex-wrap: wrap; gap: 2px; font-family: var(--font-sans); font-size: var(--text-sm); }\r\n.twc-breadcrumb__item { display: inline-flex; align-items: center; gap: 6px; color: var(--color-text-muted); text-decoration: none; padding: 3px 7px; border-radius: var(--radius-sm); transition: color var(--duration-fast) var(--ease-standard), background-color var(--duration-fast) var(--ease-standard); }\r\n.twc-breadcrumb__item:hover:not([aria-current]) { color: var(--color-text); background: var(--color-surface-sunken); }\r\n.twc-breadcrumb__item[aria-current=\"page\"] { color: var(--color-text); font-weight: var(--font-semibold); cursor: default; }\r\n.twc-breadcrumb__item svg { width: 15px; height: 15px; flex: none; }\r\n.twc-breadcrumb__sep { display: inline-flex; align-items: center; color: var(--color-text-subtle); pointer-events: none; }\r\n.twc-breadcrumb__sep svg { width: 15px; height: 15px; }\r\n.twc-breadcrumb__ellipsis { border: none; background: transparent; cursor: pointer; color: var(--color-text-subtle); padding: 3px 7px; border-radius: var(--radius-sm); font: inherit; }\r\n.twc-breadcrumb__ellipsis:hover { background: var(--color-surface-sunken); color: var(--color-text); }\r\n`;\r\n\r\nconst ChevronSep = () => (\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg>\r\n);\r\n\r\nexport function Breadcrumb({\r\n items,\r\n separator,\r\n maxItems = 0,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-breadcrumb-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-breadcrumb-styles\";\r\n el.textContent = BREADCRUMB_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [expanded, setExpanded] = React.useState(false);\r\n const sep = separator || <ChevronSep />;\r\n\r\n let display = items;\r\n let collapsed = false;\r\n if (maxItems > 0 && items.length > maxItems && !expanded) {\r\n // keep first 1 + last (maxItems - 1)\r\n const head = items.slice(0, 1);\r\n const tail = items.slice(items.length - (maxItems - 1));\r\n display = [...head, { ellipsis: true }, ...tail];\r\n collapsed = true;\r\n }\r\n\r\n return (\r\n <nav className={`twc-breadcrumb ${className}`} aria-label=\"Breadcrumb\" {...rest}>\r\n {display.map((it, i) => {\r\n const last = i === display.length - 1;\r\n return (\r\n <React.Fragment key={i}>\r\n {it.ellipsis ? (\r\n <button className=\"twc-breadcrumb__ellipsis\" aria-label=\"Show more\" onClick={() => setExpanded(true)}>…</button>\r\n ) : (\r\n <a\r\n className=\"twc-breadcrumb__item\"\r\n href={last ? undefined : (it.href || \"#\")}\r\n aria-current={last ? \"page\" : undefined}\r\n onClick={it.onClick}\r\n >\r\n {it.icon ? <span aria-hidden=\"true\" style={{ display: \"inline-flex\" }}>{it.icon}</span> : null}\r\n {it.label}\r\n </a>\r\n )}\r\n {!last ? <span className=\"twc-breadcrumb__sep\" aria-hidden=\"true\">{sep}</span> : null}\r\n </React.Fragment>\r\n );\r\n })}\r\n </nav>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst CSS = `\r\n.twc-btn {\r\n --_h: var(--control-h-md);\r\n --_px: var(--space-4);\r\n --_fs: var(--text-sm);\r\n position: relative;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: var(--space-2);\r\n height: var(--_h);\r\n padding-inline: var(--_px);\r\n font-family: var(--font-sans);\r\n font-size: var(--_fs);\r\n font-weight: var(--font-semibold);\r\n line-height: 1;\r\n letter-spacing: -0.01em;\r\n border: var(--border-thin) solid transparent;\r\n border-radius: var(--radius-md);\r\n cursor: pointer;\r\n user-select: none;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-decoration: none;\r\n transition: background-color var(--duration-fast) var(--ease-standard),\r\n border-color var(--duration-fast) var(--ease-standard),\r\n color var(--duration-fast) var(--ease-standard),\r\n box-shadow var(--duration-fast) var(--ease-standard),\r\n transform var(--duration-fast) var(--ease-spring);\r\n}\r\n.twc-btn:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-btn:active:not(:disabled) { transform: scale(var(--press-scale)); }\r\n.twc-btn:disabled { opacity: 0.5; cursor: not-allowed; }\r\n.twc-btn[data-loading=\"true\"] { cursor: progress; color: transparent; }\r\n.twc-btn[data-block=\"true\"] { width: 100%; }\r\n\r\n.twc-btn[data-size=\"sm\"] { --_h: var(--control-h-sm); --_px: var(--space-3); --_fs: var(--text-xs); }\r\n.twc-btn[data-size=\"lg\"] { --_h: var(--control-h-lg); --_px: var(--space-6); --_fs: var(--text-base); }\r\n\r\n/* solid */\r\n.twc-btn[data-variant=\"solid\"] { background: var(--color-primary); color: var(--color-primary-fg); }\r\n.twc-btn[data-variant=\"solid\"]:hover:not(:disabled) { background: var(--color-primary-hover); box-shadow: var(--shadow-brand); }\r\n.twc-btn[data-variant=\"solid\"]:active:not(:disabled) { background: var(--color-primary-active); }\r\n/* soft */\r\n.twc-btn[data-variant=\"soft\"] { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\r\n.twc-btn[data-variant=\"soft\"]:hover:not(:disabled) { background: var(--color-primary-subtle); filter: brightness(0.97); }\r\n.dark .twc-btn[data-variant=\"soft\"]:hover:not(:disabled) { filter: brightness(1.25); }\r\n/* outline */\r\n.twc-btn[data-variant=\"outline\"] { background: transparent; color: var(--color-text); border-color: var(--color-border-strong); }\r\n.twc-btn[data-variant=\"outline\"]:hover:not(:disabled) { background: var(--color-surface-sunken); border-color: var(--color-primary); color: var(--color-primary); }\r\n/* ghost */\r\n.twc-btn[data-variant=\"ghost\"] { background: transparent; color: var(--color-text-muted); }\r\n.twc-btn[data-variant=\"ghost\"]:hover:not(:disabled) { background: var(--color-surface-sunken); color: var(--color-text); }\r\n/* danger */\r\n.twc-btn[data-variant=\"danger\"] { background: var(--color-danger); color: var(--color-danger-fg); }\r\n.twc-btn[data-variant=\"danger\"]:hover:not(:disabled) { background: var(--color-danger-hover); }\r\n\r\n.twc-btn__spinner {\r\n position: absolute; inset: 0; margin: auto;\r\n width: 1.1em; height: 1.1em;\r\n border: 2px solid currentColor; border-right-color: transparent;\r\n border-radius: var(--radius-full);\r\n color: var(--color-primary-fg);\r\n animation: twico-spin 0.6s linear infinite;\r\n}\r\n.twc-btn[data-variant=\"soft\"] .twc-btn__spinner,\r\n.twc-btn[data-variant=\"outline\"] .twc-btn__spinner,\r\n.twc-btn[data-variant=\"ghost\"] .twc-btn__spinner { color: var(--color-primary); }\r\n\r\n.twc-ripple {\r\n position: absolute; border-radius: var(--radius-full);\r\n background: currentColor; opacity: 0.3;\r\n transform: scale(0); pointer-events: none;\r\n animation: twico-ripple var(--duration-slow) var(--ease-out) forwards;\r\n}\r\n`;\r\n\r\nfunction useInjectedStyle(id, css) {\r\n React.useEffect(() => {\r\n if (document.getElementById(id)) return;\r\n const el = document.createElement(\"style\");\r\n el.id = id;\r\n el.textContent = css;\r\n document.head.appendChild(el);\r\n }, [id, css]);\r\n}\r\n\r\nexport function Button({\r\n children,\r\n variant = \"solid\",\r\n size = \"md\",\r\n leftIcon,\r\n rightIcon,\r\n loading = false,\r\n fullWidth = false,\r\n disabled = false,\r\n as = \"button\",\r\n className = \"\",\r\n onClick,\r\n ...rest\r\n}) {\r\n useInjectedStyle(\"twc-btn-styles\", CSS);\r\n const [ripples, setRipples] = React.useState([]);\r\n const Tag = as;\r\n\r\n function handleClick(e) {\r\n if (disabled || loading) return;\r\n const rect = e.currentTarget.getBoundingClientRect();\r\n const size = Math.max(rect.width, rect.height);\r\n const id = Date.now() + Math.random();\r\n setRipples((r) => [\r\n ...r,\r\n { id, size, x: e.clientX - rect.left - size / 2, y: e.clientY - rect.top - size / 2 },\r\n ]);\r\n setTimeout(() => setRipples((r) => r.filter((x) => x.id !== id)), 600);\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <Tag\r\n className={`twc-btn ${className}`}\r\n data-variant={variant}\r\n data-size={size}\r\n data-loading={loading || undefined}\r\n data-block={fullWidth || undefined}\r\n disabled={Tag === \"button\" ? disabled || loading : undefined}\r\n aria-busy={loading || undefined}\r\n onClick={handleClick}\r\n {...rest}\r\n >\r\n {leftIcon ? <span className=\"twc-btn__icon\" aria-hidden=\"true\">{leftIcon}</span> : null}\r\n {children}\r\n {rightIcon ? <span className=\"twc-btn__icon\" aria-hidden=\"true\">{rightIcon}</span> : null}\r\n {loading ? <span className=\"twc-btn__spinner\" aria-hidden=\"true\" /> : null}\r\n {ripples.map((r) => (\r\n <span\r\n key={r.id}\r\n className=\"twc-ripple\"\r\n style={{ width: r.size, height: r.size, left: r.x, top: r.y }}\r\n />\r\n ))}\r\n </Tag>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst CARD_CSS = `\r\n.twc-card {\r\n display: flex; flex-direction: column;\r\n background: var(--color-surface);\r\n border-radius: var(--radius-lg);\r\n font-family: var(--font-sans); color: var(--color-text);\r\n overflow: hidden;\r\n transition: box-shadow var(--duration-base) var(--ease-standard),\r\n transform var(--duration-base) var(--ease-spring),\r\n border-color var(--duration-base) var(--ease-standard);\r\n}\r\n.twc-card[data-variant=\"elevated\"] { box-shadow: var(--shadow-md); border: var(--border-thin) solid transparent; }\r\n.twc-card[data-variant=\"outline\"] { border: var(--border-thin) solid var(--color-border); }\r\n.twc-card[data-variant=\"soft\"] { background: var(--color-surface-sunken); border: var(--border-thin) solid transparent; }\r\n.twc-card[data-interactive=\"true\"] { cursor: pointer; }\r\n.twc-card[data-interactive=\"true\"]:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); border-color: var(--color-primary-border); }\r\n.twc-card[data-pad=\"md\"] { padding: var(--space-5); }\r\n.twc-card[data-pad=\"lg\"] { padding: var(--space-6); }\r\n.twc-card[data-pad=\"none\"] { padding: 0; }\r\n.twc-card__header { display: flex; flex-direction: column; gap: 2px; margin-bottom: var(--space-3); }\r\n.twc-card__title { font-size: var(--text-lg); font-weight: var(--font-bold); letter-spacing: -0.01em; }\r\n.twc-card__subtitle { font-size: var(--text-sm); color: var(--color-text-muted); }\r\n.twc-card__body { font-size: var(--text-sm); color: var(--color-text-muted); line-height: var(--leading-normal); }\r\n.twc-card__footer { margin-top: var(--space-4); display: flex; gap: var(--space-2); align-items: center; }\r\n`;\r\n\r\nexport function Card({\r\n children,\r\n title,\r\n subtitle,\r\n footer,\r\n variant = \"elevated\",\r\n padding = \"md\",\r\n interactive = false,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-card-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-card-styles\";\r\n el.textContent = CARD_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n return (\r\n <div\r\n className={`twc-card ${className}`}\r\n data-variant={variant}\r\n data-pad={padding}\r\n data-interactive={interactive || undefined}\r\n {...rest}\r\n >\r\n {(title || subtitle) ? (\r\n <div className=\"twc-card__header\">\r\n {title ? <div className=\"twc-card__title\">{title}</div> : null}\r\n {subtitle ? <div className=\"twc-card__subtitle\">{subtitle}</div> : null}\r\n </div>\r\n ) : null}\r\n {children ? <div className=\"twc-card__body\">{children}</div> : null}\r\n {footer ? <div className=\"twc-card__footer\">{footer}</div> : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst CAROUSEL_CSS = `\r\n.twc-carousel { position: relative; font-family: var(--font-sans); }\r\n.twc-carousel__viewport { overflow: hidden; border-radius: var(--radius-xl); }\r\n.twc-carousel__track { display: flex; transition: transform var(--duration-slow) var(--ease-emphasis); }\r\n.twc-carousel__slide { flex: 0 0 100%; min-width: 0; }\r\n.twc-carousel__arrow { position: absolute; top: 50%; transform: translateY(-50%); z-index: 2;\r\n display: grid; place-items: center; width: 38px; height: 38px; border-radius: var(--radius-full);\r\n background: color-mix(in srgb, var(--color-surface) 88%, transparent); color: var(--color-text);\r\n border: var(--border-thin) solid var(--color-border); box-shadow: var(--shadow-md); cursor: pointer; backdrop-filter: blur(6px);\r\n transition: background-color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring); }\r\n.twc-carousel__arrow:hover { background: var(--color-surface); }\r\n.twc-carousel__arrow:active { transform: translateY(-50%) scale(0.9); }\r\n.twc-carousel__arrow:disabled { opacity: 0; pointer-events: none; }\r\n.twc-carousel__arrow[data-dir=\"prev\"] { left: 12px; }\r\n.twc-carousel__arrow[data-dir=\"next\"] { right: 12px; }\r\n.twc-carousel__arrow svg { width: 18px; height: 18px; }\r\n.twc-carousel__dots { display: flex; justify-content: center; gap: 7px; margin-top: var(--space-3); }\r\n.twc-carousel__dot { width: 8px; height: 8px; border-radius: var(--radius-full); border: none; padding: 0; cursor: pointer;\r\n background: var(--color-border-strong); transition: width var(--duration-base) var(--ease-spring), background-color var(--duration-fast); }\r\n.twc-carousel__dot[data-active=\"true\"] { width: 22px; background: var(--color-primary); }\r\n`;\r\n\r\nexport function Carousel({\r\n children,\r\n showArrows = true,\r\n showDots = true,\r\n loop = true,\r\n autoPlay = false,\r\n interval = 4000,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-carousel-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-carousel-styles\";\r\n el.textContent = CAROUSEL_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const slides = React.Children.toArray(children);\r\n const count = slides.length;\r\n const [index, setIndex] = React.useState(0);\r\n const [paused, setPaused] = React.useState(false);\r\n\r\n const go = React.useCallback((i) => {\r\n setIndex(loop ? (i + count) % count : Math.min(Math.max(i, 0), count - 1));\r\n }, [count, loop]);\r\n\r\n React.useEffect(() => {\r\n if (!autoPlay || paused || count <= 1) return;\r\n const t = setInterval(() => setIndex((i) => loop ? (i + 1) % count : (i + 1 >= count ? i : i + 1)), interval);\r\n return () => clearInterval(t);\r\n }, [autoPlay, paused, count, interval, loop]);\r\n\r\n const atStart = !loop && index === 0;\r\n const atEnd = !loop && index === count - 1;\r\n\r\n return (\r\n <div className={`twc-carousel ${className}`} onMouseEnter={() => setPaused(true)} onMouseLeave={() => setPaused(false)}\r\n role=\"region\" aria-roledescription=\"carousel\" {...rest}>\r\n <div className=\"twc-carousel__viewport\">\r\n <div className=\"twc-carousel__track\" style={{ transform: `translateX(-${index * 100}%)` }}>\r\n {slides.map((s, i) => (\r\n <div className=\"twc-carousel__slide\" key={i} aria-hidden={i !== index} role=\"group\" aria-roledescription=\"slide\" aria-label={`${i + 1} of ${count}`}>{s}</div>\r\n ))}\r\n </div>\r\n </div>\r\n {showArrows && count > 1 ? (\r\n <>\r\n <button className=\"twc-carousel__arrow\" data-dir=\"prev\" aria-label=\"Previous\" disabled={atStart} onClick={() => go(index - 1)}>\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m15 18-6-6 6-6\"/></svg>\r\n </button>\r\n <button className=\"twc-carousel__arrow\" data-dir=\"next\" aria-label=\"Next\" disabled={atEnd} onClick={() => go(index + 1)}>\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg>\r\n </button>\r\n </>\r\n ) : null}\r\n {showDots && count > 1 ? (\r\n <div className=\"twc-carousel__dots\">\r\n {slides.map((_, i) => (\r\n <button key={i} className=\"twc-carousel__dot\" data-active={i === index || undefined} aria-label={`Go to slide ${i + 1}`} onClick={() => go(i)} />\r\n ))}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst CHART_CSS = `\r\n.twc-chart { font-family: var(--font-sans); width: 100%; }\r\n.twc-chart svg { display: block; width: 100%; overflow: visible; }\r\n.twc-chart__grid { stroke: var(--color-divider); stroke-width: 1; }\r\n.twc-chart__axis { fill: var(--color-text-subtle); font-size: 11px; }\r\n.twc-chart__bar { fill: var(--color-primary); transition: fill var(--duration-fast) var(--ease-standard); }\r\n.twc-chart__bar:hover { fill: var(--color-primary-hover); }\r\n.twc-chart__line { fill: none; stroke: var(--color-primary); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }\r\n.twc-chart__dot { fill: var(--color-surface); stroke: var(--color-primary); stroke-width: 2.5; }\r\n.twc-chart__legend { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-3); font-size: var(--text-xs); color: var(--color-text-muted); }\r\n.twc-chart__leg { display: inline-flex; align-items: center; gap: 6px; }\r\n.twc-chart__leg-sw { width: 10px; height: 10px; border-radius: 3px; }\r\n@keyframes twc-chart-grow { from { transform: scaleY(0); } to { transform: scaleY(1); } }\r\n`;\r\n\r\nconst SERIES_COLORS = [\"var(--brand-500)\", \"var(--sky-500)\", \"var(--emerald-500)\", \"var(--amber-500)\", \"var(--rose-500)\"];\r\n\r\nexport function Chart({\r\n type = \"bar\",\r\n data,\r\n series,\r\n height = 220,\r\n showGrid = true,\r\n showAxis = true,\r\n showLegend = false,\r\n valueFormat,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-chart-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-chart-styles\";\r\n el.textContent = CHART_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const keys = series || [\"value\"];\r\n const W = 600, H = height, padL = showAxis ? 40 : 8, padR = 8, padT = 12, padB = showAxis ? 26 : 8;\r\n const innerW = W - padL - padR, innerH = H - padT - padB;\r\n const max = Math.max(1, ...data.flatMap((d) => keys.map((k) => Number(d[k]) || 0)));\r\n const niceMax = niceCeil(max);\r\n const y = (v) => padT + innerH - (v / niceMax) * innerH;\r\n const fmt = valueFormat || ((v) => v.toLocaleString());\r\n const ticks = 4;\r\n\r\n return (\r\n <div className={`twc-chart ${className}`} {...rest}>\r\n <svg viewBox={`0 0 ${W} ${H}`} role=\"img\" preserveAspectRatio=\"none\">\r\n {showGrid ? Array.from({ length: ticks + 1 }).map((_, i) => {\r\n const gy = padT + (innerH / ticks) * i;\r\n return <line key={i} className=\"twc-chart__grid\" x1={padL} y1={gy} x2={W - padR} y2={gy} />;\r\n }) : null}\r\n {showAxis ? Array.from({ length: ticks + 1 }).map((_, i) => {\r\n const val = niceMax - (niceMax / ticks) * i;\r\n const gy = padT + (innerH / ticks) * i;\r\n return <text key={i} className=\"twc-chart__axis\" x={padL - 8} y={gy + 4} textAnchor=\"end\">{shortNum(val)}</text>;\r\n }) : null}\r\n\r\n {type === \"bar\" ? (() => {\r\n const groups = data.length;\r\n const groupW = innerW / groups;\r\n const barGap = 0.28;\r\n const bw = (groupW * (1 - barGap)) / keys.length;\r\n return data.map((d, gi) => keys.map((k, si) => {\r\n const v = Number(d[k]) || 0;\r\n const x = padL + groupW * gi + (groupW * barGap) / 2 + si * bw;\r\n const by = y(v);\r\n return <rect key={`${gi}-${si}`} className=\"twc-chart__bar\" x={x + 1} y={by} width={Math.max(1, bw - 2)} height={padT + innerH - by}\r\n rx=\"3\" style={{ fill: keys.length > 1 ? SERIES_COLORS[si % SERIES_COLORS.length] : undefined }}>\r\n <title>{`${d.label ?? gi}: ${fmt(v)}`}</title>\r\n </rect>;\r\n }));\r\n })() : null}\r\n\r\n {type === \"line\" ? keys.map((k, si) => {\r\n const pts = data.map((d, i) => [padL + (innerW / Math.max(1, data.length - 1)) * i, y(Number(d[k]) || 0)]);\r\n const dPath = pts.map((p, i) => `${i ? \"L\" : \"M\"}${p[0].toFixed(1)} ${p[1].toFixed(1)}`).join(\" \");\r\n const color = SERIES_COLORS[si % SERIES_COLORS.length];\r\n return (\r\n <g key={k}>\r\n <path className=\"twc-chart__line\" d={dPath} style={{ stroke: color }} />\r\n {pts.map((p, i) => <circle key={i} className=\"twc-chart__dot\" cx={p[0]} cy={p[1]} r=\"3.5\" style={{ stroke: color }}><title>{`${data[i].label ?? i}: ${fmt(Number(data[i][k]) || 0)}`}</title></circle>)}\r\n </g>\r\n );\r\n }) : null}\r\n\r\n {showAxis ? data.map((d, i) => {\r\n const groupW = innerW / data.length;\r\n const cx = type === \"line\" ? padL + (innerW / Math.max(1, data.length - 1)) * i : padL + groupW * i + groupW / 2;\r\n return <text key={i} className=\"twc-chart__axis\" x={cx} y={H - 8} textAnchor=\"middle\">{d.label}</text>;\r\n }) : null}\r\n </svg>\r\n {showLegend && keys.length > 1 ? (\r\n <div className=\"twc-chart__legend\">\r\n {keys.map((k, si) => <span key={k} className=\"twc-chart__leg\"><span className=\"twc-chart__leg-sw\" style={{ background: SERIES_COLORS[si % SERIES_COLORS.length] }} />{k}</span>)}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n\r\nfunction niceCeil(v) {\r\n const pow = Math.pow(10, Math.floor(Math.log10(v)));\r\n const n = v / pow;\r\n const step = n <= 1 ? 1 : n <= 2 ? 2 : n <= 5 ? 5 : 10;\r\n return step * pow;\r\n}\r\nfunction shortNum(v) {\r\n if (v >= 1000000) return (v / 1000000).toFixed(v % 1000000 ? 1 : 0) + \"M\";\r\n if (v >= 1000) return (v / 1000).toFixed(v % 1000 ? 1 : 0) + \"k\";\r\n return String(Math.round(v));\r\n}\r\n","import React from \"react\";\r\n\r\nexport function Checkbox({\r\n label,\r\n description,\r\n checked,\r\n defaultChecked,\r\n indeterminate = false,\r\n disabled = false,\r\n size = \"md\",\r\n id,\r\n className = \"\",\r\n onChange,\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-checkbox-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-checkbox-styles\";\r\n el.textContent = `\r\n.twc-check { display: inline-flex; align-items: flex-start; gap: var(--space-2-5); cursor: pointer; font-family: var(--font-sans); }\r\n.twc-check[data-disabled=\"true\"] { cursor: not-allowed; opacity: 0.55; }\r\n.twc-check__input { position: absolute; opacity: 0; width: 0; height: 0; }\r\n.twc-check__box {\r\n --_sz: 20px;\r\n flex: none; width: var(--_sz); height: var(--_sz); margin-top: 1px;\r\n display: grid; place-items: center;\r\n border: var(--border-medium) solid var(--color-border-strong);\r\n border-radius: var(--radius-sm);\r\n background: var(--color-surface);\r\n color: var(--color-primary-fg);\r\n transition: background-color var(--duration-fast) var(--ease-standard),\r\n border-color var(--duration-fast) var(--ease-standard),\r\n transform var(--duration-fast) var(--ease-spring);\r\n}\r\n.twc-check[data-size=\"sm\"] .twc-check__box { --_sz: 16px; }\r\n.twc-check__svg { width: 70%; height: 70%; stroke-dasharray: 24; stroke-dashoffset: 24; transition: stroke-dashoffset var(--duration-base) var(--ease-out); }\r\n.twc-check__input:checked + .twc-check__box,\r\n.twc-check__input:indeterminate + .twc-check__box { background: var(--color-primary); border-color: var(--color-primary); }\r\n.twc-check__input:checked + .twc-check__box .twc-check__svg,\r\n.twc-check__input:indeterminate + .twc-check__box .twc-check__svg { stroke-dashoffset: 0; }\r\n.twc-check__input:active + .twc-check__box { transform: scale(0.88); }\r\n.twc-check__input:focus-visible + .twc-check__box { box-shadow: var(--ring); }\r\n.twc-check__text { display: flex; flex-direction: column; gap: 2px; }\r\n.twc-check__label { font-size: var(--text-sm); font-weight: var(--font-medium); color: var(--color-text); line-height: 1.3; }\r\n.twc-check__desc { font-size: var(--text-xs); color: var(--color-text-muted); }\r\n`;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const autoId = React.useId();\r\n const fieldId = id || autoId;\r\n const ref = React.useRef(null);\r\n React.useEffect(() => { if (ref.current) ref.current.indeterminate = indeterminate; }, [indeterminate]);\r\n\r\n return (\r\n <label className={`twc-check ${className}`} data-size={size} data-disabled={disabled || undefined} htmlFor={fieldId}>\r\n <input\r\n ref={ref}\r\n id={fieldId}\r\n type=\"checkbox\"\r\n className=\"twc-check__input\"\r\n checked={checked}\r\n defaultChecked={defaultChecked}\r\n disabled={disabled}\r\n onChange={onChange}\r\n {...rest}\r\n />\r\n <span className=\"twc-check__box\" aria-hidden=\"true\">\r\n <svg className=\"twc-check__svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n {indeterminate ? <path d=\"M5 12h14\"/> : <path d=\"M20 6 9 17l-5-5\"/>}\r\n </svg>\r\n </span>\r\n {(label || description) ? (\r\n <span className=\"twc-check__text\">\r\n {label ? <span className=\"twc-check__label\">{label}</span> : null}\r\n {description ? <span className=\"twc-check__desc\">{description}</span> : null}\r\n </span>\r\n ) : null}\r\n </label>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst COLORPICKER_CSS = `\r\n.twc-cp { position: relative; font-family: var(--font-sans); display: flex; flex-direction: column; gap: var(--space-1-5); }\r\n.twc-cp__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); }\r\n.twc-cp__trigger { display: flex; align-items: center; gap: var(--space-2-5); height: var(--control-h-md); padding: 0 var(--space-2) 0 var(--space-2);\r\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md); cursor: pointer;\r\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard); }\r\n.twc-cp__trigger:hover:not([data-open=\"true\"]) { border-color: var(--color-border-strong); }\r\n.twc-cp__trigger[data-open=\"true\"] { border-color: var(--color-primary); box-shadow: var(--ring); }\r\n.twc-cp__swatch { flex: none; width: 26px; height: 26px; border-radius: var(--radius-sm); box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.12); }\r\n.twc-cp__value { flex: 1; font-family: var(--font-mono); font-size: var(--text-sm); color: var(--color-text); text-transform: uppercase; }\r\n.twc-cp__chev { flex: none; color: var(--color-text-subtle); display: inline-flex; }\r\n.twc-cp__chev svg { width: 16px; height: 16px; }\r\n.twc-cp__pop { position: absolute; z-index: var(--z-popover); top: calc(100% + 6px); left: 0; width: 240px;\r\n background: var(--color-surface-raised); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg);\r\n box-shadow: var(--shadow-lg); padding: var(--space-3); animation: twico-scale-in var(--duration-fast) var(--ease-spring); transform-origin: top; }\r\n.twc-cp__area { position: relative; width: 100%; height: 140px; border-radius: var(--radius-md); cursor: crosshair; overflow: hidden; touch-action: none; }\r\n.twc-cp__area-sat { position: absolute; inset: 0; background: linear-gradient(to right, #fff, hsl(var(--_h,0), 100%, 50%)); }\r\n.twc-cp__area-val { position: absolute; inset: 0; background: linear-gradient(to top, #000, transparent); }\r\n.twc-cp__area-knob { position: absolute; width: 14px; height: 14px; border-radius: var(--radius-full); border: 2px solid #fff; box-shadow: 0 0 0 1px rgb(0 0 0 / 0.3); transform: translate(-50%, -50%); pointer-events: none; }\r\n.twc-cp__hue { position: relative; height: 12px; margin-top: var(--space-3); border-radius: var(--radius-full); cursor: pointer; touch-action: none;\r\n background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%); }\r\n.twc-cp__hue-knob { position: absolute; top: 50%; width: 16px; height: 16px; border-radius: var(--radius-full); background: #fff; box-shadow: var(--shadow-sm), inset 0 0 0 1px rgb(0 0 0 / 0.2); transform: translate(-50%, -50%); pointer-events: none; }\r\n.twc-cp__foot { display: flex; align-items: center; gap: var(--space-2); margin-top: var(--space-3); }\r\n.twc-cp__hex { flex: 1; min-width: 0; height: 32px; padding: 0 8px; font-family: var(--font-mono); font-size: var(--text-xs); text-transform: uppercase;\r\n color: var(--color-text); background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-sm); outline: none; }\r\n.twc-cp__hex:focus { border-color: var(--color-primary); box-shadow: var(--ring); }\r\n.twc-cp__presets { display: flex; flex-wrap: wrap; gap: 5px; margin-top: var(--space-3); }\r\n.twc-cp__preset { width: 22px; height: 22px; border-radius: var(--radius-sm); border: none; cursor: pointer; box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.12); padding: 0;\r\n transition: transform var(--duration-fast) var(--ease-spring); }\r\n.twc-cp__preset:hover { transform: scale(1.15); }\r\n.twc-cp__preset[data-active=\"true\"] { box-shadow: 0 0 0 2px var(--color-surface-raised), 0 0 0 4px var(--color-primary); }\r\n`;\r\n\r\n/* ---- color math ---- */\r\nfunction hsvToRgb(h, s, v) {\r\n s /= 100; v /= 100;\r\n const c = v * s, x = c * (1 - Math.abs(((h / 60) % 2) - 1)), m = v - c;\r\n let r = 0, g = 0, b = 0;\r\n if (h < 60) [r, g, b] = [c, x, 0]; else if (h < 120) [r, g, b] = [x, c, 0];\r\n else if (h < 180) [r, g, b] = [0, c, x]; else if (h < 240) [r, g, b] = [0, x, c];\r\n else if (h < 300) [r, g, b] = [x, 0, c]; else [r, g, b] = [c, 0, x];\r\n return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)];\r\n}\r\nfunction rgbToHex(r, g, b) { return \"#\" + [r, g, b].map((n) => n.toString(16).padStart(2, \"0\")).join(\"\"); }\r\nfunction hsvToHex(h, s, v) { return rgbToHex(...hsvToRgb(h, s, v)); }\r\nfunction hexToHsv(hex) {\r\n const m = /^#?([0-9a-f]{6})$/i.exec(hex || \"\"); if (!m) return null;\r\n const int = parseInt(m[1], 16); const r = (int >> 16) / 255, g = ((int >> 8) & 255) / 255, b = (int & 255) / 255;\r\n const max = Math.max(r, g, b), min = Math.min(r, g, b), d = max - min;\r\n let h = 0;\r\n if (d) { if (max === r) h = ((g - b) / d) % 6; else if (max === g) h = (b - r) / d + 2; else h = (r - g) / d + 4; h *= 60; if (h < 0) h += 360; }\r\n return { h, s: max ? (d / max) * 100 : 0, v: max * 100 };\r\n}\r\n\r\nconst DEFAULT_PRESETS = [\"#6366F1\",\"#0EA5E9\",\"#14B8A6\",\"#22C55E\",\"#F59E0B\",\"#F43F5E\",\"#8B5CF6\",\"#0F172A\"];\r\n\r\nexport function ColorPicker({\r\n label,\r\n value,\r\n defaultValue = \"#6366F1\",\r\n presets = DEFAULT_PRESETS,\r\n onChange,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-colorpicker-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-colorpicker-styles\";\r\n el.textContent = COLORPICKER_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [internal, setInternal] = React.useState(defaultValue);\r\n const hex = (value !== undefined ? value : internal) || \"#000000\";\r\n const [open, setOpen] = React.useState(false);\r\n const [hsv, setHsv] = React.useState(() => hexToHsv(hex) || { h: 239, s: 60, v: 94 });\r\n const wrapRef = React.useRef(null);\r\n const areaRef = React.useRef(null);\r\n const hueRef = React.useRef(null);\r\n\r\n // sync external hex -> hsv when it changes and is valid\r\n React.useEffect(() => { const v = hexToHsv(hex); if (v && hsvToHex(v.h, v.s, v.v).toLowerCase() !== hsvToHex(hsv.h, hsv.s, hsv.v).toLowerCase()) setHsv(v); }, [hex]);\r\n\r\n React.useEffect(() => {\r\n if (!open) return;\r\n const onDown = (e) => { if (wrapRef.current && !wrapRef.current.contains(e.target)) setOpen(false); };\r\n const onKey = (e) => { if (e.key === \"Escape\") setOpen(false); };\r\n document.addEventListener(\"mousedown\", onDown); document.addEventListener(\"keydown\", onKey);\r\n return () => { document.removeEventListener(\"mousedown\", onDown); document.removeEventListener(\"keydown\", onKey); };\r\n }, [open]);\r\n\r\n const commit = (next) => { const h = hsvToHex(next.h, next.s, next.v); setHsv(next); if (value === undefined) setInternal(h); onChange?.(h); };\r\n\r\n const dragArea = (e) => {\r\n const r = areaRef.current.getBoundingClientRect();\r\n const s = Math.min(1, Math.max(0, (e.clientX - r.left) / r.width)) * 100;\r\n const v = (1 - Math.min(1, Math.max(0, (e.clientY - r.top) / r.height))) * 100;\r\n commit({ ...hsv, s, v });\r\n };\r\n const dragHue = (e) => {\r\n const r = hueRef.current.getBoundingClientRect();\r\n const h = Math.min(1, Math.max(0, (e.clientX - r.left) / r.width)) * 360;\r\n commit({ ...hsv, h });\r\n };\r\n const startDrag = (handler) => (e) => {\r\n e.preventDefault(); handler(e);\r\n const move = (ev) => handler(ev);\r\n const up = () => { window.removeEventListener(\"pointermove\", move); window.removeEventListener(\"pointerup\", up); };\r\n window.addEventListener(\"pointermove\", move); window.addEventListener(\"pointerup\", up);\r\n };\r\n\r\n return (\r\n <div className={`twc-cp ${className}`} ref={wrapRef} {...rest}>\r\n {label ? <span className=\"twc-cp__label\">{label}</span> : null}\r\n <div className=\"twc-cp__trigger\" data-open={open || undefined} role=\"button\" tabIndex={0}\r\n onClick={() => setOpen((o) => !o)} onKeyDown={(e) => { if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); setOpen((o) => !o); } }}>\r\n <span className=\"twc-cp__swatch\" style={{ background: hex }} />\r\n <span className=\"twc-cp__value\">{hex}</span>\r\n <span className=\"twc-cp__chev\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg></span>\r\n </div>\r\n\r\n {open ? (\r\n <div className=\"twc-cp__pop\" role=\"dialog\" aria-label=\"Color picker\">\r\n <div className=\"twc-cp__area\" ref={areaRef} style={{ \"--_h\": hsv.h }} onPointerDown={startDrag(dragArea)}>\r\n <div className=\"twc-cp__area-sat\" />\r\n <div className=\"twc-cp__area-val\" />\r\n <span className=\"twc-cp__area-knob\" style={{ left: `${hsv.s}%`, top: `${100 - hsv.v}%`, background: hex }} />\r\n </div>\r\n <div className=\"twc-cp__hue\" ref={hueRef} onPointerDown={startDrag(dragHue)}>\r\n <span className=\"twc-cp__hue-knob\" style={{ left: `${(hsv.h / 360) * 100}%` }} />\r\n </div>\r\n <div className=\"twc-cp__foot\">\r\n <span className=\"twc-cp__swatch\" style={{ background: hex }} />\r\n <input className=\"twc-cp__hex\" value={hex} maxLength={7}\r\n onChange={(e) => { let v = e.target.value; if (!v.startsWith(\"#\")) v = \"#\" + v; if (value === undefined) setInternal(v); onChange?.(v); const p = hexToHsv(v); if (p) setHsv(p); }} />\r\n </div>\r\n {presets && presets.length ? (\r\n <div className=\"twc-cp__presets\">\r\n {presets.map((p) => (\r\n <button key={p} type=\"button\" className=\"twc-cp__preset\" data-active={p.toLowerCase() === hex.toLowerCase() || undefined}\r\n style={{ background: p }} aria-label={p} onClick={() => { if (value === undefined) setInternal(p); onChange?.(p); const h = hexToHsv(p); if (h) setHsv(h); }} />\r\n ))}\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst COMBO_CSS = `\r\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\r\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\r\n.twc-field__req { color: var(--color-danger); }\r\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\r\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\r\n\r\n.twc-cb { position: relative; font-family: var(--font-sans); }\r\n.twc-cb__control {\r\n --_h: var(--control-h-md);\r\n display: flex; align-items: center; gap: var(--space-2); width: 100%;\r\n min-height: var(--_h); padding: 0 var(--space-3);\r\n background: var(--color-surface);\r\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md);\r\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-cb__control[data-size=\"sm\"] { --_h: var(--control-h-sm); }\r\n.twc-cb__control[data-size=\"lg\"] { --_h: var(--control-h-lg); }\r\n.twc-cb__control:hover:not([data-open=\"true\"]) { border-color: var(--color-border-strong); }\r\n.twc-cb__control[data-open=\"true\"] { border-color: var(--color-primary); box-shadow: var(--ring); }\r\n.twc-cb__control[data-invalid=\"true\"] { border-color: var(--color-danger); }\r\n.twc-cb__control[data-disabled=\"true\"] { background: var(--color-surface-sunken); opacity: 0.7; }\r\n.twc-cb__input { flex: 1; min-width: 0; border: none; outline: none; background: transparent; font-family: inherit; font-size: var(--text-sm); color: var(--color-text); height: calc(var(--_h) - 2px); cursor: text; }\r\n.twc-cb__input:focus, .twc-cb__input:focus-visible { outline: none; box-shadow: none; }\r\n.twc-cb__input::placeholder { color: var(--color-text-subtle); }\r\n.twc-cb__input:disabled { cursor: not-allowed; }\r\n.twc-cb__clear, .twc-cb__chev { flex: none; display: inline-grid; place-items: center; border: none; background: transparent; color: var(--color-text-subtle); cursor: pointer; padding: 0; }\r\n.twc-cb__clear { width: 20px; height: 20px; border-radius: var(--radius-full); }\r\n.twc-cb__clear:hover { background: var(--color-surface-sunken); color: var(--color-text); }\r\n.twc-cb__clear svg { width: 14px; height: 14px; }\r\n.twc-cb__chev { transition: transform var(--duration-base) var(--ease-spring); }\r\n.twc-cb__control[data-open=\"true\"] .twc-cb__chev { transform: rotate(180deg); }\r\n.twc-cb__chev svg { width: 16px; height: 16px; }\r\n\r\n.twc-pop {\r\n position: absolute; z-index: var(--z-dropdown); top: calc(100% + 6px); left: 0; right: 0;\r\n background: var(--color-surface-raised); border: var(--border-thin) solid var(--color-border);\r\n border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); overflow: hidden;\r\n transform-origin: top; animation: twico-scale-in var(--duration-fast) var(--ease-spring);\r\n}\r\n.twc-pop__list { max-height: 260px; overflow-y: auto; padding: var(--space-1-5); }\r\n.twc-pop__group { padding: 8px 10px 4px; font-size: var(--text-xs); font-weight: var(--font-bold); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); }\r\n.twc-pop__group:not(:first-child) { margin-top: 4px; border-top: var(--border-thin) solid var(--color-divider); padding-top: 10px; }\r\n.twc-opt {\r\n display: flex; align-items: center; gap: var(--space-2-5); width: 100%; padding: 8px 10px;\r\n border: none; background: transparent; cursor: pointer; text-align: left;\r\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text); border-radius: var(--radius-md);\r\n transition: background-color var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-opt:hover, .twc-opt[data-active=\"true\"] { background: var(--color-surface-sunken); }\r\n.twc-opt[data-selected=\"true\"] .twc-opt__label { color: var(--color-primary); font-weight: var(--font-semibold); }\r\n.twc-opt__main { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }\r\n.twc-opt__label { line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\r\n.twc-opt__desc { font-size: var(--text-xs); color: var(--color-text-muted); line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\r\n.twc-opt__check { flex: none; color: var(--color-primary); display: inline-flex; }\r\n.twc-opt__check svg { width: 16px; height: 16px; }\r\n.twc-pop__empty { padding: 14px 12px; text-align: center; font-size: var(--text-sm); color: var(--color-text-subtle); }\r\n`;\r\n\r\nfunction toOpt(o) { return typeof o === \"string\" ? { value: o, label: o } : o; }\r\nfunction normalizeGroups(options) {\r\n const groups = []; let cur = null;\r\n (options || []).forEach((o) => {\r\n if (o && typeof o === \"object\" && Array.isArray(o.options)) {\r\n groups.push({ group: o.group, options: o.options.map(toOpt) }); cur = null;\r\n } else {\r\n if (!cur) { cur = { group: null, options: [] }; groups.push(cur); }\r\n cur.options.push(toOpt(o));\r\n }\r\n });\r\n return groups;\r\n}\r\nfunction matches(o, q) {\r\n if (!q) return true;\r\n const s = q.toLowerCase();\r\n return o.label.toLowerCase().includes(s) || (o.description && o.description.toLowerCase().includes(s));\r\n}\r\nfunction ensureVisible(list, el) {\r\n if (!list || !el) return;\r\n const top = el.offsetTop, bottom = top + el.offsetHeight;\r\n if (top < list.scrollTop) list.scrollTop = top - 4;\r\n else if (bottom > list.scrollTop + list.clientHeight) list.scrollTop = bottom - list.clientHeight + 4;\r\n}\r\n\r\nexport function Combobox({\r\n label, hint, error, required = false, size = \"md\",\r\n placeholder = \"Select…\", options, value, defaultValue = null,\r\n onChange, clearable = false, disabled = false, id, className = \"\", ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-combo-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-combo-styles\"; el.textContent = COMBO_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const groups = React.useMemo(() => normalizeGroups(options), [options]);\r\n const flat = React.useMemo(() => groups.flatMap((g) => g.options), [groups]);\r\n const autoId = React.useId();\r\n const fieldId = id || autoId;\r\n const [internal, setInternal] = React.useState(defaultValue);\r\n const current = value !== undefined ? value : internal;\r\n const selected = flat.find((o) => o.value === current);\r\n\r\n const [open, setOpen] = React.useState(false);\r\n const [query, setQuery] = React.useState(\"\");\r\n const [active, setActive] = React.useState(0);\r\n const wrapRef = React.useRef(null);\r\n const inputRef = React.useRef(null);\r\n const listRef = React.useRef(null);\r\n const activeRef = React.useRef(null);\r\n\r\n // Filtered groups + flat visible list\r\n const fGroups = React.useMemo(\r\n () => groups.map((g) => ({ group: g.group, options: g.options.filter((o) => matches(o, query.trim())) })).filter((g) => g.options.length),\r\n [groups, query]\r\n );\r\n const visible = React.useMemo(() => fGroups.flatMap((g) => g.options), [fGroups]);\r\n\r\n React.useEffect(() => {\r\n if (!open) return;\r\n const onDown = (e) => { if (wrapRef.current && !wrapRef.current.contains(e.target)) close(); };\r\n document.addEventListener(\"mousedown\", onDown);\r\n return () => document.removeEventListener(\"mousedown\", onDown);\r\n }, [open]);\r\n React.useEffect(() => { setActive(0); }, [query]);\r\n React.useEffect(() => { if (open) ensureVisible(listRef.current, activeRef.current); }, [active, open]);\r\n\r\n function openMenu() { if (disabled) return; setQuery(\"\"); setOpen(true); }\r\n function close() { setOpen(false); setQuery(\"\"); }\r\n function commit(v) {\r\n if (value === undefined) setInternal(v);\r\n onChange?.(v); close();\r\n }\r\n function onKeyDown(e) {\r\n if (e.key === \"ArrowDown\") { e.preventDefault(); if (!open) { openMenu(); return; } setActive((a) => Math.min(a + 1, visible.length - 1)); }\r\n else if (e.key === \"ArrowUp\") { e.preventDefault(); setActive((a) => Math.max(a - 1, 0)); }\r\n else if (e.key === \"Enter\") { e.preventDefault(); if (open && visible[active]) commit(visible[active].value); }\r\n else if (e.key === \"Escape\") { close(); inputRef.current?.blur(); }\r\n else if (e.key === \"Backspace\" && !query && selected) { /* keep selection; user can clear */ }\r\n }\r\n\r\n const displayValue = open ? query : (selected ? selected.label : \"\");\r\n let counter = -1;\r\n\r\n return (\r\n <div className={`twc-field ${className}`} ref={wrapRef}>\r\n {label ? (<label className=\"twc-field__label\" htmlFor={fieldId}>{label}{required ? <span className=\"twc-field__req\">*</span> : null}</label>) : null}\r\n <div className=\"twc-cb\">\r\n <div className=\"twc-cb__control\" data-size={size} data-open={open || undefined} data-invalid={Boolean(error) || undefined} data-disabled={disabled || undefined}\r\n onClick={() => { if (!disabled) { inputRef.current?.focus(); if (!open) openMenu(); } }}>\r\n <input\r\n ref={inputRef} id={fieldId} className=\"twc-cb__input\" role=\"combobox\" aria-expanded={open} aria-autocomplete=\"list\"\r\n placeholder={selected && !open ? selected.label : placeholder}\r\n value={displayValue} disabled={disabled}\r\n onFocus={() => { if (!open) openMenu(); }}\r\n onChange={(e) => { setQuery(e.target.value); setOpen(true); }}\r\n onKeyDown={onKeyDown}\r\n {...rest}\r\n />\r\n {clearable && selected && !open ? (\r\n <button type=\"button\" className=\"twc-cb__clear\" aria-label=\"Clear\" onClick={(e) => { e.stopPropagation(); commit(null); }}>\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\r\n </button>\r\n ) : null}\r\n <button type=\"button\" className=\"twc-cb__chev\" aria-label=\"Toggle\" tabIndex={-1}\r\n onClick={(e) => { e.stopPropagation(); open ? close() : openMenu(); inputRef.current?.focus(); }}>\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>\r\n </button>\r\n </div>\r\n\r\n {open ? (\r\n <div className=\"twc-pop\" role=\"listbox\">\r\n <div className=\"twc-pop__list\" ref={listRef}>\r\n {visible.length === 0 ? <div className=\"twc-pop__empty\">No results found</div> :\r\n fGroups.map((g, gi) => (\r\n <React.Fragment key={gi}>\r\n {g.group ? <div className=\"twc-pop__group\">{g.group}</div> : null}\r\n {g.options.map((o) => {\r\n counter += 1; const idx = counter; const isSel = o.value === current;\r\n return (\r\n <button key={o.value} type=\"button\" className=\"twc-opt\" role=\"option\" aria-selected={isSel}\r\n ref={idx === active ? activeRef : null}\r\n data-selected={isSel || undefined} data-active={idx === active || undefined}\r\n onMouseEnter={() => setActive(idx)} onMouseDown={(e) => e.preventDefault()} onClick={() => commit(o.value)}>\r\n <span className=\"twc-opt__main\">\r\n <span className=\"twc-opt__label\">{o.label}</span>\r\n {o.description ? <span className=\"twc-opt__desc\">{o.description}</span> : null}\r\n </span>\r\n {isSel ? <span className=\"twc-opt__check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"/></svg></span> : null}\r\n </button>\r\n );\r\n })}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n </div>\r\n {error ? <span className=\"twc-field__error\">{error}</span> : hint ? <span className=\"twc-field__hint\">{hint}</span> : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst COMMAND_CSS = `\r\n.twc-cmdk__overlay { position: fixed; inset: 0; z-index: var(--z-modal); background: var(--color-overlay); backdrop-filter: blur(3px);\r\n display: flex; align-items: flex-start; justify-content: center; padding-top: 12vh; animation: twico-fade-in var(--duration-base) var(--ease-out); }\r\n.twc-cmdk { width: 100%; max-width: 560px; max-height: 60vh; display: flex; flex-direction: column; overflow: hidden;\r\n background: var(--color-surface-raised); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-2xl);\r\n box-shadow: var(--shadow-xl); font-family: var(--font-sans); animation: twico-pop-in var(--duration-base) var(--ease-spring); }\r\n.twc-cmdk__search { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-4) var(--space-5); border-bottom: var(--border-thin) solid var(--color-divider); }\r\n.twc-cmdk__search svg { width: 20px; height: 20px; color: var(--color-text-subtle); flex: none; }\r\n.twc-cmdk__input { flex: 1; min-width: 0; border: none; outline: none; background: transparent; font-family: inherit; font-size: var(--text-lg); color: var(--color-text); }\r\n.twc-cmdk__input:focus, .twc-cmdk__input:focus-visible { outline: none; box-shadow: none; }\r\n.twc-cmdk__input::placeholder { color: var(--color-text-subtle); }\r\n.twc-cmdk__kbd { flex: none; font-family: var(--font-mono); font-size: 11px; color: var(--color-text-subtle); padding: 3px 7px; border-radius: var(--radius-sm); background: var(--color-surface-sunken); border: var(--border-thin) solid var(--color-border); }\r\n.twc-cmdk__list { flex: 1; overflow-y: auto; padding: var(--space-2); }\r\n.twc-cmdk__group-label { font-size: 10px; font-weight: var(--font-bold); letter-spacing: var(--tracking-wider); text-transform: uppercase; color: var(--color-text-subtle); padding: var(--space-3) var(--space-3) var(--space-1); }\r\n.twc-cmdk__item { display: flex; align-items: center; gap: var(--space-3); width: 100%; padding: 10px 12px; border: none; background: none; cursor: pointer;\r\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text); text-align: left; border-radius: var(--radius-md); }\r\n.twc-cmdk__item[data-active=\"true\"] { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\r\n.twc-cmdk__item-ic { flex: none; display: inline-flex; color: var(--color-text-muted); }\r\n.twc-cmdk__item[data-active=\"true\"] .twc-cmdk__item-ic { color: var(--color-primary); }\r\n.twc-cmdk__item-ic svg { width: 18px; height: 18px; }\r\n.twc-cmdk__item-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }\r\n.twc-cmdk__item-label { font-weight: var(--font-medium); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\r\n.twc-cmdk__item-desc { font-size: var(--text-xs); color: var(--color-text-subtle); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\r\n.twc-cmdk__item-sc { flex: none; font-family: var(--font-mono); font-size: 11px; color: var(--color-text-subtle); }\r\n.twc-cmdk__empty { padding: var(--space-8); text-align: center; color: var(--color-text-subtle); font-size: var(--text-sm); }\r\n`;\r\n\r\nexport function CommandPalette({\r\n open,\r\n onClose,\r\n commands,\r\n placeholder = \"Type a command or search…\",\r\n emptyText = \"No results found\",\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-cmdk-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-cmdk-styles\";\r\n el.textContent = COMMAND_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [query, setQuery] = React.useState(\"\");\r\n const [active, setActive] = React.useState(0);\r\n const inputRef = React.useRef(null);\r\n const listRef = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n if (open) { setQuery(\"\"); setActive(0); const t = setTimeout(() => inputRef.current?.focus(), 30); return () => clearTimeout(t); }\r\n }, [open]);\r\n\r\n const q = query.trim().toLowerCase();\r\n const filtered = React.useMemo(() => commands.filter((c) =>\r\n !q || c.label.toLowerCase().includes(q) || (c.keywords || \"\").toLowerCase().includes(q) || (c.group || \"\").toLowerCase().includes(q)\r\n ), [commands, q]);\r\n\r\n // group while preserving order; build flat index for keyboard nav\r\n const groups = [];\r\n const flat = [];\r\n filtered.forEach((c) => {\r\n const key = c.group || \"\";\r\n let g = groups.find((x) => x.key === key);\r\n if (!g) { g = { key, items: [] }; groups.push(g); }\r\n g.items.push(c); flat.push(c);\r\n });\r\n\r\n React.useEffect(() => { setActive(0); }, [query]);\r\n\r\n const run = (cmd) => { cmd?.onSelect?.(); onClose?.(); };\r\n\r\n function onKeyDown(e) {\r\n if (e.key === \"ArrowDown\") { e.preventDefault(); setActive((a) => Math.min(a + 1, flat.length - 1)); }\r\n else if (e.key === \"ArrowUp\") { e.preventDefault(); setActive((a) => Math.max(a - 1, 0)); }\r\n else if (e.key === \"Enter\") { e.preventDefault(); run(flat[active]); }\r\n else if (e.key === \"Escape\") { e.preventDefault(); onClose?.(); }\r\n }\r\n\r\n React.useEffect(() => {\r\n const node = listRef.current?.querySelector('[data-active=\"true\"]');\r\n if (node) node.scrollIntoView({ block: \"nearest\" });\r\n }, [active]);\r\n\r\n if (!open) return null;\r\n let idx = -1;\r\n\r\n return (\r\n <div className=\"twc-cmdk__overlay\" onMouseDown={(e) => { if (e.target === e.currentTarget) onClose?.(); }}>\r\n <div className={`twc-cmdk ${className}`} role=\"dialog\" aria-modal=\"true\" aria-label=\"Command palette\" {...rest}>\r\n <div className=\"twc-cmdk__search\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/></svg>\r\n <input ref={inputRef} className=\"twc-cmdk__input\" value={query} placeholder={placeholder}\r\n onChange={(e) => setQuery(e.target.value)} onKeyDown={onKeyDown} />\r\n <span className=\"twc-cmdk__kbd\">esc</span>\r\n </div>\r\n <div className=\"twc-cmdk__list\" ref={listRef}>\r\n {flat.length === 0 ? <div className=\"twc-cmdk__empty\">{emptyText}</div> :\r\n groups.map((g) => (\r\n <div key={g.key || \"_\"} role=\"group\">\r\n {g.key ? <div className=\"twc-cmdk__group-label\">{g.key}</div> : null}\r\n {g.items.map((c) => {\r\n idx += 1; const i = idx;\r\n return (\r\n <button key={c.id || i} className=\"twc-cmdk__item\" role=\"option\" aria-selected={i === active}\r\n data-active={i === active || undefined} onMouseEnter={() => setActive(i)}\r\n onMouseDown={(e) => e.preventDefault()} onClick={() => run(c)}>\r\n {c.icon ? <span className=\"twc-cmdk__item-ic\" aria-hidden=\"true\">{c.icon}</span> : null}\r\n <span className=\"twc-cmdk__item-main\">\r\n <span className=\"twc-cmdk__item-label\">{c.label}</span>\r\n {c.description ? <span className=\"twc-cmdk__item-desc\">{c.description}</span> : null}\r\n </span>\r\n {c.shortcut ? <span className=\"twc-cmdk__item-sc\">{c.shortcut}</span> : null}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\n// Currency metadata (symbol, code, decimal precision). Inlined so the bundler ships it.\r\nexport const CURRENCIES = {\r\n USD: { code: \"USD\", symbol: \"$\", precision: 2, label: \"US Dollar\" },\r\n EUR: { code: \"EUR\", symbol: \"€\", precision: 2, label: \"Euro\" },\r\n GBP: { code: \"GBP\", symbol: \"£\", precision: 2, label: \"British Pound\" },\r\n JPY: { code: \"JPY\", symbol: \"¥\", precision: 0, label: \"Japanese Yen\" },\r\n IDR: { code: \"IDR\", symbol: \"Rp\", precision: 2, label: \"Indonesian Rupiah\" },\r\n CNY: { code: \"CNY\", symbol: \"¥\", precision: 2, label: \"Chinese Yuan\" },\r\n INR: { code: \"INR\", symbol: \"₹\", precision: 2, label: \"Indian Rupee\" },\r\n SGD: { code: \"SGD\", symbol: \"S$\", precision: 2, label: \"Singapore Dollar\" },\r\n AUD: { code: \"AUD\", symbol: \"A$\", precision: 2, label: \"Australian Dollar\" },\r\n CAD: { code: \"CAD\", symbol: \"C$\", precision: 2, label: \"Canadian Dollar\" },\r\n CHF: { code: \"CHF\", symbol: \"Fr\", precision: 2, label: \"Swiss Franc\" },\r\n KRW: { code: \"KRW\", symbol: \"₩\", precision: 0, label: \"South Korean Won\" },\r\n BRL: { code: \"BRL\", symbol: \"R$\", precision: 2, label: \"Brazilian Real\" },\r\n MYR: { code: \"MYR\", symbol: \"RM\", precision: 2, label: \"Malaysian Ringgit\" },\r\n THB: { code: \"THB\", symbol: \"฿\", precision: 2, label: \"Thai Baht\" },\r\n};\r\n\r\nexport const CURRENCY_OPTIONS = Object.values(CURRENCIES).map((c) => ({\r\n value: c.code, label: `${c.code} — ${c.label}`,\r\n}));\r\n\r\n// Clamp a raw input string to the allowed precision (e.g. precision 2 → \"2.259\" → \"2.25\").\r\nexport function clampPrecision(str, precision) {\r\n if (str == null) return \"\";\r\n let s = String(str).replace(/[^0-9.\\-]/g, \"\");\r\n s = s.replace(/(?!^)-/g, \"\");\r\n const firstDot = s.indexOf(\".\");\r\n if (firstDot !== -1) s = s.slice(0, firstDot + 1) + s.slice(firstDot + 1).replace(/\\./g, \"\");\r\n if (precision <= 0) return s.split(\".\")[0];\r\n const [int, dec] = s.split(\".\");\r\n if (dec == null) return s;\r\n return int + \".\" + dec.slice(0, precision);\r\n}\r\n\r\nconst CUR_CSS = `\r\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\r\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\r\n.twc-field__req { color: var(--color-danger); }\r\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\r\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\r\n.twc-cur {\r\n --_h: var(--control-h-md);\r\n display: flex; align-items: stretch; height: var(--_h);\r\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border);\r\n border-radius: var(--radius-md); overflow: hidden;\r\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-cur[data-size=\"sm\"] { --_h: var(--control-h-sm); }\r\n.twc-cur[data-size=\"lg\"] { --_h: var(--control-h-lg); }\r\n.twc-cur:hover:not(:focus-within) { border-color: var(--color-border-strong); }\r\n.twc-cur:focus-within { border-color: var(--color-primary); box-shadow: var(--ring); }\r\n.twc-cur[data-invalid=\"true\"] { border-color: var(--color-danger); }\r\n.twc-cur[data-invalid=\"true\"]:focus-within { box-shadow: 0 0 0 var(--ring-width) rgb(244 63 94 / 0.28); }\r\n.twc-cur[data-disabled=\"true\"] { background: var(--color-surface-sunken); opacity: 0.7; }\r\n.twc-cur__sym, .twc-cur__code {\r\n display: inline-flex; align-items: center; padding: 0 var(--space-3);\r\n background: var(--color-surface-sunken); color: var(--color-text-muted);\r\n font-size: var(--text-sm); font-weight: var(--font-semibold); white-space: nowrap; flex: none;\r\n}\r\n.twc-cur__sym { border-right: var(--border-thin) solid var(--color-border); }\r\n.twc-cur__code { border-left: var(--border-thin) solid var(--color-border); font-variant-numeric: tabular-nums; letter-spacing: 0.02em; }\r\n.twc-cur__el {\r\n flex: 1; min-width: 0; border: none; outline: none; background: transparent;\r\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text);\r\n text-align: right; padding: 0 var(--space-3); font-variant-numeric: tabular-nums;\r\n}\r\n.twc-cur__el:focus, .twc-cur__el:focus-visible { outline: none; box-shadow: none; }\r\n.twc-cur__el::placeholder { color: var(--color-text-subtle); }\r\n.twc-cur__el::-webkit-outer-spin-button, .twc-cur__el::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }\r\n`;\r\n\r\nfunction useCurStyles() {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-cur-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-cur-styles\"; el.textContent = CUR_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n}\r\n\r\n/**\r\n * Currency input with a fixed currency (defined in code via `currency`).\r\n * Shows the symbol as a prefix and the currency code as a suffix, and enforces\r\n * the currency's decimal precision (e.g. 2 → rejects a 3rd decimal).\r\n */\r\nexport function Currency({\r\n label, hint, error, required = false, size = \"md\",\r\n currency = \"USD\", precision, symbol, code,\r\n value, defaultValue = \"\", onChange, onValueChange,\r\n disabled = false, id, placeholder = \"0.00\", className = \"\", ...rest\r\n}) {\r\n useCurStyles();\r\n const meta = CURRENCIES[currency] || CURRENCIES.USD;\r\n const prec = precision != null ? precision : meta.precision;\r\n const sym = symbol != null ? symbol : meta.symbol;\r\n const cur = code != null ? code : meta.code;\r\n\r\n const autoId = React.useId();\r\n const fieldId = id || autoId;\r\n const invalid = Boolean(error);\r\n const controlled = value !== undefined;\r\n const [internal, setInternal] = React.useState(() => clampPrecision(String(defaultValue ?? \"\"), prec));\r\n const shown = controlled ? clampPrecision(String(value ?? \"\"), prec) : internal;\r\n\r\n function handleChange(e) {\r\n const next = clampPrecision(e.target.value, prec);\r\n if (!controlled) setInternal(next);\r\n onChange?.(e);\r\n onValueChange?.(next === \"\" ? null : Number(next), next);\r\n }\r\n function handleBlur(e) {\r\n if (shown === \"\" || shown == null) return;\r\n const n = Number(shown);\r\n if (Number.isNaN(n)) return;\r\n const fixed = n.toFixed(prec);\r\n if (!controlled) setInternal(fixed);\r\n onValueChange?.(Number(fixed), fixed);\r\n rest.onBlur?.(e);\r\n }\r\n\r\n return (\r\n <div className={`twc-field ${className}`}>\r\n {label ? (<label className=\"twc-field__label\" htmlFor={fieldId}>{label}{required ? <span className=\"twc-field__req\">*</span> : null}</label>) : null}\r\n <div className=\"twc-cur\" data-size={size} data-invalid={invalid || undefined} data-disabled={disabled || undefined}>\r\n <span className=\"twc-cur__sym\" aria-hidden=\"true\">{sym}</span>\r\n <input\r\n id={fieldId} className=\"twc-cur__el\" inputMode=\"decimal\" type=\"text\"\r\n value={shown} placeholder={placeholder} disabled={disabled}\r\n aria-invalid={invalid || undefined}\r\n {...rest}\r\n onChange={handleChange} onBlur={handleBlur}\r\n />\r\n <span className=\"twc-cur__code\">{cur}</span>\r\n </div>\r\n {error ? <span className=\"twc-field__error\">{error}</span> : hint ? <span className=\"twc-field__hint\">{hint}</span> : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nconst SELECT_CSS = `\r\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\r\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\r\n.twc-field__req { color: var(--color-danger); }\r\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\r\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\r\n\r\n.twc-sel { position: relative; font-family: var(--font-sans); }\r\n.twc-sel__trigger {\r\n --_h: var(--control-h-md);\r\n display: flex; align-items: center; gap: var(--space-2); width: 100%;\r\n min-height: var(--_h); padding: 0 var(--space-3); cursor: pointer;\r\n background: var(--color-surface); color: var(--color-text); text-align: left;\r\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md);\r\n font-family: inherit; font-size: var(--text-sm);\r\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-sel__trigger[data-size=\"sm\"] { --_h: var(--control-h-sm); }\r\n.twc-sel__trigger[data-size=\"lg\"] { --_h: var(--control-h-lg); }\r\n.twc-sel__trigger:hover:not([data-open=\"true\"]):not(:disabled) { border-color: var(--color-border-strong); }\r\n.twc-sel__trigger[data-open=\"true\"] { border-color: var(--color-primary); box-shadow: var(--ring); }\r\n.twc-sel__trigger[data-invalid=\"true\"] { border-color: var(--color-danger); }\r\n.twc-sel__trigger:disabled { background: var(--color-surface-sunken); opacity: 0.7; cursor: not-allowed; }\r\n.twc-sel__value { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\r\n.twc-sel__value[data-placeholder=\"true\"] { color: var(--color-text-subtle); }\r\n.twc-sel__chevron { flex: none; color: var(--color-text-subtle); display: inline-flex; transition: transform var(--duration-base) var(--ease-spring); }\r\n.twc-sel__trigger[data-open=\"true\"] .twc-sel__chevron { transform: rotate(180deg); }\r\n.twc-sel__chevron svg { width: 16px; height: 16px; }\r\n\r\n.twc-pop {\r\n position: absolute; z-index: var(--z-dropdown); top: calc(100% + 6px); left: 0; right: 0;\r\n background: var(--color-surface-raised); border: var(--border-thin) solid var(--color-border);\r\n border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); overflow: hidden;\r\n transform-origin: top; animation: twico-scale-in var(--duration-fast) var(--ease-spring);\r\n}\r\n.twc-pop[data-placement=\"top\"] { top: auto; bottom: calc(100% + 6px); transform-origin: bottom; }\r\n.twc-pop__search { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); border-bottom: var(--border-thin) solid var(--color-divider); }\r\n.twc-pop__search svg { width: 15px; height: 15px; color: var(--color-text-subtle); flex: none; }\r\n.twc-pop__search input { flex: 1; min-width: 0; border: none; outline: none; background: transparent; font-family: inherit; font-size: var(--text-sm); color: var(--color-text); -webkit-appearance: none; appearance: none; border-radius: 0; box-shadow: none; padding: 2px 0; }\r\n.twc-pop__search input:focus, .twc-pop__search input:focus-visible { outline: none; box-shadow: none; border: none; }\r\n.twc-pop__search input::placeholder { color: var(--color-text-subtle); }\r\n.twc-pop__list { max-height: 260px; overflow-y: auto; padding: var(--space-1-5); }\r\n.twc-pop__group { padding: 8px 10px 4px; font-size: var(--text-xs); font-weight: var(--font-bold); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); }\r\n.twc-pop__group:not(:first-child) { margin-top: 4px; border-top: var(--border-thin) solid var(--color-divider); padding-top: 10px; }\r\n.twc-opt {\r\n display: flex; align-items: center; gap: var(--space-2-5); width: 100%; padding: 8px 10px;\r\n border: none; background: transparent; cursor: pointer; text-align: left;\r\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text); border-radius: var(--radius-md);\r\n transition: background-color var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-opt:hover, .twc-opt[data-active=\"true\"] { background: var(--color-surface-sunken); }\r\n.twc-opt[data-selected=\"true\"] .twc-opt__label { color: var(--color-primary); font-weight: var(--font-semibold); }\r\n.twc-opt__main { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }\r\n.twc-opt__label { line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\r\n.twc-opt__desc { font-size: var(--text-xs); color: var(--color-text-muted); line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\r\n.twc-opt__check { flex: none; color: var(--color-primary); display: inline-flex; }\r\n.twc-opt__check svg { width: 16px; height: 16px; }\r\n.twc-pop__empty { padding: 14px 12px; text-align: center; font-size: var(--text-sm); color: var(--color-text-subtle); }\r\n`;\r\n\r\nfunction toOpt(o) { return typeof o === \"string\" ? { value: o, label: o } : o; }\r\nfunction normalizeGroups(options) {\r\n const groups = []; let cur = null;\r\n (options || []).forEach((o) => {\r\n if (o && typeof o === \"object\" && Array.isArray(o.options)) {\r\n groups.push({ group: o.group, options: o.options.map(toOpt) }); cur = null;\r\n } else {\r\n if (!cur) { cur = { group: null, options: [] }; groups.push(cur); }\r\n cur.options.push(toOpt(o));\r\n }\r\n });\r\n return groups;\r\n}\r\nfunction ensureVisible(list, el) {\r\n if (!list || !el) return;\r\n const top = el.offsetTop, bottom = top + el.offsetHeight;\r\n if (top < list.scrollTop) list.scrollTop = top - 4;\r\n else if (bottom > list.scrollTop + list.clientHeight) list.scrollTop = bottom - list.clientHeight + 4;\r\n}\r\n\r\nexport function Select({\r\n label, hint, error, required = false, size = \"md\",\r\n placeholder = \"Select…\", searchPlaceholder = \"Search…\", searchable, options, value, defaultValue = null,\r\n onChange, disabled = false, placement = \"bottom\", portal = false, minWidth = 0, id, className = \"\", ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-select-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-select-styles\"; el.textContent = SELECT_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const groups = React.useMemo(() => normalizeGroups(options), [options]);\r\n const flat = React.useMemo(() => groups.flatMap((g) => g.options), [groups]);\r\n const autoId = React.useId();\r\n const fieldId = id || autoId;\r\n const [internal, setInternal] = React.useState(defaultValue);\r\n const current = value !== undefined ? value : internal;\r\n const [open, setOpen] = React.useState(false);\r\n const [active, setActive] = React.useState(0);\r\n const [coords, setCoords] = React.useState(null);\r\n const [query, setQuery] = React.useState(\"\");\r\n const wrapRef = React.useRef(null);\r\n const triggerRef = React.useRef(null);\r\n const popRef = React.useRef(null);\r\n const listRef = React.useRef(null);\r\n const activeRef = React.useRef(null);\r\n const searchRef = React.useRef(null);\r\n\r\n // Auto-enable search for longer lists unless the caller forces it on/off.\r\n const showSearch = searchable === undefined ? flat.length > 5 : searchable;\r\n const fGroups = React.useMemo(() => {\r\n const q = query.trim().toLowerCase();\r\n if (!q) return groups;\r\n return groups\r\n .map((g) => ({ group: g.group, options: g.options.filter((o) => o.label.toLowerCase().includes(q) || (o.description && o.description.toLowerCase().includes(q))) }))\r\n .filter((g) => g.options.length);\r\n }, [groups, query]);\r\n const visible = React.useMemo(() => fGroups.flatMap((g) => g.options), [fGroups]);\r\n\r\n const selected = flat.find((o) => o.value === current);\r\n\r\n // Portal mode: measure the trigger and pin the popover with fixed positioning so\r\n // it escapes any clipping/scrolling ancestor (e.g. a config panel). Auto-flips up\r\n // when there isn't enough room below.\r\n const place = React.useCallback(() => {\r\n const el = triggerRef.current; if (!el) return;\r\n const r = el.getBoundingClientRect();\r\n const vh = window.innerHeight;\r\n const below = vh - r.bottom;\r\n const flip = placement === \"top\" || (below < 260 && r.top > below);\r\n setCoords({ left: r.left, width: Math.max(r.width, minWidth),\r\n top: flip ? undefined : Math.round(r.bottom + 6),\r\n bottom: flip ? Math.round(vh - r.top + 6) : undefined, flip });\r\n }, [placement, minWidth]);\r\n\r\n React.useEffect(() => {\r\n if (!open || !portal) return;\r\n place();\r\n const onMove = () => place();\r\n window.addEventListener(\"scroll\", onMove, true);\r\n window.addEventListener(\"resize\", onMove);\r\n return () => { window.removeEventListener(\"scroll\", onMove, true); window.removeEventListener(\"resize\", onMove); };\r\n }, [open, portal, place]);\r\n\r\n React.useEffect(() => {\r\n if (!open) return;\r\n const idx = flat.findIndex((o) => o.value === current);\r\n setActive(idx >= 0 ? idx : 0);\r\n setQuery(\"\");\r\n if (showSearch) { const t = setTimeout(() => searchRef.current?.focus(), 20); }\r\n const onDown = (e) => {\r\n if (wrapRef.current && wrapRef.current.contains(e.target)) return;\r\n if (popRef.current && popRef.current.contains(e.target)) return;\r\n setOpen(false);\r\n };\r\n document.addEventListener(\"mousedown\", onDown);\r\n return () => document.removeEventListener(\"mousedown\", onDown);\r\n }, [open]);\r\n\r\n React.useEffect(() => { setActive(0); }, [query]);\r\n\r\n React.useEffect(() => { if (open) ensureVisible(listRef.current, activeRef.current); }, [active, open]);\r\n\r\n function commit(v) {\r\n if (value === undefined) setInternal(v);\r\n onChange?.(v); setOpen(false);\r\n }\r\n function onKeyDown(e) {\r\n if (disabled) return;\r\n if (!open && (e.key === \"Enter\" || e.key === \" \" || e.key === \"ArrowDown\")) { e.preventDefault(); setOpen(true); return; }\r\n if (!open) return;\r\n if (e.key === \"Escape\") setOpen(false);\r\n else if (e.key === \"ArrowDown\") { e.preventDefault(); setActive((a) => Math.min(a + 1, visible.length - 1)); }\r\n else if (e.key === \"ArrowUp\") { e.preventDefault(); setActive((a) => Math.max(a - 1, 0)); }\r\n else if (e.key === \"Enter\") { e.preventDefault(); if (visible[active]) commit(visible[active].value); }\r\n }\r\n\r\n const listboxId = `${fieldId}-listbox`;\r\n const optionId = (i) => `${fieldId}-opt-${i}`;\r\n const activeId = open && visible[active] ? optionId(active) : undefined;\r\n\r\n let counter = -1;\r\n const popInner = (\r\n <>\r\n {showSearch ? (\r\n <div className=\"twc-pop__search\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/></svg>\r\n <input ref={searchRef} value={query} placeholder={searchPlaceholder} onKeyDown={onKeyDown}\r\n onChange={(e) => setQuery(e.target.value)} aria-label=\"Search options\"\r\n role=\"combobox\" aria-expanded={open} aria-controls={listboxId} aria-activedescendant={activeId} />\r\n </div>\r\n ) : null}\r\n <div className=\"twc-pop__list\" ref={listRef}>\r\n {visible.length === 0 ? <div className=\"twc-pop__empty\">No results found</div> :\r\n fGroups.map((g, gi) => (\r\n <React.Fragment key={gi}>\r\n {g.group ? <div className=\"twc-pop__group\">{g.group}</div> : null}\r\n {g.options.map((o) => {\r\n counter += 1; const idx = counter; const isSel = o.value === current;\r\n return (\r\n <button key={o.value} id={optionId(idx)} type=\"button\" className=\"twc-opt\" role=\"option\" aria-selected={isSel}\r\n ref={idx === active ? activeRef : null}\r\n data-selected={isSel || undefined} data-active={idx === active || undefined}\r\n onMouseEnter={() => setActive(idx)} onClick={() => commit(o.value)}>\r\n <span className=\"twc-opt__main\">\r\n <span className=\"twc-opt__label\">{o.label}</span>\r\n {o.description ? <span className=\"twc-opt__desc\">{o.description}</span> : null}\r\n </span>\r\n {isSel ? <span className=\"twc-opt__check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"/></svg></span> : null}\r\n </button>\r\n );\r\n })}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n </>\r\n );\r\n\r\n const RD = { createPortal: (typeof createPortal === \"function\" ? createPortal : (typeof window !== \"undefined\" && window.ReactDOM && window.ReactDOM.createPortal)) };\r\n const canPortal = portal && RD && RD.createPortal;\r\n\r\n let popEl = null;\r\n if (open) {\r\n if (canPortal && coords) {\r\n popEl = RD.createPortal(\r\n <div className=\"twc-pop twc-pop--portal\" id={listboxId} role=\"listbox\" ref={popRef}\r\n data-placement={coords.flip ? \"top\" : undefined}\r\n style={{ position: \"fixed\", left: coords.left, top: coords.top, bottom: coords.bottom, width: coords.width, right: \"auto\", zIndex: \"var(--z-tooltip)\" }}>\r\n {popInner}\r\n </div>, document.body);\r\n } else if (!portal) {\r\n popEl = (\r\n <div className=\"twc-pop\" id={listboxId} role=\"listbox\" ref={popRef} data-placement={placement === \"top\" ? \"top\" : undefined}>\r\n {popInner}\r\n </div>\r\n );\r\n }\r\n }\r\n\r\n return (\r\n <div className={`twc-field ${className}`} ref={wrapRef}>\r\n {label ? (<label className=\"twc-field__label\" htmlFor={fieldId}>{label}{required ? <span className=\"twc-field__req\">*</span> : null}</label>) : null}\r\n <div className=\"twc-sel\">\r\n <button type=\"button\" id={fieldId} ref={triggerRef} className=\"twc-sel__trigger\" data-size={size}\r\n data-open={open || undefined} data-invalid={Boolean(error) || undefined} disabled={disabled}\r\n aria-haspopup=\"listbox\" aria-expanded={open} aria-controls={open ? listboxId : undefined} aria-activedescendant={activeId}\r\n onClick={() => setOpen((o) => !o)} onKeyDown={onKeyDown} {...rest}>\r\n <span className=\"twc-sel__value\" data-placeholder={!selected || undefined}>{selected ? selected.label : placeholder}</span>\r\n <span className=\"twc-sel__chevron\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>\r\n </span>\r\n </button>\r\n {popEl}\r\n </div>\r\n {error ? <span className=\"twc-field__error\">{error}</span> : hint ? <span className=\"twc-field__hint\">{hint}</span> : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { CURRENCIES, CURRENCY_OPTIONS, clampPrecision } from \"./Currency.jsx\";\r\nimport { Select } from \"../selects/Select.jsx\";\r\n\r\nconst CURF_CSS = `\r\n.twc-curf__pick { flex: none; display: flex; align-items: stretch; border-right: var(--border-thin) solid var(--color-border); }\r\n.twc-curf__pick .twc-field { width: 132px; }\r\n.twc-curf__pick .twc-sel__trigger { height: 100%; border: none; border-radius: 0; background: var(--color-surface-sunken); box-shadow: none; }\r\n.twc-curf__pick .twc-sel__trigger:focus-visible { box-shadow: var(--ring); }\r\n.twc-curf__pick .twc-sel__value { font-weight: var(--font-semibold); color: var(--color-text-muted); }\r\n`;\r\n\r\nfunction useCurfStyles() {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-curf-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-curf-styles\"; el.textContent = CURF_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n}\r\n\r\n/**\r\n * Currency input where the USER picks the currency from a dropdown. The chosen\r\n * currency drives the prefix symbol, suffix code, and the enforced precision.\r\n */\r\nexport function CurrencyField({\r\n label, hint, error, required = false, size = \"md\",\r\n currency, defaultCurrency = \"USD\", onCurrencyChange, currencies,\r\n value, defaultValue = \"\", onValueChange,\r\n disabled = false, id, placeholder = \"0.00\", className = \"\", ...rest\r\n}) {\r\n useCurfStyles();\r\n const autoId = React.useId();\r\n const fieldId = id || autoId;\r\n const invalid = Boolean(error);\r\n\r\n const curControlled = currency !== undefined;\r\n const [curInternal, setCurInternal] = React.useState(defaultCurrency);\r\n const cur = curControlled ? currency : curInternal;\r\n const meta = CURRENCIES[cur] || CURRENCIES.USD;\r\n const prec = meta.precision;\r\n\r\n const valControlled = value !== undefined;\r\n const [valInternal, setValInternal] = React.useState(() => clampPrecision(String(defaultValue ?? \"\"), prec));\r\n const shown = valControlled ? clampPrecision(String(value ?? \"\"), prec) : valInternal;\r\n\r\n const options = React.useMemo(() => {\r\n if (!currencies) return CURRENCY_OPTIONS;\r\n return currencies.map((c) => (typeof c === \"string\" ? { value: c, label: `${c} — ${(CURRENCIES[c] || {}).label || c}` } : c));\r\n }, [currencies]);\r\n\r\n function setCurrency(next) {\r\n if (!curControlled) setCurInternal(next);\r\n onCurrencyChange?.(next);\r\n // re-clamp current value to the new currency's precision\r\n const reclamped = clampPrecision(shown, (CURRENCIES[next] || CURRENCIES.USD).precision);\r\n if (!valControlled) setValInternal(reclamped);\r\n }\r\n function handleChange(e) {\r\n const next = clampPrecision(e.target.value, prec);\r\n if (!valControlled) setValInternal(next);\r\n onValueChange?.(next === \"\" ? null : Number(next), next, cur);\r\n }\r\n function handleBlur() {\r\n if (shown === \"\" || shown == null) return;\r\n const n = Number(shown); if (Number.isNaN(n)) return;\r\n const fixed = n.toFixed(prec);\r\n if (!valControlled) setValInternal(fixed);\r\n onValueChange?.(Number(fixed), fixed, cur);\r\n }\r\n\r\n return (\r\n <div className={`twc-field ${className}`}>\r\n {label ? (<label className=\"twc-field__label\" htmlFor={fieldId}>{label}{required ? <span className=\"twc-field__req\">*</span> : null}</label>) : null}\r\n <div className=\"twc-cur\" data-size={size} data-invalid={invalid || undefined} data-disabled={disabled || undefined}>\r\n <span className=\"twc-curf__pick\">\r\n <Select size={size} value={cur} options={options} disabled={disabled} searchable portal minWidth={260}\r\n aria-label=\"Currency\" onChange={setCurrency} />\r\n </span>\r\n <span className=\"twc-cur__sym\" aria-hidden=\"true\">{meta.symbol}</span>\r\n <input\r\n id={fieldId} className=\"twc-cur__el\" inputMode=\"decimal\" type=\"text\"\r\n value={shown} placeholder={placeholder} disabled={disabled}\r\n aria-invalid={invalid || undefined}\r\n {...rest}\r\n onChange={handleChange} onBlur={handleBlur}\r\n />\r\n <span className=\"twc-cur__code\">{meta.code}</span>\r\n </div>\r\n {error ? <span className=\"twc-field__error\">{error}</span> : hint ? <span className=\"twc-field__hint\">{hint}</span> : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst FIELD_CSS = `\r\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\r\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\r\n.twc-field__req { color: var(--color-danger); }\r\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\r\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\r\n\r\n.twc-input {\r\n --_h: var(--control-h-md);\r\n display: flex; align-items: center; gap: var(--space-2);\r\n height: var(--_h);\r\n padding-inline: var(--space-3);\r\n background: var(--color-surface);\r\n border: var(--border-thin) solid var(--color-border);\r\n border-radius: var(--radius-md);\r\n transition: border-color var(--duration-fast) var(--ease-standard),\r\n box-shadow var(--duration-fast) var(--ease-standard),\r\n background-color var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-input[data-size=\"sm\"] { --_h: var(--control-h-sm); padding-inline: var(--space-2-5); }\r\n.twc-input[data-size=\"lg\"] { --_h: var(--control-h-lg); padding-inline: var(--space-4); }\r\n.twc-input:hover:not([data-disabled]):not(:focus-within) { border-color: var(--color-border-strong); }\r\n.twc-input:focus-within { border-color: var(--color-primary); box-shadow: var(--ring); }\r\n.twc-input[data-invalid=\"true\"] { border-color: var(--color-danger); }\r\n.twc-input[data-invalid=\"true\"]:focus-within { box-shadow: 0 0 0 var(--ring-width) rgb(244 63 94 / 0.28); }\r\n.twc-input[data-disabled] { background: var(--color-surface-sunken); opacity: 0.7; cursor: not-allowed; }\r\n.twc-input__el {\r\n flex: 1; min-width: 0; border: none; outline: none; background: transparent;\r\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text); height: 100%;\r\n}\r\n.twc-input__el:focus, .twc-input__el:focus-visible { outline: none; box-shadow: none; }\r\n.twc-input__el::placeholder { color: var(--color-text-subtle); }\r\n.twc-input__el:disabled { cursor: not-allowed; }\r\n.twc-input__affix { display: inline-flex; color: var(--color-text-subtle); flex: none; }\r\n.twc-input__reveal { display: inline-grid; place-items: center; width: 24px; height: 24px; padding: 0; border: none;\r\n background: transparent; color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-sm);\r\n transition: background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard); }\r\n.twc-input__reveal:hover { background: var(--color-surface-sunken); color: var(--color-text); }\r\n.twc-input__reveal:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-input__reveal svg { width: 17px; height: 17px; }\r\n`;\r\n\r\nfunction useFieldStyles() {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-field-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-field-styles\";\r\n el.textContent = FIELD_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n}\r\n\r\nexport function Input({\r\n label,\r\n hint,\r\n error,\r\n required = false,\r\n size = \"md\",\r\n leftIcon,\r\n rightIcon,\r\n type = \"text\",\r\n disabled = false,\r\n id,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n useFieldStyles();\r\n const autoId = React.useId();\r\n const fieldId = id || autoId;\r\n const invalid = Boolean(error);\r\n const isPassword = type === \"password\";\r\n const [revealed, setRevealed] = React.useState(false);\r\n const effectiveType = isPassword && revealed ? \"text\" : type;\r\n\r\n // Password fields get a built-in reveal/hide eye toggle unless the caller supplies their own rightIcon.\r\n const suffix = rightIcon\r\n ? <span className=\"twc-input__affix\">{rightIcon}</span>\r\n : isPassword\r\n ? (\r\n <button type=\"button\" className=\"twc-input__reveal\" disabled={disabled}\r\n aria-label={revealed ? \"Hide password\" : \"Show password\"} aria-pressed={revealed}\r\n onClick={() => setRevealed((v) => !v)} tabIndex={disabled ? -1 : 0}>\r\n {revealed ? (\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M9.88 9.88a3 3 0 0 0 4.24 4.24\"/><path d=\"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68\"/><path d=\"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61\"/><path d=\"m2 2 20 20\"/></svg>\r\n ) : (\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></svg>\r\n )}\r\n </button>\r\n )\r\n : null;\r\n\r\n return (\r\n <div className={`twc-field ${className}`}>\r\n {label ? (\r\n <label className=\"twc-field__label\" htmlFor={fieldId}>\r\n {label}{required ? <span className=\"twc-field__req\">*</span> : null}\r\n </label>\r\n ) : null}\r\n <div className=\"twc-input\" data-size={size} data-invalid={invalid || undefined} data-disabled={disabled || undefined}>\r\n {leftIcon ? <span className=\"twc-input__affix\">{leftIcon}</span> : null}\r\n <input\r\n id={fieldId}\r\n className=\"twc-input__el\"\r\n type={effectiveType}\r\n disabled={disabled}\r\n aria-invalid={invalid || undefined}\r\n {...rest}\r\n />\r\n {suffix}\r\n </div>\r\n {error ? <span className=\"twc-field__error\">{error}</span> : hint ? <span className=\"twc-field__hint\">{hint}</span> : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst MULTI_CSS = `\r\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\r\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\r\n.twc-field__req { color: var(--color-danger); }\r\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\r\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\r\n\r\n.twc-ms { position: relative; font-family: var(--font-sans); }\r\n.twc-ms__control {\r\n display: flex; align-items: center; flex-wrap: wrap; gap: 5px; width: 100%;\r\n min-height: var(--control-h-md); padding: 5px var(--space-3); cursor: text;\r\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md);\r\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-ms__control:hover:not([data-open=\"true\"]) { border-color: var(--color-border-strong); }\r\n.twc-ms__control[data-open=\"true\"] { border-color: var(--color-primary); box-shadow: var(--ring); }\r\n.twc-ms__control[data-invalid=\"true\"] { border-color: var(--color-danger); }\r\n.twc-ms__control[data-disabled=\"true\"] { background: var(--color-surface-sunken); opacity: 0.7; cursor: not-allowed; }\r\n.twc-ms__chip {\r\n display: inline-flex; align-items: center; gap: 5px; padding: 2px 4px 2px 9px; height: 24px;\r\n background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg);\r\n border-radius: var(--radius-full); font-size: var(--text-xs); font-weight: var(--font-semibold);\r\n}\r\n.twc-ms__chip-x { display: inline-grid; place-items: center; width: 16px; height: 16px; border: none; padding: 0; background: transparent; color: inherit; cursor: pointer; border-radius: var(--radius-full); opacity: 0.7; }\r\n.twc-ms__chip-x:hover { opacity: 1; background: color-mix(in srgb, currentColor 18%, transparent); }\r\n.twc-ms__chip-x svg { width: 12px; height: 12px; }\r\n.twc-ms__input { flex: 1; min-width: 70px; border: none; outline: none; background: transparent; font-family: inherit; font-size: var(--text-sm); color: var(--color-text); height: 24px; cursor: text; }\r\n.twc-ms__input:focus, .twc-ms__input:focus-visible { outline: none; box-shadow: none; }\r\n.twc-ms__input::placeholder { color: var(--color-text-subtle); }\r\n.twc-ms__chev { flex: none; display: inline-grid; place-items: center; border: none; background: transparent; color: var(--color-text-subtle); cursor: pointer; padding: 0; transition: transform var(--duration-base) var(--ease-spring); }\r\n.twc-ms__control[data-open=\"true\"] .twc-ms__chev { transform: rotate(180deg); }\r\n.twc-ms__chev svg { width: 16px; height: 16px; }\r\n\r\n.twc-pop {\r\n position: absolute; z-index: var(--z-dropdown); top: calc(100% + 6px); left: 0; right: 0;\r\n background: var(--color-surface-raised); border: var(--border-thin) solid var(--color-border);\r\n border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); overflow: hidden;\r\n transform-origin: top; animation: twico-scale-in var(--duration-fast) var(--ease-spring);\r\n}\r\n.twc-pop__list { max-height: 260px; overflow-y: auto; padding: var(--space-1-5); }\r\n.twc-pop__group { padding: 8px 10px 4px; font-size: var(--text-xs); font-weight: var(--font-bold); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); }\r\n.twc-pop__group:not(:first-child) { margin-top: 4px; border-top: var(--border-thin) solid var(--color-divider); padding-top: 10px; }\r\n.twc-opt {\r\n display: flex; align-items: center; gap: var(--space-2-5); width: 100%; padding: 8px 10px;\r\n border: none; background: transparent; cursor: pointer; text-align: left;\r\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text); border-radius: var(--radius-md);\r\n transition: background-color var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-opt:hover, .twc-opt[data-active=\"true\"] { background: var(--color-surface-sunken); }\r\n.twc-opt__box {\r\n flex: none; width: 18px; height: 18px; display: grid; place-items: center;\r\n border: var(--border-medium) solid var(--color-border-strong); border-radius: var(--radius-sm);\r\n color: #fff; transition: background-color var(--duration-fast), border-color var(--duration-fast);\r\n}\r\n.twc-opt[data-selected=\"true\"] .twc-opt__box { background: var(--color-primary); border-color: var(--color-primary); }\r\n.twc-opt__box svg { width: 12px; height: 12px; opacity: 0; }\r\n.twc-opt[data-selected=\"true\"] .twc-opt__box svg { opacity: 1; }\r\n.twc-opt__main { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }\r\n.twc-opt__label { line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\r\n.twc-opt__desc { font-size: var(--text-xs); color: var(--color-text-muted); line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\r\n.twc-pop__empty { padding: 14px 12px; text-align: center; font-size: var(--text-sm); color: var(--color-text-subtle); }\r\n`;\r\n\r\nfunction toOpt(o) { return typeof o === \"string\" ? { value: o, label: o } : o; }\r\nfunction normalizeGroups(options) {\r\n const groups = []; let cur = null;\r\n (options || []).forEach((o) => {\r\n if (o && typeof o === \"object\" && Array.isArray(o.options)) {\r\n groups.push({ group: o.group, options: o.options.map(toOpt) }); cur = null;\r\n } else {\r\n if (!cur) { cur = { group: null, options: [] }; groups.push(cur); }\r\n cur.options.push(toOpt(o));\r\n }\r\n });\r\n return groups;\r\n}\r\nfunction matches(o, q) {\r\n if (!q) return true;\r\n const s = q.toLowerCase();\r\n return o.label.toLowerCase().includes(s) || (o.description && o.description.toLowerCase().includes(s));\r\n}\r\nfunction ensureVisible(list, el) {\r\n if (!list || !el) return;\r\n const top = el.offsetTop, bottom = top + el.offsetHeight;\r\n if (top < list.scrollTop) list.scrollTop = top - 4;\r\n else if (bottom > list.scrollTop + list.clientHeight) list.scrollTop = bottom - list.clientHeight + 4;\r\n}\r\n\r\nexport function MultiSelect({\r\n label, hint, error, required = false,\r\n placeholder = \"Select…\", options, value, defaultValue = [],\r\n onChange, disabled = false, id, className = \"\", ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-ms-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-ms-styles\"; el.textContent = MULTI_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const groups = React.useMemo(() => normalizeGroups(options), [options]);\r\n const flat = React.useMemo(() => groups.flatMap((g) => g.options), [groups]);\r\n const autoId = React.useId();\r\n const fieldId = id || autoId;\r\n const [internal, setInternal] = React.useState(defaultValue);\r\n const selected = value !== undefined ? value : internal;\r\n\r\n const [open, setOpen] = React.useState(false);\r\n const [query, setQuery] = React.useState(\"\");\r\n const [active, setActive] = React.useState(0);\r\n const wrapRef = React.useRef(null);\r\n const inputRef = React.useRef(null);\r\n const listRef = React.useRef(null);\r\n const activeRef = React.useRef(null);\r\n\r\n const fGroups = React.useMemo(\r\n () => groups.map((g) => ({ group: g.group, options: g.options.filter((o) => matches(o, query.trim())) })).filter((g) => g.options.length),\r\n [groups, query]\r\n );\r\n const visible = React.useMemo(() => fGroups.flatMap((g) => g.options), [fGroups]);\r\n\r\n React.useEffect(() => {\r\n if (!open) return;\r\n const onDown = (e) => { if (wrapRef.current && !wrapRef.current.contains(e.target)) { setOpen(false); setQuery(\"\"); } };\r\n document.addEventListener(\"mousedown\", onDown);\r\n return () => document.removeEventListener(\"mousedown\", onDown);\r\n }, [open]);\r\n React.useEffect(() => { setActive(0); }, [query]);\r\n React.useEffect(() => { if (open) ensureVisible(listRef.current, activeRef.current); }, [active, open]);\r\n\r\n function commit(next) {\r\n if (value === undefined) setInternal(next);\r\n onChange?.(next);\r\n }\r\n function toggle(v) {\r\n commit(selected.includes(v) ? selected.filter((x) => x !== v) : [...selected, v]);\r\n setQuery(\"\");\r\n inputRef.current?.focus();\r\n }\r\n function onKeyDown(e) {\r\n if (e.key === \"ArrowDown\") { e.preventDefault(); if (!open) setOpen(true); else setActive((a) => Math.min(a + 1, visible.length - 1)); }\r\n else if (e.key === \"ArrowUp\") { e.preventDefault(); setActive((a) => Math.max(a - 1, 0)); }\r\n else if (e.key === \"Enter\") { e.preventDefault(); if (open && visible[active]) toggle(visible[active].value); }\r\n else if (e.key === \"Escape\") { setOpen(false); setQuery(\"\"); }\r\n else if (e.key === \"Backspace\" && !query && selected.length) { commit(selected.slice(0, -1)); }\r\n }\r\n\r\n const selectedOpts = flat.filter((o) => selected.includes(o.value));\r\n const listboxId = `${fieldId}-listbox`;\r\n const optionId = (i) => `${fieldId}-opt-${i}`;\r\n const activeId = open && visible[active] ? optionId(active) : undefined;\r\n let counter = -1;\r\n\r\n return (\r\n <div className={`twc-field ${className}`} ref={wrapRef}>\r\n {label ? (<label className=\"twc-field__label\" htmlFor={fieldId}>{label}{required ? <span className=\"twc-field__req\">*</span> : null}</label>) : null}\r\n <div className=\"twc-ms\">\r\n <div className=\"twc-ms__control\" data-open={open || undefined} data-invalid={Boolean(error) || undefined} data-disabled={disabled || undefined}\r\n onClick={() => { if (!disabled) { inputRef.current?.focus(); setOpen(true); } }}>\r\n {selectedOpts.map((o) => (\r\n <span className=\"twc-ms__chip\" key={o.value}>\r\n {o.label}\r\n <button type=\"button\" className=\"twc-ms__chip-x\" aria-label={`Remove ${o.label}`} onClick={(e) => { e.stopPropagation(); toggle(o.value); }}>\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\r\n </button>\r\n </span>\r\n ))}\r\n <input ref={inputRef} id={fieldId} className=\"twc-ms__input\" role=\"combobox\" aria-expanded={open} aria-autocomplete=\"list\"\r\n aria-controls={open ? listboxId : undefined} aria-activedescendant={activeId}\r\n placeholder={selectedOpts.length ? \"\" : placeholder} value={query} disabled={disabled}\r\n onFocus={() => setOpen(true)} onChange={(e) => { setQuery(e.target.value); setOpen(true); }} onKeyDown={onKeyDown} {...rest} />\r\n <button type=\"button\" className=\"twc-ms__chev\" aria-label=\"Toggle\" tabIndex={-1}\r\n onClick={(e) => { e.stopPropagation(); setOpen((o) => !o); inputRef.current?.focus(); }}>\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>\r\n </button>\r\n </div>\r\n\r\n {open ? (\r\n <div className=\"twc-pop\">\r\n <div className=\"twc-pop__list\" id={listboxId} ref={listRef} role=\"listbox\" aria-multiselectable=\"true\">\r\n {visible.length === 0 ? <div className=\"twc-pop__empty\">No results found</div> :\r\n fGroups.map((g, gi) => (\r\n <React.Fragment key={gi}>\r\n {g.group ? <div className=\"twc-pop__group\">{g.group}</div> : null}\r\n {g.options.map((o) => {\r\n counter += 1; const idx = counter; const isSel = selected.includes(o.value);\r\n return (\r\n <button key={o.value} id={optionId(idx)} type=\"button\" className=\"twc-opt\" role=\"option\" aria-selected={isSel}\r\n ref={idx === active ? activeRef : null}\r\n data-selected={isSel || undefined} data-active={idx === active || undefined}\r\n onMouseEnter={() => setActive(idx)} onMouseDown={(e) => e.preventDefault()} onClick={() => toggle(o.value)}>\r\n <span className=\"twc-opt__box\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"/></svg></span>\r\n <span className=\"twc-opt__main\">\r\n <span className=\"twc-opt__label\">{o.label}</span>\r\n {o.description ? <span className=\"twc-opt__desc\">{o.description}</span> : null}\r\n </span>\r\n </button>\r\n );\r\n })}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n </div>\r\n {error ? <span className=\"twc-field__error\">{error}</span> : hint ? <span className=\"twc-field__hint\">{hint}</span> : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst PAGINATION_CSS = `\r\n.twc-pagination { display: inline-flex; align-items: center; gap: 4px; font-family: var(--font-sans); }\r\n.twc-page {\r\n display: inline-grid; place-items: center; min-width: 36px; height: 36px; padding: 0 8px;\r\n font-size: var(--text-sm); font-weight: var(--font-medium); color: var(--color-text-muted);\r\n background: transparent; border: var(--border-thin) solid transparent; border-radius: var(--radius-md);\r\n cursor: pointer;\r\n transition: background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring);\r\n}\r\n.twc-page:hover:not(:disabled):not([data-active=\"true\"]) { background: var(--color-surface-sunken); color: var(--color-text); }\r\n.twc-page:active:not(:disabled) { transform: scale(0.9); }\r\n.twc-page:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-page[data-active=\"true\"] { background: var(--color-primary); color: var(--color-primary-fg); font-weight: var(--font-semibold); }\r\n.twc-page:disabled { opacity: 0.4; cursor: not-allowed; }\r\n.twc-page svg { width: 17px; height: 17px; }\r\n.twc-page__ellipsis { color: var(--color-text-subtle); cursor: default; }\r\n.twc-page[data-size=\"sm\"] { min-width: 30px; height: 30px; font-size: var(--text-xs); }\r\n.twc-pagination__jump { display: inline-flex; align-items: center; gap: 7px; margin-left: 8px;\r\n font-size: var(--text-sm); color: var(--color-text-muted); white-space: nowrap; }\r\n.twc-pagination__jump input {\r\n width: 56px; height: 34px; text-align: center; box-sizing: border-box;\r\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text);\r\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border);\r\n border-radius: var(--radius-md); outline: none; -moz-appearance: textfield;\r\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-pagination__jump input::-webkit-outer-spin-button,\r\n.twc-pagination__jump input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }\r\n.twc-pagination__jump input:hover { border-color: var(--color-border-strong); }\r\n.twc-pagination__jump input:focus { border-color: var(--color-primary); box-shadow: var(--ring); }\r\n.twc-pagination__jump[data-size=\"sm\"] input { height: 30px; width: 50px; }\r\n`;\r\n\r\nfunction range(start, end) {\r\n const r = [];\r\n for (let i = start; i <= end; i++) r.push(i);\r\n return r;\r\n}\r\n\r\nfunction buildPages(current, total, siblings = 1, boundaries = 1) {\r\n // Always show `boundaries` pages at each edge + current ± siblings, ellipsis between.\r\n const pages = new Set();\r\n for (let i = 1; i <= boundaries; i++) { pages.add(i); pages.add(total - i + 1); }\r\n for (let i = current - siblings; i <= current + siblings; i++) pages.add(i);\r\n const valid = [...pages].filter((p) => p >= 1 && p <= total).sort((a, b) => a - b);\r\n // Collapse if the gap-with-ellipsis would be no shorter than just showing the page.\r\n const out = [];\r\n let prev = 0;\r\n for (const p of valid) {\r\n if (p - prev === 2) out.push(prev + 1);\r\n else if (p - prev > 2) out.push(\"…\");\r\n out.push(p);\r\n prev = p;\r\n }\r\n return out;\r\n}\r\n\r\nexport function Pagination({\r\n page = 1,\r\n total,\r\n onChange,\r\n siblings = 1,\r\n boundaries = 1,\r\n size = \"md\",\r\n showJumper = false,\r\n jumperLabel = \"Go to\",\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-pagination-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-pagination-styles\";\r\n el.textContent = PAGINATION_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const pages = buildPages(page, total, siblings, boundaries);\r\n const go = (p) => { if (p >= 1 && p <= total && p !== page) onChange?.(p); };\r\n const [jump, setJump] = React.useState(\"\");\r\n const submitJump = () => {\r\n const n = parseInt(jump, 10);\r\n if (!Number.isNaN(n)) go(Math.min(Math.max(n, 1), total));\r\n setJump(\"\");\r\n };\r\n\r\n return (\r\n <nav className={`twc-pagination ${className}`} aria-label=\"Pagination\" {...rest}>\r\n <button className=\"twc-page\" data-size={size} onClick={() => go(page - 1)} disabled={page <= 1} aria-label=\"Previous page\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m15 18-6-6 6-6\"/></svg>\r\n </button>\r\n {pages.map((p, i) =>\r\n p === \"…\" ? (\r\n <span key={`e${i}`} className=\"twc-page twc-page__ellipsis\" aria-hidden=\"true\">…</span>\r\n ) : (\r\n <button key={p} className=\"twc-page\" data-size={size} data-active={p === page || undefined}\r\n aria-current={p === page ? \"page\" : undefined} onClick={() => go(p)}>\r\n {p}\r\n </button>\r\n )\r\n )}\r\n <button className=\"twc-page\" data-size={size} onClick={() => go(page + 1)} disabled={page >= total} aria-label=\"Next page\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg>\r\n </button>\r\n {showJumper && total > 1 ? (\r\n <span className=\"twc-pagination__jump\" data-size={size}>\r\n {jumperLabel}\r\n <input type=\"number\" min={1} max={total} value={jump} placeholder={String(page)}\r\n aria-label=\"Go to page\"\r\n onChange={(e) => setJump(e.target.value)}\r\n onKeyDown={(e) => { if (e.key === \"Enter\") { e.preventDefault(); submitJump(); } }}\r\n onBlur={submitJump} />\r\n </span>\r\n ) : null}\r\n </nav>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Select } from \"../selects/Select.jsx\";\r\nimport { Input } from \"../inputs/Input.jsx\";\r\nimport { MultiSelect } from \"../selects/MultiSelect.jsx\";\r\nimport { Pagination } from \"../table/Pagination.jsx\";\r\n\r\nconst DT_CSS = `\r\n.twc-dt { display: flex; flex-direction: column; font-family: var(--font-sans); color: var(--color-text);\r\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg);\r\n background: var(--color-surface); overflow: hidden; }\r\n\r\n/* Toolbar */\r\n.twc-dt__toolbar { position: relative; display: flex; align-items: center; gap: 6px; padding: 8px 10px;\r\n border-bottom: var(--border-thin) solid var(--color-divider); flex-wrap: wrap; }\r\n.twc-dt__tbtn { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 10px;\r\n border: var(--border-thin) solid transparent; border-radius: var(--radius-md); background: transparent;\r\n font-family: inherit; font-size: var(--text-xs); font-weight: var(--font-semibold); color: var(--color-text-muted);\r\n cursor: pointer; transition: background-color var(--duration-fast), color var(--duration-fast); }\r\n.twc-dt__tbtn:hover { background: var(--color-surface-sunken); color: var(--color-text); }\r\n.twc-dt__tbtn[data-tip], .twc-dt__export-toggle[data-tip] { position: relative; }\r\n.twc-dt__tbtn[data-tip]::after, .twc-dt__export-toggle[data-tip]::after {\r\n content: attr(data-tip); position: absolute; top: calc(100% + 8px); left: 50%;\r\n transform: translateX(-50%) translateY(2px); transform-origin: top center;\r\n background: var(--color-text); color: var(--color-surface);\r\n font-size: var(--text-xs); font-weight: var(--font-medium); letter-spacing: 0;\r\n padding: 5px 9px; border-radius: var(--radius-md); white-space: nowrap;\r\n box-shadow: var(--shadow-md); opacity: 0; pointer-events: none; z-index: var(--z-tooltip);\r\n transition: opacity var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring); }\r\n.twc-dt__tbtn[data-tip]:hover::after, .twc-dt__export-toggle[data-tip]:hover::after {\r\n opacity: 1; transform: translateX(-50%) translateY(0); transition-delay: 0.4s; }\r\n.twc-dt__tbtn[data-active=\"true\"] { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\r\n.twc-dt__tbtn svg { width: 16px; height: 16px; }\r\n.twc-dt__export { display: inline-flex; align-items: stretch; border-radius: var(--radius-md); overflow: hidden; box-shadow: var(--shadow-xs); }\r\n.twc-dt__export-main, .twc-dt__export-toggle { height: 32px; border: none; appearance: none; -webkit-appearance: none; background: var(--color-primary); color: var(--color-primary-fg);\r\n font-family: inherit; font-weight: var(--font-semibold); cursor: pointer; display: inline-flex; align-items: center; transition: background-color var(--duration-fast); }\r\n.twc-dt__export-main { gap: 6px; padding: 0 12px; font-size: var(--text-xs); border-radius: 0; }\r\n.twc-dt__export-main svg { width: 16px; height: 16px; }\r\n.twc-dt__export-toggle { padding: 0 7px; gap: 0; border-radius: 0; border-left: var(--border-thin) solid color-mix(in srgb, var(--color-primary-fg) 28%, var(--color-primary)); }\r\n.twc-dt__export-toggle svg { width: 15px; height: 15px; transition: transform var(--duration-base) var(--ease-spring); }\r\n.twc-dt__export-main:hover, .twc-dt__export-toggle:hover { background: var(--color-primary-hover); }\r\n.twc-dt__export-toggle[aria-expanded=\"true\"] { background: var(--color-primary-active); }\r\n.twc-dt__export-toggle[aria-expanded=\"true\"] svg { transform: rotate(180deg); }\r\n.twc-dt__tbadge { min-width: 16px; height: 16px; padding: 0 4px; border-radius: var(--radius-full);\r\n background: var(--color-primary); color: var(--color-primary-fg); font-size: 10px; font-weight: 700;\r\n display: inline-grid; place-items: center; }\r\n.twc-dt__tdot { width: 8px; height: 8px; padding: 0; border-radius: var(--radius-full); background: var(--color-primary);\r\n display: inline-block; flex: none; align-self: center; }\r\n.twc-dt__search { margin-left: auto; display: flex; align-items: center; gap: 7px; height: 32px; padding: 0 10px;\r\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface);\r\n transition: border-color var(--duration-fast), box-shadow var(--duration-fast); }\r\n.twc-dt__search:focus-within { border-color: var(--color-primary); box-shadow: var(--ring); }\r\n.twc-dt__search svg { width: 15px; height: 15px; color: var(--color-text-subtle); flex: none; }\r\n.twc-dt__search input { border: none; outline: none; background: transparent; font-family: inherit;\r\n font-size: var(--text-sm); color: var(--color-text); width: 150px; }\r\n.twc-dt__search input:focus, .twc-dt__search input:focus-visible { outline: none; box-shadow: none; }\r\n.twc-dt__search input::placeholder { color: var(--color-text-subtle); }\r\n\r\n/* Scroll area + table */\r\n.twc-dt__scroll { overflow: auto; position: relative; }\r\n.twc-dt__table { border-collapse: separate; border-spacing: 0; min-width: 100%; table-layout: fixed; }\r\n.twc-dt__th, .twc-dt__td { box-sizing: border-box; text-align: left; }\r\n.twc-dt__th { position: sticky; top: 0; z-index: 3; background: var(--color-surface-sunken);\r\n border-bottom: var(--border-thin) solid var(--color-border); padding: 0; height: 44px;\r\n font-size: var(--text-xs); font-weight: var(--font-bold); letter-spacing: var(--tracking-wide);\r\n text-transform: uppercase; color: var(--color-text-muted); white-space: nowrap; }\r\n.twc-dt__th-inner { display: flex; align-items: center; gap: 6px; height: 100%; padding: 0 12px; }\r\n.twc-dt__th[data-num=\"true\"] .twc-dt__th-inner { flex-direction: row-reverse; }\r\n.twc-dt__th-label { cursor: pointer; user-select: none; flex: 1; overflow: hidden; text-overflow: ellipsis;\r\n display: inline-flex; align-items: center; gap: 5px; }\r\n.twc-dt__th[data-num=\"true\"] .twc-dt__th-label { flex-direction: row-reverse; }\r\n.twc-dt__sort { display: inline-flex; opacity: 0; transition: opacity var(--duration-fast), transform var(--duration-base) var(--ease-spring); color: var(--color-primary); }\r\n.twc-dt__sort svg { width: 14px; height: 14px; }\r\n.twc-dt__th[data-sorted=\"asc\"] .twc-dt__sort, .twc-dt__th[data-sorted=\"desc\"] .twc-dt__sort { opacity: 1; }\r\n.twc-dt__th[data-sorted=\"desc\"] .twc-dt__sort { transform: rotate(180deg); }\r\n.twc-dt__th:hover .twc-dt__sort { opacity: 0.4; }\r\n.twc-dt__filterdot { width: 6px; height: 6px; border-radius: var(--radius-full); background: var(--color-primary); flex: none; }\r\n.twc-dt__menu-btn { display: inline-grid; place-items: center; width: 24px; height: 24px; border: none;\r\n background: transparent; color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-sm);\r\n opacity: 0; transition: opacity var(--duration-fast), background-color var(--duration-fast); flex: none; }\r\n.twc-dt__th:hover .twc-dt__menu-btn { opacity: 1; }\r\n.twc-dt__menu-btn:hover { background: var(--color-surface); color: var(--color-text); }\r\n.twc-dt__menu-btn svg { width: 16px; height: 16px; }\r\n\r\n/* Column resize handle */\r\n.twc-dt__resizer { position: absolute; top: 0; right: 0; width: 8px; height: 100%; cursor: col-resize; z-index: 6; touch-action: none; }\r\n.twc-dt__resizer::after { content: \"\"; position: absolute; top: 22%; right: 2px; width: 2px; height: 56%; background: transparent; border-radius: 2px; transition: background-color var(--duration-fast); }\r\n.twc-dt__th:hover .twc-dt__resizer::after { background: var(--color-border-strong); }\r\n.twc-dt__resizer:hover::after, .twc-dt__resizer[data-active=\"true\"]::after { background: var(--color-primary); }\r\n.twc-dt[data-resizing=\"true\"] { cursor: col-resize; user-select: none; }\r\n\r\n/* Column reorder (drag) */\r\n.twc-dt__th-label[draggable=\"true\"] { cursor: grab; }\r\n.twc-dt__th[data-dragging=\"true\"] { opacity: 0.45; }\r\n.twc-dt__th[data-dropbefore=\"true\"] .twc-dt__th-inner { box-shadow: inset 3px 0 0 var(--color-primary); }\r\n.twc-dt__th[data-dropafter=\"true\"] .twc-dt__th-inner { box-shadow: inset -3px 0 0 var(--color-primary); }\r\n.twc-dt__grip { display: inline-flex; color: var(--color-text-subtle); opacity: 0; margin-right: -2px; transition: opacity var(--duration-fast); flex: none; }\r\n.twc-dt__grip svg { width: 13px; height: 13px; }\r\n.twc-dt__th:hover .twc-dt__grip { opacity: 0.5; }\r\n\r\n/* Summary / aggregation footer row */\r\n.twc-dt__table tfoot td { position: sticky; bottom: 0; z-index: 3; background: var(--color-surface-sunken);\r\n border-top: var(--border-thin) solid var(--color-border); height: 42px; padding: 0 12px; box-sizing: border-box;\r\n font-size: var(--text-sm); color: var(--color-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 0; }\r\n.twc-dt__table tfoot td[data-num=\"true\"] { text-align: right; font-variant-numeric: tabular-nums; }\r\n.twc-dt__table tfoot td[data-pin] { z-index: 4; }\r\n.twc-dt__agg-label { color: var(--color-text-subtle); font-weight: 700; text-transform: uppercase; letter-spacing: var(--tracking-wide); font-size: 10px; margin-right: 5px; }\r\n.twc-dt__agg-val { font-weight: var(--font-bold); }\r\n\r\n/* Row grouping */\r\n.twc-dt__groupbar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 8px 12px;\r\n border-bottom: var(--border-thin) solid var(--color-border); background: var(--color-surface-sunken); }\r\n.twc-dt__groupbar > svg { width: 15px; height: 15px; color: var(--color-text-subtle); }\r\n.twc-dt__groupbar-label { font-size: var(--text-xs); font-weight: 700; text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--color-text-subtle); }\r\n.twc-dt__groupchip { display: inline-flex; align-items: center; gap: 4px; padding: 3px 4px 3px 10px; height: 26px;\r\n background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); border-radius: var(--radius-full); font-size: var(--text-xs); font-weight: var(--font-semibold); }\r\n.twc-dt__groupchip-x { display: inline-grid; place-items: center; width: 18px; height: 18px; border: none; padding: 0; background: transparent; color: inherit; cursor: pointer; border-radius: var(--radius-full); opacity: 0.7; }\r\n.twc-dt__groupchip-x:hover { opacity: 1; background: color-mix(in srgb, currentColor 18%, transparent); }\r\n.twc-dt__groupchip-x svg { width: 12px; height: 12px; }\r\n.twc-dt__groupbar-clear { margin-left: 2px; border: none; background: transparent; color: var(--color-text-muted); font-family: inherit; font-size: var(--text-xs); font-weight: var(--font-semibold); cursor: pointer; border-radius: var(--radius-sm); padding: 4px 6px; }\r\n.twc-dt__groupbar-clear:hover { color: var(--color-danger-subtle-fg); background: var(--color-danger-subtle); }\r\n.twc-dt__group-row td { background: var(--color-surface-sunken); border-bottom: var(--border-thin) solid var(--color-border); }\r\n.twc-dt__group-cell { padding: 0 12px !important; height: var(--_rowh, 44px); }\r\n.twc-dt__group-toggle { display: inline-flex; align-items: center; gap: 7px; border: none; background: transparent; cursor: pointer;\r\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text); padding: 6px 4px; border-radius: var(--radius-sm); }\r\n.twc-dt__group-toggle:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-dt__group-chev { display: inline-flex; color: var(--color-text-subtle); transform: rotate(-90deg); transition: transform var(--duration-base) var(--ease-spring); }\r\n.twc-dt__group-chev[data-open] { transform: rotate(0deg); color: var(--color-primary); }\r\n.twc-dt__group-chev svg { width: 16px; height: 16px; }\r\n.twc-dt__group-name { color: var(--color-text-muted); font-weight: var(--font-medium); }\r\n.twc-dt__group-val { font-weight: var(--font-bold); }\r\n.twc-dt__group-count { display: inline-grid; place-items: center; min-width: 20px; height: 18px; padding: 0 6px; border-radius: var(--radius-full); background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); font-size: 11px; font-weight: 700; }\r\n.twc-dt__group-sub { margin-left: 14px; display: inline-flex; gap: 14px; font-size: var(--text-xs); color: var(--color-text-muted); }\r\n.twc-dt__group-sub span { font-variant-numeric: tabular-nums; }\r\n.twc-dt__group-sub span b { color: var(--color-text); }\r\n\r\n/* Pivot view */\r\n.twc-dt__pivot { table-layout: auto; width: 100%; }\r\n.twc-dt__pivot th, .twc-dt__pivot td { white-space: nowrap; }\r\n.twc-dt__pivot-vhcell, .twc-dt__pivot-cell { min-width: 104px; }\r\n.twc-dt__pivot-rowhead { min-width: 180px; }\r\n/* Corner (row-field label) */\r\n.twc-dt__pivot-corner { position: sticky; left: 0; top: 0; vertical-align: middle; text-align: center; background: var(--color-surface-sunken); z-index: 9 !important; border-right: var(--border-medium) solid var(--color-border-strong); }\r\n.twc-dt__pivot-corner-label { font-size: var(--text-xs); font-weight: 700; letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); }\r\n/* Column-group header levels (e.g. Status ▸ Plan) */\r\n.twc-dt__pivot-colgroup { text-align: center !important; border-left: var(--border-medium) solid var(--color-border-strong);\r\n background: var(--color-surface-sunken); font-weight: var(--font-bold); color: var(--color-text); letter-spacing: var(--tracking-wide); }\r\n/* Value sub-header (field + aggregation), centered to sit over its column */\r\n.twc-dt__pivot-vhcell { vertical-align: bottom; text-align: center !important; border-left: var(--border-thin) solid var(--color-divider); padding-top: 6px; padding-bottom: 6px; }\r\n.twc-dt__pivot-vhcell[data-group-start] { border-left: var(--border-medium) solid var(--color-border-strong); }\r\n.twc-dt__pivot-vh { display: inline-flex; flex-direction: column; align-items: center; gap: 1px; line-height: 1.15; }\r\n.twc-dt__pivot-vh-label { font-weight: var(--font-bold); color: var(--color-text); text-transform: none; letter-spacing: 0; }\r\n.twc-dt__pivot-vh-agg { font-size: 10px; font-weight: var(--font-semibold); color: var(--color-primary); text-transform: uppercase; letter-spacing: 0.04em; }\r\n/* Row headers + record counts (must outrank .twc-dt__row > .twc-dt__td:first-child = (0,3,0)) */\r\n.twc-dt__pivot tbody .twc-dt__pivot-rowhead[data-pin],\r\n.twc-dt__pivot tfoot .twc-dt__pivot-rowhead[data-pin] { position: sticky; left: 0; z-index: 5; }\r\n.twc-dt__pivot-rowhead { font-weight: var(--font-semibold); color: var(--color-text); background: var(--color-surface); border-right: var(--border-medium) solid var(--color-border-strong); }\r\n.twc-dt__row[data-zebra] .twc-dt__pivot-rowhead { background: color-mix(in srgb, var(--color-surface-sunken) 45%, var(--color-surface)); }\r\n.twc-dt__pivot-rowcount { color: var(--color-text-subtle); font-weight: var(--font-normal); font-size: var(--text-xs); }\r\n/* Body value cells — centered under their header, with group separators */\r\n.twc-dt__pivot-cell { text-align: center !important; border-left: var(--border-thin) solid var(--color-divider); font-variant-numeric: tabular-nums; }\r\n.twc-dt__pivot-cell[data-group-start] { border-left: var(--border-medium) solid var(--color-border-strong); }\r\n.twc-dt__row[data-zebra] .twc-dt__pivot-cell { background: color-mix(in srgb, var(--color-surface-sunken) 45%, transparent); }\r\n.twc-dt__pivot td[data-empty] { color: var(--color-text-subtle); }\r\n/* Total column group (right) */\r\n.twc-dt__pivot-total-h:not(.twc-dt__pivot-vhcell) { text-align: center !important; vertical-align: middle; }\r\n.twc-dt__pivot-total, .twc-dt__pivot-total-h { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); font-weight: var(--font-bold); }\r\n.twc-dt__pivot-total[data-group-start], .twc-dt__pivot-total-h[data-group-start] { border-left: var(--border-medium) solid var(--color-primary) !important; }\r\n.twc-dt__pivot-total-h .twc-dt__pivot-vh-label { color: var(--color-primary-subtle-fg); }\r\n.twc-dt__pivot-total-h .twc-dt__pivot-vh-agg { color: var(--color-primary); }\r\n.twc-dt__row[data-zebra] .twc-dt__pivot-total { background: var(--color-primary-subtle); }\r\n/* Grand-total footer row */\r\n.twc-dt__pivot tfoot td, .twc-dt__pivot tfoot th { position: sticky; bottom: 0; background: var(--color-surface-sunken); font-weight: var(--font-bold); border-top: var(--border-medium) solid var(--color-border-strong); }\r\n.twc-dt__pivot tfoot .twc-dt__pivot-rowhead { z-index: 6; }\r\n.twc-dt__pivot-grand { background: var(--color-surface-sunken); }\r\n.twc-dt__pivot tfoot .twc-dt__pivot-total { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\r\n\r\n/* Config panels (aggregation / pivot) */\r\n.twc-dt__cfg { padding: 0; }\r\n.twc-dt__cfg-toggle { display: flex; align-items: center; justify-content: space-between; gap: 10px;\r\n padding: 10px 12px; font-size: var(--text-sm); font-weight: var(--font-medium); color: var(--color-text);\r\n border-bottom: var(--border-thin) solid var(--color-divider); }\r\n.twc-dt__cfg-list { max-height: 280px; overflow-y: auto; padding: 6px; }\r\n.twc-dt__cfg-row { display: flex; align-items: center; gap: 8px; padding: 4px 6px; }\r\n.twc-dt__cfg-name { flex: 1; min-width: 0; font-size: var(--text-sm); color: var(--color-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\r\n.twc-dt__cfg-ctl { width: 120px; flex: none; }\r\n.twc-dt__cfg-x { flex: none; display: inline-grid; place-items: center; width: 28px; height: 28px; border: none;\r\n background: transparent; color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-md);\r\n transition: background-color var(--duration-fast), color var(--duration-fast); }\r\n.twc-dt__cfg-x:hover { background: var(--color-danger-subtle); color: var(--color-danger-subtle-fg); }\r\n.twc-dt__cfg-x svg { width: 15px; height: 15px; }\r\n.twc-dt__cfg-section { padding: 10px 12px; border-bottom: var(--border-thin) solid var(--color-divider); display: flex; flex-direction: column; gap: 7px; }\r\n.twc-dt__cfg-section:last-child { border-bottom: none; }\r\n.twc-dt__cfg-label { font-size: var(--text-xs); font-weight: var(--font-bold); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); }\r\n.twc-dt__cfg-add { margin-top: 1px; }\r\n.twc-dt__cfg-hint { padding: 9px 12px; font-size: var(--text-xs); color: var(--color-text-muted); background: var(--color-warning-subtle); border-bottom: var(--border-thin) solid var(--color-divider); }\r\n.twc-dt__cfg-hint b { color: var(--color-text); }\r\n.twc-dt__cfg-head { padding: 10px 12px; font-size: var(--text-sm); font-weight: var(--font-bold); color: var(--color-text); border-bottom: var(--border-thin) solid var(--color-divider); }\r\n.twc-dt__cfg-foot { display: flex; justify-content: flex-end; gap: 8px; padding: 10px 12px; border-top: var(--border-thin) solid var(--color-divider); }\r\n.twc-dt__cfg-btn { height: 32px; padding: 0 14px; border: var(--border-thin) solid var(--color-border-strong); border-radius: var(--radius-md);\r\n background: var(--color-surface); color: var(--color-text); font-family: inherit; font-size: var(--text-xs); font-weight: var(--font-semibold);\r\n cursor: pointer; transition: background-color var(--duration-fast), border-color var(--duration-fast), color var(--duration-fast); }\r\n.twc-dt__cfg-btn:hover { background: var(--color-surface-sunken); }\r\n.twc-dt__cfg-btn[data-primary=\"true\"] { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-primary-fg); }\r\n.twc-dt__cfg-btn[data-primary=\"true\"]:hover { background: var(--color-primary-hover); border-color: var(--color-primary-hover); }\r\n.twc-dt__be-row { display: flex; align-items: center; gap: 10px; padding: 5px 6px; opacity: 0.6; transition: opacity var(--duration-fast); }\r\n.twc-dt__be-row[data-on] { opacity: 1; }\r\n.twc-dt__be-check { display: inline-flex; align-items: center; gap: 7px; width: 120px; flex: none; font-size: var(--text-sm); color: var(--color-text); cursor: pointer; }\r\n.twc-dt__be-check input { width: 16px; height: 16px; accent-color: var(--color-primary); cursor: pointer; flex: none; }\r\n.twc-dt__be-check span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\r\n.twc-dt__be-ctl { flex: 1; min-width: 0; }\r\n\r\n/* Pinned rows */\r\n.twc-dt__row[data-pinned-row] > .twc-dt__td { background: var(--color-primary-subtle); }\r\n.twc-dt__row[data-pinned-row] > .twc-dt__td[data-pin] { background: var(--color-primary-subtle); }\r\n.twc-dt__row[data-pinned-row=\"top\"] > .twc-dt__td { border-bottom: var(--border-medium) solid var(--color-primary-border); box-shadow: 0 1px 0 var(--color-primary-border); }\r\n.twc-dt__row[data-pinned-row=\"bottom\"] > .twc-dt__td { border-top: var(--border-medium) solid var(--color-primary-border); }\r\n\r\n/* Row reordering */\r\n.twc-dt__row[data-reorderable] { cursor: grab; }\r\n.twc-dt__row[data-row-dragging] { opacity: 0.4; }\r\n.twc-dt__row[data-row-dropbefore] > .twc-dt__td { box-shadow: inset 0 3px 0 var(--color-primary); }\r\n.twc-dt__row[data-row-dropafter] > .twc-dt__td { box-shadow: inset 0 -3px 0 var(--color-primary); }\r\n/* Row resizing — must not steal positioning from a pinned first column (checkbox/select) */\r\n.twc-dt__row > .twc-dt__td:first-child:not([data-pin]) { position: relative; }\r\n.twc-dt__row-resizer { position: absolute; left: 0; right: 0; bottom: -3px; height: 7px; cursor: row-resize; z-index: 6; touch-action: none; }\r\n.twc-dt__row-resizer::after { content: \"\"; position: absolute; left: 6px; right: 6px; bottom: 3px; height: 2px; border-radius: 2px; background: transparent; transition: background-color var(--duration-fast); }\r\n.twc-dt__row:hover .twc-dt__row-resizer::after { background: var(--color-border-strong); }\r\n.twc-dt__row-resizer:hover::after { background: var(--color-primary); }\r\n\r\n.twc-dt__td { padding: 0 12px; height: var(--_rowh, 44px); border-bottom: var(--border-thin) solid var(--color-divider);\r\n font-size: var(--text-sm); color: var(--color-text); background: var(--color-surface);\r\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 0; }\r\n.twc-dt__td[data-num=\"true\"] { text-align: right; font-variant-numeric: tabular-nums; }\r\n.twc-dt[data-density=\"compact\"] .twc-dt__td { --_rowh: 36px; }\r\n.twc-dt[data-density=\"comfortable\"] .twc-dt__td { --_rowh: 56px; }\r\n.twc-dt__row:hover .twc-dt__td { background: var(--color-surface-sunken); }\r\n.twc-dt__row[data-selected=\"true\"] .twc-dt__td { background: var(--color-primary-subtle); }\r\n.twc-dt__row[data-selectable=\"true\"] { cursor: pointer; }\r\n.twc-dt__row[data-active=\"true\"] .twc-dt__td { background: var(--color-primary-subtle); box-shadow: inset 0 0 0 9999px transparent; }\r\n.twc-dt__row[data-active=\"true\"] .twc-dt__td[data-pin] { background: var(--color-primary-subtle); }\r\n.twc-dt__td[data-cell-active=\"true\"] { box-shadow: inset 0 0 0 2px var(--color-primary); background: var(--color-primary-subtle); }\r\n.twc-dt__row:last-child .twc-dt__td { border-bottom: none; }\r\n\r\n/* Pinning */\r\n.twc-dt__th[data-pin], .twc-dt__td[data-pin] { position: sticky; z-index: 2; }\r\n.twc-dt__th[data-pin] { z-index: 4; }\r\n.twc-dt__th[data-pin-edge=\"left\"], .twc-dt__td[data-pin-edge=\"left\"] { box-shadow: 6px 0 8px -6px rgb(15 23 42 / 0.18); }\r\n.twc-dt__th[data-pin-edge=\"right\"], .twc-dt__td[data-pin-edge=\"right\"] { box-shadow: -6px 0 8px -6px rgb(15 23 42 / 0.18); }\r\n.dark .twc-dt__th[data-pin-edge=\"left\"], .dark .twc-dt__td[data-pin-edge=\"left\"] { box-shadow: 6px 0 10px -6px rgb(0 0 0 / 0.5); }\r\n.dark .twc-dt__th[data-pin-edge=\"right\"], .dark .twc-dt__td[data-pin-edge=\"right\"] { box-shadow: -6px 0 10px -6px rgb(0 0 0 / 0.5); }\r\n\r\n/* Checkbox column */\r\n.twc-dt__check { width: 20px; height: 20px; display: grid; place-items: center; border: var(--border-medium) solid var(--color-border-strong);\r\n border-radius: var(--radius-sm); background: var(--color-surface); color: #fff; cursor: pointer; transition: background-color var(--duration-fast), border-color var(--duration-fast); }\r\n.twc-dt__check[data-checked=\"true\"], .twc-dt__check[data-indeterminate=\"true\"] { background: var(--color-primary); border-color: var(--color-primary); }\r\n.twc-dt__check svg { width: 13px; height: 13px; opacity: 0; }\r\n.twc-dt__check[data-checked=\"true\"] svg, .twc-dt__check[data-indeterminate=\"true\"] svg { opacity: 1; }\r\n\r\n/* Skeleton */\r\n.twc-dt__sk { display: inline-block; height: 12px; border-radius: var(--radius-sm); background: var(--color-surface-sunken);\r\n position: relative; overflow: hidden; width: var(--_w, 70%); }\r\n.twc-dt__sk::after { content: \"\"; position: absolute; inset: 0; transform: translateX(-100%);\r\n background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--color-text) 8%, transparent), transparent);\r\n animation: twico-shimmer 1.4s infinite; }\r\n\r\n/* Footer */\r\n.twc-dt__footer { display: flex; flex-direction: column; align-items: stretch; gap: 8px; padding: 10px 12px;\r\n border-top: var(--border-thin) solid var(--color-divider); font-size: var(--text-xs); color: var(--color-text-muted); }\r\n.twc-dt__footer-row { display: flex; align-items: center; gap: 10px 18px; flex-wrap: wrap; }\r\n.twc-dt__footer-row[data-bottom=\"true\"] { justify-content: space-between; }\r\n.twc-dt__footer-row[data-pager=\"true\"] { justify-content: flex-end; }\r\n.twc-dt__status { white-space: nowrap; }\r\n.twc-dt__rpp { display: inline-flex; align-items: center; gap: 8px; flex: none; }\r\n.twc-dt__rpp-label { white-space: nowrap; }\r\n.twc-dt__status b { color: var(--color-text); font-weight: var(--font-semibold); }\r\n\r\n/* Floating panels & menus */\r\n.twc-dt__pop { position: fixed; z-index: var(--z-popover); min-width: 220px; background: var(--color-surface-raised);\r\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg);\r\n padding: 6px; animation: twico-scale-in var(--duration-fast) var(--ease-spring); transform-origin: top; }\r\n.twc-dt__caret { position: absolute; top: -6px; width: 11px; height: 11px; background: var(--color-surface-raised);\r\n border-left: var(--border-thin) solid var(--color-border); border-top: var(--border-thin) solid var(--color-border);\r\n border-radius: 3px 0 0 0; transform: rotate(45deg); }\r\n.twc-dt__mi { display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 10px; border: none; background: transparent;\r\n font-family: inherit; font-size: var(--text-sm); font-weight: var(--font-medium); color: var(--color-text); text-align: left;\r\n border-radius: var(--radius-md); cursor: pointer; transition: background-color var(--duration-fast); }\r\n.twc-dt__mi:hover { background: var(--color-surface-sunken); }\r\n.twc-dt__mi svg { width: 16px; height: 16px; color: var(--color-text-subtle); flex: none; }\r\n.twc-dt__mi[data-active=\"true\"] { color: var(--color-primary); }\r\n.twc-dt__mi[data-active=\"true\"] svg { color: var(--color-primary); }\r\n.twc-dt__sep { height: 1px; background: var(--color-divider); margin: 5px 4px; }\r\n\r\n/* Columns panel */\r\n.twc-dt__cols { width: 268px; }\r\n.twc-dt__col-search { display: flex; align-items: center; gap: 7px; height: 34px; margin: 2px 4px 6px; padding: 0 10px;\r\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface);\r\n transition: border-color var(--duration-fast), box-shadow var(--duration-fast); }\r\n.twc-dt__col-search:focus-within { border-color: var(--color-primary); box-shadow: var(--ring); }\r\n.twc-dt__col-search svg { width: 15px; height: 15px; color: var(--color-text-subtle); flex: none; }\r\n.twc-dt__col-search input { border: none; outline: none; background: transparent; font-family: inherit; font-size: var(--text-sm); color: var(--color-text); width: 100%; }\r\n.twc-dt__col-search input:focus, .twc-dt__col-search input:focus-visible { outline: none; box-shadow: none; }\r\n.twc-dt__col-search input::placeholder { color: var(--color-text-subtle); }\r\n.twc-dt__col-list { max-height: 230px; overflow-y: auto; }\r\n.twc-dt__col-row { display: flex; align-items: center; gap: 10px; padding: 7px 8px; border-radius: var(--radius-md); cursor: pointer; }\r\n.twc-dt__col-row:hover { background: var(--color-surface-sunken); }\r\n.twc-dt__col-row[draggable=\"true\"] { cursor: grab; }\r\n.twc-dt__col-row[data-dragging=\"true\"] { opacity: 0.5; }\r\n.twc-dt__col-row[data-dropbefore=\"true\"] { box-shadow: inset 0 3px 0 var(--color-primary); }\r\n.twc-dt__col-row[data-dropafter=\"true\"] { box-shadow: inset 0 -3px 0 var(--color-primary); }\r\n.twc-dt__col-grip { display: inline-flex; color: var(--color-text-subtle); flex: none; opacity: 0.45; }\r\n.twc-dt__col-row:hover .twc-dt__col-grip { opacity: 0.8; }\r\n.twc-dt__col-grip svg { width: 14px; height: 14px; }\r\n.twc-dt__col-name { flex: 1; font-size: var(--text-sm); }\r\n.twc-dt__sw { width: 32px; height: 18px; border-radius: var(--radius-full); background: var(--color-border-strong); position: relative; flex: none; transition: background-color var(--duration-base); }\r\n.twc-dt__sw[data-on=\"true\"] { background: var(--color-primary); }\r\n.twc-dt__sw::after { content: \"\"; position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: var(--radius-full); background: #fff; box-shadow: var(--shadow-sm); transition: transform var(--duration-base) var(--ease-spring); }\r\n.twc-dt__sw[data-on=\"true\"]::after { transform: translateX(14px); }\r\n.twc-dt__panel-head { display: flex; align-items: center; justify-content: space-between; padding: 6px 8px 8px; }\r\n.twc-dt__panel-title { font-size: var(--text-xs); font-weight: 700; letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); }\r\n.twc-dt__link { border: none; background: transparent; color: var(--color-primary); font-family: inherit; font-size: var(--text-xs); font-weight: 600; cursor: pointer; padding: 2px 4px; border-radius: var(--radius-sm); }\r\n.twc-dt__link:hover { background: var(--color-primary-subtle); }\r\n\r\n/* Filter panel */\r\n.twc-dt__filters { width: 460px; max-width: calc(100vw - 32px); }\r\n.twc-dt__frow { display: flex; align-items: center; gap: 6px; padding: 5px 4px; }\r\n.twc-dt__f-col { width: 130px; flex: none; }\r\n.twc-dt__f-op { width: 132px; flex: none; }\r\n.twc-dt__f-val { flex: 1; min-width: 0; }\r\n.twc-dt__frm-x { display: inline-grid; place-items: center; width: 30px; height: 38px; border: none; background: transparent; color: var(--color-text-subtle); border-radius: var(--radius-md); cursor: pointer; flex: none; align-self: flex-start; }\r\n.twc-dt__frm-x:hover { background: var(--color-danger-subtle); color: var(--color-danger-subtle-fg); }\r\n.twc-dt__frm-x svg { width: 15px; height: 15px; }\r\n.twc-dt__empty { padding: 30px 12px; text-align: center; color: var(--color-text-subtle); font-size: var(--text-sm); }\r\n\r\n/* Action cell */\r\n.twc-dt__th[data-actions-col=\"true\"], .twc-dt__td[data-actions=\"true\"] { border-left: var(--border-thin) solid var(--color-border); }\r\n.twc-dt__td[data-actions=\"true\"] { overflow: visible; }\r\n.twc-dt__actions { display: inline-flex; align-items: center; gap: 2px; width: 100%; }\r\n\r\n/* Editable cells */\r\n.twc-dt__td[data-editable=\"true\"] { position: relative; cursor: text; padding-right: 30px; }\r\n.twc-dt__td[data-editable=\"true\"]:hover { box-shadow: inset 0 0 0 1px var(--color-border-strong); }\r\n.twc-dt__edit-hint { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); display: none;\r\n align-items: center; justify-content: center; color: var(--color-primary); pointer-events: none; }\r\n.twc-dt__edit-hint svg { width: 13px; height: 13px; }\r\n.twc-dt__td[data-editable=\"true\"]:hover .twc-dt__edit-hint { display: inline-flex; }\r\n/* Editing state — the cell becomes a transparent shell; the editor itself is the rounded control */\r\n.twc-dt__td[data-editing=\"true\"] { padding: 0 6px; overflow: visible; box-shadow: none; background: var(--color-surface); }\r\n.twc-dt__editor-wrap { width: 100%; }\r\n.twc-dt__editor {\r\n width: 100%; height: 32px; box-sizing: border-box; padding: 0 10px;\r\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text);\r\n background: var(--color-surface); border: var(--border-medium) solid var(--color-primary);\r\n border-radius: var(--radius-md); outline: none; box-shadow: var(--ring);\r\n}\r\n.twc-dt__td[data-num=\"true\"] .twc-dt__editor { text-align: right; }\r\n/* Keyboard focus (roving tabindex) */\r\n.twc-dt__td:focus { outline: none; }\r\n.twc-dt__td:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--color-primary); border-radius: 2px; }\r\n.twc-dt__check:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-dt__th-label:focus-visible { outline: none; box-shadow: var(--ring); border-radius: var(--radius-sm); }\r\n.twc-dt__act { display: inline-grid; place-items: center; width: 30px; height: 30px; border: none; background: transparent;\r\n color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-md);\r\n transition: background-color var(--duration-fast), color var(--duration-fast), transform var(--duration-fast) var(--ease-spring); }\r\n.twc-dt__act:hover { background: var(--color-surface-sunken); color: var(--color-text); }\r\n.twc-dt__act:active { transform: scale(0.88); }\r\n.twc-dt__act[data-danger=\"true\"]:hover { background: var(--color-danger-subtle); color: var(--color-danger-subtle-fg); }\r\n.twc-dt__act svg { width: 16px; height: 16px; }\r\n\r\n/* Batch (selection) toolbar overlay */\r\n.twc-dt__batch { position: absolute; inset: 0; z-index: 6; display: flex; align-items: center; gap: 10px;\r\n padding: 8px 10px; background: var(--color-primary-subtle); animation: twico-slide-down var(--duration-fast) var(--ease-out); }\r\n.twc-dt__batch-x { display: inline-grid; place-items: center; width: 28px; height: 28px; border: none; background: transparent;\r\n color: var(--color-primary-subtle-fg); cursor: pointer; border-radius: var(--radius-md); transition: background-color var(--duration-fast); flex: none; }\r\n.twc-dt__batch-x:hover { background: color-mix(in srgb, var(--color-primary) 20%, transparent); }\r\n.twc-dt__batch-x svg { width: 16px; height: 16px; }\r\n.twc-dt__batch-count { font-size: var(--text-sm); font-weight: var(--font-bold); color: var(--color-primary-subtle-fg); white-space: nowrap; }\r\n.twc-dt__batch-actions { margin-left: auto; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }\r\n.twc-dt__batch-btn { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 12px;\r\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface);\r\n color: var(--color-text); font-family: inherit; font-size: var(--text-xs); font-weight: var(--font-semibold); cursor: pointer;\r\n transition: border-color var(--duration-fast), color var(--duration-fast), background-color var(--duration-fast); }\r\n.twc-dt__batch-btn:hover { border-color: var(--color-primary); color: var(--color-primary); }\r\n.twc-dt__batch-btn[data-danger=\"true\"]:hover { border-color: var(--color-danger); color: var(--color-danger-subtle-fg); background: var(--color-danger-subtle); }\r\n.twc-dt__batch-btn svg { width: 15px; height: 15px; }\r\n`;\r\n\r\nconst I = {\r\n arrow: \"M12 19V5M5 12l7-7 7 7\",\r\n filter: \"M3 4h18l-7 8v6l-4 2v-8z\",\r\n columns: \"M3 3h18v18H3zM9 3v18M15 3v18\",\r\n eyeOff: \"M9.88 9.88a3 3 0 1 0 4.24 4.24M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61M2 2l20 20\",\r\n pinL: \"M9 4v6l-3 3v2h12v-2l-3-3V4M12 17v4\",\r\n pin: \"M12 17v5M9 4h6l-1 7 3 2v2H7v-2l3-2z\",\r\n more: \"M12 5h.01M12 12h.01M12 19h.01\",\r\n check: \"M20 6 9 17l-5-5\",\r\n minus: \"M5 12h14\",\r\n x: \"M18 6 6 18M6 6l12 12\",\r\n plus: \"M12 5v14M5 12h14\",\r\n search: \"M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16zM21 21l-4.3-4.3\",\r\n density: \"M3 6h18M3 12h18M3 18h18\",\r\n trash: \"M3 6h18M8 6V4h8v2M19 6l-1 14H6L5 6M10 11v6M14 11v6\",\r\n download: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3\",\r\n grip: \"M9 5h.01M9 12h.01M9 19h.01M15 5h.01M15 12h.01M15 19h.01\",\r\n pencil: \"M12 20h9M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4z\",\r\n sigma: \"M18 7V5a1 1 0 0 0-1-1H6l6 8-6 8h11a1 1 0 0 0 1-1v-2\",\r\n chevDown: \"m6 9 6 6 6-6\",\r\n group: \"M3 6h7M3 12h11M3 18h7M17 9l3 3-3 3\",\r\n pinUp: \"M12 19V5M6 11l6-6 6 6\",\r\n pinDown: \"M12 5v14M6 13l6 6 6-6\",\r\n pivot: \"M3 3h18v18H3zM3 9h18M9 9v12M9 3v6\",\r\n chevronDown: \"M6 9l6 6 6-6\",\r\n fileText: \"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zM14 2v6h6M9 13h6M9 17h6\",\r\n sheet: \"M3 3h18v18H3zM3 9h18M3 15h18M9 3v18M15 3v18\",\r\n braces: \"M8 3H7a2 2 0 0 0-2 2v4a2 2 0 0 1-2 2 2 2 0 0 1 2 2v4a2 2 0 0 0 2 2h1M16 3h1a2 2 0 0 1 2 2v4a2 2 0 0 0 2 2 2 2 0 0 0-2 2v4a2 2 0 0 1-2 2h-1\",\r\n};\r\nfunction Svg({ d, ...p }) {\r\n return (<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\r\n {d.split(\"M\").filter(Boolean).map((seg, i) => <path key={i} d={\"M\" + seg} />)}\r\n </svg>);\r\n}\r\n\r\nconst STR_OPS = [\r\n { value: \"contains\", label: \"contains\" },\r\n { value: \"equals\", label: \"equals\" },\r\n { value: \"isAnyOf\", label: \"is any of\", multi: true },\r\n { value: \"startsWith\", label: \"starts with\" },\r\n { value: \"endsWith\", label: \"ends with\" },\r\n { value: \"isEmpty\", label: \"is empty\", noInput: true },\r\n { value: \"isNotEmpty\", label: \"is not empty\", noInput: true },\r\n];\r\nconst NUM_OPS = [\r\n { value: \"=\", label: \"=\" }, { value: \"!=\", label: \"≠\" },\r\n { value: \">\", label: \">\" }, { value: \">=\", label: \"≥\" },\r\n { value: \"<\", label: \"<\" }, { value: \"<=\", label: \"≤\" },\r\n { value: \"isAnyOf\", label: \"is any of\", multi: true },\r\n];\r\nconst opsFor = (type) => (type === \"number\" ? NUM_OPS : STR_OPS);\r\nconst isMultiOp = (op) => op === \"isAnyOf\";\r\n\r\nfunction testFilter(raw, op, target, type) {\r\n if (op === \"isEmpty\") return raw == null || raw === \"\";\r\n if (op === \"isNotEmpty\") return !(raw == null || raw === \"\");\r\n if (op === \"isAnyOf\") {\r\n if (!Array.isArray(target) || target.length === 0) return true;\r\n return target.map(String).includes(String(raw));\r\n }\r\n if (target === \"\" || target == null) return true;\r\n if (type === \"number\") {\r\n const a = Number(raw), b = Number(target);\r\n if (Number.isNaN(a) || Number.isNaN(b)) return true;\r\n switch (op) { case \"=\": return a === b; case \"!=\": return a !== b; case \">\": return a > b;\r\n case \">=\": return a >= b; case \"<\": return a < b; case \"<=\": return a <= b; default: return true; }\r\n }\r\n const s = String(raw ?? \"\").toLowerCase(), t = String(target).toLowerCase();\r\n switch (op) {\r\n case \"equals\": return s === t;\r\n case \"startsWith\": return s.startsWith(t);\r\n case \"endsWith\": return s.endsWith(t);\r\n default: return s.includes(t);\r\n }\r\n}\r\n\r\nfunction useFloating() {\r\n const [pos, setPos] = React.useState(null);\r\n const open = (el, align = \"left\", width = 220) => {\r\n const r = el.getBoundingClientRect();\r\n const vw = window.innerWidth, vh = window.innerHeight, M = 8;\r\n // anchor left edge; right-aligned menus start from the trigger's right edge\r\n let left = align === \"right\" ? r.right - width : r.left;\r\n // clamp into the viewport so menus never clip off-screen\r\n left = Math.max(M, Math.min(left, vw - width - M));\r\n let top = r.bottom + 6;\r\n setPos({ top, left, width, anchorX: r.left + r.width / 2, maxHeight: Math.max(180, vh - top - M) });\r\n };\r\n return [pos, open, () => setPos(null)];\r\n}\r\n\r\nfunction Caret({ pos }) {\r\n if (!pos) return null;\r\n const left = Math.max(12, Math.min(pos.anchorX - pos.left, pos.width - 20));\r\n return <span className=\"twc-dt__caret\" style={{ left }} />;\r\n}\r\n\r\nfunction EditCell({ col, value, options, onChange, onCommit, onCommitValue, onCancel, onKeyDown }) {\r\n const ref = React.useRef(null);\r\n const isSelect = col.editType === \"select\" || (options && col.editType !== \"text\");\r\n\r\n React.useEffect(() => {\r\n if (isSelect) {\r\n // auto-open the Twico Select popover so one double-click is enough\r\n const t = setTimeout(() => ref.current?.querySelector(\".twc-sel__trigger\")?.click(), 0);\r\n return () => clearTimeout(t);\r\n }\r\n const el = ref.current; if (!el) return;\r\n el.focus();\r\n if (el.select && col.type !== \"number\") el.select();\r\n }, [isSelect]);\r\n\r\n if (isSelect) {\r\n const opts = options || (col.valueOptions || []).map((o) => (typeof o === \"string\" ? { value: o, label: o } : o));\r\n return (\r\n <div className=\"twc-dt__editor-wrap\" ref={ref}\r\n onKeyDown={(e) => { if (e.key === \"Escape\") { e.stopPropagation(); onCancel(); } }}>\r\n <Select size=\"sm\" value={value ?? \"\"} options={opts} placeholder=\"Select…\"\r\n onChange={(v) => onCommitValue(v)} />\r\n </div>\r\n );\r\n }\r\n return (\r\n <div className=\"twc-dt__editor-wrap\">\r\n <input\r\n ref={ref}\r\n className=\"twc-dt__editor\"\r\n type={col.type === \"number\" ? \"number\" : \"text\"}\r\n value={value ?? \"\"}\r\n aria-label={`Edit ${col.headerName}`}\r\n onChange={(e) => onChange(e.target.value)}\r\n onKeyDown={onKeyDown}\r\n onBlur={onCommit}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport function Datatable({\r\n columns, rows, loading = false, rowKey, checkboxSelection = false,\r\n density: densityProp = \"standard\", pageSize = 10, pageSizeOptions = [5, 10, 25, 50],\r\n height = 440, serverMode = false, rowCount, onServerChange, batchActions = [],\r\n showExport = true, exportFilename = \"export\", aggregationValues = null,\r\n disableColumnReorder = false, disableColumnResize = false,\r\n editMode = false, onRowUpdate, onRowsChange, onBatchUpdate,\r\n showPageJumper = true,\r\n selectionMode = \"none\", onRowClick, onCellClick, onActiveCellChange,\r\n showAggregation = false, ariaLabel = \"Data table\", rowGrouping = [],\r\n rowPinning = false, rowReorder = false, rowResize = false, onRowOrderChange,\r\n pivot = null, pivotMode = false,\r\n className = \"\", ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-dt-styles\")) return;\r\n const el = document.createElement(\"style\"); el.id = \"twc-dt-styles\"; el.textContent = DT_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const cols = React.useMemo(() => columns.map((c) => {\r\n const isActions = c.type === \"actions\";\r\n return {\r\n width: isActions ? 120 : 160, type: \"string\",\r\n sortable: !isActions, filterable: !isActions, hideable: !isActions, pinnable: true,\r\n groupable: !isActions && c.type !== \"number\",\r\n disableColumnMenu: false, headerName: isActions ? \"Actions\" : c.field,\r\n align: c.type === \"number\" ? \"right\" : isActions ? \"right\" : \"left\", ...c,\r\n };\r\n }), [columns]);\r\n\r\n const keyOf = rowKey || ((r, i) => r.id ?? i);\r\n const [sort, setSort] = React.useState(null);\r\n const [filters, setFilters] = React.useState([]);\r\n const [hidden, setHidden] = React.useState(() => new Set());\r\n const [pins, setPins] = React.useState(() => {\r\n const left = [], right = [];\r\n columns.forEach((c) => { if (c.pinned === \"left\") left.push(c.field); else if (c.pinned === \"right\") right.push(c.field); });\r\n return { left, right };\r\n });\r\n const [density, setDensity] = React.useState(densityProp);\r\n const [quick, setQuick] = React.useState(\"\");\r\n const [selected, setSelected] = React.useState(() => new Set());\r\n const [activeRow, setActiveRow] = React.useState(null);\r\n const [activeCell, setActiveCell] = React.useState(null); // { key, field }\r\n const [page, setPage] = React.useState(0);\r\n const [rowsPerPage, setRowsPerPage] = React.useState(pageSize > 0 ? pageSize : 10);\r\n const [colQuery, setColQuery] = React.useState(\"\");\r\n const [widths, setWidths] = React.useState({});\r\n const [order, setOrder] = React.useState(() => columns.map((c) => c.field));\r\n const [drag, setDrag] = React.useState({ from: null, over: null, after: false });\r\n const [aggOn, setAggOn] = React.useState(showAggregation);\r\n const [focus, setFocus] = React.useState({ r: 0, c: 0 });\r\n const gridRef = React.useRef(null);\r\n const [groupBy, setGroupBy] = React.useState(rowGrouping || []);\r\n const [collapsed, setCollapsed] = React.useState(() => new Set());\r\n const [pinnedRows, setPinnedRows] = React.useState({ top: [], bottom: [] });\r\n const [headH, setHeadH] = React.useState(41);\r\n const theadRef = React.useRef(null);\r\n const [rowOrder, setRowOrder] = React.useState(null);\r\n const [rowHeights, setRowHeights] = React.useState({});\r\n const [rowDrag, setRowDrag] = React.useState({ from: null, over: null, after: false });\r\n const [pivotOn, setPivotOn] = React.useState(pivotMode);\r\n // Runtime, user-editable aggregation config: { [field]: \"sum\"|\"avg\"|\"min\"|\"max\"|\"count\" }\r\n const [aggConfig, setAggConfig] = React.useState(() => {\r\n const m = {}; (columns || []).forEach((c) => { if (typeof c.aggregation === \"string\") m[c.field] = c.aggregation; });\r\n return m;\r\n });\r\n // Effective aggregation for a column: user config wins, else a function preset on the column.\r\n const aggOf = (c) => aggConfig[c.field] || (typeof c.aggregation === \"function\" ? c.aggregation : null);\r\n // Runtime, user-editable pivot model.\r\n const [pivotConfig, setPivotConfig] = React.useState(() => ({\r\n rows: (pivot && pivot.rows) || [], columns: (pivot && pivot.columns) || [],\r\n values: (pivot && pivot.values) || [],\r\n }));\r\n const pivotActive = pivotOn && pivotConfig.rows.length > 0 && pivotConfig.values.length > 0;\r\n\r\n // Keep custom order in sync if the columns prop changes (add new, drop removed).\r\n React.useEffect(() => {\r\n setOrder((prev) => {\r\n const fields = columns.map((c) => c.field);\r\n const kept = prev.filter((f) => fields.includes(f));\r\n const added = fields.filter((f) => !kept.includes(f));\r\n return [...kept, ...added];\r\n });\r\n }, [columns]);\r\n\r\n const widthOf = (c) => widths[c.field] ?? c.width ?? 160;\r\n\r\n const [colMenu, setColMenu] = React.useState(null);\r\n const [menuPos, openMenu, closeMenu] = useFloating();\r\n const [panel, setPanel] = React.useState(null);\r\n const [panelPos, openPanel, closePanel] = useFloating();\r\n const [rowMenu, setRowMenu] = React.useState(null);\r\n const [rowMenuPos, openRowMenu, closeRowMenu] = useFloating();\r\n const [exportOpen, setExportOpen] = React.useState(false);\r\n const [exportPos, openExport, closeExport] = useFloating();\r\n\r\n React.useEffect(() => {\r\n if (!colMenu && !panel && !rowMenu) return;\r\n const closeAll = () => { setColMenu(null); closeMenu(); setPanel(null); closePanel(); setRowMenu(null); closeRowMenu(); };\r\n const onDown = (e) => { if (!e.target.closest(\".twc-dt__pop\") && !e.target.closest(\".twc-pop\") && !e.target.closest(\".twc-dt__menu-btn\") && !e.target.closest(\".twc-dt__tbtn\") && !e.target.closest(\".twc-dt__act\")) closeAll(); };\r\n const onKey = (e) => { if (e.key === \"Escape\") closeAll(); };\r\n document.addEventListener(\"mousedown\", onDown); document.addEventListener(\"keydown\", onKey);\r\n return () => { document.removeEventListener(\"mousedown\", onDown); document.removeEventListener(\"keydown\", onKey); };\r\n }, [colMenu, panel, rowMenu]);\r\n\r\n // Dedicated outside-click for the export menu so it closes on ANY click outside it\r\n // (including other toolbar buttons like Filters).\r\n React.useEffect(() => {\r\n if (!exportOpen) return;\r\n const close = () => { setExportOpen(false); closeExport(); };\r\n const onDown = (e) => { if (!e.target.closest(\".twc-dt__pop\") && !e.target.closest(\".twc-dt__export\")) close(); };\r\n const onKey = (e) => { if (e.key === \"Escape\") close(); };\r\n document.addEventListener(\"mousedown\", onDown); document.addEventListener(\"keydown\", onKey);\r\n return () => { document.removeEventListener(\"mousedown\", onDown); document.removeEventListener(\"keydown\", onKey); };\r\n }, [exportOpen]);\r\n\r\n const colByField = React.useMemo(() => Object.fromEntries(cols.map((c) => [c.field, c])), [cols]);\r\n const visibleCols = cols.filter((c) => !hidden.has(c.field));\r\n const ordered = React.useMemo(() => {\r\n const orderIdx = (f) => { const i = order.indexOf(f); return i === -1 ? 9999 : i; };\r\n const L = pins.left.map((f) => colByField[f]).filter((c) => c && !hidden.has(c.field));\r\n const R = pins.right.map((f) => colByField[f]).filter((c) => c && !hidden.has(c.field));\r\n const mid = visibleCols\r\n .filter((c) => !pins.left.includes(c.field) && !pins.right.includes(c.field))\r\n .sort((a, b) => orderIdx(a.field) - orderIdx(b.field));\r\n return [...L, ...mid, ...R];\r\n }, [pins, hidden, visibleCols, colByField, order]);\r\n\r\n const stickyOf = (field) => {\r\n if (pins.left.includes(field)) {\r\n let off = checkboxSelection ? 44 : 0;\r\n for (const f of pins.left) { if (f === field) break; off += widthOf(colByField[f] || {}); }\r\n const isEdge = pins.left[pins.left.length - 1] === field;\r\n return { style: { left: off }, pin: \"left\", edge: isEdge ? \"left\" : undefined };\r\n }\r\n if (pins.right.includes(field)) {\r\n let off = 0; const rev = [...pins.right].reverse();\r\n for (const f of rev) { if (f === field) break; off += widthOf(colByField[f] || {}); }\r\n const isEdge = pins.right[0] === field;\r\n return { style: { right: off }, pin: \"right\", edge: isEdge ? \"right\" : undefined };\r\n }\r\n return {};\r\n };\r\n\r\n const processed = React.useMemo(() => {\r\n if (serverMode) {\r\n if (rowOrder) { const idx = new Map(rowOrder.map((k, i) => [k, i])); return [...rows].sort((a, b) => (idx.get(keyOf(a)) ?? 1e9) - (idx.get(keyOf(b)) ?? 1e9)); }\r\n return rows; // server already returns the filtered/sorted page\r\n }\r\n let out = rows;\r\n if (quick.trim()) {\r\n const q = quick.trim().toLowerCase();\r\n out = out.filter((r) => visibleCols.some((c) => String(r[c.field] ?? \"\").toLowerCase().includes(q)));\r\n }\r\n for (const f of filters) {\r\n const col = colByField[f.field]; if (!col) continue;\r\n out = out.filter((r) => testFilter(r[f.field], f.op, f.value, col.type));\r\n }\r\n if (sort) {\r\n const col = colByField[sort.field];\r\n out = [...out].sort((a, b) => {\r\n const av = a[sort.field], bv = b[sort.field];\r\n if (av == null) return 1; if (bv == null) return -1;\r\n const r = col?.type === \"number\" ? av - bv : String(av).localeCompare(String(bv));\r\n return sort.dir === \"desc\" ? -r : r;\r\n });\r\n }\r\n if (rowOrder && !sort) {\r\n const idx = new Map(rowOrder.map((k, i) => [k, i]));\r\n out = [...out].sort((a, b) => (idx.get(keyOf(a)) ?? 1e9) - (idx.get(keyOf(b)) ?? 1e9));\r\n }\r\n return out;\r\n }, [rows, quick, filters, sort, visibleCols, colByField, serverMode, rowOrder]);\r\n\r\n const paginated = pageSize > 0;\r\n const serverTotal = rowCount == null ? processed.length : rowCount;\r\n const totalRows = serverMode ? serverTotal : processed.length;\r\n const totalPages = paginated ? Math.max(1, Math.ceil(totalRows / rowsPerPage)) : 1;\r\n const paged = !paginated || serverMode ? processed : processed.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage);\r\n React.useEffect(() => { if (page > totalPages - 1) setPage(0); }, [totalPages]);\r\n\r\n // ---- Row grouping ----\r\n // Groups the rendered page by one or more fields into collapsible group rows.\r\n // (Operates over the current page; disable pagination with pageSize={0} to group all client rows.)\r\n const activeGroupBy = React.useMemo(() => groupBy.filter((f) => colByField[f]), [groupBy, colByField]);\r\n function subtotalText(rowsIn) {\r\n const parts = [];\r\n for (const c of ordered) {\r\n const agg = aggOf(c);\r\n if (!agg) continue;\r\n const v = computeAgg({ ...c, aggregation: agg }, rowsIn);\r\n if (v == null) continue;\r\n const disp = c.aggregationFormatter ? c.aggregationFormatter(v) : c.valueFormatter ? c.valueFormatter(v, null) : (typeof v === \"number\" ? v.toLocaleString() : v);\r\n parts.push(`${c.headerName} ${disp}`);\r\n }\r\n return parts;\r\n }\r\n function computeAgg(col, data) {\r\n const agg = col.aggregation; if (!agg) return null;\r\n const raw = data.map((r) => r[col.field]).filter((v) => v != null && v !== \"\");\r\n if (typeof agg === \"function\") return agg(raw, data);\r\n if (agg === \"count\") return raw.length;\r\n const nums = raw.map(Number).filter((n) => !Number.isNaN(n));\r\n if (!nums.length) return null;\r\n if (agg === \"sum\") return nums.reduce((a, b) => a + b, 0);\r\n if (agg === \"avg\") return Math.round((nums.reduce((a, b) => a + b, 0) / nums.length) * 100) / 100;\r\n if (agg === \"min\") return Math.min(...nums);\r\n if (agg === \"max\") return Math.max(...nums);\r\n return null;\r\n }\r\n const displayItems = React.useMemo(() => {\r\n if (!activeGroupBy.length) return null;\r\n const build = (rowsIn, depth, prefix) => {\r\n if (depth >= activeGroupBy.length) return rowsIn.map((row) => ({ kind: \"leaf\", row }));\r\n const field = activeGroupBy[depth];\r\n const map = new Map();\r\n for (const r of rowsIn) { const v = r[field] == null || r[field] === \"\" ? \"—\" : r[field]; if (!map.has(v)) map.set(v, []); map.get(v).push(r); }\r\n const items = [];\r\n for (const [value, rs] of map) {\r\n const key = `${prefix}/${field}:${value}`;\r\n const isCollapsed = collapsed.has(key);\r\n items.push({ kind: \"group\", key, field, value, depth, count: rs.length, rows: rs, collapsed: isCollapsed });\r\n if (!isCollapsed) items.push(...build(rs, depth + 1, key));\r\n }\r\n return items;\r\n };\r\n return build(paged, 0, \"\");\r\n }, [activeGroupBy, collapsed, paged, ordered, aggOn]);\r\n const leafRows = displayItems ? displayItems.filter((i) => i.kind === \"leaf\").map((i) => i.row) : paged;\r\n function toggleGroup(key) { setCollapsed((s) => { const n = new Set(s); n.has(key) ? n.delete(key) : n.add(key); return n; }); }\r\n function toggleGroupField(field) { setGroupBy((g) => (g.includes(field) ? g.filter((f) => f !== field) : [...g, field])); }\r\n\r\n // ---- Row pinning (sticky pinned rows above/below the scroll body) ----\r\n const pinSideOf = (key) => pinnedRows.top.includes(key) ? \"top\" : pinnedRows.bottom.includes(key) ? \"bottom\" : null;\r\n function pinRow(key, side) {\r\n setPinnedRows((p) => {\r\n const top = p.top.filter((k) => k !== key), bottom = p.bottom.filter((k) => k !== key);\r\n if (side === \"top\") top.push(key); else if (side === \"bottom\") bottom.push(key);\r\n return { top, bottom };\r\n });\r\n }\r\n React.useEffect(() => {\r\n if (!rowPinning) return;\r\n const measure = () => { if (theadRef.current) setHeadH(theadRef.current.offsetHeight || 41); };\r\n measure();\r\n const ro = window.ResizeObserver ? new ResizeObserver(measure) : null;\r\n if (ro && theadRef.current) ro.observe(theadRef.current);\r\n return () => ro && ro.disconnect();\r\n }, [rowPinning, density]);\r\n // Partition leaf rows: pinned rows render in sticky bands (only when not grouping).\r\n const canPinRows = rowPinning && !activeGroupBy.length;\r\n const pinnedTopRows = canPinRows ? pinnedRows.top.map((k) => leafRows.find((r, i) => keyOf(r, i) === k)).filter(Boolean) : [];\r\n const pinnedBottomRows = canPinRows ? pinnedRows.bottom.map((k) => leafRows.find((r, i) => keyOf(r, i) === k)).filter(Boolean) : [];\r\n const middleRows = canPinRows ? leafRows.filter((r, i) => !pinSideOf(keyOf(r, i))) : leafRows;\r\n const keyIndex = React.useMemo(() => { const m = new Map(); leafRows.forEach((r, i) => m.set(keyOf(r, i), i)); return m; }, [leafRows]);\r\n\r\n // ---- Row reordering (drag) + row resizing (drag bottom edge) ----\r\n const canReorderRows = rowReorder && !activeGroupBy.length && !sort;\r\n function onRowDrop(targetKey) {\r\n const fromKey = rowDrag.from;\r\n setRowDrag({ from: null, over: null, after: false });\r\n if (fromKey == null || fromKey === targetKey) return;\r\n const base = (rowOrder && rowOrder.length ? rowOrder.slice() : processed.map((r) => keyOf(r)));\r\n for (const r of processed) { const k = keyOf(r); if (!base.includes(k)) base.push(k); }\r\n const next = base.filter((k) => k !== fromKey);\r\n let idx = next.indexOf(targetKey);\r\n if (idx === -1) return;\r\n if (rowDrag.after) idx += 1;\r\n next.splice(idx, 0, fromKey);\r\n setRowOrder(next); onRowOrderChange?.(next);\r\n }\r\n function startRowResize(e, key, tr) {\r\n e.preventDefault(); e.stopPropagation();\r\n const startY = e.clientY; const startH = rowHeights[key] || tr?.offsetHeight || 44;\r\n const onMove = (ev) => { const h = Math.max(32, Math.round(startH + (ev.clientY - startY))); setRowHeights((m) => ({ ...m, [key]: h })); };\r\n const onUp = () => { window.removeEventListener(\"pointermove\", onMove); window.removeEventListener(\"pointerup\", onUp); };\r\n window.addEventListener(\"pointermove\", onMove); window.addEventListener(\"pointerup\", onUp);\r\n }\r\n\r\n // Server-side: report state changes so the parent can fetch the right slice (debounced).\r\n const onServerChangeRef = React.useRef(onServerChange);\r\n onServerChangeRef.current = onServerChange;\r\n React.useEffect(() => {\r\n if (!serverMode) return;\r\n const t = setTimeout(() => {\r\n onServerChangeRef.current?.({\r\n page, pageSize: rowsPerPage, sort,\r\n filters: filters.map(({ id, ...f }) => f),\r\n quickFilter: quick.trim(),\r\n });\r\n }, 250);\r\n return () => clearTimeout(t);\r\n }, [serverMode, page, rowsPerPage, sort, filters, quick]);\r\n\r\n function cycleSort(field) {\r\n setSort((s) => !s || s.field !== field ? { field, dir: \"asc\" } : s.dir === \"asc\" ? { field, dir: \"desc\" } : null);\r\n }\r\n function addFilter(field) {\r\n const col = colByField[field] || cols[0];\r\n setFilters((f) => [...f, { id: Date.now() + Math.random(), field: col.field, op: opsFor(col.type)[0].value, value: \"\" }]);\r\n }\r\n function setPin(field, side) {\r\n setPins((p) => {\r\n const left = p.left.filter((f) => f !== field), right = p.right.filter((f) => f !== field);\r\n if (side === \"left\") left.push(field); else if (side === \"right\") right.unshift(field);\r\n return { left, right };\r\n });\r\n }\r\n\r\n // Distinct value options for \"is any of\" filters (column.valueOptions, else derived from rows).\r\n function optionsForField(field) {\r\n const col = colByField[field];\r\n if (col?.valueOptions) return col.valueOptions.map((o) => (typeof o === \"string\" ? { value: o, label: o } : o));\r\n const set = new Set();\r\n for (const r of rows) { const v = r[field]; if (v != null && v !== \"\") set.add(String(v)); if (set.size > 80) break; }\r\n return [...set].sort((a, b) => a.localeCompare(b)).map((v) => ({ value: v, label: v }));\r\n }\r\n\r\n // ---- Column resize (pointer drag on the right edge) ----\r\n const [resizing, setResizing] = React.useState(false);\r\n function startResize(e, field) {\r\n e.preventDefault(); e.stopPropagation();\r\n const startX = e.clientX; const startW = widthOf(colByField[field]);\r\n setResizing(true);\r\n const onMove = (ev) => {\r\n const w = Math.max(72, Math.round(startW + (ev.clientX - startX)));\r\n setWidths((m) => ({ ...m, [field]: w }));\r\n };\r\n const onUp = () => { setResizing(false); window.removeEventListener(\"pointermove\", onMove); window.removeEventListener(\"pointerup\", onUp); };\r\n window.addEventListener(\"pointermove\", onMove); window.addEventListener(\"pointerup\", onUp);\r\n }\r\n\r\n // ---- Column reorder (HTML5 drag-and-drop on header label) ----\r\n function onColDrop(targetField) {\r\n const fromField = drag.from;\r\n setDrag({ from: null, over: null, after: false });\r\n if (!fromField || fromField === targetField) return;\r\n setOrder((prev) => {\r\n const next = prev.filter((f) => f !== fromField);\r\n let idx = next.indexOf(targetField);\r\n if (idx === -1) return prev;\r\n if (drag.after) idx += 1;\r\n next.splice(idx, 0, fromField);\r\n return next;\r\n });\r\n }\r\n\r\n // ---- Export (client mode: all filtered+sorted rows; server mode: loaded page) ----\r\n function exportData(format = \"csv\") {\r\n const expCols = ordered.filter((c) => c.type !== \"actions\");\r\n const source = serverMode ? paged : processed;\r\n const cellValue = (c, row) => c.exportValue ? c.exportValue(row[c.field], row) : row[c.field];\r\n const fname = (ext) => `${exportFilename}.${ext}`;\r\n const download = (text, mime, ext) => {\r\n const blob = new Blob([text], { type: mime });\r\n const url = URL.createObjectURL(blob);\r\n const a = document.createElement(\"a\");\r\n a.href = url; a.download = fname(ext);\r\n document.body.appendChild(a); a.click(); a.remove();\r\n setTimeout(() => URL.revokeObjectURL(url), 1000);\r\n };\r\n\r\n if (format === \"json\") {\r\n const data = source.map((row) => Object.fromEntries(expCols.map((c) => [c.field, cellValue(c, row)])));\r\n download(JSON.stringify(data, null, 2), \"application/json;charset=utf-8;\", \"json\");\r\n return;\r\n }\r\n if (format === \"excel\") {\r\n // Excel opens an HTML table saved as .xls — no library needed.\r\n const esc = (v) => String(v == null ? \"\" : v).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\r\n const head = `<tr>${expCols.map((c) => `<th>${esc(c.headerName)}</th>`).join(\"\")}</tr>`;\r\n const body = source.map((row) => `<tr>${expCols.map((c) => `<td>${esc(cellValue(c, row))}</td>`).join(\"\")}</tr>`).join(\"\");\r\n const html = `<html xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\"><head><meta charset=\"utf-8\"></head><body><table border=\"1\">${head}${body}</table></body></html>`;\r\n download(html, \"application/vnd.ms-excel;charset=utf-8;\", \"xls\");\r\n return;\r\n }\r\n // csv (default) or tsv\r\n const sep = format === \"tsv\" ? \"\\t\" : \",\";\r\n const escape = (v) => {\r\n const s = v == null ? \"\" : String(v);\r\n return (format === \"tsv\" ? /[\\t\\n]/ : /[\",\\n]/).test(s) ? `\"${s.replace(/\"/g, '\"\"')}\"` : s;\r\n };\r\n const header = expCols.map((c) => escape(c.headerName)).join(sep);\r\n const lines = source.map((row) => expCols.map((c) => escape(cellValue(c, row))).join(sep));\r\n const text = \"\\uFEFF\" + [header, ...lines].join(\"\\r\\n\");\r\n download(text, format === \"tsv\" ? \"text/tab-separated-values;charset=utf-8;\" : \"text/csv;charset=utf-8;\", format === \"tsv\" ? \"tsv\" : \"csv\");\r\n }\r\n\r\n // ---- Aggregation / summary footer ----\r\n function aggregate(col) {\r\n const agg = aggOf(col);\r\n if (!agg) return null;\r\n if (aggregationValues && col.field in aggregationValues) {\r\n const pre = aggregationValues[col.field];\r\n // Per-function map { sum, avg, … } honors the user's chosen function; a scalar/node is used as-is.\r\n if (pre && typeof pre === \"object\" && !React.isValidElement(pre)) {\r\n if (typeof agg === \"string\" && agg in pre) return pre[agg];\r\n } else {\r\n return pre;\r\n }\r\n }\r\n const data = serverMode ? paged : processed;\r\n const raw = data.map((r) => r[col.field]).filter((v) => v != null && v !== \"\");\r\n if (typeof agg === \"function\") return agg(raw, data);\r\n if (agg === \"count\") return raw.length;\r\n const nums = raw.map(Number).filter((n) => !Number.isNaN(n));\r\n if (!nums.length) return null;\r\n if (agg === \"sum\") return nums.reduce((a, b) => a + b, 0);\r\n if (agg === \"avg\") return Math.round((nums.reduce((a, b) => a + b, 0) / nums.length) * 100) / 100;\r\n if (agg === \"min\") return Math.min(...nums);\r\n if (agg === \"max\") return Math.max(...nums);\r\n return null;\r\n }\r\n const aggLabels = { sum: \"Sum\", avg: \"Avg\", min: \"Min\", max: \"Max\", count: \"Count\" };\r\n const hasAggregation = ordered.some((c) => aggOf(c));\r\n\r\n const filteredFields = new Set(filters.map((f) => f.field));\r\n const allSel = paged.length > 0 && paged.every((r) => selected.has(keyOf(r)));\r\n const someSel = paged.some((r) => selected.has(keyOf(r)));\r\n function toggleAll() {\r\n setSelected((s) => { const n = new Set(s); if (allSel) paged.forEach((r) => n.delete(keyOf(r))); else paged.forEach((r) => n.add(keyOf(r))); return n; });\r\n }\r\n function toggleRow(k) { setSelected((s) => { const n = new Set(s); n.has(k) ? n.delete(k) : n.add(k); return n; }); }\r\n\r\n // Click-to-select (row or cell mode). Ignores clicks on interactive cell content.\r\n function handleRowClick(e, k, row) {\r\n if (selectionMode === \"none\") return;\r\n if (e.target.closest(\"button, a, input, select, .twc-dt__check, .twc-dt__editor-wrap\")) return;\r\n if (selectionMode === \"row\") {\r\n setActiveRow(k);\r\n onRowClick?.(row, k);\r\n onActiveCellChange?.(null);\r\n }\r\n }\r\n function handleCellClick(e, k, row, col) {\r\n if (selectionMode !== \"cell\") return;\r\n if (e.target.closest(\"button, a, input, select, .twc-dt__check, .twc-dt__editor-wrap\")) return;\r\n const next = { key: k, field: col.field };\r\n setActiveCell(next);\r\n setActiveRow(k);\r\n onCellClick?.(row[col.field], row, col.field);\r\n onActiveCellChange?.(next);\r\n }\r\n\r\n // ---- Keyboard grid navigation (roving tabindex over data cells) ----\r\n function focusCell(r, c) {\r\n const el = gridRef.current?.querySelector(`.twc-dt__td[data-r=\"${r}\"][data-c=\"${c}\"]`);\r\n if (el) el.focus();\r\n }\r\n function onGridKeyDown(e) {\r\n if (editing) return;\r\n const td = e.target.closest(\".twc-dt__td[data-r]\");\r\n if (!td) return;\r\n let r = +td.getAttribute(\"data-r\"), c = +td.getAttribute(\"data-c\");\r\n const maxR = leafRows.length - 1, maxC = ordered.length - 1;\r\n let handled = true;\r\n switch (e.key) {\r\n case \"ArrowDown\": r = Math.min(r + 1, maxR); break;\r\n case \"ArrowUp\": r = Math.max(r - 1, 0); break;\r\n case \"ArrowRight\": c = Math.min(c + 1, maxC); break;\r\n case \"ArrowLeft\": c = Math.max(c - 1, 0); break;\r\n case \"Home\": c = e.ctrlKey ? (r = 0, 0) : 0; break;\r\n case \"End\": c = maxC; if (e.ctrlKey) r = maxR; break;\r\n case \"Enter\": case \" \": {\r\n const col = ordered[c];\r\n if (col && isColEditable(col)) { e.preventDefault(); beginEdit(keyOf(leafRows[r], r), col, leafRows[r]); return; }\r\n if (selectionMode === \"cell\") { e.preventDefault(); handleCellClick({ target: td }, keyOf(leafRows[r], r), leafRows[r], ordered[c]); return; }\r\n if (selectionMode === \"row\") { e.preventDefault(); setActiveRow(keyOf(leafRows[r], r)); onRowClick?.(leafRows[r], keyOf(leafRows[r], r)); return; }\r\n handled = false; break;\r\n }\r\n default: handled = false;\r\n }\r\n if (handled) { e.preventDefault(); setFocus({ r, c }); focusCell(r, c); }\r\n }\r\n React.useEffect(() => { setFocus((f) => ({ r: Math.min(f.r, Math.max(0, leafRows.length - 1)), c: Math.min(f.c, Math.max(0, ordered.length - 1)) })); }, [leafRows.length, ordered.length, page]);\r\n\r\n const selectedRows = React.useMemo(() => rows.filter((r, i) => selected.has(keyOf(r, i))), [rows, selected]);\r\n function clearSelection() { setSelected(new Set()); }\r\n\r\n // ---- Inline editing ----\r\n const [editing, setEditing] = React.useState(null); // { key, field, value }\r\n const isColEditable = (c) => c.type !== \"actions\" && (c.editable ?? (editMode && c.editable !== false));\r\n\r\n function beginEdit(rowK, col, row) {\r\n if (!isColEditable(col)) return;\r\n setEditing({ key: rowK, field: col.field, value: row[col.field] ?? \"\" });\r\n }\r\n function cancelEdit() { setEditing(null); }\r\n function commitEdit(override) {\r\n if (!editing) return;\r\n const col = colByField[editing.field];\r\n let next = override !== undefined ? override : editing.value;\r\n if (col?.type === \"number\") { next = next === \"\" ? null : Number(next); if (Number.isNaN(next)) next = null; }\r\n const row = paged.find((r, i) => keyOf(r, i) === editing.key);\r\n setEditing(null);\r\n if (!row || row[editing.field] === next) return;\r\n const updated = { ...row, [editing.field]: next };\r\n onRowUpdate?.(updated, row, editing.field);\r\n if (onRowsChange) {\r\n onRowsChange(rows.map((r, i) => (keyOf(r, i) === editing.key ? updated : r)));\r\n }\r\n }\r\n function onEditKey(e) {\r\n if (e.key === \"Enter\") { e.preventDefault(); commitEdit(); }\r\n else if (e.key === \"Escape\") { e.preventDefault(); cancelEdit(); }\r\n }\r\n\r\n // ---- Batch edit: update one or more columns across all selected rows at once ----\r\n const batchEditableCols = React.useMemo(\r\n () => cols.filter((c) => c.type !== \"actions\" && (c.editable ?? (editMode && c.editable !== false))),\r\n [cols, editMode]\r\n );\r\n const [batchEdit, setBatchEdit] = React.useState(null); // { fields: {field:true}, values: {field:val} }\r\n const [batchEditPos, openBatchEdit, closeBatchEdit] = useFloating();\r\n\r\n function openBatchEditor(el) {\r\n setBatchEdit({ fields: {}, values: {} });\r\n openBatchEdit(el, \"left\", 320);\r\n }\r\n // Outside-click / Escape closes the batch-edit panel.\r\n React.useEffect(() => {\r\n if (!batchEdit) return;\r\n const close = () => { setBatchEdit(null); closeBatchEdit(); };\r\n const onDown = (e) => { if (!e.target.closest(\".twc-dt__pop\") && !e.target.closest(\".twc-dt__batch\")) close(); };\r\n const onKey = (e) => { if (e.key === \"Escape\") close(); };\r\n document.addEventListener(\"mousedown\", onDown); document.addEventListener(\"keydown\", onKey);\r\n return () => { document.removeEventListener(\"mousedown\", onDown); document.removeEventListener(\"keydown\", onKey); };\r\n }, [batchEdit]);\r\n\r\n function applyBatchEdit() {\r\n if (!batchEdit) return;\r\n const active = batchEditableCols.filter((c) => batchEdit.fields[c.field]);\r\n if (!active.length) { setBatchEdit(null); closeBatchEdit(); return; }\r\n const patch = {};\r\n active.forEach((c) => {\r\n let v = batchEdit.values[c.field];\r\n if (c.type === \"number\" || c.type === \"currency\") { v = v === \"\" || v == null ? null : Number(v); if (Number.isNaN(v)) v = null; }\r\n patch[c.field] = v;\r\n });\r\n const selKeys = new Set(selected);\r\n const changedRows = [];\r\n const nextAll = rows.map((r, i) => {\r\n const k = keyOf(r, i);\r\n if (!selKeys.has(k)) return r;\r\n const updated = { ...r, ...patch };\r\n changedRows.push(updated);\r\n return updated;\r\n });\r\n onBatchUpdate?.(changedRows, patch, [...selected]);\r\n onRowsChange?.(nextAll);\r\n setBatchEdit(null); closeBatchEdit();\r\n }\r\n\r\n // Dismiss an active editor when clicking outside it (and outside any popover it spawned).\r\n React.useEffect(() => {\r\n if (!editing) return;\r\n const onDown = (e) => {\r\n if (e.target.closest(\".twc-dt__editor-wrap\") || e.target.closest(\".twc-pop\")) return;\r\n setEditing(null);\r\n };\r\n document.addEventListener(\"mousedown\", onDown, true);\r\n return () => document.removeEventListener(\"mousedown\", onDown, true);\r\n }, [editing]);\r\n\r\n function renderActions(col, row) {\r\n const items = (col.getActions ? col.getActions(row) : []) || [];\r\n const inline = items.filter((a) => !a.showInMenu);\r\n const pinItems = canPinRows ? (() => {\r\n const key = keyOf(row); const side = pinSideOf(key);\r\n return [\r\n { label: side === \"top\" ? \"Unpin from top\" : \"Pin to top\", icon: <Svg d={I.pinUp} />, showInMenu: true, onClick: () => pinRow(key, side === \"top\" ? null : \"top\") },\r\n { label: side === \"bottom\" ? \"Unpin from bottom\" : \"Pin to bottom\", icon: <Svg d={I.pinDown} />, showInMenu: true, onClick: () => pinRow(key, side === \"bottom\" ? null : \"bottom\") },\r\n ];\r\n })() : [];\r\n const menu = [...items.filter((a) => a.showInMenu), ...pinItems];\r\n return (\r\n <div className=\"twc-dt__actions\" style={{ justifyContent: col.align === \"right\" ? \"flex-end\" : \"flex-start\" }}>\r\n {inline.map((a, i) => (\r\n <button key={i} className=\"twc-dt__act\" data-danger={a.danger || undefined} title={a.label} aria-label={a.label}\r\n disabled={a.disabled} onClick={(e) => { e.stopPropagation(); a.onClick?.(row); }}>{a.icon}</button>\r\n ))}\r\n {menu.length ? (\r\n <button className=\"twc-dt__act\" aria-label=\"More actions\" title=\"More\"\r\n onClick={(e) => { e.stopPropagation(); setColMenu(null); setPanel(null); setRowMenu({ items: menu, row }); openRowMenu(e.currentTarget, \"right\", 200); }}>\r\n <Svg d={I.more} />\r\n </button>\r\n ) : null}\r\n </div>\r\n );\r\n }\r\n\r\n const tableMinWidth = (checkboxSelection ? 44 : 0) + ordered.reduce((a, c) => a + widthOf(c), 0);\r\n const filterableCols = cols.filter((c) => c.filterable);\r\n const orderIdxOf = (f) => { const i = order.indexOf(f); return i === -1 ? 9999 : i; };\r\n const shownColRows = cols\r\n .filter((c) => c.headerName.toLowerCase().includes(colQuery.trim().toLowerCase()))\r\n .sort((a, b) => orderIdxOf(a.field) - orderIdxOf(b.field));\r\n const rppOptions = Array.from(new Set([...(pageSizeOptions || []), pageSize].filter((n) => n > 0))).sort((a, b) => a - b).map((n) => ({ value: String(n), label: String(n) }));\r\n\r\n const totalCols = ordered.length + (checkboxSelection ? 1 : 0);\r\n function renderGroupRow(item) {\r\n const subs = aggOn ? subtotalText(item.rows) : [];\r\n return (\r\n <tr key={`g${item.key}`} className=\"twc-dt__group-row\" role=\"row\">\r\n <td className=\"twc-dt__group-cell\" role=\"gridcell\" colSpan={totalCols} style={{ maxWidth: \"none\" }}>\r\n <button className=\"twc-dt__group-toggle\" style={{ marginLeft: item.depth * 18 }}\r\n aria-expanded={!item.collapsed} onClick={() => toggleGroup(item.key)}>\r\n <span className=\"twc-dt__group-chev\" data-open={!item.collapsed || undefined}><Svg d={I.chevDown} /></span>\r\n <span className=\"twc-dt__group-name\">{colByField[item.field]?.headerName || item.field}:</span>\r\n <span className=\"twc-dt__group-val\">{String(item.value)}</span>\r\n <span className=\"twc-dt__group-count\">{item.count}</span>\r\n </button>\r\n {subs.length ? <span className=\"twc-dt__group-sub\">{subs.map((s, i) => <span key={i}>{s}</span>)}</span> : null}\r\n </td>\r\n </tr>\r\n );\r\n }\r\n function renderLeaf(row, ri, pinSide) {\r\n const k = keyOf(row, ri); const sel = selected.has(k);\r\n const rowActive = selectionMode === \"row\" && activeRow === k;\r\n const stickyStyle = pinSide === \"top\" ? { position: \"sticky\", top: headH, zIndex: 5 } : pinSide === \"bottom\" ? { position: \"sticky\", bottom: 0, zIndex: 5 } : undefined;\r\n const h = rowHeights[k];\r\n const rowStyle = { ...(stickyStyle || {}), ...(h ? { height: h } : {}) };\r\n const reorderable = canReorderRows && !pinSide;\r\n return (\r\n <tr key={(pinSide ? \"p-\" : \"\") + k} className=\"twc-dt__row\" role=\"row\" aria-rowindex={(paginated && !serverMode ? page * rowsPerPage : 0) + ri + 2}\r\n aria-selected={(checkboxSelection ? sel : rowActive) || undefined}\r\n data-selected={sel || undefined} data-active={rowActive || undefined}\r\n data-pinned-row={pinSide || undefined}\r\n data-reorderable={reorderable || undefined}\r\n data-row-dragging={rowDrag.from === k || undefined}\r\n data-row-dropbefore={(reorderable && rowDrag.over === k && !rowDrag.after) || undefined}\r\n data-row-dropafter={(reorderable && rowDrag.over === k && rowDrag.after) || undefined}\r\n data-selectable={selectionMode !== \"none\" || undefined}\r\n style={Object.keys(rowStyle).length ? rowStyle : undefined}\r\n draggable={reorderable || undefined}\r\n onDragStart={reorderable ? (e) => { setRowDrag({ from: k, over: null, after: false }); e.dataTransfer.effectAllowed = \"move\"; e.dataTransfer.setData(\"text/plain\", String(k)); } : undefined}\r\n onDragOver={reorderable && rowDrag.from != null ? (e) => { e.preventDefault(); const r = e.currentTarget.getBoundingClientRect(); const after = e.clientY > r.top + r.height / 2; setRowDrag((d) => (d.over === k && d.after === after ? d : { ...d, over: k, after })); } : undefined}\r\n onDrop={reorderable && rowDrag.from != null ? (e) => { e.preventDefault(); onRowDrop(k); } : undefined}\r\n onDragEnd={reorderable ? () => setRowDrag({ from: null, over: null, after: false }) : undefined}\r\n onClick={(e) => handleRowClick(e, k, row)}>\r\n {checkboxSelection ? (\r\n <td className=\"twc-dt__td\" role=\"gridcell\" data-pin=\"left\" data-pin-edge={pins.left.length ? undefined : \"left\"} style={{ left: 0, width: 44 }}>\r\n <span className=\"twc-dt__check\" data-checked={sel || undefined} onClick={() => toggleRow(k)}\r\n role=\"checkbox\" aria-checked={sel} aria-label=\"Select row\" tabIndex={0}\r\n onKeyDown={(e) => { if (e.key === \" \" || e.key === \"Enter\") { e.preventDefault(); toggleRow(k); } }}><Svg d={I.check} /></span>\r\n {rowResize && !pinSide ? <span className=\"twc-dt__row-resizer\" title=\"Drag to resize row\" onPointerDown={(e) => startRowResize(e, k, e.currentTarget.closest(\"tr\"))} onClick={(e) => e.stopPropagation()} /> : null}\r\n </td>\r\n ) : null}\r\n {ordered.map((c, ci) => {\r\n const st = stickyOf(c.field); const val = row[c.field];\r\n const isActions = c.type === \"actions\";\r\n const editable = isColEditable(c);\r\n const isEditing = editing && editing.key === k && editing.field === c.field;\r\n const cellActive = selectionMode === \"cell\" && activeCell && activeCell.key === k && activeCell.field === c.field;\r\n return (\r\n <td key={c.field} className=\"twc-dt__td\" role=\"gridcell\" data-r={ri} data-c={ci} aria-colindex={ci + 1 + (checkboxSelection ? 1 : 0)}\r\n tabIndex={focus.r === ri && focus.c === ci ? 0 : -1}\r\n data-num={c.type === \"number\" || undefined} data-actions={isActions || undefined}\r\n data-editable={editable && !isEditing || undefined} data-editing={isEditing || undefined}\r\n data-cell-active={cellActive || undefined}\r\n data-pin={st.pin} data-pin-edge={st.edge}\r\n style={{ width: widthOf(c), ...st.style }} title={isActions || c.renderCell || editable ? undefined : String(val ?? \"\")}\r\n onClick={selectionMode === \"cell\" ? (e) => handleCellClick(e, k, row, c) : undefined}\r\n onFocus={() => setFocus((f) => (f.r === ri && f.c === ci ? f : { r: ri, c: ci }))}\r\n onDoubleClick={editable ? () => beginEdit(k, c, row) : undefined}>\r\n {isEditing ? (\r\n <EditCell col={c} value={editing.value} options={c.valueOptions ? optionsForField(c.field) : null}\r\n onChange={(v) => setEditing((e) => ({ ...e, value: v }))}\r\n onCommit={() => commitEdit()} onCommitValue={(v) => commitEdit(v)} onCancel={cancelEdit} onKeyDown={onEditKey} />\r\n ) : isActions ? renderActions(c, row) : c.renderCell ? c.renderCell(val, row) : c.valueFormatter ? c.valueFormatter(val, row) : val}\r\n {editable && !isEditing ? <span className=\"twc-dt__edit-hint\" aria-hidden=\"true\"><Svg d={I.pencil} /></span> : null}\r\n </td>\r\n );\r\n })}\r\n </tr>\r\n );\r\n }\r\n\r\n function renderPivot() {\r\n const rFields = pivotConfig.rows, cFields = pivotConfig.columns || [], values = pivotConfig.values;\r\n const rowKeyOf = (r) => rFields.map((f) => r[f] ?? \"—\").join(\" · \");\r\n const colPathOf = (r) => cFields.map((f) => String(r[f] ?? \"—\"));\r\n const aggOf = (subset, v) => computeAgg({ field: v.field, aggregation: v.agg || \"sum\" }, subset || []);\r\n const fmt = (val, v) => { if (val == null) return \"—\"; const col = colByField[v.field]; const f = v.valueFormatter || col?.valueFormatter; return f ? f(val, null) : (typeof val === \"number\" ? val.toLocaleString() : val); };\r\n const vlabel = (v) => v.label || (colByField[v.field]?.headerName || v.field);\r\n const rowFieldLabel = rFields.map((f) => colByField[f]?.headerName || f).join(\" / \");\r\n\r\n // Build the leaf column paths (ordered, distinct) and the per-level header spans.\r\n const leafPaths = [];\r\n const seen = new Set();\r\n for (const r of rows) {\r\n const path = colPathOf(r); const key = path.join(\"\\u0000\");\r\n if (!seen.has(key)) { seen.add(key); leafPaths.push(path); }\r\n }\r\n leafPaths.sort((a, b) => a.join(\"\\u0000\").localeCompare(b.join(\"\\u0000\")));\r\n // Header rows: one per column field. Each produces {label, span, key} cells by run-length on the path prefix.\r\n const headerLevels = cFields.map((_, lvl) => {\r\n const cells = []; let i = 0;\r\n while (i < leafPaths.length) {\r\n const label = leafPaths[i][lvl];\r\n const prefix = leafPaths[i].slice(0, lvl + 1).join(\"\\u0000\");\r\n let span = 0; let j = i;\r\n while (j < leafPaths.length && leafPaths[j].slice(0, lvl + 1).join(\"\\u0000\") === prefix) { span++; j++; }\r\n cells.push({ label, span: span * values.length, key: prefix });\r\n i = j;\r\n }\r\n return cells;\r\n });\r\n const leafKey = (path) => path.join(\"\\u0000\");\r\n const rowsForLeaf = (subset, path) => subset.filter((r) => leafKey(colPathOf(r)) === leafKey(path));\r\n\r\n const rowMap = new Map();\r\n for (const r of rows) { const rk = rowKeyOf(r); if (!rowMap.has(rk)) rowMap.set(rk, []); rowMap.get(rk).push(r); }\r\n const rowKeys = [...rowMap.keys()].sort((a, b) => String(a).localeCompare(String(b)));\r\n const totalHeaderRows = Math.max(cFields.length, 1) + 1; // column levels + the value-label row\r\n\r\n const ValueHead = ({ v, total }) => (\r\n <span className=\"twc-dt__pivot-vh\">\r\n <span className=\"twc-dt__pivot-vh-label\">{vlabel(v)}</span>\r\n <span className=\"twc-dt__pivot-vh-agg\">{v.agg || \"sum\"}</span>\r\n </span>\r\n );\r\n\r\n return (\r\n <div className=\"twc-dt__scroll\" style={{ maxHeight: height }}>\r\n <table className=\"twc-dt__table twc-dt__pivot\" role=\"grid\" aria-label={ariaLabel + \" (pivot)\"}>\r\n <thead>\r\n {/* One row per column-grouping field (e.g. Year, then Month) */}\r\n {cFields.map((cf, lvl) => (\r\n <tr role=\"row\" key={`lvl${lvl}`}>\r\n {lvl === 0 ? (\r\n <th className=\"twc-dt__th twc-dt__pivot-corner\" data-pin=\"left\" data-pin-edge=\"left\" style={{ left: 0 }} rowSpan={totalHeaderRows} scope=\"col\">\r\n <span className=\"twc-dt__pivot-corner-label\">{rowFieldLabel}</span>\r\n </th>\r\n ) : null}\r\n {headerLevels[lvl].map((cell) => (\r\n <th key={cell.key} className=\"twc-dt__th twc-dt__pivot-colgroup\" colSpan={cell.span} scope=\"colgroup\">{cell.label}</th>\r\n ))}\r\n {lvl === 0 ? (\r\n <th className=\"twc-dt__th twc-dt__pivot-total-h\" colSpan={values.length} rowSpan={Math.max(cFields.length, 1)} scope=\"colgroup\">Total</th>\r\n ) : null}\r\n </tr>\r\n ))}\r\n {/* Value-label row (field name + aggregation) */}\r\n <tr role=\"row\">\r\n {leafPaths.map((path) => values.map((v, vi) => (\r\n <th key={leafKey(path) + v.field + (v.agg || \"\")} className=\"twc-dt__th twc-dt__pivot-vhcell\" data-num=\"true\" data-group-start={vi === 0 || undefined} scope=\"col\"><ValueHead v={v} /></th>\r\n )))}\r\n {values.map((v, vi) => (\r\n <th key={\"t\" + v.field + (v.agg || \"\")} className=\"twc-dt__th twc-dt__pivot-vhcell twc-dt__pivot-total-h\" data-num=\"true\" data-group-start={vi === 0 || undefined} scope=\"col\"><ValueHead v={v} total /></th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {rowKeys.map((rk, rIdx) => {\r\n const subset = rowMap.get(rk);\r\n return (\r\n <tr key={rk} className=\"twc-dt__row\" role=\"row\" data-zebra={rIdx % 2 === 1 || undefined}>\r\n <th className=\"twc-dt__td twc-dt__pivot-rowhead\" scope=\"row\" data-pin=\"left\" data-pin-edge=\"left\" style={{ left: 0 }}>\r\n {rk} <span className=\"twc-dt__pivot-rowcount\">({subset.length})</span>\r\n </th>\r\n {leafPaths.map((path) => { const cell = rowsForLeaf(subset, path); return values.map((v, vi) => {\r\n const val = cell.length ? aggOf(cell, v) : null;\r\n return <td key={leafKey(path) + v.field} className=\"twc-dt__td twc-dt__pivot-cell\" role=\"gridcell\" data-num=\"true\" data-group-start={vi === 0 || undefined} data-empty={val == null || undefined}>{fmt(val, v)}</td>;\r\n }); })}\r\n {values.map((v, vi) => <td key={\"t\" + v.field} className=\"twc-dt__td twc-dt__pivot-cell twc-dt__pivot-total\" role=\"gridcell\" data-num=\"true\" data-group-start={vi === 0 || undefined}>{fmt(aggOf(subset, v), v)}</td>)}\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n <tfoot>\r\n <tr role=\"row\">\r\n <th className=\"twc-dt__pivot-rowhead twc-dt__pivot-grand\" data-pin=\"left\" data-pin-edge=\"left\" style={{ left: 0 }} scope=\"row\">Total</th>\r\n {leafPaths.map((path) => { const sub = rowsForLeaf(rows, path); return values.map((v, vi) => <td key={leafKey(path) + v.field} data-num=\"true\" data-group-start={vi === 0 || undefined} className=\"twc-dt__pivot-cell twc-dt__pivot-grand\">{fmt(sub.length ? aggOf(sub, v) : null, v)}</td>); })}\r\n {values.map((v, vi) => <td key={\"t\" + v.field} data-num=\"true\" data-group-start={vi === 0 || undefined} className=\"twc-dt__pivot-cell twc-dt__pivot-grand twc-dt__pivot-total\">{fmt(aggOf(rows, v), v)}</td>)}\r\n </tr>\r\n </tfoot>\r\n </table>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className={`twc-dt ${className}`} data-density={density} data-resizing={resizing || undefined} {...rest}>\r\n {/* PIVOT_RENDER_ANCHOR */}\r\n {/* Toolbar */}\r\n <div className=\"twc-dt__toolbar\">\r\n {batchActions.length && selected.size > 0 ? (\r\n <div className=\"twc-dt__batch\">\r\n <button className=\"twc-dt__batch-x\" onClick={clearSelection} aria-label=\"Clear selection\"><Svg d={I.x} /></button>\r\n <span className=\"twc-dt__batch-count\">{selected.size} selected</span>\r\n <div className=\"twc-dt__batch-actions\">\r\n {batchEditableCols.length ? (\r\n <button className=\"twc-dt__batch-btn\" onClick={(e) => openBatchEditor(e.currentTarget)}>\r\n <Svg d={I.pencil} />Edit\r\n </button>\r\n ) : null}\r\n {batchActions.map((a, i) => (\r\n <button key={i} className=\"twc-dt__batch-btn\" data-danger={a.danger || undefined} disabled={a.disabled}\r\n onClick={() => a.onClick?.([...selected], selectedRows, clearSelection)}>\r\n {a.icon}{a.label}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <button className=\"twc-dt__tbtn\" data-active={panel === \"columns\" || undefined} data-tip=\"Show or hide columns\"\r\n onClick={(e) => { if (panel === \"columns\") { setPanel(null); closePanel(); } else { setColQuery(\"\"); setPanel(\"columns\"); setColMenu(null); openPanel(e.currentTarget, \"left\", 268); } }}>\r\n <Svg d={I.columns} /> Columns{hidden.size ? <span className=\"twc-dt__tbadge\">{cols.length - hidden.size}</span> : null}\r\n </button>\r\n <button className=\"twc-dt__tbtn\" data-active={panel === \"filters\" || undefined} data-tip=\"Filter rows\"\r\n onClick={(e) => { if (panel === \"filters\") { setPanel(null); closePanel(); } else { setPanel(\"filters\"); setColMenu(null); openPanel(e.currentTarget, \"left\", 480); } }}>\r\n <Svg d={I.filter} /> Filters{filters.length ? <span className=\"twc-dt__tbadge\">{filters.length}</span> : null}\r\n </button>\r\n <button className=\"twc-dt__tbtn\" data-tip=\"Change row density\" onClick={() => setDensity((d) => d === \"compact\" ? \"standard\" : d === \"standard\" ? \"comfortable\" : \"compact\")}>\r\n <Svg d={I.density} /> {density[0].toUpperCase() + density.slice(1)}\r\n </button>\r\n <button className=\"twc-dt__tbtn\" data-active={panel === \"agg\" || aggOn || undefined} aria-haspopup=\"dialog\" aria-expanded={panel === \"agg\"} data-tip=\"Configure aggregation\"\r\n onClick={(e) => { if (panel === \"agg\") { setPanel(null); closePanel(); } else { setPanel(\"agg\"); setColMenu(null); openPanel(e.currentTarget, \"left\", 300); } }}>\r\n <Svg d={I.sigma} /> Aggregation{aggOn && hasAggregation ? <span className=\"twc-dt__tbadge\">{ordered.filter((c) => aggOf(c)).length}</span> : null}\r\n </button>\r\n <button className=\"twc-dt__tbtn\" data-active={panel === \"pivot\" || pivotActive || undefined} aria-haspopup=\"dialog\" aria-expanded={panel === \"pivot\"} data-tip=\"Configure pivot\"\r\n onClick={(e) => { if (panel === \"pivot\") { setPanel(null); closePanel(); } else { setPanel(\"pivot\"); setColMenu(null); openPanel(e.currentTarget, \"left\", 320); } }}>\r\n <Svg d={I.pivot} /> Pivot{pivotActive ? <span className=\"twc-dt__tdot\" aria-label=\"on\" role=\"img\" /> : null}\r\n </button>\r\n {showExport ? (\r\n <span className=\"twc-dt__export\">\r\n <button className=\"twc-dt__export-main\" onClick={() => exportData(\"csv\")} aria-label=\"Export to CSV\">\r\n <Svg d={I.download} /> Export\r\n </button>\r\n <button className=\"twc-dt__export-toggle\" aria-label=\"More export formats\" aria-haspopup=\"menu\" aria-expanded={exportOpen}\r\n onClick={(e) => { if (exportOpen) { setExportOpen(false); closeExport(); } else { setColMenu(null); setPanel(null); setRowMenu(null); setExportOpen(true); openExport(e.currentTarget, \"right\", 180); } }}>\r\n <Svg d={I.chevronDown} />\r\n </button>\r\n </span>\r\n ) : null}\r\n <div className=\"twc-dt__search\">\r\n <Svg d={I.search} />\r\n <input placeholder=\"Search…\" value={quick} onChange={(e) => { setQuick(e.target.value); setPage(0); }} />\r\n </div>\r\n </div>\r\n\r\n {/* Active row-grouping chips */}\r\n {!pivotActive && activeGroupBy.length ? (\r\n <div className=\"twc-dt__groupbar\">\r\n <Svg d={I.group} />\r\n <span className=\"twc-dt__groupbar-label\">Grouped by</span>\r\n {activeGroupBy.map((f) => (\r\n <span key={f} className=\"twc-dt__groupchip\">\r\n {colByField[f]?.headerName || f}\r\n <button className=\"twc-dt__groupchip-x\" aria-label={`Stop grouping by ${colByField[f]?.headerName || f}`} onClick={() => toggleGroupField(f)}><Svg d={I.x} /></button>\r\n </span>\r\n ))}\r\n <button className=\"twc-dt__groupbar-clear\" onClick={() => setGroupBy([])}>Clear all</button>\r\n </div>\r\n ) : null}\r\n\r\n {/* Grid */}\r\n {pivotActive ? renderPivot() : (\r\n <div className=\"twc-dt__scroll\" style={{ maxHeight: height }}>\r\n <table className=\"twc-dt__table\" style={{ width: tableMinWidth, minWidth: \"100%\" }}\r\n ref={gridRef} role=\"grid\" aria-label={ariaLabel}\r\n aria-rowcount={totalRows + 1} aria-colcount={ordered.length + (checkboxSelection ? 1 : 0)}\r\n aria-busy={loading || undefined} onKeyDown={onGridKeyDown}>\r\n <thead ref={theadRef}>\r\n <tr role=\"row\" aria-rowindex={1}>\r\n {checkboxSelection ? (\r\n <th className=\"twc-dt__th\" role=\"columnheader\" aria-label=\"Select\" data-pin=\"left\" data-pin-edge={pins.left.length ? undefined : \"left\"} style={{ left: 0, width: 44, minWidth: 44 }}>\r\n <div className=\"twc-dt__th-inner\" style={{ justifyContent: \"center\", padding: 0 }}>\r\n <span className=\"twc-dt__check\" data-checked={allSel || undefined} data-indeterminate={(!allSel && someSel) || undefined} onClick={toggleAll}\r\n role=\"checkbox\" aria-checked={allSel ? true : someSel ? \"mixed\" : false} aria-label=\"Select all rows\" tabIndex={0}\r\n onKeyDown={(e) => { if (e.key === \" \" || e.key === \"Enter\") { e.preventDefault(); toggleAll(); } }}>\r\n <Svg d={allSel ? I.check : I.minus} />\r\n </span>\r\n </div>\r\n </th>\r\n ) : null}\r\n {ordered.map((c) => {\r\n const st = stickyOf(c.field);\r\n const sorted = sort && sort.field === c.field ? sort.dir : undefined;\r\n const w = widthOf(c);\r\n const reorderable = !disableColumnReorder && st.pin == null && c.type !== \"actions\";\r\n const resizable = !disableColumnResize && c.resizable !== false;\r\n const hasMenu = !c.disableColumnMenu && (c.sortable || c.filterable || c.pinnable || c.hideable);\r\n return (\r\n <th key={c.field} className=\"twc-dt__th\" role=\"columnheader\" scope=\"col\"\r\n aria-sort={sorted ? (sorted === \"asc\" ? \"ascending\" : \"descending\") : (c.sortable ? \"none\" : undefined)}\r\n data-num={c.type === \"number\" || undefined} data-actions-col={c.type === \"actions\" || undefined}\r\n data-sorted={sorted} data-pin={st.pin} data-pin-edge={st.edge}\r\n data-dragging={drag.from === c.field || undefined}\r\n data-dropbefore={(drag.over === c.field && !drag.after) || undefined}\r\n data-dropafter={(drag.over === c.field && drag.after) || undefined}\r\n style={{ width: w, minWidth: w, ...st.style }}\r\n onDragOver={reorderable && drag.from ? (e) => { e.preventDefault(); const r = e.currentTarget.getBoundingClientRect(); const after = e.clientX > r.left + r.width / 2; setDrag((d) => (d.over === c.field && d.after === after ? d : { ...d, over: c.field, after })); } : undefined}\r\n onDrop={reorderable && drag.from ? (e) => { e.preventDefault(); onColDrop(c.field); } : undefined}>\r\n <div className=\"twc-dt__th-inner\">\r\n <span className=\"twc-dt__th-label\"\r\n role={c.sortable ? \"button\" : undefined} tabIndex={c.sortable ? 0 : undefined}\r\n aria-label={c.sortable ? `${c.headerName}, sort` : undefined}\r\n draggable={reorderable || undefined}\r\n onDragStart={reorderable ? (e) => { setDrag({ from: c.field, over: null, after: false }); e.dataTransfer.effectAllowed = \"move\"; e.dataTransfer.setData(\"text/plain\", c.field); } : undefined}\r\n onDragEnd={reorderable ? () => setDrag({ from: null, over: null, after: false }) : undefined}\r\n onClick={() => c.sortable && cycleSort(c.field)}\r\n onKeyDown={c.sortable ? (e) => { if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); cycleSort(c.field); } } : undefined}>\r\n {reorderable ? <span className=\"twc-dt__grip\" aria-hidden=\"true\"><Svg d={I.grip} /></span> : null}\r\n {filteredFields.has(c.field) ? <span className=\"twc-dt__filterdot\" /> : null}\r\n {c.headerName}\r\n {c.sortable ? <span className=\"twc-dt__sort\"><Svg d={I.arrow} /></span> : null}\r\n </span>\r\n {hasMenu ? (\r\n <button className=\"twc-dt__menu-btn\" aria-label=\"Column menu\"\r\n onClick={(e) => { e.stopPropagation(); setPanel(null); setColMenu({ field: c.field }); openMenu(e.currentTarget, \"right\", 230); }}>\r\n <Svg d={I.more} />\r\n </button>\r\n ) : null}\r\n </div>\r\n {resizable ? <span className=\"twc-dt__resizer\" data-active={resizing || undefined} onPointerDown={(e) => startResize(e, c.field)} onClick={(e) => e.stopPropagation()} title=\"Drag to resize\" /> : null}\r\n </th>\r\n );\r\n })}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {loading ? (\r\n Array.from({ length: paginated ? Math.min(rowsPerPage, 8) : 8 }).map((_, ri) => (\r\n <tr key={ri} className=\"twc-dt__row\">\r\n {checkboxSelection ? <td className=\"twc-dt__td\" data-pin=\"left\" style={{ left: 0, width: 44 }}><span className=\"twc-dt__sk\" style={{ \"--_w\": \"18px\", height: 18, borderRadius: 4 }} /></td> : null}\r\n {ordered.map((c, ci) => {\r\n const st = stickyOf(c.field);\r\n return <td key={c.field} className=\"twc-dt__td\" data-num={c.type === \"number\" || undefined} data-pin={st.pin} data-pin-edge={st.edge} style={{ width: widthOf(c), ...st.style }}>\r\n <span className=\"twc-dt__sk\" style={{ \"--_w\": `${45 + ((ri * 13 + ci * 29) % 45)}%` }} />\r\n </td>;\r\n })}\r\n </tr>\r\n ))\r\n ) : leafRows.length === 0 ? (\r\n <tr><td className=\"twc-dt__td\" colSpan={totalCols} style={{ maxWidth: \"none\" }}>\r\n <div className=\"twc-dt__empty\">No rows match your filters</div>\r\n </td></tr>\r\n ) : displayItems ? (() => {\r\n let li = -1;\r\n return displayItems.map((item) => item.kind === \"group\" ? renderGroupRow(item) : renderLeaf(item.row, ++li));\r\n })() : (<>\r\n {pinnedTopRows.map((row) => renderLeaf(row, keyIndex.get(keyOf(row)), \"top\"))}\r\n {middleRows.map((row) => renderLeaf(row, keyIndex.get(keyOf(row))))}\r\n {pinnedBottomRows.map((row) => renderLeaf(row, keyIndex.get(keyOf(row)), \"bottom\"))}\r\n </>)}\r\n </tbody>\r\n {hasAggregation && aggOn && !loading && paged.length > 0 ? (\r\n <tfoot>\r\n <tr role=\"row\">\r\n {checkboxSelection ? <td data-pin=\"left\" data-pin-edge={pins.left.length ? undefined : \"left\"} style={{ left: 0, width: 44 }} /> : null}\r\n {ordered.map((c) => {\r\n const st = stickyOf(c.field);\r\n const v = aggregate(c);\r\n const display = v == null ? null : (c.aggregationFormatter ? c.aggregationFormatter(v) : c.valueFormatter ? c.valueFormatter(v, null) : (typeof v === \"number\" ? v.toLocaleString() : v));\r\n return (\r\n <td key={c.field} data-num={c.type === \"number\" || undefined} data-pin={st.pin} data-pin-edge={st.edge} style={{ width: widthOf(c), ...st.style }}>\r\n {v == null ? null : (<>\r\n {typeof aggOf(c) === \"string\" ? <span className=\"twc-dt__agg-label\">{aggLabels[aggOf(c)]}</span> : null}\r\n <span className=\"twc-dt__agg-val\">{display}</span>\r\n </>)}\r\n </td>\r\n );\r\n })}\r\n </tr>\r\n </tfoot>\r\n ) : null}\r\n </table>\r\n </div>\r\n )}\r\n\r\n {/* Footer with pagination */}\r\n {!pivotActive ? (\r\n <div className=\"twc-dt__footer\">\r\n <div className=\"twc-dt__footer-row\" data-bottom=\"true\">\r\n <span className=\"twc-dt__status\">\r\n {loading ? \"Loading…\" : (() => {\r\n const nf = (n) => n.toLocaleString();\r\n if (totalRows === 0) return \"No rows\";\r\n const shown = paged.length;\r\n const start = paginated ? page * rowsPerPage + 1 : 1;\r\n const end = paginated ? start + shown - 1 : shown;\r\n return (\r\n <>\r\n {paginated\r\n ? <>Showing <b>{nf(start)}–{nf(end)}</b> of <b>{nf(totalRows)}</b> {totalRows === 1 ? \"row\" : \"rows\"}</>\r\n : <><b>{nf(totalRows)}</b> {totalRows === 1 ? \"row\" : \"rows\"}</>}\r\n {selected.size ? <> · <b>{nf(selected.size)}</b> selected</> : null}\r\n </>\r\n );\r\n })()}\r\n </span>\r\n {paginated ? (\r\n <div className=\"twc-dt__rpp\">\r\n <span className=\"twc-dt__rpp-label\">Rows per page</span>\r\n <div style={{ width: 78 }}>\r\n <Select size=\"sm\" value={String(rowsPerPage)} options={rppOptions} placement=\"top\" onChange={(v) => { setRowsPerPage(Number(v)); setPage(0); }} />\r\n </div>\r\n </div>\r\n ) : null}\r\n </div>\r\n {paginated ? (\r\n <div className=\"twc-dt__footer-row\" data-pager=\"true\">\r\n <Pagination size=\"sm\" page={page + 1} total={totalPages} boundaries={3} showJumper={showPageJumper && totalPages > 5} onChange={(p) => setPage(p - 1)} />\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n\r\n {/* Export options menu */}\r\n {exportOpen && exportPos ? (\r\n <div className=\"twc-dt__pop\" style={{ top: exportPos.top, left: exportPos.left, width: exportPos.width, maxHeight: exportPos.maxHeight, overflowY: \"auto\" }}>\r\n <Caret pos={exportPos} />\r\n {[\r\n { fmt: \"csv\", label: \"CSV (.csv)\", icon: I.fileText },\r\n { fmt: \"excel\", label: \"Excel (.xls)\", icon: I.sheet },\r\n { fmt: \"tsv\", label: \"TSV (.tsv)\", icon: I.fileText },\r\n { fmt: \"json\", label: \"JSON (.json)\", icon: I.braces },\r\n ].map((o) => (\r\n <button key={o.fmt} className=\"twc-dt__mi\" onClick={() => { exportData(o.fmt); setExportOpen(false); closeExport(); }}>\r\n <Svg d={o.icon} /> {o.label}\r\n </button>\r\n ))}\r\n </div>\r\n ) : null}\r\n\r\n {/* Batch edit panel — set columns across all selected rows */}\r\n {batchEdit && batchEditPos ? (\r\n <div className=\"twc-dt__pop twc-dt__cfg\" style={{ top: batchEditPos.top, left: batchEditPos.left, width: 320 }}>\r\n <Caret pos={batchEditPos} />\r\n <div className=\"twc-dt__cfg-head\">Edit {selected.size} selected {selected.size === 1 ? \"row\" : \"rows\"}</div>\r\n <div className=\"twc-dt__cfg-list\">\r\n {batchEditableCols.map((c) => {\r\n const on = !!batchEdit.fields[c.field];\r\n const opts = c.valueOptions ? c.valueOptions.map((o) => (typeof o === \"string\" ? { value: o, label: o } : o)) : null;\r\n return (\r\n <div key={c.field} className=\"twc-dt__be-row\" data-on={on || undefined}>\r\n <label className=\"twc-dt__be-check\">\r\n <input type=\"checkbox\" checked={on} onChange={(e) => setBatchEdit((b) => ({ ...b, fields: { ...b.fields, [c.field]: e.target.checked } }))} />\r\n <span>{c.headerName}</span>\r\n </label>\r\n <div className=\"twc-dt__be-ctl\">\r\n {opts ? (\r\n <Select size=\"sm\" portal searchable placeholder=\"New value…\" value={batchEdit.values[c.field] ?? \"\"} options={opts} disabled={!on}\r\n onChange={(v) => setBatchEdit((b) => ({ ...b, fields: { ...b.fields, [c.field]: true }, values: { ...b.values, [c.field]: v } }))} />\r\n ) : (\r\n <Input size=\"sm\" type={c.type === \"number\" || c.type === \"currency\" ? \"number\" : \"text\"} placeholder=\"New value…\" value={batchEdit.values[c.field] ?? \"\"} disabled={!on}\r\n onChange={(e) => setBatchEdit((b) => ({ ...b, values: { ...b.values, [c.field]: e.target.value } }))} />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n <div className=\"twc-dt__cfg-foot\">\r\n <button className=\"twc-dt__cfg-btn\" onClick={() => { setBatchEdit(null); closeBatchEdit(); }}>Cancel</button>\r\n <button className=\"twc-dt__cfg-btn\" data-primary=\"true\" onClick={applyBatchEdit}>Apply to {selected.size}</button>\r\n </div>\r\n </div>\r\n ) : null}\r\n\r\n {/* Column header menu */}\r\n {colMenu && menuPos ? (\r\n <div className=\"twc-dt__pop\" style={{ top: menuPos.top, left: menuPos.left, width: menuPos.width, maxHeight: menuPos.maxHeight, overflowY: \"auto\" }}>\r\n <Caret pos={menuPos} />\r\n {(() => {\r\n const c = colByField[colMenu.field]; const close = () => { setColMenu(null); closeMenu(); };\r\n const hasTop = c.sortable || c.filterable;\r\n const hasBottom = c.pinnable || c.hideable;\r\n return (<>\r\n {c.sortable ? (<>\r\n <button className=\"twc-dt__mi\" data-active={sort?.field === c.field && sort.dir === \"asc\" || undefined} onClick={() => { setSort({ field: c.field, dir: \"asc\" }); close(); }}><Svg d={I.arrow} /> Sort ascending</button>\r\n <button className=\"twc-dt__mi\" data-active={sort?.field === c.field && sort.dir === \"desc\" || undefined} onClick={() => { setSort({ field: c.field, dir: \"desc\" }); close(); }}><Svg d={I.arrow} style={{ transform: \"rotate(180deg)\" }} /> Sort descending</button>\r\n </>) : null}\r\n {c.filterable ? <button className=\"twc-dt__mi\" onClick={(e) => { addFilter(c.field); setColMenu(null); closeMenu(); setPanel(\"filters\"); openPanel(document.querySelector(\".twc-dt__toolbar .twc-dt__tbtn:nth-child(2)\"), \"left\", 480); }}><Svg d={I.filter} /> Filter</button> : null}\r\n {hasTop && hasBottom ? <div className=\"twc-dt__sep\" /> : null}\r\n {c.groupable ? <button className=\"twc-dt__mi\" data-active={groupBy.includes(c.field) || undefined} onClick={() => { toggleGroupField(c.field); close(); }}><Svg d={I.group} /> {groupBy.includes(c.field) ? \"Stop grouping\" : \"Group by this column\"}</button> : null}\r\n {c.pinnable ? (<>\r\n <button className=\"twc-dt__mi\" data-active={pins.left.includes(c.field) || undefined} onClick={() => { setPin(c.field, pins.left.includes(c.field) ? null : \"left\"); close(); }}><Svg d={I.pinL} /> {pins.left.includes(c.field) ? \"Unpin\" : \"Pin to left\"}</button>\r\n <button className=\"twc-dt__mi\" data-active={pins.right.includes(c.field) || undefined} onClick={() => { setPin(c.field, pins.right.includes(c.field) ? null : \"right\"); close(); }}><Svg d={I.pin} /> {pins.right.includes(c.field) ? \"Unpin\" : \"Pin to right\"}</button>\r\n </>) : null}\r\n {c.hideable ? <button className=\"twc-dt__mi\" onClick={() => { setHidden((h) => new Set(h).add(c.field)); close(); }}><Svg d={I.eyeOff} /> Hide column</button> : null}\r\n </>);\r\n })()}\r\n </div>\r\n ) : null}\r\n\r\n {/* Row actions overflow menu */}\r\n {rowMenu && rowMenuPos ? (\r\n <div className=\"twc-dt__pop\" style={{ top: rowMenuPos.top, left: rowMenuPos.left, width: rowMenuPos.width, maxHeight: rowMenuPos.maxHeight, overflowY: \"auto\" }}>\r\n <Caret pos={rowMenuPos} />\r\n {rowMenu.items.map((a, i) => (\r\n <button key={i} className=\"twc-dt__mi\" disabled={a.disabled}\r\n style={a.danger ? { color: \"var(--color-danger-subtle-fg)\" } : undefined}\r\n onClick={() => { a.onClick?.(rowMenu.row); setRowMenu(null); closeRowMenu(); }}>\r\n {a.icon || null}{a.label}\r\n </button>\r\n ))}\r\n </div>\r\n ) : null}\r\n\r\n {/* Columns panel (searchable) */}\r\n {panel === \"columns\" && panelPos ? (\r\n <div className=\"twc-dt__pop twc-dt__cols\" style={{ top: panelPos.top, left: panelPos.left }}>\r\n <div className=\"twc-dt__panel-head\">\r\n <span className=\"twc-dt__panel-title\">Columns</span>\r\n <div>\r\n <button className=\"twc-dt__link\" onClick={() => setHidden(new Set())}>Show all</button>\r\n <button className=\"twc-dt__link\" onClick={() => setHidden(new Set(cols.filter((c) => c.hideable).map((c) => c.field)))}>Hide all</button>\r\n </div>\r\n </div>\r\n <div className=\"twc-dt__col-search\">\r\n <Svg d={I.search} />\r\n <input autoFocus placeholder=\"Find column…\" value={colQuery} onChange={(e) => setColQuery(e.target.value)} />\r\n </div>\r\n <div className=\"twc-dt__col-list\">\r\n {shownColRows.length === 0 ? <div className=\"twc-dt__empty\" style={{ padding: \"18px 12px\" }}>No columns found</div> :\r\n shownColRows.map((c) => {\r\n const canDrag = !disableColumnReorder && !colQuery.trim();\r\n return (\r\n <div key={c.field} className=\"twc-dt__col-row\"\r\n data-dragging={drag.from === c.field || undefined}\r\n data-dropbefore={(drag.over === c.field && !drag.after) || undefined}\r\n data-dropafter={(drag.over === c.field && drag.after) || undefined}\r\n draggable={canDrag || undefined}\r\n onDragStart={canDrag ? (e) => { setDrag({ from: c.field, over: null, after: false }); e.dataTransfer.effectAllowed = \"move\"; e.dataTransfer.setData(\"text/plain\", c.field); } : undefined}\r\n onDragEnd={canDrag ? () => setDrag({ from: null, over: null, after: false }) : undefined}\r\n onDragOver={canDrag && drag.from ? (e) => { e.preventDefault(); const r = e.currentTarget.getBoundingClientRect(); const after = e.clientY > r.top + r.height / 2; setDrag((d) => (d.over === c.field && d.after === after ? d : { ...d, over: c.field, after })); } : undefined}\r\n onDrop={canDrag && drag.from ? (e) => { e.preventDefault(); onColDrop(c.field); } : undefined}\r\n onClick={() => c.hideable && setHidden((h) => { const n = new Set(h); n.has(c.field) ? n.delete(c.field) : n.add(c.field); return n; })}>\r\n {canDrag ? <span className=\"twc-dt__col-grip\" aria-hidden=\"true\"><Svg d={I.grip} /></span> : null}\r\n <span className=\"twc-dt__col-name\">{c.headerName}</span>\r\n <span className=\"twc-dt__sw\" data-on={!hidden.has(c.field) || undefined} style={c.hideable ? undefined : { opacity: 0.4 }} />\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n ) : null}\r\n\r\n {/* Aggregation config panel */}\r\n {panel === \"agg\" && panelPos ? (\r\n <div className=\"twc-dt__pop twc-dt__cfg\" style={{ top: panelPos.top, left: panelPos.left, width: 300 }} role=\"dialog\" aria-label=\"Aggregation settings\">\r\n <div className=\"twc-dt__panel-head\">\r\n <span className=\"twc-dt__panel-title\">Aggregation</span>\r\n <button className=\"twc-dt__link\" onClick={() => setAggConfig({})}>Clear</button>\r\n </div>\r\n <div className=\"twc-dt__cfg-toggle\">\r\n <span>Show totals row</span>\r\n <span className=\"twc-dt__sw\" data-on={aggOn || undefined} role=\"switch\" aria-checked={aggOn} tabIndex={0}\r\n onClick={() => setAggOn((v) => !v)} onKeyDown={(e) => { if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); setAggOn((v) => !v); } }} />\r\n </div>\r\n <div className=\"twc-dt__cfg-list\">\r\n {ordered.filter((c) => c.type !== \"actions\" && typeof c.aggregation !== \"function\").map((c) => {\r\n const numeric = c.type === \"number\";\r\n const opts = numeric\r\n ? [{ value: \"\", label: \"None\" }, { value: \"sum\", label: \"Sum\" }, { value: \"avg\", label: \"Avg\" }, { value: \"min\", label: \"Min\" }, { value: \"max\", label: \"Max\" }, { value: \"count\", label: \"Count\" }]\r\n : [{ value: \"\", label: \"None\" }, { value: \"count\", label: \"Count\" }];\r\n return (\r\n <div className=\"twc-dt__cfg-row\" key={c.field}>\r\n <span className=\"twc-dt__cfg-name\">{c.headerName}</span>\r\n <div className=\"twc-dt__cfg-ctl\">\r\n <Select size=\"sm\" value={aggConfig[c.field] || \"\"} options={opts} portal\r\n onChange={(v) => { setAggConfig((m) => { const n = { ...m }; if (!v) delete n[c.field]; else n[c.field] = v; return n; }); if (v) setAggOn(true); }} />\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n ) : null}\r\n\r\n {/* Pivot config panel */}\r\n {panel === \"pivot\" && panelPos ? (() => {\r\n const fieldOpts = ordered.filter((c) => c.type !== \"actions\").map((c) => ({ value: c.field, label: c.headerName }));\r\n const aggOpts = [{ value: \"sum\", label: \"Sum\" }, { value: \"avg\", label: \"Avg\" }, { value: \"min\", label: \"Min\" }, { value: \"max\", label: \"Max\" }, { value: \"count\", label: \"Count\" }];\r\n const valueFieldOpts = ordered.filter((c) => c.type !== \"actions\" && !pivotConfig.values.some((v) => v.field === c.field)).map((c) => ({ value: c.field, label: c.headerName }));\r\n return (\r\n <div className=\"twc-dt__pop twc-dt__cfg\" style={{ top: panelPos.top, left: panelPos.left, width: 320 }} role=\"dialog\" aria-label=\"Pivot settings\">\r\n <div className=\"twc-dt__panel-head\">\r\n <span className=\"twc-dt__panel-title\">Pivot</span>\r\n <button className=\"twc-dt__link\" onClick={() => { setPivotConfig({ rows: [], columns: [], values: [] }); setPivotOn(false); }}>Reset</button>\r\n </div>\r\n <div className=\"twc-dt__cfg-toggle\">\r\n <span>Pivot mode</span>\r\n <span className=\"twc-dt__sw\" data-on={pivotOn || undefined} role=\"switch\" aria-checked={pivotOn} tabIndex={0}\r\n onClick={() => setPivotOn((v) => !v)} onKeyDown={(e) => { if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); setPivotOn((v) => !v); } }} />\r\n </div>\r\n {!pivotActive && pivotOn ? <div className=\"twc-dt__cfg-hint\">Add at least one <b>Row</b> field and one <b>Value</b> to see the pivot.</div> : null}\r\n <div className=\"twc-dt__cfg-section\">\r\n <span className=\"twc-dt__cfg-label\">Rows</span>\r\n <MultiSelect placeholder=\"Add row fields…\" value={pivotConfig.rows} options={fieldOpts}\r\n onChange={(vals) => { setPivotConfig((p) => ({ ...p, rows: vals })); if (vals.length) setPivotOn(true); }} />\r\n </div>\r\n <div className=\"twc-dt__cfg-section\">\r\n <span className=\"twc-dt__cfg-label\">Columns</span>\r\n <MultiSelect placeholder=\"Add column fields…\" value={pivotConfig.columns} options={fieldOpts}\r\n onChange={(vals) => setPivotConfig((p) => ({ ...p, columns: vals }))} />\r\n </div>\r\n <div className=\"twc-dt__cfg-section\">\r\n <span className=\"twc-dt__cfg-label\">Values</span>\r\n {pivotConfig.values.map((v, i) => (\r\n <div className=\"twc-dt__cfg-row\" key={v.field + i}>\r\n <span className=\"twc-dt__cfg-name\">{colByField[v.field]?.headerName || v.field}</span>\r\n <div className=\"twc-dt__cfg-ctl\">\r\n <Select size=\"sm\" value={v.agg || \"sum\"} options={aggOpts} portal\r\n onChange={(a) => setPivotConfig((p) => ({ ...p, values: p.values.map((x, j) => (j === i ? { ...x, agg: a } : x)) }))} />\r\n </div>\r\n <button className=\"twc-dt__cfg-x\" aria-label={`Remove ${colByField[v.field]?.headerName || v.field}`}\r\n onClick={() => setPivotConfig((p) => ({ ...p, values: p.values.filter((_, j) => j !== i) }))}><Svg d={I.x} /></button>\r\n </div>\r\n ))}\r\n {valueFieldOpts.length ? (\r\n <div className=\"twc-dt__cfg-add\">\r\n <Select size=\"sm\" placeholder=\"Add value field…\" value=\"\" options={valueFieldOpts} portal searchable searchPlaceholder=\"Search fields…\"\r\n onChange={(f) => { if (f) { setPivotConfig((p) => (p.values.some((x) => x.field === f) ? p : { ...p, values: [...p.values, { field: f, agg: \"sum\" }] })); setPivotOn(true); } }} />\r\n </div>\r\n ) : null}\r\n </div>\r\n </div>\r\n );\r\n })() : null}\r\n\r\n {/* Filters panel (uses Select + Input components) */}\r\n {panel === \"filters\" && panelPos ? (\r\n <div className=\"twc-dt__pop twc-dt__filters\" style={{ top: panelPos.top, left: panelPos.left }}>\r\n <div className=\"twc-dt__panel-head\">\r\n <span className=\"twc-dt__panel-title\">Filters</span>\r\n {filters.length ? <button className=\"twc-dt__link\" onClick={() => setFilters([])}>Clear all</button> : null}\r\n </div>\r\n {filters.length === 0 ? <div className=\"twc-dt__empty\" style={{ padding: \"16px 12px\" }}>No filters applied</div> :\r\n filters.map((f) => {\r\n const col = colByField[f.field] || cols[0]; const ops = opsFor(col.type);\r\n const op = ops.find((o) => o.value === f.op) || ops[0];\r\n return (\r\n <div className=\"twc-dt__frow\" key={f.id}>\r\n <div className=\"twc-dt__f-col\">\r\n <Select size=\"sm\" value={f.field}\r\n options={filterableCols.map((c) => ({ value: c.field, label: c.headerName }))}\r\n onChange={(v) => { const nc = colByField[v]; setFilters((arr) => arr.map((x) => x.id === f.id ? { ...x, field: v, op: opsFor(nc.type)[0].value, value: \"\" } : x)); }} />\r\n </div>\r\n <div className=\"twc-dt__f-op\">\r\n <Select size=\"sm\" value={f.op}\r\n options={ops.map((o) => ({ value: o.value, label: o.label }))}\r\n onChange={(v) => setFilters((arr) => arr.map((x) => {\r\n if (x.id !== f.id) return x;\r\n const nextMulti = isMultiOp(v); const wasArr = Array.isArray(x.value);\r\n return { ...x, op: v, value: nextMulti ? (wasArr ? x.value : []) : (wasArr ? \"\" : x.value) };\r\n }))} />\r\n </div>\r\n <div className=\"twc-dt__f-val\">\r\n {op.noInput ? null : op.multi ? (\r\n <MultiSelect placeholder=\"Any of…\" value={Array.isArray(f.value) ? f.value : []}\r\n options={optionsForField(f.field)}\r\n onChange={(vals) => setFilters((arr) => arr.map((x) => x.id === f.id ? { ...x, value: vals } : x))} />\r\n ) : (\r\n <Input size=\"sm\" type={col.type === \"number\" ? \"number\" : \"text\"} placeholder=\"Value\" value={f.value}\r\n onChange={(e) => setFilters((arr) => arr.map((x) => x.id === f.id ? { ...x, value: e.target.value } : x))} />\r\n )}\r\n </div>\r\n <button className=\"twc-dt__frm-x\" aria-label=\"Remove filter\" onClick={() => setFilters((arr) => arr.filter((x) => x.id !== f.id))}><Svg d={I.x} /></button>\r\n </div>\r\n );\r\n })}\r\n <div style={{ padding: \"6px 4px 2px\" }}>\r\n <button className=\"twc-dt__mi\" style={{ color: \"var(--color-primary)\" }} onClick={() => addFilter(cols[0].field)}><Svg d={I.plus} style={{ color: \"var(--color-primary)\" }} /> Add filter</button>\r\n </div>\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst DATEPICKER_CSS = `\r\n.twc-dp { position: relative; font-family: var(--font-sans); display: flex; flex-direction: column; gap: var(--space-1-5); }\r\n.twc-dp__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); }\r\n.twc-dp__control {\r\n display: flex; align-items: center; gap: var(--space-2); height: var(--control-h-md); padding: 0 var(--space-3);\r\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md);\r\n cursor: pointer; transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-dp__control:hover:not([data-open=\"true\"]) { border-color: var(--color-border-strong); }\r\n.twc-dp__control[data-open=\"true\"] { border-color: var(--color-primary); box-shadow: var(--ring); }\r\n.twc-dp__control[data-disabled=\"true\"] { background: var(--color-surface-sunken); opacity: 0.7; cursor: not-allowed; }\r\n.twc-dp__ic { flex: none; color: var(--color-text-subtle); display: inline-flex; }\r\n.twc-dp__ic svg { width: 17px; height: 17px; }\r\n.twc-dp__text { flex: 1; font-size: var(--text-sm); color: var(--color-text); }\r\n.twc-dp__text[data-placeholder=\"true\"] { color: var(--color-text-subtle); }\r\n.twc-dp__clear { flex: none; display: inline-grid; place-items: center; width: 20px; height: 20px; border: none; background: transparent; color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-full); }\r\n.twc-dp__clear:hover { background: var(--color-surface-sunken); color: var(--color-text); }\r\n.twc-dp__clear svg { width: 14px; height: 14px; }\r\n\r\n.twc-dp__pop {\r\n position: absolute; z-index: var(--z-popover); top: calc(100% + 6px); left: 0; width: 280px;\r\n background: var(--color-surface-raised); border: var(--border-thin) solid var(--color-border);\r\n border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); padding: var(--space-3);\r\n animation: twico-scale-in var(--duration-fast) var(--ease-spring); transform-origin: top;\r\n}\r\n.twc-dp__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-2); }\r\n.twc-dp__nav { display: inline-grid; place-items: center; width: 30px; height: 30px; border: none; background: transparent; color: var(--color-text-muted); cursor: pointer; border-radius: var(--radius-md); transition: background-color var(--duration-fast); }\r\n.twc-dp__nav:hover { background: var(--color-surface-sunken); color: var(--color-text); }\r\n.twc-dp__nav svg { width: 17px; height: 17px; }\r\n.twc-dp__title { font-size: var(--text-sm); font-weight: var(--font-bold); color: var(--color-text); border: none; background: transparent; cursor: pointer; padding: 5px 10px; border-radius: var(--radius-md); }\r\n.twc-dp__title:hover { background: var(--color-surface-sunken); }\r\n.twc-dp__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }\r\n.twc-dp__dow { text-align: center; font-size: 11px; font-weight: var(--font-bold); color: var(--color-text-subtle); padding: 4px 0; text-transform: uppercase; }\r\n.twc-dp__day { aspect-ratio: 1; display: grid; place-items: center; border: none; background: transparent; cursor: pointer;\r\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text); border-radius: var(--radius-md);\r\n transition: background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard); }\r\n.twc-dp__day:hover:not(:disabled):not([data-selected=\"true\"]) { background: var(--color-surface-sunken); }\r\n.twc-dp__day[data-outside=\"true\"] { color: var(--color-text-subtle); opacity: 0.5; }\r\n.twc-dp__day[data-today=\"true\"] { font-weight: var(--font-bold); box-shadow: inset 0 0 0 1px var(--color-primary-border); }\r\n.twc-dp__day[data-selected=\"true\"] { background: var(--color-primary); color: var(--color-primary-fg); font-weight: var(--font-bold); }\r\n.twc-dp__day:disabled { color: var(--color-text-subtle); opacity: 0.4; cursor: not-allowed; }\r\n.twc-dp__day:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-dp__months { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }\r\n.twc-dp__mo { padding: 10px 0; border: none; background: transparent; cursor: pointer; font-family: inherit; font-size: var(--text-sm); color: var(--color-text); border-radius: var(--radius-md); }\r\n.twc-dp__mo:hover { background: var(--color-surface-sunken); }\r\n.twc-dp__mo[data-selected=\"true\"] { background: var(--color-primary); color: var(--color-primary-fg); font-weight: var(--font-bold); }\r\n`;\r\n\r\nconst MONTHS = [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\r\nconst DOW = [\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"];\r\nconst sameDay = (a, b) => a && b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\r\n\r\nexport function DatePicker({\r\n label,\r\n value,\r\n defaultValue = null,\r\n placeholder = \"Select date\",\r\n min,\r\n max,\r\n disabled = false,\r\n clearable = true,\r\n format,\r\n weekStartsOn = 0,\r\n onChange,\r\n id,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-datepicker-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-datepicker-styles\";\r\n el.textContent = DATEPICKER_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const autoId = React.useId();\r\n const fieldId = id || autoId;\r\n const [internal, setInternal] = React.useState(defaultValue);\r\n const selected = value !== undefined ? value : internal;\r\n const [open, setOpen] = React.useState(false);\r\n const [view, setView] = React.useState(selected || new Date());\r\n const [mode, setMode] = React.useState(\"days\");\r\n const wrapRef = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n if (!open) return;\r\n setView(selected || new Date());\r\n setMode(\"days\");\r\n const onDown = (e) => { if (wrapRef.current && !wrapRef.current.contains(e.target)) setOpen(false); };\r\n const onKey = (e) => { if (e.key === \"Escape\") setOpen(false); };\r\n document.addEventListener(\"mousedown\", onDown); document.addEventListener(\"keydown\", onKey);\r\n return () => { document.removeEventListener(\"mousedown\", onDown); document.removeEventListener(\"keydown\", onKey); };\r\n }, [open]);\r\n\r\n const fmt = (d) => {\r\n if (!d) return \"\";\r\n if (format) return format(d);\r\n return d.toLocaleDateString(undefined, { year: \"numeric\", month: \"short\", day: \"numeric\" });\r\n };\r\n const pick = (d) => { if (value === undefined) setInternal(d); onChange?.(d); setOpen(false); };\r\n\r\n const y = view.getFullYear(), m = view.getMonth();\r\n const first = new Date(y, m, 1);\r\n const startOffset = (first.getDay() - weekStartsOn + 7) % 7;\r\n const gridStart = new Date(y, m, 1 - startOffset);\r\n const dows = Array.from({ length: 7 }, (_, i) => DOW[(i + weekStartsOn) % 7]);\r\n const today = new Date();\r\n const outOfRange = (d) => (min && d < new Date(min.getFullYear(), min.getMonth(), min.getDate())) || (max && d > new Date(max.getFullYear(), max.getMonth(), max.getDate()));\r\n\r\n return (\r\n <div className={`twc-dp ${className}`} ref={wrapRef} {...rest}>\r\n {label ? <label className=\"twc-dp__label\" htmlFor={fieldId}>{label}</label> : null}\r\n <div className=\"twc-dp__control\" id={fieldId} data-open={open || undefined} data-disabled={disabled || undefined}\r\n role=\"button\" tabIndex={disabled ? -1 : 0} aria-haspopup=\"dialog\" aria-expanded={open}\r\n onClick={() => !disabled && setOpen((o) => !o)}\r\n onKeyDown={(e) => { if ((e.key === \"Enter\" || e.key === \" \") && !disabled) { e.preventDefault(); setOpen((o) => !o); } }}>\r\n <span className=\"twc-dp__ic\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"/><path d=\"M16 2v4M8 2v4M3 10h18\"/></svg>\r\n </span>\r\n <span className=\"twc-dp__text\" data-placeholder={!selected || undefined}>{selected ? fmt(selected) : placeholder}</span>\r\n {clearable && selected && !disabled ? (\r\n <button className=\"twc-dp__clear\" aria-label=\"Clear\" onClick={(e) => { e.stopPropagation(); pick(null); }}>\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\r\n </button>\r\n ) : null}\r\n </div>\r\n\r\n {open ? (\r\n <div className=\"twc-dp__pop\" role=\"dialog\" aria-label=\"Choose date\">\r\n <div className=\"twc-dp__head\">\r\n <button className=\"twc-dp__nav\" aria-label=\"Previous\" onClick={() => setView(mode === \"months\" ? new Date(y - 1, m, 1) : new Date(y, m - 1, 1))}>\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m15 18-6-6 6-6\"/></svg>\r\n </button>\r\n <button className=\"twc-dp__title\" onClick={() => setMode(mode === \"days\" ? \"months\" : \"days\")}>\r\n {mode === \"days\" ? `${MONTHS[m]} ${y}` : y}\r\n </button>\r\n <button className=\"twc-dp__nav\" aria-label=\"Next\" onClick={() => setView(mode === \"months\" ? new Date(y + 1, m, 1) : new Date(y, m + 1, 1))}>\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg>\r\n </button>\r\n </div>\r\n\r\n {mode === \"days\" ? (\r\n <div className=\"twc-dp__grid\">\r\n {dows.map((d) => <div key={d} className=\"twc-dp__dow\">{d}</div>)}\r\n {Array.from({ length: 42 }).map((_, i) => {\r\n const d = new Date(gridStart.getFullYear(), gridStart.getMonth(), gridStart.getDate() + i);\r\n const outside = d.getMonth() !== m;\r\n return (\r\n <button key={i} className=\"twc-dp__day\" disabled={outOfRange(d)}\r\n data-outside={outside || undefined} data-today={sameDay(d, today) || undefined} data-selected={sameDay(d, selected) || undefined}\r\n aria-label={d.toDateString()} onClick={() => pick(d)}>\r\n {d.getDate()}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n ) : (\r\n <div className=\"twc-dp__months\">\r\n {MONTHS.map((name, i) => (\r\n <button key={i} className=\"twc-dp__mo\" data-selected={selected && selected.getFullYear() === y && selected.getMonth() === i || undefined}\r\n onClick={() => { setView(new Date(y, i, 1)); setMode(\"days\"); }}>\r\n {name.slice(0, 3)}\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst RANGE_CSS = `\r\n.twc-drp { position: relative; font-family: var(--font-sans); display: flex; flex-direction: column; gap: var(--space-1-5); }\r\n.twc-drp__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); }\r\n.twc-drp__control { display: flex; align-items: center; gap: var(--space-2); height: var(--control-h-md); padding: 0 var(--space-3);\r\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md); cursor: pointer;\r\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard); }\r\n.twc-drp__control:hover:not([data-open=\"true\"]) { border-color: var(--color-border-strong); }\r\n.twc-drp__control[data-open=\"true\"] { border-color: var(--color-primary); box-shadow: var(--ring); }\r\n.twc-drp__ic { flex: none; color: var(--color-text-subtle); display: inline-flex; }\r\n.twc-drp__ic svg { width: 17px; height: 17px; }\r\n.twc-drp__text { flex: 1; font-size: var(--text-sm); color: var(--color-text); white-space: nowrap; }\r\n.twc-drp__text[data-placeholder=\"true\"] { color: var(--color-text-subtle); }\r\n.twc-drp__pop { position: absolute; z-index: var(--z-popover); top: calc(100% + 6px); left: 0; display: flex;\r\n background: var(--color-surface-raised); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg);\r\n box-shadow: var(--shadow-lg); animation: twico-scale-in var(--duration-fast) var(--ease-spring); transform-origin: top; }\r\n.twc-drp__presets { display: flex; flex-direction: column; gap: 2px; padding: var(--space-3); border-right: var(--border-thin) solid var(--color-divider); min-width: 130px; }\r\n.twc-drp__preset { border: none; background: none; text-align: left; font-family: inherit; font-size: var(--text-sm); color: var(--color-text);\r\n padding: 7px 10px; border-radius: var(--radius-md); cursor: pointer; white-space: nowrap; }\r\n.twc-drp__preset:hover { background: var(--color-surface-sunken); }\r\n.twc-drp__cal { padding: var(--space-3); width: 268px; }\r\n.twc-drp__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-2); }\r\n.twc-drp__nav { display: inline-grid; place-items: center; width: 30px; height: 30px; border: none; background: transparent; color: var(--color-text-muted); cursor: pointer; border-radius: var(--radius-md); }\r\n.twc-drp__nav:hover { background: var(--color-surface-sunken); color: var(--color-text); }\r\n.twc-drp__nav svg { width: 17px; height: 17px; }\r\n.twc-drp__title { font-size: var(--text-sm); font-weight: var(--font-bold); }\r\n.twc-drp__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; }\r\n.twc-drp__dow { text-align: center; font-size: 11px; font-weight: var(--font-bold); color: var(--color-text-subtle); padding: 4px 0; }\r\n.twc-drp__day { aspect-ratio: 1; border: none; background: transparent; cursor: pointer; font-family: inherit; font-size: var(--text-sm); color: var(--color-text); display: grid; place-items: center; position: relative; }\r\n.twc-drp__day[data-outside=\"true\"] { color: var(--color-text-subtle); opacity: 0.45; }\r\n.twc-drp__day:hover:not(:disabled) { background: var(--color-surface-sunken); border-radius: var(--radius-md); }\r\n.twc-drp__day[data-in=\"true\"] { background: var(--color-primary-subtle); border-radius: 0; }\r\n.twc-drp__day[data-edge=\"start\"] { background: var(--color-primary); color: var(--color-primary-fg); border-radius: var(--radius-md) 0 0 var(--radius-md); font-weight: var(--font-bold); }\r\n.twc-drp__day[data-edge=\"end\"] { background: var(--color-primary); color: var(--color-primary-fg); border-radius: 0 var(--radius-md) var(--radius-md) 0; font-weight: var(--font-bold); }\r\n.twc-drp__day[data-edge=\"both\"] { background: var(--color-primary); color: var(--color-primary-fg); border-radius: var(--radius-md); font-weight: var(--font-bold); }\r\n.twc-drp__day:disabled { opacity: 0.3; cursor: not-allowed; }\r\n`;\r\n\r\nconst MONTHS = [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\r\nconst DOW = [\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"];\r\nconst ymd = (d) => d ? new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime() : null;\r\nconst fmtD = (d) => d ? d.toLocaleDateString(undefined, { month: \"short\", day: \"numeric\", year: \"numeric\" }) : \"\";\r\n\r\nexport function DateRangePicker({\r\n label,\r\n value,\r\n defaultValue = { start: null, end: null },\r\n placeholder = \"Select date range\",\r\n presets = true,\r\n weekStartsOn = 0,\r\n onChange,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-drp-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-drp-styles\";\r\n el.textContent = RANGE_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [internal, setInternal] = React.useState(defaultValue);\r\n const range = value !== undefined ? value : internal;\r\n const [open, setOpen] = React.useState(false);\r\n const [view, setView] = React.useState(range.start || new Date());\r\n const [hover, setHover] = React.useState(null);\r\n const wrapRef = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n if (!open) return;\r\n const onDown = (e) => { if (wrapRef.current && !wrapRef.current.contains(e.target)) setOpen(false); };\r\n const onKey = (e) => { if (e.key === \"Escape\") setOpen(false); };\r\n document.addEventListener(\"mousedown\", onDown); document.addEventListener(\"keydown\", onKey);\r\n return () => { document.removeEventListener(\"mousedown\", onDown); document.removeEventListener(\"keydown\", onKey); };\r\n }, [open]);\r\n\r\n const set = (r) => { if (value === undefined) setInternal(r); onChange?.(r); };\r\n\r\n const clickDay = (d) => {\r\n if (!range.start || (range.start && range.end)) { set({ start: d, end: null }); }\r\n else { if (ymd(d) < ymd(range.start)) set({ start: d, end: range.start }); else set({ start: range.start, end: d }); setOpen(false); }\r\n };\r\n\r\n const applyPreset = (days) => {\r\n const end = new Date(); const start = new Date(); start.setDate(end.getDate() - days + 1);\r\n set({ start, end }); setView(start); setOpen(false);\r\n };\r\n\r\n const y = view.getFullYear(), m = view.getMonth();\r\n const startOffset = (new Date(y, m, 1).getDay() - weekStartsOn + 7) % 7;\r\n const gridStart = new Date(y, m, 1 - startOffset);\r\n const dows = Array.from({ length: 7 }, (_, i) => DOW[(i + weekStartsOn) % 7]);\r\n\r\n const edgeOf = (t) => {\r\n const s = ymd(range.start), e = ymd(range.end) || (range.start && hover ? ymd(hover) : null);\r\n const lo = s != null && e != null ? Math.min(s, e) : s, hi = s != null && e != null ? Math.max(s, e) : s;\r\n if (s != null && hi === lo && t === s) return \"both\";\r\n if (t === lo) return \"start\"; if (t === hi) return \"end\"; return null;\r\n };\r\n const inRange = (t) => {\r\n const s = ymd(range.start); let e = ymd(range.end);\r\n if (s != null && e == null && hover) e = ymd(hover);\r\n if (s == null || e == null) return false;\r\n return t > Math.min(s, e) && t < Math.max(s, e);\r\n };\r\n\r\n const text = range.start ? `${fmtD(range.start)} – ${range.end ? fmtD(range.end) : \"…\"}` : \"\";\r\n\r\n return (\r\n <div className={`twc-drp ${className}`} ref={wrapRef} {...rest}>\r\n {label ? <span className=\"twc-drp__label\">{label}</span> : null}\r\n <div className=\"twc-drp__control\" data-open={open || undefined} role=\"button\" tabIndex={0}\r\n onClick={() => setOpen((o) => !o)} onKeyDown={(e) => { if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); setOpen((o) => !o); } }}>\r\n <span className=\"twc-drp__ic\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"/><path d=\"M16 2v4M8 2v4M3 10h18\"/></svg></span>\r\n <span className=\"twc-drp__text\" data-placeholder={!range.start || undefined}>{range.start ? text : placeholder}</span>\r\n </div>\r\n\r\n {open ? (\r\n <div className=\"twc-drp__pop\" role=\"dialog\" aria-label=\"Choose date range\">\r\n {presets ? (\r\n <div className=\"twc-drp__presets\">\r\n {[[\"Last 7 days\", 7], [\"Last 14 days\", 14], [\"Last 30 days\", 30], [\"Last 90 days\", 90]].map(([lbl, n]) => (\r\n <button key={n} className=\"twc-drp__preset\" onClick={() => applyPreset(n)}>{lbl}</button>\r\n ))}\r\n </div>\r\n ) : null}\r\n <div className=\"twc-drp__cal\">\r\n <div className=\"twc-drp__head\">\r\n <button className=\"twc-drp__nav\" aria-label=\"Previous month\" onClick={() => setView(new Date(y, m - 1, 1))}><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m15 18-6-6 6-6\"/></svg></button>\r\n <span className=\"twc-drp__title\">{MONTHS[m]} {y}</span>\r\n <button className=\"twc-drp__nav\" aria-label=\"Next month\" onClick={() => setView(new Date(y, m + 1, 1))}><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg></button>\r\n </div>\r\n <div className=\"twc-drp__grid\">\r\n {dows.map((d) => <div key={d} className=\"twc-drp__dow\">{d}</div>)}\r\n {Array.from({ length: 42 }).map((_, i) => {\r\n const d = new Date(gridStart.getFullYear(), gridStart.getMonth(), gridStart.getDate() + i);\r\n const t = ymd(d), outside = d.getMonth() !== m;\r\n return (\r\n <button key={i} className=\"twc-drp__day\" data-outside={outside || undefined}\r\n data-in={inRange(t) || undefined} data-edge={edgeOf(t) || undefined}\r\n onMouseEnter={() => setHover(d)} onClick={() => clickDay(d)}>\r\n {d.getDate()}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst DIALOG_CSS = `\r\n.twc-dialog__overlay {\r\n position: fixed; inset: 0; z-index: var(--z-modal);\r\n display: grid; place-items: center; padding: var(--space-4);\r\n background: var(--color-overlay); backdrop-filter: blur(3px);\r\n animation: twico-fade-in var(--duration-base) var(--ease-out);\r\n}\r\n.twc-dialog {\r\n position: relative; width: 100%; max-width: var(--_mw, 480px);\r\n max-height: calc(100vh - 48px); overflow: auto;\r\n background: var(--color-surface); color: var(--color-text);\r\n border: var(--border-thin) solid var(--color-border);\r\n border-radius: var(--radius-2xl); box-shadow: var(--shadow-xl);\r\n font-family: var(--font-sans);\r\n animation: twico-pop-in var(--duration-base) var(--ease-spring);\r\n}\r\n.twc-dialog[data-size=\"sm\"] { --_mw: 380px; }\r\n.twc-dialog[data-size=\"lg\"] { --_mw: 640px; }\r\n.twc-dialog__header { display: flex; align-items: flex-start; gap: var(--space-3); padding: var(--space-5) var(--space-5) 0; }\r\n.twc-dialog__titles { flex: 1; min-width: 0; }\r\n.twc-dialog__title { font-size: var(--text-xl); font-weight: var(--font-bold); letter-spacing: -0.01em; }\r\n.twc-dialog__desc { font-size: var(--text-sm); color: var(--color-text-muted); margin-top: 4px; line-height: var(--leading-snug); }\r\n.twc-dialog__close {\r\n flex: none; display: inline-grid; place-items: center; width: 32px; height: 32px;\r\n border: none; background: transparent; color: var(--color-text-subtle); cursor: pointer;\r\n border-radius: var(--radius-md); transition: background-color var(--duration-fast), color var(--duration-fast);\r\n}\r\n.twc-dialog__close:hover { background: var(--color-surface-sunken); color: var(--color-text); }\r\n.twc-dialog__close svg { width: 18px; height: 18px; }\r\n.twc-dialog__body { padding: var(--space-4) var(--space-5); font-size: var(--text-sm); color: var(--color-text-muted); line-height: var(--leading-normal); }\r\n.twc-dialog__footer { display: flex; gap: var(--space-2); justify-content: flex-end; padding: 0 var(--space-5) var(--space-5); }\r\n`;\r\n\r\nexport function Dialog({\r\n open,\r\n onClose,\r\n title,\r\n description,\r\n footer,\r\n children,\r\n size = \"md\",\r\n closeOnBackdrop = true,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n const autoId = React.useId();\r\n const titleId = `${autoId}-title`;\r\n const descId = `${autoId}-desc`;\r\n const dialogRef = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-dialog-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-dialog-styles\";\r\n el.textContent = DIALOG_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n // Modal a11y (1/2): move focus into the dialog on open and restore it to the\r\n // previously-focused element on close. Keyed on `open` only, so an unstable\r\n // onClose identity can't clobber the saved trigger element.\r\n React.useEffect(() => {\r\n if (!open) return;\r\n const node = dialogRef.current;\r\n const prevFocused = document.activeElement;\r\n node?.focus();\r\n return () => {\r\n if (prevFocused && typeof prevFocused.focus === \"function\") prevFocused.focus();\r\n };\r\n }, [open]);\r\n\r\n // Modal a11y (2/2): Escape closes; Tab/Shift+Tab are trapped inside the dialog.\r\n React.useEffect(() => {\r\n if (!open) return;\r\n const node = dialogRef.current;\r\n const focusables = () =>\r\n node\r\n ? Array.from(\r\n node.querySelectorAll(\r\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\r\n )\r\n ).filter((el) => el.offsetParent !== null)\r\n : [];\r\n const onKey = (e) => {\r\n if (e.key === \"Escape\") { e.preventDefault(); onClose?.(); return; }\r\n if (e.key !== \"Tab\") return;\r\n const f = focusables();\r\n if (!f.length) { e.preventDefault(); node?.focus(); return; }\r\n const first = f[0], last = f[f.length - 1], ae = document.activeElement;\r\n if (e.shiftKey) {\r\n if (ae === first || ae === node || !node.contains(ae)) { e.preventDefault(); last.focus(); }\r\n } else if (ae === last || !node.contains(ae)) { e.preventDefault(); first.focus(); }\r\n };\r\n document.addEventListener(\"keydown\", onKey);\r\n return () => document.removeEventListener(\"keydown\", onKey);\r\n }, [open, onClose]);\r\n\r\n if (!open) return null;\r\n\r\n return (\r\n <div className=\"twc-dialog__overlay\" onMouseDown={(e) => { if (closeOnBackdrop && e.target === e.currentTarget) onClose?.(); }}>\r\n <div ref={dialogRef} className={`twc-dialog ${className}`} data-size={size} role=\"dialog\" aria-modal=\"true\" tabIndex={-1} aria-labelledby={title ? titleId : undefined} aria-describedby={description ? descId : undefined} {...rest}>\r\n {(title || description) ? (\r\n <div className=\"twc-dialog__header\">\r\n <div className=\"twc-dialog__titles\">\r\n {title ? <div className=\"twc-dialog__title\" id={titleId}>{title}</div> : null}\r\n {description ? <div className=\"twc-dialog__desc\" id={descId}>{description}</div> : null}\r\n </div>\r\n {onClose ? (\r\n <button className=\"twc-dialog__close\" onClick={onClose} aria-label=\"Close\" type=\"button\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\r\n </button>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n {children ? <div className=\"twc-dialog__body\">{children}</div> : null}\r\n {footer ? <div className=\"twc-dialog__footer\">{footer}</div> : null}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst DIVIDER_CSS = `\r\n.twc-divider { border: none; background: var(--color-divider); }\r\n.twc-divider[data-orientation=\"horizontal\"] { width: 100%; height: 1px; margin: var(--space-4) 0; }\r\n.twc-divider[data-orientation=\"vertical\"] { width: 1px; align-self: stretch; min-height: 1em; margin: 0 var(--space-3); }\r\n.twc-divider[data-inset=\"true\"][data-orientation=\"horizontal\"] { margin-left: var(--space-4); }\r\n/* Labeled divider */\r\n.twc-divider-label { display: flex; align-items: center; gap: var(--space-3); margin: var(--space-4) 0; font-family: var(--font-sans); color: var(--color-text-muted); font-size: var(--text-xs); font-weight: var(--font-semibold); letter-spacing: var(--tracking-wide); text-transform: uppercase; }\r\n.twc-divider-label::before, .twc-divider-label::after { content: \"\"; height: 1px; background: var(--color-divider); flex: 1; }\r\n.twc-divider-label[data-align=\"left\"]::before { flex: 0 0 var(--space-6); }\r\n.twc-divider-label[data-align=\"right\"]::after { flex: 0 0 var(--space-6); }\r\n`;\r\n\r\nexport function Divider({\r\n orientation = \"horizontal\",\r\n inset = false,\r\n children,\r\n align = \"center\",\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-divider-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-divider-styles\";\r\n el.textContent = DIVIDER_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n if (children) {\r\n return (\r\n <div className={`twc-divider-label ${className}`} data-align={align} role=\"separator\" {...rest}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n return (\r\n <hr\r\n className={`twc-divider ${className}`}\r\n data-orientation={orientation}\r\n data-inset={inset || undefined}\r\n role=\"separator\"\r\n aria-orientation={orientation}\r\n {...rest}\r\n />\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst DRAWER_CSS = `\r\n.twc-drawer__overlay { position: fixed; inset: 0; z-index: var(--z-modal); background: var(--color-overlay); backdrop-filter: blur(2px); animation: twico-fade-in var(--duration-base) var(--ease-out); }\r\n.twc-drawer {\r\n position: fixed; z-index: var(--z-modal); background: var(--color-surface); color: var(--color-text);\r\n display: flex; flex-direction: column; box-shadow: var(--shadow-xl); font-family: var(--font-sans);\r\n}\r\n.twc-drawer[data-side=\"right\"] { top: 0; right: 0; height: 100%; width: var(--_w, 380px); max-width: 92vw; border-left: var(--border-thin) solid var(--color-border); border-top-left-radius: var(--radius-2xl); border-bottom-left-radius: var(--radius-2xl); animation: twc-drawer-r var(--duration-base) var(--ease-out); }\r\n.twc-drawer[data-side=\"left\"] { top: 0; left: 0; height: 100%; width: var(--_w, 380px); max-width: 92vw; border-right: var(--border-thin) solid var(--color-border); border-top-right-radius: var(--radius-2xl); border-bottom-right-radius: var(--radius-2xl); animation: twc-drawer-l var(--duration-base) var(--ease-out); }\r\n.twc-drawer[data-side=\"bottom\"] { left: 0; right: 0; bottom: 0; width: 100%; max-height: 88vh; height: var(--_h, auto); border-top: var(--border-thin) solid var(--color-border); border-top-left-radius: var(--radius-2xl); border-top-right-radius: var(--radius-2xl); animation: twc-drawer-b var(--duration-base) var(--ease-out); }\r\n.twc-drawer[data-side=\"top\"] { left: 0; right: 0; top: 0; width: 100%; max-height: 88vh; height: var(--_h, auto); border-bottom: var(--border-thin) solid var(--color-border); border-bottom-left-radius: var(--radius-2xl); border-bottom-right-radius: var(--radius-2xl); animation: twc-drawer-t var(--duration-base) var(--ease-out); }\r\n@keyframes twc-drawer-r { from { transform: translateX(100%); } to { transform: translateX(0); } }\r\n@keyframes twc-drawer-l { from { transform: translateX(-100%); } to { transform: translateX(0); } }\r\n@keyframes twc-drawer-b { from { transform: translateY(100%); } to { transform: translateY(0); } }\r\n@keyframes twc-drawer-t { from { transform: translateY(-100%); } to { transform: translateY(0); } }\r\n.twc-drawer__header { display: flex; align-items: flex-start; gap: var(--space-3); padding: var(--space-5) var(--space-5) var(--space-3); }\r\n.twc-drawer__titles { flex: 1; min-width: 0; }\r\n.twc-drawer__title { font-size: var(--text-xl); font-weight: var(--font-bold); letter-spacing: -0.01em; }\r\n.twc-drawer__desc { font-size: var(--text-sm); color: var(--color-text-muted); margin-top: 4px; }\r\n.twc-drawer__close { flex: none; display: inline-grid; place-items: center; width: 32px; height: 32px; border: none; background: transparent; color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-md); transition: background-color var(--duration-fast), color var(--duration-fast); }\r\n.twc-drawer__close:hover { background: var(--color-surface-sunken); color: var(--color-text); }\r\n.twc-drawer__close svg { width: 18px; height: 18px; }\r\n.twc-drawer__body { flex: 1; overflow-y: auto; padding: var(--space-2) var(--space-5) var(--space-5); font-size: var(--text-sm); color: var(--color-text-muted); line-height: var(--leading-normal); }\r\n.twc-drawer__footer { display: flex; gap: var(--space-2); justify-content: flex-end; padding: var(--space-4) var(--space-5); border-top: var(--border-thin) solid var(--color-divider); }\r\n`;\r\n\r\nexport function Drawer({\r\n open,\r\n onClose,\r\n side = \"right\",\r\n title,\r\n description,\r\n footer,\r\n size,\r\n closeOnBackdrop = true,\r\n children,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n const autoId = React.useId();\r\n const titleId = `${autoId}-title`;\r\n const descId = `${autoId}-desc`;\r\n const panelRef = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-drawer-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-drawer-styles\";\r\n el.textContent = DRAWER_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n // Modal a11y (1/2): move focus into the drawer on open and restore it to the\r\n // previously-focused element on close. Keyed on `open` only, so an unstable\r\n // onClose identity can't clobber the saved trigger element.\r\n React.useEffect(() => {\r\n if (!open) return;\r\n const node = panelRef.current;\r\n const prevFocused = document.activeElement;\r\n node?.focus();\r\n return () => {\r\n if (prevFocused && typeof prevFocused.focus === \"function\") prevFocused.focus();\r\n };\r\n }, [open]);\r\n\r\n // Modal a11y (2/2): Escape closes; Tab/Shift+Tab are trapped inside the drawer.\r\n React.useEffect(() => {\r\n if (!open) return;\r\n const node = panelRef.current;\r\n const focusables = () =>\r\n node\r\n ? Array.from(\r\n node.querySelectorAll(\r\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\r\n )\r\n ).filter((el) => el.offsetParent !== null)\r\n : [];\r\n const onKey = (e) => {\r\n if (e.key === \"Escape\") { e.preventDefault(); onClose?.(); return; }\r\n if (e.key !== \"Tab\") return;\r\n const f = focusables();\r\n if (!f.length) { e.preventDefault(); node?.focus(); return; }\r\n const first = f[0], last = f[f.length - 1], ae = document.activeElement;\r\n if (e.shiftKey) {\r\n if (ae === first || ae === node || !node.contains(ae)) { e.preventDefault(); last.focus(); }\r\n } else if (ae === last || !node.contains(ae)) { e.preventDefault(); first.focus(); }\r\n };\r\n document.addEventListener(\"keydown\", onKey);\r\n return () => document.removeEventListener(\"keydown\", onKey);\r\n }, [open, onClose]);\r\n\r\n if (!open) return null;\r\n const sizeVar = side === \"left\" || side === \"right\" ? { \"--_w\": typeof size === \"number\" ? `${size}px` : size } : { \"--_h\": typeof size === \"number\" ? `${size}px` : size };\r\n\r\n return (\r\n <div className=\"twc-drawer__overlay\" onMouseDown={(e) => { if (closeOnBackdrop && e.target === e.currentTarget) onClose?.(); }}>\r\n <div ref={panelRef} className={`twc-drawer ${className}`} data-side={side} role=\"dialog\" aria-modal=\"true\" tabIndex={-1} aria-labelledby={title ? titleId : undefined} aria-describedby={description ? descId : undefined} style={size ? sizeVar : undefined} {...rest}>\r\n {(title || description || onClose) ? (\r\n <div className=\"twc-drawer__header\">\r\n <div className=\"twc-drawer__titles\">\r\n {title ? <div className=\"twc-drawer__title\" id={titleId}>{title}</div> : null}\r\n {description ? <div className=\"twc-drawer__desc\" id={descId}>{description}</div> : null}\r\n </div>\r\n {onClose ? (\r\n <button className=\"twc-drawer__close\" onClick={onClose} aria-label=\"Close\" type=\"button\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\r\n </button>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n <div className=\"twc-drawer__body\">{children}</div>\r\n {footer ? <div className=\"twc-drawer__footer\">{footer}</div> : null}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst EMPTY_CSS = `\r\n.twc-empty { display: flex; flex-direction: column; align-items: center; text-align: center; gap: var(--space-3);\r\n padding: var(--space-10) var(--space-6); font-family: var(--font-sans); }\r\n.twc-empty__icon { display: inline-grid; place-items: center; width: 64px; height: 64px; border-radius: var(--radius-2xl);\r\n background: var(--color-surface-sunken); color: var(--color-text-subtle); margin-bottom: var(--space-1); }\r\n.twc-empty__icon svg { width: 30px; height: 30px; }\r\n.twc-empty__title { font-size: var(--text-lg); font-weight: var(--font-bold); color: var(--color-text); }\r\n.twc-empty__desc { font-size: var(--text-sm); color: var(--color-text-muted); max-width: 380px; line-height: var(--leading-normal); }\r\n.twc-empty__actions { display: flex; gap: var(--space-2); margin-top: var(--space-2); }\r\n.twc-empty[data-bordered=\"true\"] { border: var(--border-medium) dashed var(--color-border); border-radius: var(--radius-xl); }\r\n`;\r\n\r\nexport function EmptyState({\r\n icon,\r\n title,\r\n description,\r\n actions,\r\n bordered = false,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-empty-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-empty-styles\";\r\n el.textContent = EMPTY_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n return (\r\n <div className={`twc-empty ${className}`} data-bordered={bordered || undefined} {...rest}>\r\n {icon ? <span className=\"twc-empty__icon\" aria-hidden=\"true\">{icon}</span> : null}\r\n {title ? <div className=\"twc-empty__title\">{title}</div> : null}\r\n {description ? <div className=\"twc-empty__desc\">{description}</div> : null}\r\n {actions ? <div className=\"twc-empty__actions\">{actions}</div> : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst UPLOAD_CSS = `\r\n.twc-upload { font-family: var(--font-sans); display: flex; flex-direction: column; gap: var(--space-3); }\r\n.twc-upload__zone {\r\n display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center;\r\n gap: 6px; padding: var(--space-8) var(--space-6); cursor: pointer;\r\n border: var(--border-medium) dashed var(--color-border-strong); border-radius: var(--radius-xl);\r\n background: var(--color-surface); color: var(--color-text-muted);\r\n transition: border-color var(--duration-fast) var(--ease-standard), background-color var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-upload__zone:hover { border-color: var(--color-primary); background: var(--color-surface-sunken); }\r\n.twc-upload__zone[data-drag=\"true\"] { border-color: var(--color-primary); background: var(--color-primary-subtle); }\r\n.twc-upload__zone[data-disabled=\"true\"] { opacity: 0.6; cursor: not-allowed; }\r\n.twc-upload__zone:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-upload__icon { display: inline-grid; place-items: center; width: 46px; height: 46px; border-radius: var(--radius-lg);\r\n background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); margin-bottom: 4px; }\r\n.twc-upload__icon svg { width: 24px; height: 24px; }\r\n.twc-upload__title { font-size: var(--text-sm); color: var(--color-text); font-weight: var(--font-semibold); }\r\n.twc-upload__title em { color: var(--color-primary); font-style: normal; }\r\n.twc-upload__hint { font-size: var(--text-xs); color: var(--color-text-subtle); }\r\n.twc-upload__input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }\r\n.twc-upload__list { display: flex; flex-direction: column; gap: 8px; }\r\n.twc-upload__file { display: flex; align-items: center; gap: var(--space-3); padding: 9px 12px;\r\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md); }\r\n.twc-upload__file-ic { flex: none; display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: var(--radius-sm);\r\n background: var(--color-surface-sunken); color: var(--color-text-muted); }\r\n.twc-upload__file-ic svg { width: 16px; height: 16px; }\r\n.twc-upload__file-main { flex: 1; min-width: 0; }\r\n.twc-upload__file-name { font-size: var(--text-sm); font-weight: var(--font-medium); color: var(--color-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\r\n.twc-upload__file-size { font-size: var(--text-xs); color: var(--color-text-subtle); }\r\n.twc-upload__file-x { flex: none; display: inline-grid; place-items: center; width: 26px; height: 26px; border: none; background: transparent; color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-full); transition: background-color var(--duration-fast), color var(--duration-fast); }\r\n.twc-upload__file-x:hover { background: var(--color-danger-subtle); color: var(--color-danger-subtle-fg); }\r\n.twc-upload__file-x svg { width: 15px; height: 15px; }\r\n`;\r\n\r\nfunction fmtSize(bytes) {\r\n if (bytes < 1024) return bytes + \" B\";\r\n if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + \" KB\";\r\n return (bytes / (1024 * 1024)).toFixed(1) + \" MB\";\r\n}\r\n\r\nexport function FileUpload({\r\n accept,\r\n multiple = false,\r\n disabled = false,\r\n hint,\r\n value,\r\n onChange,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-upload-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-upload-styles\";\r\n el.textContent = UPLOAD_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [internal, setInternal] = React.useState([]);\r\n const files = value !== undefined ? value : internal;\r\n const [drag, setDrag] = React.useState(false);\r\n const inputRef = React.useRef(null);\r\n\r\n const set = (next) => { if (value === undefined) setInternal(next); onChange?.(next); };\r\n\r\n function addFiles(list) {\r\n const arr = Array.from(list);\r\n set(multiple ? [...files, ...arr] : arr.slice(0, 1));\r\n }\r\n function remove(i) { set(files.filter((_, idx) => idx !== i)); }\r\n\r\n return (\r\n <div className={`twc-upload ${className}`} {...rest}>\r\n <div\r\n className=\"twc-upload__zone\" data-drag={drag || undefined} data-disabled={disabled || undefined}\r\n role=\"button\" tabIndex={disabled ? -1 : 0}\r\n onClick={() => !disabled && inputRef.current?.click()}\r\n onKeyDown={(e) => { if ((e.key === \"Enter\" || e.key === \" \") && !disabled) { e.preventDefault(); inputRef.current?.click(); } }}\r\n onDragOver={(e) => { e.preventDefault(); if (!disabled) setDrag(true); }}\r\n onDragLeave={() => setDrag(false)}\r\n onDrop={(e) => { e.preventDefault(); setDrag(false); if (!disabled && e.dataTransfer.files.length) addFiles(e.dataTransfer.files); }}\r\n >\r\n <span className=\"twc-upload__icon\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12\"/></svg>\r\n </span>\r\n <span className=\"twc-upload__title\"><em>Click to upload</em> or drag and drop</span>\r\n <span className=\"twc-upload__hint\">{hint || (accept ? accept.replace(/\\./g, \"\").toUpperCase() : \"Any file\")}</span>\r\n <input ref={inputRef} className=\"twc-upload__input\" type=\"file\" accept={accept} multiple={multiple} disabled={disabled}\r\n onChange={(e) => { if (e.target.files.length) addFiles(e.target.files); e.target.value = \"\"; }} />\r\n </div>\r\n {files.length ? (\r\n <div className=\"twc-upload__list\">\r\n {files.map((f, i) => (\r\n <div className=\"twc-upload__file\" key={i}>\r\n <span className=\"twc-upload__file-ic\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zM14 2v6h6\"/></svg>\r\n </span>\r\n <span className=\"twc-upload__file-main\">\r\n <span className=\"twc-upload__file-name\">{f.name}</span>\r\n <span className=\"twc-upload__file-size\">{fmtSize(f.size)}</span>\r\n </span>\r\n <button className=\"twc-upload__file-x\" aria-label={`Remove ${f.name}`} onClick={() => remove(i)} type=\"button\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst ICONBTN_CSS = `\r\n.twc-iconbtn {\r\n --_sz: var(--control-h-md);\r\n position: relative;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--_sz);\r\n height: var(--_sz);\r\n padding: 0;\r\n border: var(--border-thin) solid transparent;\r\n border-radius: var(--radius-md);\r\n cursor: pointer;\r\n color: var(--color-text-muted);\r\n background: transparent;\r\n overflow: hidden;\r\n transition: background-color var(--duration-fast) var(--ease-standard),\r\n color var(--duration-fast) var(--ease-standard),\r\n border-color var(--duration-fast) var(--ease-standard),\r\n box-shadow var(--duration-fast) var(--ease-standard),\r\n transform var(--duration-fast) var(--ease-spring);\r\n}\r\n.twc-iconbtn[data-round=\"true\"] { border-radius: var(--radius-full); }\r\n.twc-iconbtn[data-size=\"sm\"] { --_sz: var(--control-h-sm); }\r\n.twc-iconbtn[data-size=\"lg\"] { --_sz: var(--control-h-lg); }\r\n.twc-iconbtn:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-iconbtn:active:not(:disabled) { transform: scale(var(--press-scale)); }\r\n.twc-iconbtn:disabled { opacity: 0.5; cursor: not-allowed; }\r\n.twc-iconbtn svg { width: 1.25em; height: 1.25em; }\r\n\r\n.twc-iconbtn[data-variant=\"solid\"] { background: var(--color-primary); color: var(--color-primary-fg); }\r\n.twc-iconbtn[data-variant=\"solid\"]:hover:not(:disabled) { background: var(--color-primary-hover); box-shadow: var(--shadow-brand); }\r\n.twc-iconbtn[data-variant=\"soft\"] { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\r\n.twc-iconbtn[data-variant=\"outline\"] { border-color: var(--color-border-strong); color: var(--color-text); }\r\n.twc-iconbtn[data-variant=\"outline\"]:hover:not(:disabled) { border-color: var(--color-primary); color: var(--color-primary); background: var(--color-surface-sunken); }\r\n.twc-iconbtn[data-variant=\"ghost\"]:hover:not(:disabled) { background: var(--color-surface-sunken); color: var(--color-text); }\r\n`;\r\n\r\nexport function IconButton({\r\n children,\r\n icon,\r\n variant = \"ghost\",\r\n size = \"md\",\r\n round = false,\r\n disabled = false,\r\n className = \"\",\r\n \"aria-label\": ariaLabel,\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-iconbtn-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-iconbtn-styles\";\r\n el.textContent = ICONBTN_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n return (\r\n <button\r\n className={`twc-iconbtn ${className}`}\r\n data-variant={variant}\r\n data-size={size}\r\n data-round={round || undefined}\r\n disabled={disabled}\r\n aria-label={ariaLabel}\r\n {...rest}\r\n >\r\n {icon || children}\r\n </button>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst KANBAN_CSS = `\r\n.twc-kanban { display: flex; gap: var(--space-4); font-family: var(--font-sans); overflow-x: auto; padding-bottom: var(--space-2); align-items: flex-start; }\r\n.twc-kanban__col { flex: 0 0 280px; display: flex; flex-direction: column; max-height: 100%;\r\n background: var(--color-surface-sunken); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-xl); }\r\n.twc-kanban__col[data-over=\"true\"] { box-shadow: inset 0 0 0 2px var(--color-primary); background: var(--color-primary-subtle); }\r\n.twc-kanban__col-h { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-3) var(--space-4); }\r\n.twc-kanban__dot { width: 9px; height: 9px; border-radius: var(--radius-full); flex: none; background: var(--_c, var(--color-text-subtle)); }\r\n.twc-kanban__col-title { font-size: var(--text-sm); font-weight: var(--font-bold); color: var(--color-text); }\r\n.twc-kanban__count { font-size: var(--text-xs); font-weight: var(--font-bold); color: var(--color-text-subtle); background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-full); padding: 1px 8px; }\r\n.twc-kanban__list { display: flex; flex-direction: column; gap: var(--space-2); padding: 0 var(--space-3) var(--space-3); overflow-y: auto; min-height: 24px; }\r\n.twc-kanban__card { background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-3); box-shadow: var(--shadow-xs); cursor: grab;\r\n transition: box-shadow var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring), border-color var(--duration-fast); }\r\n.twc-kanban__card:hover { box-shadow: var(--shadow-sm); border-color: var(--color-border-strong); }\r\n.twc-kanban__card[data-dragging=\"true\"] { opacity: 0.5; }\r\n.twc-kanban__card:active { cursor: grabbing; }\r\n.twc-kanban__card-title { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); line-height: var(--leading-snug); }\r\n.twc-kanban__card-desc { font-size: var(--text-xs); color: var(--color-text-muted); margin-top: 4px; line-height: var(--leading-snug); }\r\n.twc-kanban__card-foot { display: flex; align-items: center; justify-content: space-between; margin-top: var(--space-3); }\r\n.twc-kanban__tags { display: flex; flex-wrap: wrap; gap: 4px; }\r\n.twc-kanban__tag { font-size: 10px; font-weight: var(--font-bold); padding: 2px 7px; border-radius: var(--radius-full); background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); text-transform: uppercase; letter-spacing: 0.03em; }\r\n`;\r\n\r\nexport function Kanban({\r\n columns,\r\n cards,\r\n onCardMove,\r\n renderCard,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-kanban-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-kanban-styles\";\r\n el.textContent = KANBAN_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [internal, setInternal] = React.useState(cards);\r\n const items = cards !== undefined ? cards : internal;\r\n const [drag, setDrag] = React.useState(null); // card id\r\n const [overCol, setOverCol] = React.useState(null);\r\n\r\n const move = (cardId, toCol) => {\r\n const card = items.find((c) => c.id === cardId);\r\n if (!card || card.column === toCol) return;\r\n const next = items.map((c) => (c.id === cardId ? { ...c, column: toCol } : c));\r\n if (cards === undefined) setInternal(next);\r\n onCardMove?.(cardId, toCol, next);\r\n };\r\n\r\n return (\r\n <div className={`twc-kanban ${className}`} {...rest}>\r\n {columns.map((col) => {\r\n const colCards = items.filter((c) => c.column === col.id);\r\n return (\r\n <div key={col.id} className=\"twc-kanban__col\" data-over={overCol === col.id || undefined}\r\n onDragOver={(e) => { e.preventDefault(); setOverCol(col.id); }}\r\n onDragLeave={(e) => { if (!e.currentTarget.contains(e.relatedTarget)) setOverCol(null); }}\r\n onDrop={(e) => { e.preventDefault(); if (drag) move(drag, col.id); setOverCol(null); setDrag(null); }}>\r\n <div className=\"twc-kanban__col-h\">\r\n <span className=\"twc-kanban__dot\" style={col.color ? { \"--_c\": col.color } : undefined} />\r\n <span className=\"twc-kanban__col-title\">{col.title}</span>\r\n <span className=\"twc-kanban__count\">{colCards.length}</span>\r\n </div>\r\n <div className=\"twc-kanban__list\">\r\n {colCards.map((card) => (\r\n <div key={card.id} className=\"twc-kanban__card\" draggable data-dragging={drag === card.id || undefined}\r\n onDragStart={(e) => { setDrag(card.id); e.dataTransfer.effectAllowed = \"move\"; }}\r\n onDragEnd={() => { setDrag(null); setOverCol(null); }}>\r\n {renderCard ? renderCard(card) : (\r\n <>\r\n <div className=\"twc-kanban__card-title\">{card.title}</div>\r\n {card.description ? <div className=\"twc-kanban__card-desc\">{card.description}</div> : null}\r\n {(card.tags?.length || card.footer) ? (\r\n <div className=\"twc-kanban__card-foot\">\r\n <span className=\"twc-kanban__tags\">{(card.tags || []).map((t, i) => <span key={i} className=\"twc-kanban__tag\">{t}</span>)}</span>\r\n {card.footer || null}\r\n </div>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst LIST_CSS = `\r\n.twc-list { display: flex; flex-direction: column; font-family: var(--font-sans); margin: 0; padding: 0; list-style: none;\r\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg); overflow: hidden; }\r\n.twc-list[data-plain=\"true\"] { background: transparent; border: none; border-radius: 0; }\r\n.twc-list__item { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3) var(--space-4);\r\n border-bottom: var(--border-thin) solid var(--color-divider); text-align: left; }\r\n.twc-list__item:last-child { border-bottom: none; }\r\n.twc-list[data-plain=\"true\"] .twc-list__item { padding-left: 0; padding-right: 0; }\r\n.twc-list__item[data-interactive=\"true\"] { cursor: pointer; background: transparent; border-left: none; border-right: none; border-top: none; width: 100%; font: inherit; color: inherit;\r\n transition: background-color var(--duration-fast) var(--ease-standard); }\r\n.twc-list__item[data-interactive=\"true\"]:hover { background: var(--color-surface-sunken); }\r\n.twc-list__item[data-interactive=\"true\"]:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-list__item[data-active=\"true\"] { background: var(--color-primary-subtle); }\r\n.twc-list__lead { flex: none; display: inline-flex; align-items: center; color: var(--color-text-muted); }\r\n.twc-list__lead svg { width: 18px; height: 18px; }\r\n.twc-list__main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }\r\n.twc-list__title { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\r\n.twc-list__desc { font-size: var(--text-xs); color: var(--color-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\r\n.twc-list__trail { flex: none; display: inline-flex; align-items: center; gap: var(--space-2); color: var(--color-text-subtle); font-size: var(--text-sm); }\r\n`;\r\n\r\nexport function List({ items, plain = false, className = \"\", ...rest }) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-list-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-list-styles\";\r\n el.textContent = LIST_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n return (\r\n <ul className={`twc-list ${className}`} data-plain={plain || undefined} {...rest}>\r\n {items.map((it, i) => {\r\n const interactive = Boolean(it.onClick || it.href);\r\n const Tag = it.href ? \"a\" : interactive ? \"button\" : \"div\";\r\n const content = (\r\n <>\r\n {it.leading ? <span className=\"twc-list__lead\" aria-hidden=\"true\">{it.leading}</span> : null}\r\n <span className=\"twc-list__main\">\r\n <span className=\"twc-list__title\">{it.title}</span>\r\n {it.description ? <span className=\"twc-list__desc\">{it.description}</span> : null}\r\n </span>\r\n {it.trailing ? <span className=\"twc-list__trail\">{it.trailing}</span> : null}\r\n </>\r\n );\r\n return (\r\n <li key={i} style={{ display: \"contents\" }}>\r\n <Tag\r\n className=\"twc-list__item\"\r\n data-interactive={interactive || undefined}\r\n data-active={it.active || undefined}\r\n href={it.href}\r\n type={Tag === \"button\" ? \"button\" : undefined}\r\n onClick={it.onClick}\r\n >\r\n {content}\r\n </Tag>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst NAVBAR_CSS = `\r\n.twc-navbar { display: flex; align-items: center; gap: var(--space-4); height: 60px; padding: 0 var(--space-5);\r\n font-family: var(--font-sans); background: var(--color-surface); border-bottom: var(--border-thin) solid var(--color-border); }\r\n.twc-navbar[data-sticky=\"true\"] { position: sticky; top: 0; z-index: var(--z-sticky);\r\n background: color-mix(in srgb, var(--color-surface) 85%, transparent); backdrop-filter: blur(10px); }\r\n.twc-navbar__brand { display: inline-flex; align-items: center; gap: var(--space-2-5); font-weight: var(--font-extrabold);\r\n font-size: var(--text-lg); letter-spacing: -0.02em; color: var(--color-text); text-decoration: none; flex: none; }\r\n.twc-navbar__links { display: flex; align-items: center; gap: 2px; }\r\n.twc-navbar__link { display: inline-flex; align-items: center; gap: 7px; padding: 8px 12px; border-radius: var(--radius-md);\r\n font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text-muted); text-decoration: none; cursor: pointer;\r\n background: none; border: none; font-family: inherit; transition: background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard); }\r\n.twc-navbar__link:hover { background: var(--color-surface-sunken); color: var(--color-text); }\r\n.twc-navbar__link[data-active=\"true\"] { color: var(--color-primary); background: var(--color-primary-subtle); }\r\n.twc-navbar__link svg { width: 16px; height: 16px; }\r\n.twc-navbar__spacer { flex: 1; }\r\n.twc-navbar__actions { display: flex; align-items: center; gap: var(--space-2); flex: none; }\r\n.twc-navbar__menu-btn { display: none; }\r\n@media (max-width: 720px) {\r\n .twc-navbar__links { display: none; }\r\n .twc-navbar__menu-btn { display: inline-grid; }\r\n}\r\n`;\r\n\r\nexport function Navbar({\r\n brand,\r\n links = [],\r\n actions,\r\n sticky = true,\r\n onMenuClick,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-navbar-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-navbar-styles\";\r\n el.textContent = NAVBAR_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n return (\r\n <header className={`twc-navbar ${className}`} data-sticky={sticky || undefined} {...rest}>\r\n {brand ? <a className=\"twc-navbar__brand\" href=\"#\">{brand}</a> : null}\r\n <nav className=\"twc-navbar__links\">\r\n {links.map((l, i) => (\r\n <a key={i} className=\"twc-navbar__link\" href={l.href || \"#\"} data-active={l.active || undefined} onClick={l.onClick}>\r\n {l.icon}{l.label}\r\n </a>\r\n ))}\r\n </nav>\r\n <span className=\"twc-navbar__spacer\" />\r\n {actions ? <div className=\"twc-navbar__actions\">{actions}</div> : null}\r\n </header>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nconst POPOVER_CSS = `\r\n.twc-popover-wrap { position: relative; display: inline-flex; }\r\n.twc-popover {\r\n position: fixed; z-index: var(--z-popover); min-width: 200px;\r\n background: var(--color-surface-raised); color: var(--color-text);\r\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg);\r\n box-shadow: var(--shadow-lg); font-family: var(--font-sans);\r\n animation: twico-scale-in var(--duration-fast) var(--ease-spring); transform-origin: top;\r\n}\r\n.twc-popover[data-flip=\"true\"] { transform-origin: bottom; }\r\n.twc-popover__arrow { position: absolute; width: 11px; height: 11px; background: var(--color-surface-raised);\r\n border-left: var(--border-thin) solid var(--color-border); border-top: var(--border-thin) solid var(--color-border);\r\n transform: rotate(45deg); }\r\n.twc-popover__inner { padding: var(--space-4); font-size: var(--text-sm); color: var(--color-text-muted); line-height: var(--leading-normal); }\r\n.twc-popover__title { font-size: var(--text-sm); font-weight: var(--font-bold); color: var(--color-text); margin-bottom: 4px; }\r\n`;\r\n\r\nexport function Popover({\r\n trigger,\r\n children,\r\n title,\r\n placement = \"bottom\",\r\n align = \"center\",\r\n width,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-popover-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-popover-styles\";\r\n el.textContent = POPOVER_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [open, setOpen] = React.useState(false);\r\n const [pos, setPos] = React.useState(null);\r\n const wrapRef = React.useRef(null);\r\n const popRef = React.useRef(null);\r\n const RD = { createPortal: (typeof createPortal === \"function\" ? createPortal : (typeof window !== \"undefined\" && window.ReactDOM && window.ReactDOM.createPortal)) };\r\n\r\n const place = React.useCallback(() => {\r\n const t = wrapRef.current; if (!t) return;\r\n const r = t.getBoundingClientRect();\r\n const w = width || 240;\r\n const gap = 10;\r\n const vw = window.innerWidth, vh = window.innerHeight, M = 8;\r\n let top, left, flip = false, arrow = {};\r\n const vertical = placement === \"top\" || placement === \"bottom\";\r\n if (vertical) {\r\n flip = placement === \"top\" || (placement === \"bottom\" && vh - r.bottom < 180 && r.top > vh - r.bottom);\r\n top = flip ? undefined : r.bottom + gap;\r\n const bottom = flip ? vh - r.top + gap : undefined;\r\n let l = align === \"start\" ? r.left : align === \"end\" ? r.right - w : r.left + r.width / 2 - w / 2;\r\n l = Math.max(M, Math.min(l, vw - w - M));\r\n left = l;\r\n arrow = { left: Math.min(Math.max(r.left + r.width / 2 - l - 5.5, 10), w - 20), [flip ? \"bottom\" : \"top\"]: -6 };\r\n return setPos({ top, bottom, left, width: w, flip, arrow });\r\n }\r\n // left / right\r\n const onRight = placement === \"right\";\r\n left = onRight ? r.right + gap : r.left - w - gap;\r\n let tp = r.top + r.height / 2;\r\n top = Math.max(M, Math.min(tp - 40, vh - 80));\r\n arrow = { top: tp - top - 5.5, [onRight ? \"left\" : \"right\"]: -6 };\r\n setPos({ top, left, width: w, flip: false, arrow });\r\n }, [placement, align, width]);\r\n\r\n React.useEffect(() => {\r\n if (!open) return;\r\n place();\r\n const onMove = () => place();\r\n const onDown = (e) => {\r\n if (wrapRef.current?.contains(e.target)) return;\r\n if (popRef.current?.contains(e.target)) return;\r\n setOpen(false);\r\n };\r\n const onKey = (e) => { if (e.key === \"Escape\") setOpen(false); };\r\n window.addEventListener(\"scroll\", onMove, true);\r\n window.addEventListener(\"resize\", onMove);\r\n document.addEventListener(\"mousedown\", onDown);\r\n document.addEventListener(\"keydown\", onKey);\r\n return () => {\r\n window.removeEventListener(\"scroll\", onMove, true);\r\n window.removeEventListener(\"resize\", onMove);\r\n document.removeEventListener(\"mousedown\", onDown);\r\n document.removeEventListener(\"keydown\", onKey);\r\n };\r\n }, [open, place]);\r\n\r\n const pop = open && pos ? (\r\n <div className=\"twc-popover\" ref={popRef} data-flip={pos.flip || undefined} role=\"dialog\"\r\n style={{ top: pos.top, bottom: pos.bottom, left: pos.left, width: pos.width }}>\r\n <span className=\"twc-popover__arrow\" style={pos.arrow} aria-hidden=\"true\" />\r\n <div className=\"twc-popover__inner\">\r\n {title ? <div className=\"twc-popover__title\">{title}</div> : null}\r\n {children}\r\n </div>\r\n </div>\r\n ) : null;\r\n\r\n return (\r\n <span className={`twc-popover-wrap ${className}`} ref={wrapRef} {...rest}>\r\n <span onClick={() => setOpen((o) => !o)}>{trigger}</span>\r\n {pop && RD && RD.createPortal ? RD.createPortal(pop, document.body) : pop}\r\n </span>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport function Progress({\r\n value = 0,\r\n max = 100,\r\n tone = \"primary\",\r\n size = \"md\",\r\n indeterminate = false,\r\n showLabel = false,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-progress-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-progress-styles\";\r\n el.textContent = `\r\n.twc-progress-wrap { display: flex; flex-direction: column; gap: 6px; font-family: var(--font-sans); }\r\n.twc-progress {\r\n --_h: 8px;\r\n position: relative; width: 100%; height: var(--_h); overflow: hidden;\r\n background: var(--color-surface-sunken); border-radius: var(--radius-full);\r\n}\r\n.twc-progress[data-size=\"sm\"] { --_h: 5px; }\r\n.twc-progress[data-size=\"lg\"] { --_h: 12px; }\r\n.twc-progress__bar {\r\n height: 100%; border-radius: var(--radius-full);\r\n background: var(--_c, var(--color-primary));\r\n transition: width var(--duration-slow) var(--ease-out);\r\n}\r\n.twc-progress[data-tone=\"success\"] .twc-progress__bar { --_c: var(--color-success); }\r\n.twc-progress[data-tone=\"warning\"] .twc-progress__bar { --_c: var(--color-warning); }\r\n.twc-progress[data-tone=\"danger\"] .twc-progress__bar { --_c: var(--color-danger); }\r\n.twc-progress[data-indeterminate=\"true\"] .twc-progress__bar {\r\n position: absolute; width: 40%; animation: twico-progress-indeterminate 1.3s var(--ease-standard) infinite;\r\n}\r\n.twc-progress__meta { display: flex; justify-content: space-between; font-size: var(--text-xs); color: var(--color-text-muted); }\r\n`;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const pct = indeterminate ? 0 : Math.min(100, Math.max(0, (value / max) * 100));\r\n\r\n return (\r\n <div className={`twc-progress-wrap ${className}`}>\r\n {showLabel && !indeterminate ? (\r\n <div className=\"twc-progress__meta\"><span>Progress</span><span>{Math.round(pct)}%</span></div>\r\n ) : null}\r\n <div className=\"twc-progress\" data-tone={tone} data-size={size} data-indeterminate={indeterminate || undefined}\r\n role=\"progressbar\" aria-valuenow={indeterminate ? undefined : Math.round(pct)} aria-valuemin={0} aria-valuemax={100} {...rest}>\r\n <div className=\"twc-progress__bar\" style={indeterminate ? undefined : { width: `${pct}%` }} />\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport function Radio({\r\n label,\r\n description,\r\n checked,\r\n defaultChecked,\r\n disabled = false,\r\n size = \"md\",\r\n id,\r\n name,\r\n value,\r\n className = \"\",\r\n onChange,\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-radio-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-radio-styles\";\r\n el.textContent = `\r\n.twc-radio { display: inline-flex; align-items: flex-start; gap: var(--space-2-5); cursor: pointer; font-family: var(--font-sans); }\r\n.twc-radio[data-disabled=\"true\"] { cursor: not-allowed; opacity: 0.55; }\r\n.twc-radio__input { position: absolute; opacity: 0; width: 0; height: 0; }\r\n.twc-radio__dot {\r\n --_sz: 20px;\r\n flex: none; width: var(--_sz); height: var(--_sz); margin-top: 1px;\r\n display: grid; place-items: center;\r\n border: var(--border-medium) solid var(--color-border-strong);\r\n border-radius: var(--radius-full);\r\n background: var(--color-surface);\r\n transition: border-color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring);\r\n}\r\n.twc-radio[data-size=\"sm\"] .twc-radio__dot { --_sz: 16px; }\r\n.twc-radio__dot::after {\r\n content: \"\"; width: 50%; height: 50%; border-radius: var(--radius-full);\r\n background: var(--color-primary); transform: scale(0);\r\n transition: transform var(--duration-base) var(--ease-spring);\r\n}\r\n.twc-radio__input:checked + .twc-radio__dot { border-color: var(--color-primary); }\r\n.twc-radio__input:checked + .twc-radio__dot::after { transform: scale(1); }\r\n.twc-radio__input:active + .twc-radio__dot { transform: scale(0.88); }\r\n.twc-radio__input:focus-visible + .twc-radio__dot { box-shadow: var(--ring); }\r\n.twc-radio__text { display: flex; flex-direction: column; gap: 2px; }\r\n.twc-radio__label { font-size: var(--text-sm); font-weight: var(--font-medium); color: var(--color-text); line-height: 1.3; }\r\n.twc-radio__desc { font-size: var(--text-xs); color: var(--color-text-muted); }\r\n`;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const autoId = React.useId();\r\n const fieldId = id || autoId;\r\n\r\n return (\r\n <label className={`twc-radio ${className}`} data-size={size} data-disabled={disabled || undefined} htmlFor={fieldId}>\r\n <input\r\n id={fieldId}\r\n type=\"radio\"\r\n className=\"twc-radio__input\"\r\n name={name}\r\n value={value}\r\n checked={checked}\r\n defaultChecked={defaultChecked}\r\n disabled={disabled}\r\n onChange={onChange}\r\n {...rest}\r\n />\r\n <span className=\"twc-radio__dot\" aria-hidden=\"true\" />\r\n {(label || description) ? (\r\n <span className=\"twc-radio__text\">\r\n {label ? <span className=\"twc-radio__label\">{label}</span> : null}\r\n {description ? <span className=\"twc-radio__desc\">{description}</span> : null}\r\n </span>\r\n ) : null}\r\n </label>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst RATING_CSS = `\r\n.twc-rating { display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-sans); }\r\n.twc-rating__stars { display: inline-flex; gap: 2px; }\r\n.twc-rating__btn { border: none; background: transparent; padding: 1px; cursor: pointer; color: var(--color-border-strong); line-height: 0;\r\n transition: transform var(--duration-fast) var(--ease-spring), color var(--duration-fast) var(--ease-standard); }\r\n.twc-rating__btn:focus-visible { outline: none; box-shadow: var(--ring); border-radius: var(--radius-sm); }\r\n.twc-rating[data-readonly=\"true\"] .twc-rating__btn { cursor: default; }\r\n.twc-rating:not([data-readonly=\"true\"]) .twc-rating__btn:hover { transform: scale(1.18); }\r\n.twc-rating__btn[data-on=\"true\"] { color: var(--_c, var(--color-warning)); }\r\n.twc-rating__btn svg { width: var(--_sz, 24px); height: var(--_sz, 24px); display: block; }\r\n.twc-rating[data-size=\"sm\"] { --_sz: 18px; }\r\n.twc-rating[data-size=\"lg\"] { --_sz: 32px; }\r\n.twc-rating__value { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text-muted); font-variant-numeric: tabular-nums; }\r\n`;\r\n\r\nconst StarPath = \"M12 2l2.9 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14l-5-4.87 7.1-1.01L12 2z\";\r\n\r\nexport function Rating({\r\n value,\r\n defaultValue = 0,\r\n count = 5,\r\n size = \"md\",\r\n color,\r\n readOnly = false,\r\n showValue = false,\r\n onChange,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-rating-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-rating-styles\";\r\n el.textContent = RATING_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [internal, setInternal] = React.useState(defaultValue);\r\n const [hover, setHover] = React.useState(0);\r\n const val = value !== undefined ? value : internal;\r\n const shown = hover || val;\r\n\r\n const set = (v) => { if (readOnly) return; if (value === undefined) setInternal(v); onChange?.(v); };\r\n\r\n return (\r\n <div className={`twc-rating ${className}`} data-size={size} data-readonly={readOnly || undefined}\r\n style={color ? { \"--_c\": color } : undefined} role=\"radiogroup\" aria-label=\"Rating\" {...rest}>\r\n <span className=\"twc-rating__stars\" onMouseLeave={() => setHover(0)}>\r\n {Array.from({ length: count }).map((_, i) => {\r\n const n = i + 1;\r\n return (\r\n <button key={n} type=\"button\" className=\"twc-rating__btn\" data-on={n <= shown || undefined}\r\n aria-label={`${n} star${n > 1 ? \"s\" : \"\"}`} aria-pressed={n <= val}\r\n disabled={readOnly} tabIndex={readOnly ? -1 : 0}\r\n onMouseEnter={() => !readOnly && setHover(n)} onClick={() => set(n === val ? 0 : n)}>\r\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d={StarPath} /></svg>\r\n </button>\r\n );\r\n })}\r\n </span>\r\n {showValue ? <span className=\"twc-rating__value\">{val.toFixed(1)}</span> : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst SIDEBAR_CSS = `\r\n.twc-sidebar { display: flex; flex-direction: column; height: 100%; font-family: var(--font-sans);\r\n background: var(--color-surface); border-right: var(--border-thin) solid var(--color-border);\r\n flex: 0 0 248px; min-width: 0; width: 248px; max-width: 248px;\r\n transition: flex-basis var(--duration-base) var(--ease-standard), width var(--duration-base) var(--ease-standard), max-width var(--duration-base) var(--ease-standard); overflow: hidden; }\r\n.twc-sidebar[data-collapsed=\"true\"] { flex-basis: 68px; width: 68px; max-width: 68px; }\r\n.twc-sidebar__head { display: flex; align-items: center; gap: var(--space-2-5); height: 60px; padding: 0 var(--space-4); flex: none;\r\n border-bottom: var(--border-thin) solid var(--color-divider); }\r\n.twc-sidebar__brand { display: inline-flex; align-items: center; gap: var(--space-2-5); font-weight: var(--font-extrabold); font-size: var(--text-lg); letter-spacing: -0.02em; color: var(--color-text); white-space: nowrap; overflow: hidden; }\r\n.twc-sidebar__nav { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; padding: var(--space-3); display: flex; flex-direction: column; gap: 2px; }\r\n.twc-sidebar__section { font-size: 10px; font-weight: var(--font-bold); letter-spacing: var(--tracking-wider); text-transform: uppercase; color: var(--color-text-subtle); padding: var(--space-3) var(--space-3) var(--space-1); white-space: nowrap; }\r\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__section { display: none; }\r\n.twc-sidebar__item { display: flex; align-items: center; gap: var(--space-3); padding: 9px 11px; border-radius: var(--radius-md);\r\n font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text-muted); text-decoration: none; cursor: pointer;\r\n border: none; background: none; font-family: inherit; width: 100%; min-width: 0; text-align: left; white-space: nowrap; overflow: hidden;\r\n transition: background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard); }\r\n.twc-sidebar__item:hover { background: var(--color-surface-sunken); color: var(--color-text); }\r\n.twc-sidebar__item[data-active=\"true\"] { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\r\n.twc-sidebar__item:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-sidebar__ic { flex: none; display: inline-flex; }\r\n.twc-sidebar__ic svg { width: 19px; height: 19px; }\r\n.twc-sidebar__label { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }\r\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__label, .twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__badge { display: none; }\r\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__head { padding: 0; justify-content: center; }\r\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__brand, .twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__foot-user { font-size: 0; gap: 0; }\r\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__foot-user { justify-content: center; }\r\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__brand > :not(:first-child), .twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__foot-user > * > :not(:first-child) { display: none; }\r\n.twc-sidebar__badge { flex: none; font-size: 11px; font-weight: var(--font-bold); padding: 1px 7px; border-radius: var(--radius-full); background: var(--color-primary); color: var(--color-primary-fg); }\r\n.twc-sidebar__foot { flex: none; border-top: var(--border-thin) solid var(--color-divider); padding: var(--space-2); }\r\n.twc-sidebar__foot-user { display: flex; align-items: center; padding: 6px 6px 8px; }\r\n.twc-sidebar__collapse { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; padding: 9px; border: none; background: none; cursor: pointer;\r\n color: var(--color-text-muted); border-radius: var(--radius-md); font-family: inherit; font-size: var(--text-xs); font-weight: var(--font-semibold); }\r\n.twc-sidebar__collapse:hover { background: var(--color-surface-sunken); color: var(--color-text); }\r\n.twc-sidebar__collapse svg { width: 18px; height: 18px; transition: transform var(--duration-base) var(--ease-spring); }\r\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__collapse svg { transform: rotate(180deg); }\r\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__item { gap: 0; justify-content: center; padding: 9px 0; width: 40px; margin: 0 auto; }\r\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__foot { display: flex; flex-direction: column; align-items: center; padding: var(--space-2) 0; }\r\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__collapse { width: auto; padding: 11px; gap: 0; margin: 0; }\r\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__collapse span { display: none; }\r\n`;\r\n\r\nexport function Sidebar({\r\n brand,\r\n items,\r\n footer,\r\n collapsed: collapsedProp,\r\n defaultCollapsed = false,\r\n collapsible = true,\r\n onCollapsedChange,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-sidebar-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-sidebar-styles\";\r\n el.textContent = SIDEBAR_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [internal, setInternal] = React.useState(defaultCollapsed);\r\n const collapsed = collapsedProp !== undefined ? collapsedProp : internal;\r\n const toggle = () => { const next = !collapsed; if (collapsedProp === undefined) setInternal(next); onCollapsedChange?.(next); };\r\n\r\n return (\r\n <aside className={`twc-sidebar ${className}`} data-collapsed={collapsed || undefined} {...rest}>\r\n {brand ? <div className=\"twc-sidebar__head\"><span className=\"twc-sidebar__brand\">{brand}</span></div> : null}\r\n <nav className=\"twc-sidebar__nav\">\r\n {items.map((it, i) =>\r\n it.section ? (\r\n <div key={i} className=\"twc-sidebar__section\">{it.section}</div>\r\n ) : (\r\n <a key={i} className=\"twc-sidebar__item\" href={it.href || \"#\"} data-active={it.active || undefined}\r\n onClick={it.onClick} title={collapsed && typeof it.label === \"string\" ? it.label : undefined}>\r\n {it.icon ? <span className=\"twc-sidebar__ic\" aria-hidden=\"true\">{it.icon}</span> : null}\r\n <span className=\"twc-sidebar__label\">{it.label}</span>\r\n {it.badge != null ? <span className=\"twc-sidebar__badge\">{it.badge}</span> : null}\r\n </a>\r\n )\r\n )}\r\n </nav>\r\n {(footer || collapsible) ? (\r\n <div className=\"twc-sidebar__foot\">\r\n {footer ? <div className=\"twc-sidebar__foot-user\">{footer}</div> : null}\r\n {collapsible ? (\r\n <button className=\"twc-sidebar__collapse\" onClick={toggle} aria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}>\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m15 18-6-6 6-6\"/></svg>\r\n <span>Collapse</span>\r\n </button>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </aside>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport function Skeleton({\r\n variant = \"text\",\r\n width,\r\n height,\r\n lines = 1,\r\n className = \"\",\r\n style,\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-skeleton-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-skeleton-styles\";\r\n el.textContent = `\r\n.twc-skeleton {\r\n position: relative; overflow: hidden;\r\n background: var(--color-surface-sunken); border-radius: var(--radius-md);\r\n}\r\n.twc-skeleton::after {\r\n content: \"\"; position: absolute; inset: 0; transform: translateX(-100%);\r\n background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--color-text) 8%, transparent), transparent);\r\n animation: twico-shimmer 1.4s infinite;\r\n}\r\n.twc-skeleton[data-variant=\"text\"] { height: 0.9em; border-radius: var(--radius-sm); }\r\n.twc-skeleton[data-variant=\"circle\"] { border-radius: var(--radius-full); }\r\n.twc-skeleton[data-variant=\"rect\"] { border-radius: var(--radius-lg); }\r\n.twc-skeleton__group { display: flex; flex-direction: column; gap: 8px; }\r\n.twc-skeleton__group .twc-skeleton:last-child { width: 70%; }\r\n`;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n if (variant === \"text\" && lines > 1) {\r\n return (\r\n <div className={`twc-skeleton__group ${className}`} {...rest}>\r\n {Array.from({ length: lines }).map((_, i) => (\r\n <span key={i} className=\"twc-skeleton\" data-variant=\"text\" style={{ width: width || \"100%\" }} />\r\n ))}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <span\r\n className={`twc-skeleton ${className}`}\r\n data-variant={variant}\r\n style={{ width, height, ...style }}\r\n {...rest}\r\n />\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst SLIDER_CSS = `\r\n.twc-slider { font-family: var(--font-sans); }\r\n.twc-slider__head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: var(--space-2); }\r\n.twc-slider__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); }\r\n.twc-slider__value { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-primary); font-variant-numeric: tabular-nums; }\r\n.twc-slider__track {\r\n position: relative; height: 22px; display: flex; align-items: center; cursor: pointer; touch-action: none;\r\n}\r\n.twc-slider[data-disabled=\"true\"] { opacity: 0.55; }\r\n.twc-slider[data-disabled=\"true\"] .twc-slider__track { cursor: not-allowed; }\r\n.twc-slider__rail { position: absolute; left: 0; right: 0; height: 6px; border-radius: var(--radius-full); background: var(--color-surface-sunken); box-shadow: inset 0 0 0 1px var(--color-border); }\r\n.twc-slider__fill { position: absolute; height: 6px; border-radius: var(--radius-full); background: var(--color-primary); }\r\n.twc-slider__thumb {\r\n position: absolute; width: 18px; height: 18px; border-radius: var(--radius-full);\r\n background: var(--color-surface); border: var(--border-thick) solid var(--color-primary);\r\n box-shadow: var(--shadow-sm); transform: translateX(-50%); top: 50%; margin-top: -9px;\r\n transition: box-shadow var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring);\r\n}\r\n.twc-slider__thumb:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-slider__thumb:active { transform: translateX(-50%) scale(1.15); }\r\n.twc-slider__ticks { position: absolute; left: 0; right: 0; top: 50%; }\r\n.twc-slider__tick { position: absolute; width: 3px; height: 3px; border-radius: var(--radius-full); background: var(--color-border-strong); transform: translate(-50%, -50%); }\r\n.twc-slider__bubble {\r\n position: absolute; bottom: calc(100% + 8px); transform: translateX(-50%) scale(0.9); transform-origin: bottom center;\r\n background: var(--color-text); color: var(--color-surface); font-size: var(--text-xs); font-weight: var(--font-semibold);\r\n padding: 3px 8px; border-radius: var(--radius-md); white-space: nowrap; opacity: 0; pointer-events: none;\r\n transition: opacity var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring);\r\n}\r\n.twc-slider__track[data-show-bubble=\"true\"] .twc-slider__bubble { opacity: 1; transform: translateX(-50%) scale(1); }\r\n`;\r\n\r\nexport function Slider({\r\n label,\r\n value,\r\n defaultValue = 0,\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n disabled = false,\r\n showValue = true,\r\n showTicks = false,\r\n formatValue,\r\n onChange,\r\n id,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-slider-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-slider-styles\";\r\n el.textContent = SLIDER_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const autoId = React.useId();\r\n const fieldId = id || autoId;\r\n const [internal, setInternal] = React.useState(defaultValue);\r\n const val = value !== undefined ? value : internal;\r\n const trackRef = React.useRef(null);\r\n const [dragging, setDragging] = React.useState(false);\r\n\r\n const pct = ((val - min) / (max - min)) * 100;\r\n const fmt = (v) => (formatValue ? formatValue(v) : v);\r\n const clampSnap = (raw) => {\r\n const stepped = Math.round((raw - min) / step) * step + min;\r\n return Math.min(max, Math.max(min, Math.round(stepped * 1e6) / 1e6));\r\n };\r\n const setVal = (v) => { if (value === undefined) setInternal(v); onChange?.(v); };\r\n\r\n const fromClientX = (clientX) => {\r\n const r = trackRef.current.getBoundingClientRect();\r\n const ratio = Math.min(1, Math.max(0, (clientX - r.left) / r.width));\r\n return clampSnap(min + ratio * (max - min));\r\n };\r\n\r\n function onPointerDown(e) {\r\n if (disabled) return;\r\n e.preventDefault();\r\n setDragging(true);\r\n setVal(fromClientX(e.clientX));\r\n const move = (ev) => setVal(fromClientX(ev.clientX));\r\n const up = () => { setDragging(false); window.removeEventListener(\"pointermove\", move); window.removeEventListener(\"pointerup\", up); };\r\n window.addEventListener(\"pointermove\", move); window.addEventListener(\"pointerup\", up);\r\n }\r\n function onKeyDown(e) {\r\n if (disabled) return;\r\n let next = val;\r\n if (e.key === \"ArrowRight\" || e.key === \"ArrowUp\") next = clampSnap(val + step);\r\n else if (e.key === \"ArrowLeft\" || e.key === \"ArrowDown\") next = clampSnap(val - step);\r\n else if (e.key === \"Home\") next = min;\r\n else if (e.key === \"End\") next = max;\r\n else return;\r\n e.preventDefault();\r\n setVal(next);\r\n }\r\n\r\n const ticks = showTicks ? Math.floor((max - min) / step) + 1 : 0;\r\n\r\n return (\r\n <div className={`twc-slider ${className}`} data-disabled={disabled || undefined} {...rest}>\r\n {(label || showValue) ? (\r\n <div className=\"twc-slider__head\">\r\n {label ? <label className=\"twc-slider__label\" htmlFor={fieldId}>{label}</label> : <span />}\r\n {showValue ? <span className=\"twc-slider__value\">{fmt(val)}</span> : null}\r\n </div>\r\n ) : null}\r\n <div className=\"twc-slider__track\" ref={trackRef} data-show-bubble={dragging || undefined} onPointerDown={onPointerDown}>\r\n <div className=\"twc-slider__rail\" />\r\n <div className=\"twc-slider__fill\" style={{ width: `${pct}%` }} />\r\n {showTicks ? (\r\n <div className=\"twc-slider__ticks\">\r\n {Array.from({ length: ticks }).map((_, i) => (\r\n <span key={i} className=\"twc-slider__tick\" style={{ left: `${(i / (ticks - 1)) * 100}%` }} />\r\n ))}\r\n </div>\r\n ) : null}\r\n <div\r\n id={fieldId}\r\n className=\"twc-slider__thumb\"\r\n style={{ left: `${pct}%` }}\r\n role=\"slider\"\r\n tabIndex={disabled ? -1 : 0}\r\n aria-valuemin={min}\r\n aria-valuemax={max}\r\n aria-valuenow={val}\r\n aria-label={typeof label === \"string\" ? label : \"Slider\"}\r\n aria-disabled={disabled || undefined}\r\n onKeyDown={onKeyDown}\r\n >\r\n <span className=\"twc-slider__bubble\">{fmt(val)}</span>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport function Spinner({\r\n size = \"md\",\r\n tone = \"primary\",\r\n label = \"Loading\",\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-spinner-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-spinner-styles\";\r\n el.textContent = `\r\n.twc-spinner {\r\n --_sz: 24px; --_bw: 2.5px;\r\n display: inline-block; width: var(--_sz); height: var(--_sz);\r\n border: var(--_bw) solid var(--color-border); border-top-color: var(--_c, var(--color-primary));\r\n border-radius: var(--radius-full); animation: twico-spin 0.65s linear infinite;\r\n}\r\n.twc-spinner[data-size=\"sm\"] { --_sz: 16px; --_bw: 2px; }\r\n.twc-spinner[data-size=\"lg\"] { --_sz: 36px; --_bw: 3.5px; }\r\n.twc-spinner[data-size=\"xl\"] { --_sz: 52px; --_bw: 4px; }\r\n.twc-spinner[data-tone=\"white\"] { --_c: #fff; border-color: rgba(255,255,255,0.3); }\r\n.twc-spinner[data-tone=\"neutral\"] { --_c: var(--color-text); }\r\n`;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n return <span className={`twc-spinner ${className}`} data-size={size} data-tone={tone} role=\"status\" aria-label={label} {...rest} />;\r\n}\r\n","import React from \"react\";\r\n\r\nconst STAT_CSS = `\r\n.twc-stat { display: flex; flex-direction: column; gap: 6px; font-family: var(--font-sans);\r\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border);\r\n border-radius: var(--radius-lg); padding: var(--space-5); }\r\n.twc-stat[data-plain=\"true\"] { background: transparent; border: none; padding: 0; }\r\n.twc-stat__top { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }\r\n.twc-stat__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text-muted); }\r\n.twc-stat__icon { flex: none; display: inline-grid; place-items: center; width: 38px; height: 38px; border-radius: var(--radius-md);\r\n background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\r\n.twc-stat__icon svg { width: 20px; height: 20px; }\r\n.twc-stat__value { font-size: var(--text-3xl); font-weight: var(--font-extrabold); letter-spacing: -0.02em; color: var(--color-text); line-height: 1.1; }\r\n.twc-stat__foot { display: flex; align-items: center; gap: 8px; font-size: var(--text-sm); }\r\n.twc-stat__delta { display: inline-flex; align-items: center; gap: 3px; font-weight: var(--font-bold); padding: 2px 7px; border-radius: var(--radius-full); }\r\n.twc-stat__delta svg { width: 14px; height: 14px; }\r\n.twc-stat__delta[data-dir=\"up\"] { color: var(--color-success-subtle-fg); background: var(--color-success-subtle); }\r\n.twc-stat__delta[data-dir=\"down\"] { color: var(--color-danger-subtle-fg); background: var(--color-danger-subtle); }\r\n.twc-stat__delta[data-dir=\"flat\"] { color: var(--color-text-muted); background: var(--color-surface-sunken); }\r\n.twc-stat__help { color: var(--color-text-subtle); }\r\n`;\r\n\r\nconst Arrow = ({ dir }) => (\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n {dir === \"up\" ? <path d=\"M7 17 17 7M9 7h8v8\" /> : dir === \"down\" ? <path d=\"M7 7l10 10M17 9v8H9\" /> : <path d=\"M5 12h14\" />}\r\n </svg>\r\n);\r\n\r\nexport function Stat({\r\n label,\r\n value,\r\n icon,\r\n delta,\r\n deltaDirection,\r\n helpText,\r\n plain = false,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-stat-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-stat-styles\";\r\n el.textContent = STAT_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const dir = deltaDirection || (typeof delta === \"string\" && delta.trim().startsWith(\"-\") ? \"down\" : delta != null ? \"up\" : undefined);\r\n\r\n return (\r\n <div className={`twc-stat ${className}`} data-plain={plain || undefined} {...rest}>\r\n <div className=\"twc-stat__top\">\r\n <span className=\"twc-stat__label\">{label}</span>\r\n {icon ? <span className=\"twc-stat__icon\" aria-hidden=\"true\">{icon}</span> : null}\r\n </div>\r\n <div className=\"twc-stat__value\">{value}</div>\r\n {(delta != null || helpText) ? (\r\n <div className=\"twc-stat__foot\">\r\n {delta != null ? <span className=\"twc-stat__delta\" data-dir={dir}><Arrow dir={dir} />{delta}</span> : null}\r\n {helpText ? <span className=\"twc-stat__help\">{helpText}</span> : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst STEPPER_CSS = `\r\n.twc-stepper { display: flex; font-family: var(--font-sans); }\r\n.twc-stepper[data-orientation=\"horizontal\"] { flex-direction: row; align-items: flex-start; }\r\n.twc-stepper[data-orientation=\"vertical\"] { flex-direction: column; gap: 4px; }\r\n.twc-step { display: flex; flex: 1; min-width: 0; }\r\n.twc-stepper[data-orientation=\"horizontal\"] .twc-step { flex-direction: column; align-items: center; text-align: center; position: relative; }\r\n.twc-stepper[data-orientation=\"vertical\"] .twc-step { flex-direction: row; align-items: flex-start; gap: var(--space-3); flex: none; }\r\n.twc-step__indicator {\r\n position: relative; z-index: 1; flex: none; width: 32px; height: 32px; border-radius: var(--radius-full);\r\n display: grid; place-items: center; font-size: var(--text-sm); font-weight: var(--font-bold);\r\n background: var(--color-surface); color: var(--color-text-subtle);\r\n border: var(--border-medium) solid var(--color-border-strong);\r\n transition: background-color var(--duration-base) var(--ease-standard), border-color var(--duration-base) var(--ease-standard), color var(--duration-base) var(--ease-standard), transform var(--duration-base) var(--ease-spring);\r\n}\r\n.twc-step__indicator svg { width: 17px; height: 17px; }\r\n.twc-step[data-state=\"active\"] .twc-step__indicator { border-color: var(--color-primary); color: var(--color-primary); box-shadow: 0 0 0 4px var(--color-primary-subtle); }\r\n.twc-step[data-state=\"complete\"] .twc-step__indicator { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-primary-fg); }\r\n.twc-step[data-state=\"error\"] .twc-step__indicator { background: var(--color-danger); border-color: var(--color-danger); color: var(--color-danger-fg); }\r\n.twc-step[data-clickable=\"true\"] { cursor: pointer; }\r\n.twc-step[data-clickable=\"true\"]:hover .twc-step__indicator { transform: scale(1.06); }\r\n.twc-step__body { display: flex; flex-direction: column; gap: 1px; }\r\n.twc-stepper[data-orientation=\"horizontal\"] .twc-step__body { margin-top: 8px; padding: 0 6px; }\r\n.twc-step__title { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); }\r\n.twc-step[data-state=\"upcoming\"] .twc-step__title { color: var(--color-text-muted); }\r\n.twc-step__desc { font-size: var(--text-xs); color: var(--color-text-subtle); }\r\n.twc-step__connector { background: var(--color-border); transition: background-color var(--duration-base) var(--ease-standard); }\r\n.twc-stepper[data-orientation=\"horizontal\"] .twc-step__connector { position: absolute; top: 16px; height: 2px; left: calc(50% + 22px); right: calc(-50% + 22px); }\r\n.twc-stepper[data-orientation=\"vertical\"] .twc-step__connector { width: 2px; flex: 1; min-height: 22px; margin: 4px 0; align-self: stretch; margin-left: 15px; }\r\n.twc-stepper[data-orientation=\"vertical\"] .twc-step__col { display: flex; flex-direction: column; align-items: center; }\r\n.twc-step[data-state=\"complete\"] .twc-step__connector, .twc-step[data-state=\"active\"] .twc-step__connector { background: var(--color-primary); }\r\n.twc-stepper[data-orientation=\"vertical\"] .twc-step__vbody { padding-bottom: var(--space-2); }\r\n`;\r\n\r\nconst CheckIcon = () => (\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"/></svg>\r\n);\r\nconst BangIcon = () => (\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M12 8v5M12 17h.01\"/></svg>\r\n);\r\n\r\nexport function Stepper({\r\n steps,\r\n active = 0,\r\n orientation = \"horizontal\",\r\n onStepClick,\r\n clickable = false,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-stepper-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-stepper-styles\";\r\n el.textContent = STEPPER_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const stateOf = (i, step) => {\r\n if (step.error) return \"error\";\r\n if (i < active) return \"complete\";\r\n if (i === active) return \"active\";\r\n return \"upcoming\";\r\n };\r\n\r\n return (\r\n <div className={`twc-stepper ${className}`} data-orientation={orientation} {...rest}>\r\n {steps.map((step, i) => {\r\n const state = stateOf(i, step);\r\n const last = i === steps.length - 1;\r\n const isClickable = clickable && i <= active;\r\n const indicator = (\r\n <span className=\"twc-step__indicator\" aria-hidden=\"true\">\r\n {state === \"complete\" ? <CheckIcon /> : state === \"error\" ? <BangIcon /> : (step.icon || i + 1)}\r\n </span>\r\n );\r\n if (orientation === \"vertical\") {\r\n return (\r\n <div key={i} className=\"twc-step\" data-state={state} data-clickable={isClickable || undefined}\r\n onClick={isClickable ? () => onStepClick?.(i) : undefined}>\r\n <div className=\"twc-step__col\">\r\n {indicator}\r\n {!last ? <span className=\"twc-step__connector\" /> : null}\r\n </div>\r\n <div className=\"twc-step__body twc-step__vbody\">\r\n <span className=\"twc-step__title\">{step.title}</span>\r\n {step.description ? <span className=\"twc-step__desc\">{step.description}</span> : null}\r\n </div>\r\n </div>\r\n );\r\n }\r\n return (\r\n <div key={i} className=\"twc-step\" data-state={state} data-clickable={isClickable || undefined}\r\n onClick={isClickable ? () => onStepClick?.(i) : undefined}>\r\n {indicator}\r\n {!last ? <span className=\"twc-step__connector\" /> : null}\r\n <div className=\"twc-step__body\">\r\n <span className=\"twc-step__title\">{step.title}</span>\r\n {step.description ? <span className=\"twc-step__desc\">{step.description}</span> : null}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport function Switch({\r\n label,\r\n description,\r\n checked,\r\n defaultChecked,\r\n disabled = false,\r\n size = \"md\",\r\n id,\r\n className = \"\",\r\n onChange,\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-switch-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-switch-styles\";\r\n el.textContent = `\r\n.twc-switch { display: inline-flex; align-items: center; gap: var(--space-3); cursor: pointer; font-family: var(--font-sans); }\r\n.twc-switch[data-disabled=\"true\"] { cursor: not-allowed; opacity: 0.55; }\r\n.twc-switch__input { position: absolute; opacity: 0; width: 0; height: 0; }\r\n.twc-switch__track {\r\n --_w: 44px; --_h: 24px; --_pad: 3px;\r\n position: relative; flex: none; width: var(--_w); height: var(--_h);\r\n background: var(--color-border-strong); border-radius: var(--radius-full);\r\n transition: background-color var(--duration-base) var(--ease-standard);\r\n}\r\n.twc-switch[data-size=\"sm\"] .twc-switch__track { --_w: 36px; --_h: 20px; }\r\n.twc-switch__thumb {\r\n position: absolute; top: var(--_pad); left: var(--_pad);\r\n width: calc(var(--_h) - var(--_pad) * 2); height: calc(var(--_h) - var(--_pad) * 2);\r\n background: #fff; border-radius: var(--radius-full); box-shadow: var(--shadow-sm);\r\n transition: transform var(--duration-base) var(--ease-spring);\r\n}\r\n.twc-switch__input:checked + .twc-switch__track { background: var(--color-primary); }\r\n.twc-switch__input:checked + .twc-switch__track .twc-switch__thumb { transform: translateX(calc(var(--_w) - var(--_h))); }\r\n.twc-switch__input:focus-visible + .twc-switch__track { box-shadow: var(--ring); }\r\n.twc-switch__input:active + .twc-switch__track .twc-switch__thumb { width: calc(var(--_h) - var(--_pad) * 2 + 4px); }\r\n.twc-switch__text { display: flex; flex-direction: column; gap: 2px; }\r\n.twc-switch__label { font-size: var(--text-sm); font-weight: var(--font-medium); color: var(--color-text); line-height: 1.3; }\r\n.twc-switch__desc { font-size: var(--text-xs); color: var(--color-text-muted); }\r\n`;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const autoId = React.useId();\r\n const fieldId = id || autoId;\r\n\r\n return (\r\n <label className={`twc-switch ${className}`} data-size={size} data-disabled={disabled || undefined} htmlFor={fieldId}>\r\n <input\r\n id={fieldId}\r\n type=\"checkbox\"\r\n role=\"switch\"\r\n className=\"twc-switch__input\"\r\n checked={checked}\r\n defaultChecked={defaultChecked}\r\n disabled={disabled}\r\n onChange={onChange}\r\n {...rest}\r\n />\r\n <span className=\"twc-switch__track\" aria-hidden=\"true\">\r\n <span className=\"twc-switch__thumb\" />\r\n </span>\r\n {(label || description) ? (\r\n <span className=\"twc-switch__text\">\r\n {label ? <span className=\"twc-switch__label\">{label}</span> : null}\r\n {description ? <span className=\"twc-switch__desc\">{description}</span> : null}\r\n </span>\r\n ) : null}\r\n </label>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst TABLE_CSS = `\r\n.twc-table-wrap { width: 100%; overflow-x: auto; border-radius: var(--radius-lg); border: var(--border-thin) solid var(--color-border); background: var(--color-surface); }\r\n.twc-table { width: 100%; border-collapse: collapse; font-family: var(--font-sans); font-size: var(--text-sm); color: var(--color-text); }\r\n.twc-table thead th {\r\n text-align: left; font-weight: var(--font-semibold); color: var(--color-text-muted);\r\n font-size: var(--text-xs); letter-spacing: var(--tracking-wide); text-transform: uppercase;\r\n padding: var(--space-3) var(--space-4); background: var(--color-surface-sunken);\r\n border-bottom: var(--border-thin) solid var(--color-border); white-space: nowrap;\r\n}\r\n.twc-table th[data-align=\"right\"], .twc-table td[data-align=\"right\"] { text-align: right; }\r\n.twc-table th[data-align=\"center\"], .twc-table td[data-align=\"center\"] { text-align: center; }\r\n.twc-table th[data-sortable=\"true\"] { cursor: pointer; user-select: none; }\r\n.twc-table th[data-sortable=\"true\"]:hover { color: var(--color-text); }\r\n.twc-table__sort { display: inline-flex; align-items: center; gap: 5px; }\r\n.twc-table__sort svg { width: 13px; height: 13px; opacity: 0.5; transition: opacity var(--duration-fast), transform var(--duration-fast); }\r\n.twc-table th[data-active=\"true\"] .twc-table__sort svg { opacity: 1; color: var(--color-primary); }\r\n.twc-table th[data-dir=\"desc\"] .twc-table__sort svg { transform: rotate(180deg); }\r\n.twc-table tbody td { padding: var(--space-3) var(--space-4); border-bottom: var(--border-thin) solid var(--color-divider); }\r\n.twc-table tbody tr:last-child td { border-bottom: none; }\r\n.twc-table[data-hover=\"true\"] tbody tr { transition: background-color var(--duration-fast) var(--ease-standard); }\r\n.twc-table[data-hover=\"true\"] tbody tr:hover { background: var(--color-surface-sunken); }\r\n.twc-table[data-striped=\"true\"] tbody tr:nth-child(even) { background: color-mix(in srgb, var(--color-surface-sunken) 55%, transparent); }\r\n.twc-table tbody tr[data-selected=\"true\"] { background: var(--color-primary-subtle); }\r\n.twc-table[data-size=\"sm\"] thead th { padding: var(--space-2) var(--space-3); }\r\n.twc-table[data-size=\"sm\"] tbody td { padding: var(--space-2) var(--space-3); }\r\n`;\r\n\r\nexport function Table({\r\n columns,\r\n data,\r\n hover = true,\r\n striped = false,\r\n size = \"md\",\r\n sortable = false,\r\n rowKey,\r\n selectedKeys,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-table-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-table-styles\";\r\n el.textContent = TABLE_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [sort, setSort] = React.useState({ key: null, dir: \"asc\" });\r\n\r\n const rows = React.useMemo(() => {\r\n if (!sortable || !sort.key) return data;\r\n const col = columns.find((c) => c.key === sort.key);\r\n if (!col) return data;\r\n const sorted = [...data].sort((a, b) => {\r\n const av = a[sort.key], bv = b[sort.key];\r\n if (av == null) return 1; if (bv == null) return -1;\r\n if (typeof av === \"number\" && typeof bv === \"number\") return av - bv;\r\n return String(av).localeCompare(String(bv));\r\n });\r\n return sort.dir === \"desc\" ? sorted.reverse() : sorted;\r\n }, [data, columns, sort, sortable]);\r\n\r\n function toggleSort(key) {\r\n setSort((s) => s.key === key ? { key, dir: s.dir === \"asc\" ? \"desc\" : \"asc\" } : { key, dir: \"asc\" });\r\n }\r\n\r\n const keyFn = rowKey || ((_, i) => i);\r\n const selected = new Set(selectedKeys || []);\r\n\r\n return (\r\n <div className={`twc-table-wrap ${className}`} {...rest}>\r\n <table className=\"twc-table\" data-hover={hover || undefined} data-striped={striped || undefined} data-size={size}>\r\n <thead>\r\n <tr>\r\n {columns.map((c) => {\r\n const active = sort.key === c.key;\r\n const canSort = sortable && c.sortable !== false;\r\n return (\r\n <th key={c.key} data-align={c.align} data-sortable={canSort || undefined} data-active={active || undefined} data-dir={active ? sort.dir : undefined}\r\n style={c.width ? { width: c.width } : undefined}\r\n onClick={canSort ? () => toggleSort(c.key) : undefined}>\r\n {canSort ? (\r\n <span className=\"twc-table__sort\">{c.header}\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m18 15-6-6-6 6\"/></svg>\r\n </span>\r\n ) : c.header}\r\n </th>\r\n );\r\n })}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {rows.map((row, i) => {\r\n const k = keyFn(row, i);\r\n return (\r\n <tr key={k} data-selected={selected.has(k) || undefined}>\r\n {columns.map((c) => (\r\n <td key={c.key} data-align={c.align}>\r\n {c.render ? c.render(row[c.key], row, i) : row[c.key]}\r\n </td>\r\n ))}\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst TABS_CSS = `\r\n.twc-tabs { font-family: var(--font-sans); }\r\n.twc-tabs__list {\r\n position: relative; display: flex; gap: 2px;\r\n border-bottom: var(--border-thin) solid var(--color-border);\r\n}\r\n.twc-tabs[data-variant=\"pill\"] .twc-tabs__list {\r\n gap: 4px; border-bottom: none; padding: 4px;\r\n background: var(--color-surface-sunken); border-radius: var(--radius-lg);\r\n display: inline-flex;\r\n}\r\n.twc-tab {\r\n position: relative; z-index: 1; display: inline-flex; align-items: center; gap: 7px;\r\n padding: var(--space-2-5) var(--space-4); border: none; background: transparent;\r\n font-family: inherit; font-size: var(--text-sm); font-weight: var(--font-semibold);\r\n color: var(--color-text-muted); cursor: pointer; white-space: nowrap;\r\n transition: color var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-tab:hover:not([data-active=\"true\"]) { color: var(--color-text); }\r\n.twc-tab[data-active=\"true\"] { color: var(--color-primary); }\r\n.twc-tabs[data-variant=\"pill\"] .twc-tab { border-radius: var(--radius-md); }\r\n.twc-tabs[data-variant=\"pill\"] .twc-tab[data-active=\"true\"] { color: var(--color-primary); }\r\n.twc-tab:focus-visible { outline: none; box-shadow: var(--ring); border-radius: var(--radius-sm); }\r\n.twc-tab svg { width: 16px; height: 16px; }\r\n.twc-tab__count { font-size: 11px; padding: 1px 6px; border-radius: var(--radius-full); background: var(--color-surface-sunken); color: var(--color-text-muted); }\r\n.twc-tab[data-active=\"true\"] .twc-tab__count { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\r\n.twc-tabs__indicator {\r\n position: absolute; bottom: -1px; height: 2.5px; border-radius: var(--radius-full);\r\n background: var(--color-primary);\r\n transition: left var(--duration-base) var(--ease-spring), width var(--duration-base) var(--ease-spring);\r\n}\r\n.twc-tabs[data-variant=\"pill\"] .twc-tabs__indicator {\r\n top: 4px; bottom: 4px; height: auto; background: var(--color-surface); box-shadow: var(--shadow-sm); border-radius: var(--radius-md);\r\n}\r\n.twc-tabs__panel { padding-top: var(--space-4); }\r\n`;\r\n\r\nexport function Tabs({\r\n items,\r\n value,\r\n defaultValue,\r\n onChange,\r\n variant = \"line\",\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-tabs-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-tabs-styles\";\r\n el.textContent = TABS_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [internal, setInternal] = React.useState(defaultValue ?? items[0]?.value);\r\n const active = value ?? internal;\r\n const listRef = React.useRef(null);\r\n const [ind, setInd] = React.useState({ left: 0, width: 0 });\r\n const baseId = React.useId();\r\n const tabIdAt = (i) => `${baseId}-tab-${i}`;\r\n const panelId = `${baseId}-panel`;\r\n const activeIndex = items.findIndex((it) => it.value === active);\r\n\r\n const updateIndicator = React.useCallback(() => {\r\n const list = listRef.current;\r\n if (!list) return;\r\n const el = list.querySelector('[data-active=\"true\"]');\r\n if (el) setInd({ left: el.offsetLeft, width: el.offsetWidth });\r\n }, []);\r\n\r\n React.useEffect(() => { updateIndicator(); }, [active, updateIndicator, items]);\r\n React.useEffect(() => {\r\n const r = () => updateIndicator();\r\n window.addEventListener(\"resize\", r);\r\n return () => window.removeEventListener(\"resize\", r);\r\n }, [updateIndicator]);\r\n\r\n function select(v) {\r\n if (value === undefined) setInternal(v);\r\n onChange?.(v);\r\n }\r\n\r\n const activeItem = items.find((i) => i.value === active);\r\n\r\n // WAI-ARIA tabs keyboard pattern: arrows/Home/End move selection + focus\r\n // between tabs (roving tabindex keeps only the active tab in the tab order).\r\n function onListKeyDown(e) {\r\n const keys = [\"ArrowRight\", \"ArrowLeft\", \"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"];\r\n if (!keys.includes(e.key)) return;\r\n const n = items.length;\r\n if (!n) return;\r\n e.preventDefault();\r\n let i = activeIndex < 0 ? 0 : activeIndex;\r\n if (e.key === \"Home\") i = 0;\r\n else if (e.key === \"End\") i = n - 1;\r\n else { const dir = e.key === \"ArrowRight\" || e.key === \"ArrowDown\" ? 1 : -1; i = (i + dir + n) % n; }\r\n const it = items[i];\r\n if (!it) return;\r\n select(it.value);\r\n const btns = listRef.current?.querySelectorAll('[role=\"tab\"]');\r\n if (btns && btns[i]) btns[i].focus();\r\n }\r\n\r\n return (\r\n <div className={`twc-tabs ${className}`} data-variant={variant} {...rest}>\r\n <div className=\"twc-tabs__list\" ref={listRef} role=\"tablist\" onKeyDown={onListKeyDown}>\r\n {items.map((it, i) => (\r\n <button\r\n key={it.value}\r\n id={tabIdAt(i)}\r\n className=\"twc-tab\"\r\n role=\"tab\"\r\n aria-selected={it.value === active}\r\n aria-controls={panelId}\r\n tabIndex={it.value === active ? 0 : -1}\r\n data-active={it.value === active || undefined}\r\n onClick={() => select(it.value)}\r\n >\r\n {it.icon}\r\n {it.label}\r\n {it.count != null ? <span className=\"twc-tab__count\">{it.count}</span> : null}\r\n </button>\r\n ))}\r\n <span className=\"twc-tabs__indicator\" style={{ left: ind.left, width: ind.width }} />\r\n </div>\r\n {activeItem && activeItem.content !== undefined ? (\r\n <div className=\"twc-tabs__panel\" role=\"tabpanel\" id={panelId} aria-labelledby={activeIndex >= 0 ? tabIdAt(activeIndex) : undefined} tabIndex={0} key={active}>{activeItem.content}</div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst TAG_CSS = `\r\n.twc-tag {\r\n display: inline-flex; align-items: center; gap: 6px;\r\n padding: 4px 6px 4px 11px; height: 28px;\r\n font-family: var(--font-sans); font-size: var(--text-xs); font-weight: var(--font-medium);\r\n color: var(--color-text); background: var(--color-surface-sunken);\r\n border: var(--border-thin) solid var(--color-border);\r\n border-radius: var(--radius-full); white-space: nowrap;\r\n transition: background-color var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-tag[data-no-remove=\"true\"] { padding-right: 11px; }\r\n.twc-tag__remove {\r\n display: inline-grid; place-items: center;\r\n width: 18px; height: 18px; border: none; padding: 0; margin: 0;\r\n border-radius: var(--radius-full); background: transparent;\r\n color: var(--color-text-subtle); cursor: pointer;\r\n transition: background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring);\r\n}\r\n.twc-tag__remove:hover { background: var(--color-danger-subtle); color: var(--color-danger-subtle-fg); }\r\n.twc-tag__remove:active { transform: scale(0.85); }\r\n.twc-tag__remove svg { width: 13px; height: 13px; }\r\n`;\r\n\r\nexport function Tag({\r\n children,\r\n onRemove,\r\n leftIcon,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-tag-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-tag-styles\";\r\n el.textContent = TAG_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n return (\r\n <span className={`twc-tag ${className}`} data-no-remove={!onRemove || undefined} {...rest}>\r\n {leftIcon}\r\n {children}\r\n {onRemove ? (\r\n <button className=\"twc-tag__remove\" onClick={onRemove} aria-label=\"Remove\" type=\"button\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\r\n </button>\r\n ) : null}\r\n </span>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport function Textarea({\r\n label,\r\n hint,\r\n error,\r\n required = false,\r\n rows = 4,\r\n disabled = false,\r\n id,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-textarea-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-textarea-styles\";\r\n el.textContent = `\r\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\r\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\r\n.twc-field__req { color: var(--color-danger); }\r\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\r\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\r\n.twc-textarea__el {\r\n width: 100%; resize: vertical; min-height: 80px;\r\n padding: var(--space-2-5) var(--space-3);\r\n font-family: var(--font-sans); font-size: var(--text-sm); line-height: var(--leading-normal);\r\n color: var(--color-text); background: var(--color-surface);\r\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md);\r\n outline: none;\r\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\r\n}\r\n.twc-textarea__el::placeholder { color: var(--color-text-subtle); }\r\n.twc-textarea__el:hover:not(:focus):not(:disabled) { border-color: var(--color-border-strong); }\r\n.twc-textarea__el:focus { border-color: var(--color-primary); box-shadow: var(--ring); }\r\n.twc-textarea__el[aria-invalid=\"true\"] { border-color: var(--color-danger); }\r\n.twc-textarea__el:disabled { background: var(--color-surface-sunken); opacity: 0.7; cursor: not-allowed; }\r\n`;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const autoId = React.useId();\r\n const fieldId = id || autoId;\r\n const invalid = Boolean(error);\r\n\r\n return (\r\n <div className={`twc-field ${className}`}>\r\n {label ? (\r\n <label className=\"twc-field__label\" htmlFor={fieldId}>\r\n {label}{required ? <span className=\"twc-field__req\">*</span> : null}\r\n </label>\r\n ) : null}\r\n <textarea\r\n id={fieldId}\r\n className=\"twc-textarea__el\"\r\n rows={rows}\r\n disabled={disabled}\r\n aria-invalid={invalid || undefined}\r\n {...rest}\r\n />\r\n {error ? <span className=\"twc-field__error\">{error}</span> : hint ? <span className=\"twc-field__hint\">{hint}</span> : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst TIMELINE_CSS = `\r\n.twc-timeline { display: flex; flex-direction: column; font-family: var(--font-sans); margin: 0; padding: 0; list-style: none; }\r\n.twc-timeline__item { position: relative; display: flex; gap: var(--space-4); padding-bottom: var(--space-6); }\r\n.twc-timeline__item:last-child { padding-bottom: 0; }\r\n.twc-timeline__rail { position: relative; flex: none; width: 32px; display: flex; justify-content: center; }\r\n.twc-timeline__dot { z-index: 1; flex: none; width: 32px; height: 32px; border-radius: var(--radius-full); display: grid; place-items: center;\r\n background: var(--color-surface); border: var(--border-medium) solid var(--color-border-strong); color: var(--color-text-subtle); box-shadow: 0 0 0 4px var(--color-surface); }\r\n.twc-timeline__dot svg { width: 15px; height: 15px; }\r\n.twc-timeline__item[data-tone=\"primary\"] .twc-timeline__dot { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-primary-fg); }\r\n.twc-timeline__item[data-tone=\"success\"] .twc-timeline__dot { background: var(--color-success); border-color: var(--color-success); color: var(--color-success-fg); }\r\n.twc-timeline__item[data-tone=\"danger\"] .twc-timeline__dot { background: var(--color-danger); border-color: var(--color-danger); color: var(--color-danger-fg); }\r\n.twc-timeline__item[data-tone=\"warning\"] .twc-timeline__dot { background: var(--color-warning); border-color: var(--color-warning); color: var(--color-warning-fg); }\r\n.twc-timeline__line { position: absolute; top: 34px; bottom: -6px; left: 50%; width: 2px; transform: translateX(-50%); background: var(--color-border); border-radius: var(--radius-full); }\r\n.twc-timeline__item:last-child .twc-timeline__line { display: none; }\r\n.twc-timeline__body { flex: 1; min-width: 0; padding-top: 5px; }\r\n.twc-timeline__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3); }\r\n.twc-timeline__title { font-size: var(--text-sm); font-weight: var(--font-bold); color: var(--color-text); }\r\n.twc-timeline__time { font-size: var(--text-xs); color: var(--color-text-subtle); white-space: nowrap; }\r\n.twc-timeline__desc { font-size: var(--text-sm); color: var(--color-text-muted); margin-top: 2px; line-height: var(--leading-snug); }\r\n`;\r\n\r\nexport function Timeline({ items, className = \"\", ...rest }) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-timeline-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-timeline-styles\";\r\n el.textContent = TIMELINE_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n return (\r\n <ul className={`twc-timeline ${className}`} {...rest}>\r\n {items.map((it, i) => (\r\n <li className=\"twc-timeline__item\" key={i} data-tone={it.tone || undefined}>\r\n <div className=\"twc-timeline__rail\">\r\n <span className=\"twc-timeline__dot\" aria-hidden=\"true\">{it.icon || null}</span>\r\n <span className=\"twc-timeline__line\" />\r\n </div>\r\n <div className=\"twc-timeline__body\">\r\n <div className=\"twc-timeline__head\">\r\n <span className=\"twc-timeline__title\">{it.title}</span>\r\n {it.time ? <span className=\"twc-timeline__time\">{it.time}</span> : null}\r\n </div>\r\n {it.description ? <div className=\"twc-timeline__desc\">{it.description}</div> : null}\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst TOAST_CSS = `\r\n.twc-toast {\r\n position: relative; display: flex; gap: var(--space-3); align-items: flex-start;\r\n width: 360px; max-width: calc(100vw - 32px);\r\n padding: var(--space-3) var(--space-4);\r\n background: var(--color-surface-raised); color: var(--color-text);\r\n border: var(--border-thin) solid var(--color-border);\r\n border-radius: var(--radius-lg); box-shadow: var(--shadow-lg);\r\n font-family: var(--font-sans); overflow: hidden;\r\n animation: twico-slide-in-right var(--duration-base) var(--ease-spring);\r\n}\r\n.twc-toast::before { content: \"\"; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--_accent, var(--color-primary)); }\r\n.twc-toast[data-tone=\"success\"] { --_accent: var(--color-success); }\r\n.twc-toast[data-tone=\"warning\"] { --_accent: var(--color-warning); }\r\n.twc-toast[data-tone=\"danger\"] { --_accent: var(--color-danger); }\r\n.twc-toast[data-tone=\"info\"] { --_accent: var(--color-info); }\r\n.twc-toast__icon { flex: none; margin-top: 1px; color: var(--_accent, var(--color-primary)); }\r\n.twc-toast__icon svg { width: 20px; height: 20px; }\r\n.twc-toast__body { flex: 1; min-width: 0; }\r\n.twc-toast__title { font-weight: var(--font-bold); font-size: var(--text-sm); }\r\n.twc-toast__desc { font-size: var(--text-sm); color: var(--color-text-muted); margin-top: 2px; line-height: var(--leading-snug); }\r\n.twc-toast__close {\r\n flex: none; display: inline-grid; place-items: center; width: 24px; height: 24px;\r\n border: none; background: transparent; color: var(--color-text-subtle); cursor: pointer;\r\n border-radius: var(--radius-sm); transition: background-color var(--duration-fast), color var(--duration-fast);\r\n}\r\n.twc-toast__close:hover { background: var(--color-surface-sunken); color: var(--color-text); }\r\n.twc-toast__close svg { width: 15px; height: 15px; }\r\n.twc-toast-viewport {\r\n position: fixed; z-index: var(--z-toast); display: flex; flex-direction: column; gap: 12px;\r\n bottom: 20px; right: 20px;\r\n}\r\n`;\r\n\r\nconst TOAST_ICONS = {\r\n default: \"M12 8v4m0 4h.01\",\r\n success: \"m9 12 2 2 4-4\",\r\n warning: \"M12 9v4M12 17h.01\",\r\n danger: \"M15 9l-6 6M9 9l6 6\",\r\n info: \"M12 16v-4M12 8h.01\",\r\n};\r\n\r\nexport function Toast({\r\n tone = \"default\",\r\n title,\r\n children,\r\n icon,\r\n onClose,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-toast-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-toast-styles\";\r\n el.textContent = TOAST_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n return (\r\n <div className={`twc-toast ${className}`} data-tone={tone} role=\"status\" {...rest}>\r\n <span className=\"twc-toast__icon\" aria-hidden=\"true\">\r\n {icon || (\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><path d={TOAST_ICONS[tone] || TOAST_ICONS.default} />\r\n </svg>\r\n )}\r\n </span>\r\n <div className=\"twc-toast__body\">\r\n {title ? <div className=\"twc-toast__title\">{title}</div> : null}\r\n {children ? <div className=\"twc-toast__desc\">{children}</div> : null}\r\n </div>\r\n {onClose ? (\r\n <button className=\"twc-toast__close\" onClick={onClose} aria-label=\"Dismiss\" type=\"button\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\r\n </button>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n\r\n/** Fixed-position stack container for toasts. */\r\nexport function ToastViewport({ children, className = \"\", ...rest }) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-toast-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-toast-styles\";\r\n el.textContent = TOAST_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n return <div className={`twc-toast-viewport ${className}`} {...rest}>{children}</div>;\r\n}\r\n","import React from \"react\";\r\n\r\nconst TOOLTIP_CSS = `\r\n.twc-tooltip-wrap { position: relative; display: inline-flex; }\r\n.twc-tooltip {\r\n position: absolute; z-index: var(--z-tooltip); pointer-events: none;\r\n padding: 6px 10px; border-radius: var(--radius-md);\r\n background: var(--color-text); color: var(--color-surface);\r\n font-family: var(--font-sans); font-size: var(--text-xs); font-weight: var(--font-medium);\r\n line-height: 1.3; white-space: nowrap; box-shadow: var(--shadow-md);\r\n opacity: 0; transform: scale(0.9); transition: opacity var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-spring);\r\n}\r\n.twc-tooltip[data-show=\"true\"] { opacity: 1; transform: scale(1); }\r\n.twc-tooltip[data-place=\"top\"] { bottom: calc(100% + 8px); left: 50%; transform-origin: bottom center; translate: -50% 0; }\r\n.twc-tooltip[data-place=\"bottom\"] { top: calc(100% + 8px); left: 50%; transform-origin: top center; translate: -50% 0; }\r\n.twc-tooltip[data-place=\"left\"] { right: calc(100% + 8px); top: 50%; transform-origin: right center; translate: 0 -50%; }\r\n.twc-tooltip[data-place=\"right\"] { left: calc(100% + 8px); top: 50%; transform-origin: left center; translate: 0 -50%; }\r\n.twc-tooltip[data-show=\"true\"][data-place=\"top\"], .twc-tooltip[data-show=\"true\"][data-place=\"bottom\"] { transform: scale(1); }\r\n.twc-tooltip__arrow { position: absolute; width: 7px; height: 7px; background: var(--color-text); transform: rotate(45deg); }\r\n.twc-tooltip[data-place=\"top\"] .twc-tooltip__arrow { bottom: -3px; left: 50%; margin-left: -3.5px; }\r\n.twc-tooltip[data-place=\"bottom\"] .twc-tooltip__arrow { top: -3px; left: 50%; margin-left: -3.5px; }\r\n.twc-tooltip[data-place=\"left\"] .twc-tooltip__arrow { right: -3px; top: 50%; margin-top: -3.5px; }\r\n.twc-tooltip[data-place=\"right\"] .twc-tooltip__arrow { left: -3px; top: 50%; margin-top: -3.5px; }\r\n`;\r\n\r\nexport function Tooltip({\r\n children,\r\n label,\r\n placement = \"top\",\r\n delay = 120,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-tooltip-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-tooltip-styles\";\r\n el.textContent = TOOLTIP_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [show, setShow] = React.useState(false);\r\n const timer = React.useRef(null);\r\n const open = () => { clearTimeout(timer.current); timer.current = setTimeout(() => setShow(true), delay); };\r\n const close = () => { clearTimeout(timer.current); setShow(false); };\r\n\r\n return (\r\n <span\r\n className={`twc-tooltip-wrap ${className}`}\r\n onMouseEnter={open} onMouseLeave={close} onFocus={open} onBlur={close}\r\n {...rest}\r\n >\r\n {children}\r\n <span className=\"twc-tooltip\" data-place={placement} data-show={show || undefined} role=\"tooltip\">\r\n {label}\r\n <span className=\"twc-tooltip__arrow\" aria-hidden=\"true\" />\r\n </span>\r\n </span>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst TREE_CSS = `\r\n.twc-tree { font-family: var(--font-sans); font-size: var(--text-sm); user-select: none; }\r\n.twc-tree__group { list-style: none; margin: 0; padding: 0; }\r\n.twc-tree__group--child { margin-left: 0; overflow: hidden; }\r\n.twc-tree__row { display: flex; align-items: center; gap: 6px; width: 100%; border: none; background: none; font: inherit; cursor: pointer;\r\n color: var(--color-text); text-align: left; padding: 6px 8px; border-radius: var(--radius-md);\r\n transition: background-color var(--duration-fast) var(--ease-standard); }\r\n.twc-tree__row:hover { background: var(--color-surface-sunken); }\r\n.twc-tree__row:focus-visible { outline: none; box-shadow: var(--ring); }\r\n.twc-tree__row[data-selected=\"true\"] { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); font-weight: var(--font-semibold); }\r\n.twc-tree__caret { flex: none; width: 18px; height: 18px; display: grid; place-items: center; color: var(--color-text-subtle);\r\n transition: transform var(--duration-base) var(--ease-spring); }\r\n.twc-tree__caret[data-open=\"true\"] { transform: rotate(90deg); }\r\n.twc-tree__caret[data-leaf=\"true\"] { visibility: hidden; }\r\n.twc-tree__caret svg { width: 14px; height: 14px; }\r\n.twc-tree__ic { flex: none; display: inline-flex; color: var(--color-text-muted); }\r\n.twc-tree__ic svg { width: 16px; height: 16px; }\r\n.twc-tree__row[data-selected=\"true\"] .twc-tree__ic { color: var(--color-primary); }\r\n.twc-tree__label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\r\n.twc-tree__badge { flex: none; font-size: 11px; color: var(--color-text-subtle); }\r\n`;\r\n\r\nfunction Node({ node, depth, expanded, selectedId, onToggle, onSelect }) {\r\n const hasChildren = Array.isArray(node.children) && node.children.length > 0;\r\n const open = expanded.has(node.id);\r\n return (\r\n <li>\r\n <button\r\n className=\"twc-tree__row\"\r\n data-selected={selectedId === node.id || undefined}\r\n style={{ paddingLeft: 8 + depth * 18 }}\r\n aria-expanded={hasChildren ? open : undefined}\r\n onClick={() => { if (hasChildren) onToggle(node.id); onSelect?.(node); }}\r\n >\r\n <span className=\"twc-tree__caret\" data-open={open || undefined} data-leaf={!hasChildren || undefined} aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg>\r\n </span>\r\n {node.icon ? <span className=\"twc-tree__ic\" aria-hidden=\"true\">{node.icon}</span> : null}\r\n <span className=\"twc-tree__label\">{node.label}</span>\r\n {node.badge != null ? <span className=\"twc-tree__badge\">{node.badge}</span> : null}\r\n </button>\r\n {hasChildren && open ? (\r\n <ul className=\"twc-tree__group twc-tree__group--child\">\r\n {node.children.map((c) => (\r\n <Node key={c.id} node={c} depth={depth + 1} expanded={expanded} selectedId={selectedId} onToggle={onToggle} onSelect={onSelect} />\r\n ))}\r\n </ul>\r\n ) : null}\r\n </li>\r\n );\r\n}\r\n\r\nexport function TreeView({\r\n data,\r\n defaultExpanded = [],\r\n selectedId: selectedProp,\r\n onSelect,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n React.useEffect(() => {\r\n if (document.getElementById(\"twc-tree-styles\")) return;\r\n const el = document.createElement(\"style\");\r\n el.id = \"twc-tree-styles\";\r\n el.textContent = TREE_CSS;\r\n document.head.appendChild(el);\r\n }, []);\r\n\r\n const [expanded, setExpanded] = React.useState(() => new Set(defaultExpanded));\r\n const [selInternal, setSelInternal] = React.useState(null);\r\n const selectedId = selectedProp !== undefined ? selectedProp : selInternal;\r\n\r\n const toggle = (id) => setExpanded((s) => { const n = new Set(s); n.has(id) ? n.delete(id) : n.add(id); return n; });\r\n const select = (node) => { if (selectedProp === undefined) setSelInternal(node.id); onSelect?.(node); };\r\n\r\n return (\r\n <div className={`twc-tree ${className}`} role=\"tree\" {...rest}>\r\n <ul className=\"twc-tree__group\">\r\n {data.map((n) => (\r\n <Node key={n.id} node={n} depth={0} expanded={expanded} selectedId={selectedId} onToggle={toggle} onSelect={select} />\r\n ))}\r\n </ul>\r\n </div>\r\n );\r\n}\r\n"]}
1
+ {"version":3,"sources":["../components/navigation/Accordion.jsx","../components/feedback/Alert.jsx","../components/data-display/Avatar.jsx","../components/overlay/Menu.jsx","../components/data-display/AvatarMenu.jsx","../components/data-display/Badge.jsx","../components/navigation/Breadcrumb.jsx","../components/buttons/Button.jsx","../components/data-display/Card.jsx","../components/data-display/Carousel.jsx","../components/data-display/Chart.jsx","../components/inputs/Checkbox.jsx","../components/inputs/ColorPicker.jsx","../components/inputs/Combobox.jsx","../components/overlay/CommandPalette.jsx","../components/inputs/Currency.jsx","../components/inputs/Select.jsx","../components/inputs/CurrencyField.jsx","../components/inputs/Input.jsx","../components/inputs/MultiSelect.jsx","../components/data-display/Pagination.jsx","../components/data-display/Datatable.jsx","../components/inputs/DatePicker.jsx","../components/inputs/DateRangePicker.jsx","../components/overlay/Dialog.jsx","../components/layout/Divider.jsx","../components/overlay/Drawer.jsx","../components/feedback/EmptyState.jsx","../components/inputs/Field.jsx","../components/inputs/FileUpload.jsx","../components/buttons/IconButton.jsx","../components/data-display/Kanban.jsx","../components/data-display/List.jsx","../components/navigation/Navbar.jsx","../components/overlay/Popover.jsx","../components/feedback/Progress.jsx","../components/inputs/Radio.jsx","../components/inputs/Rating.jsx","../components/navigation/Sidebar.jsx","../components/feedback/Skeleton.jsx","../components/inputs/Slider.jsx","../components/feedback/Spinner.jsx","../components/data-display/Stat.jsx","../components/navigation/Stepper.jsx","../components/inputs/Switch.jsx","../components/data-display/Table.jsx","../components/navigation/Tabs.jsx","../components/data-display/Tag.jsx","../components/inputs/Textarea.jsx","../components/data-display/Timeline.jsx","../components/feedback/Toast.jsx","../components/feedback/ToastProvider.jsx","../components/overlay/Tooltip.jsx","../components/navigation/TreeView.jsx","../components/layout/Box.jsx","../components/layout/Container.jsx","../components/layout/Grid.jsx","../components/layout/Stack.jsx","../components/typography/Code.jsx","../components/typography/Heading.jsx","../components/typography/Text.jsx","../hooks/index.js"],"names":["React","jsx","jsxs","createPortal","Fragment","CSS","safeHref","Tag","size","x","toOpt","normalizeGroups","ensureVisible","FIELD_CSS","matches","text","aggOf","id","MONTHS","DOW","monthNames","weekdayNames","useFieldStyles","nodes","space"],"mappings":"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","file":"index.cjs","sourcesContent":["import React from \"react\";\n\nconst ACCORDION_CSS = `\n.twc-accordion { display: flex; flex-direction: column; font-family: var(--font-sans);\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg); overflow: hidden; background: var(--color-surface); }\n.twc-accordion__item { border-bottom: var(--border-thin) solid var(--color-divider); }\n.twc-accordion__item:last-child { border-bottom: none; }\n.twc-accordion__trigger {\n display: flex; align-items: center; gap: var(--space-3); width: 100%;\n padding: var(--space-4); border: none; background: transparent; cursor: pointer;\n font-family: inherit; font-size: var(--text-sm); font-weight: var(--font-semibold);\n color: var(--color-text); text-align: start;\n transition: background-color var(--duration-fast) var(--ease-standard);\n}\n.twc-accordion__trigger:hover { background: var(--color-surface-sunken); }\n.twc-accordion__trigger:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-accordion__label { flex: 1; }\n.twc-accordion__chevron { flex: none; color: var(--color-text-subtle); transition: transform var(--duration-base) var(--ease-spring); }\n.twc-accordion__chevron svg { width: 18px; height: 18px; display: block; }\n.twc-accordion__trigger[data-open=\"true\"] .twc-accordion__chevron { transform: rotate(180deg); color: var(--color-primary); }\n.twc-accordion__panel { display: grid; grid-template-rows: 0fr; visibility: hidden;\n transition: grid-template-rows var(--duration-base) var(--ease-standard), visibility 0s var(--duration-base); }\n.twc-accordion__panel[data-open=\"true\"] { grid-template-rows: 1fr; visibility: visible;\n transition: grid-template-rows var(--duration-base) var(--ease-standard), visibility 0s; }\n.twc-accordion__panel-inner { overflow: hidden; }\n.twc-accordion__content { padding: 0 var(--space-4) var(--space-4); font-size: var(--text-sm); color: var(--color-text-muted); line-height: var(--leading-normal); }\n`;\n\nexport function Accordion({\n items,\n multiple = false,\n defaultOpen = [],\n open: openProp,\n onOpenChange,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-accordion-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-accordion-styles\";\n el.textContent = ACCORDION_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [internal, setInternal] = React.useState(() => new Set(defaultOpen));\n const open = openProp !== undefined ? new Set(openProp) : internal;\n const baseId = React.useId();\n\n function toggle(val) {\n const next = new Set(open);\n if (next.has(val)) next.delete(val);\n else { if (!multiple) next.clear(); next.add(val); }\n if (openProp === undefined) setInternal(next);\n onOpenChange?.([...next]);\n }\n\n return (\n <div className={`twc-accordion ${className}`} {...rest}>\n {items.map((it, i) => {\n const isOpen = open.has(it.value);\n const triggerId = `${baseId}-trigger-${i}`;\n const panelId = `${baseId}-panel-${i}`;\n return (\n <div className=\"twc-accordion__item\" key={it.value}>\n <button type=\"button\" id={triggerId} className=\"twc-accordion__trigger\" data-open={isOpen || undefined} aria-expanded={isOpen} aria-controls={panelId} onClick={() => toggle(it.value)}>\n {it.icon}\n <span className=\"twc-accordion__label\">{it.label}</span>\n <span className=\"twc-accordion__chevron\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>\n </span>\n </button>\n <div className=\"twc-accordion__panel\" id={panelId} role=\"region\" aria-labelledby={triggerId} data-open={isOpen || undefined}>\n <div className=\"twc-accordion__panel-inner\">\n <div className=\"twc-accordion__content\">{it.content}</div>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n","import React from \"react\";\n\nconst ALERT_CSS = `\n.twc-alert {\n display: flex; gap: var(--space-3); align-items: flex-start;\n padding: var(--space-3) var(--space-4);\n border-radius: var(--radius-lg); font-family: var(--font-sans);\n border: var(--border-thin) solid transparent;\n animation: twico-slide-down var(--duration-base) var(--ease-out);\n}\n/* tone → accent set (default info). Mirrors Button's --_accent model + Badge's tones. */\n.twc-alert { --_accent: var(--color-info); --_accent-fg: var(--color-info-fg); --_accent-subtle: var(--color-info-subtle); --_accent-subtle-fg: var(--color-info-subtle-fg); }\n.twc-alert[data-tone=\"success\"] { --_accent: var(--color-success); --_accent-fg: var(--color-success-fg); --_accent-subtle: var(--color-success-subtle); --_accent-subtle-fg: var(--color-success-subtle-fg); }\n.twc-alert[data-tone=\"warning\"] { --_accent: var(--color-warning); --_accent-fg: var(--color-warning-fg); --_accent-subtle: var(--color-warning-subtle); --_accent-subtle-fg: var(--color-warning-subtle-fg); }\n.twc-alert[data-tone=\"danger\"] { --_accent: var(--color-danger); --_accent-fg: var(--color-danger-fg); --_accent-subtle: var(--color-danger-subtle); --_accent-subtle-fg: var(--color-danger-subtle-fg); }\n.twc-alert[data-tone=\"primary\"] { --_accent: var(--color-primary); --_accent-fg: var(--color-primary-fg); --_accent-subtle: var(--color-primary-subtle); --_accent-subtle-fg: var(--color-primary-subtle-fg); }\n.twc-alert[data-tone=\"neutral\"] { --_accent: var(--color-text); --_accent-fg: var(--color-surface); --_accent-subtle: var(--color-surface-sunken); --_accent-subtle-fg: var(--color-text); }\n\n/* variant = fill (soft default reproduces the original tinted alert) */\n.twc-alert[data-variant=\"soft\"] { background: var(--_accent-subtle); color: var(--_accent-subtle-fg); border-color: color-mix(in srgb, var(--_accent) 30%, transparent); }\n.twc-alert[data-variant=\"solid\"] { background: var(--_accent); color: var(--_accent-fg); border-color: transparent; }\n.twc-alert[data-variant=\"outline\"] { background: transparent; color: var(--_accent-subtle-fg); border-color: var(--_accent); }\n.twc-alert[data-variant=\"solid\"] .twc-alert__desc { color: var(--_accent-fg); opacity: 0.92; }\n\n.twc-alert__icon { flex: none; margin-top: 1px; }\n.twc-alert__icon svg { width: 20px; height: 20px; }\n.twc-alert__body { flex: 1; min-width: 0; }\n.twc-alert__title { font-weight: var(--font-bold); font-size: var(--text-sm); margin-bottom: 2px; }\n.twc-alert__desc { font-size: var(--text-sm); color: var(--color-text-muted); line-height: var(--leading-snug); }\n.twc-alert__close {\n flex: none; display: inline-grid; place-items: center; width: 24px; height: 24px;\n border: none; background: transparent; color: currentColor; opacity: 0.6; cursor: pointer;\n border-radius: var(--radius-sm); transition: opacity var(--duration-fast), background-color var(--duration-fast);\n}\n.twc-alert__close:hover { opacity: 1; background: color-mix(in srgb, currentColor 12%, transparent); }\n.twc-alert__close svg { width: 15px; height: 15px; }\n`;\n\nconst ICONS = {\n info: \"M12 16v-4M12 8h.01\",\n success: \"m9 12 2 2 4-4\",\n warning: \"M12 9v4M12 17h.01\",\n danger: \"M15 9l-6 6M9 9l6 6\",\n primary: \"M12 16v-4M12 8h.01\",\n neutral: \"M12 16v-4M12 8h.01\",\n};\n\nexport function Alert({\n children,\n tone = \"info\",\n variant = \"soft\",\n title,\n icon,\n onClose,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-alert-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-alert-styles\";\n el.textContent = ALERT_CSS;\n document.head.appendChild(el);\n }, []);\n\n return (\n <div className={`twc-alert ${className}`} data-tone={tone} data-variant={variant} role=\"alert\" {...rest}>\n <span className=\"twc-alert__icon\" aria-hidden=\"true\">\n {icon || (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d={ICONS[tone]} />\n </svg>\n )}\n </span>\n <div className=\"twc-alert__body\">\n {title ? <div className=\"twc-alert__title\">{title}</div> : null}\n {children ? <div className=\"twc-alert__desc\">{children}</div> : null}\n </div>\n {onClose ? (\n <button className=\"twc-alert__close\" onClick={onClose} aria-label=\"Dismiss\" type=\"button\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\n </button>\n ) : null}\n </div>\n );\n}\n","import React from \"react\";\n\nconst AVATAR_CSS = `\n.twc-avatar {\n --_sz: 40px;\n position: relative; flex: none; display: inline-grid; place-items: center;\n width: var(--_sz); height: var(--_sz);\n border-radius: var(--radius-full);\n background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg);\n font-family: var(--font-sans); font-weight: var(--font-semibold);\n font-size: calc(var(--_sz) * 0.4); line-height: 1;\n overflow: visible; user-select: none;\n}\n.twc-avatar[data-size=\"xs\"] { --_sz: 24px; }\n.twc-avatar[data-size=\"sm\"] { --_sz: 32px; }\n.twc-avatar[data-size=\"lg\"] { --_sz: 56px; }\n.twc-avatar[data-size=\"xl\"] { --_sz: 72px; }\n.twc-avatar__img { width: 100%; height: 100%; border-radius: var(--radius-full); object-fit: cover; }\n.twc-avatar[data-square=\"true\"], .twc-avatar[data-square=\"true\"] .twc-avatar__img { border-radius: var(--radius-md); }\n.twc-avatar__ring { box-shadow: 0 0 0 2px var(--color-surface), 0 0 0 4px var(--color-primary); }\n.twc-avatar__status {\n position: absolute; inset-inline-end: 0; bottom: 0;\n width: 28%; height: 28%; min-width: 8px; min-height: 8px;\n border-radius: var(--radius-full); border: 2px solid var(--color-surface);\n}\n.twc-avatar__status[data-status=\"online\"] { background: var(--color-success); }\n.twc-avatar__status[data-status=\"busy\"] { background: var(--color-danger); }\n.twc-avatar__status[data-status=\"away\"] { background: var(--color-warning); }\n.twc-avatar__status[data-status=\"offline\"] { background: var(--color-text-subtle); }\n`;\n\nfunction initials(name) {\n if (!name) return \"?\";\n const trimmed = name.trim();\n if (!trimmed) return \"?\";\n const parts = trimmed.split(/\\s+/);\n return (parts[0][0] + (parts[1] ? parts[1][0] : \"\")).toUpperCase();\n}\n\n// Block javascript:/vbscript: URLs (incl. whitespace/control-char obfuscation that\n// browsers strip) from reaching the <img> src; data:/blob: stay allowed for previews.\nfunction safeSrc(url) {\n if (url == null) return undefined;\n const s = String(url).replace(/[\\x00-\\x20]+/g, \"\").toLowerCase();\n return s.startsWith(\"javascript:\") || s.startsWith(\"vbscript:\") ? undefined : url;\n}\n\nexport function Avatar({\n src,\n name,\n size = \"md\",\n square = false,\n status,\n ring = false,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-avatar-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-avatar-styles\";\n el.textContent = AVATAR_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [errored, setErrored] = React.useState(false);\n const cleanSrc = safeSrc(src);\n const showImg = cleanSrc && !errored;\n\n return (\n <span\n className={`twc-avatar ${ring ? \"twc-avatar__ring\" : \"\"} ${className}`}\n data-size={size}\n data-square={square || undefined}\n role=\"img\"\n aria-label={name || \"avatar\"}\n {...rest}\n >\n {showImg\n ? <img key={cleanSrc} className=\"twc-avatar__img\" src={cleanSrc} alt={name || \"\"} onError={() => setErrored(true)} />\n : initials(name)}\n {status ? <span className=\"twc-avatar__status\" data-status={status} /> : null}\n </span>\n );\n}\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nconst MENU_CSS = `\n.twc-menu-wrap { position: relative; display: inline-flex; }\n.twc-menu {\n position: fixed; z-index: var(--z-dropdown); min-width: 200px;\n padding: var(--space-1-5); background: var(--color-surface-raised);\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg);\n box-shadow: var(--shadow-lg); font-family: var(--font-sans);\n transform-origin: top; overflow-y: auto;\n}\n.twc-menu[data-state=\"open\"] { animation: twico-scale-in var(--duration-fast) var(--ease-spring); }\n.twc-menu[data-state=\"closed\"] { animation: twc-menu-out var(--duration-exit) var(--ease-in) forwards; pointer-events: none; }\n@keyframes twc-menu-out { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.96); } }\n@media (prefers-reduced-motion: reduce) { .twc-menu[data-state] { animation-duration: 1ms; } }\n.twc-menu[data-flip=\"true\"] { transform-origin: bottom; }\n.twc-menu__header { display: flex; align-items: center; gap: var(--space-2-5); padding: 8px 10px 10px; margin-bottom: var(--space-1-5); border-bottom: var(--border-thin) solid var(--color-divider); }\n.twc-menu__header-main { min-width: 0; }\n.twc-menu__header-title { font-size: var(--text-sm); font-weight: var(--font-bold); color: var(--color-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.twc-menu__header-sub { font-size: var(--text-xs); color: var(--color-text-subtle); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.twc-menu__label { padding: 6px 10px 4px; font-size: var(--text-xs); font-weight: var(--font-semibold); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); }\n.twc-menu__sep { height: 1px; background: var(--color-divider); margin: var(--space-1-5) 0; }\n.twc-menu__item {\n display: flex; align-items: center; gap: var(--space-2-5); width: 100%;\n padding: 8px 10px; border: none; background: transparent; cursor: pointer;\n font-family: inherit; font-size: var(--text-sm); font-weight: var(--font-medium);\n color: var(--color-text); text-align: start; border-radius: var(--radius-md);\n transition: background-color var(--duration-fast) var(--ease-standard);\n}\n.twc-menu__item:hover:not(:disabled), .twc-menu__item[data-active=\"true\"]:not(:disabled) { background: var(--color-surface-sunken); }\n.twc-menu__item:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-menu__item:disabled { opacity: 0.45; cursor: not-allowed; }\n.twc-menu__item[data-danger=\"true\"] { color: var(--color-danger-subtle-fg); }\n.twc-menu__item[data-danger=\"true\"]:hover:not(:disabled), .twc-menu__item[data-danger=\"true\"][data-active=\"true\"]:not(:disabled) { background: var(--color-danger-subtle); }\n.twc-menu__item svg { width: 16px; height: 16px; flex: none; }\n.twc-menu__item-label { flex: 1 1 auto; min-width: 0; }\n.twc-menu__shortcut { margin-inline-start: auto; padding-inline-start: var(--space-3); font-size: var(--text-xs); color: var(--color-text-subtle); font-family: var(--font-mono); }\n`;\n\nexport function Menu({\n trigger,\n items,\n align = \"start\",\n header,\n width,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-menu-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-menu-styles\";\n el.textContent = MENU_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [openState, setOpenState] = React.useState(defaultOpen);\n const [render, setRender] = React.useState(false);\n const [pos, setPos] = React.useState(null);\n const [active, setActive] = React.useState(-1);\n const wrapRef = React.useRef(null);\n const menuRef = React.useRef(null);\n const menuId = React.useId();\n\n // Controlled when an `open` prop is passed; uncontrolled (internal state) otherwise.\n // Every internal open/close request goes through setOpen so `onOpenChange` always fires.\n const controlled = openProp !== undefined;\n const open = controlled ? !!openProp : openState;\n const openRef = React.useRef(open);\n openRef.current = open;\n const controlledRef = React.useRef(controlled);\n controlledRef.current = controlled;\n const onOpenChangeRef = React.useRef(onOpenChange);\n onOpenChangeRef.current = onOpenChange;\n const setOpen = React.useCallback((next) => {\n const value = typeof next === \"function\" ? next(openRef.current) : next;\n if (value === openRef.current) return;\n if (!controlledRef.current) setOpenState(value);\n onOpenChangeRef.current?.(value);\n }, []);\n const RD = { createPortal: (typeof createPortal === \"function\" ? createPortal : (typeof window !== \"undefined\" && window.ReactDOM && window.ReactDOM.createPortal)) };\n\n const interactiveIdx = items.map((it, i) => (!it.separator && !it.heading ? i : -1)).filter((i) => i >= 0);\n\n const place = React.useCallback(() => {\n const t = wrapRef.current; if (!t) return;\n const r = t.getBoundingClientRect();\n const w = width || Math.max(200, r.width);\n const gap = 6, M = 8, vw = window.innerWidth, vh = window.innerHeight;\n const estH = menuRef.current ? menuRef.current.offsetHeight : 220;\n const flip = vh - r.bottom < estH + gap && r.top > vh - r.bottom;\n const top = flip ? undefined : r.bottom + gap;\n const bottom = flip ? vh - r.top + gap : undefined;\n let left = align === \"end\" ? r.right - w : r.left;\n left = Math.max(M, Math.min(left, vw - w - M));\n // Vertical room for the chosen placement, so a long menu scrolls instead of overflowing.\n const avail = (flip ? r.top : vh - r.bottom) - gap - M;\n setPos({ top, bottom, left, width: w, flip, maxHeight: Math.max(120, avail) });\n }, [align, width]);\n\n React.useEffect(() => {\n if (!open) return;\n place();\n const onMove = () => place();\n const onDown = (e) => {\n if (wrapRef.current?.contains(e.target)) return;\n if (menuRef.current?.contains(e.target)) return;\n setOpen(false);\n };\n window.addEventListener(\"scroll\", onMove, true);\n window.addEventListener(\"resize\", onMove);\n document.addEventListener(\"mousedown\", onDown);\n return () => {\n window.removeEventListener(\"scroll\", onMove, true);\n window.removeEventListener(\"resize\", onMove);\n document.removeEventListener(\"mousedown\", onDown);\n };\n }, [open, place]);\n\n // Keep the menu mounted through the close animation, then unmount.\n React.useEffect(() => {\n if (open) { setRender(true); return; }\n const t = setTimeout(() => setRender(false), 170);\n return () => clearTimeout(t);\n }, [open]);\n\n const toggle = () => { setOpen((o) => !o); setActive(-1); };\n\n function onKeyDown(e) {\n if (!open) {\n if (e.key === \"Enter\" || e.key === \" \" || e.key === \"ArrowDown\") { e.preventDefault(); setOpen(true); setActive(-1); }\n return;\n }\n if (e.key === \"Escape\") { e.preventDefault(); setOpen(false); return; }\n // APG: Tab closes the menu and lets focus move on naturally (the items are not in\n // the tab order — focus is managed via aria-activedescendant on the trigger).\n if (e.key === \"Tab\") { setOpen(false); return; }\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n const list = interactiveIdx;\n const curPos = list.indexOf(active);\n let next = e.key === \"ArrowDown\" ? curPos + 1 : curPos - 1;\n if (next < 0) next = list.length - 1; if (next >= list.length) next = 0;\n setActive(list[next]);\n } else if (e.key === \"Home\" || e.key === \"End\") {\n e.preventDefault();\n const list = interactiveIdx;\n if (list.length) setActive(e.key === \"Home\" ? list[0] : list[list.length - 1]);\n } else if ((e.key === \"Enter\" || e.key === \" \") && active >= 0) {\n e.preventDefault();\n const it = items[active];\n if (it && !it.disabled) { it.onClick?.(); setOpen(false); }\n }\n }\n\n const menu = render && pos ? (\n <div className=\"twc-menu\" id={menuId} ref={menuRef} data-state={open ? \"open\" : \"closed\"} data-align={align} data-flip={pos.flip || undefined} role=\"menu\"\n style={{ top: pos.top, bottom: pos.bottom, left: pos.left, minWidth: pos.width, width: pos.width, maxHeight: pos.maxHeight }}>\n {header ? <div className=\"twc-menu__header\">{header}</div> : null}\n {items.map((it, i) => {\n if (it.separator) return <div key={`s${i}`} className=\"twc-menu__sep\" role=\"separator\" />;\n if (it.label && it.heading) return <div key={`h${i}`} className=\"twc-menu__label\">{it.label}</div>;\n return (\n <button\n key={i}\n type=\"button\"\n id={`${menuId}-item-${i}`}\n className=\"twc-menu__item\"\n role=\"menuitem\"\n tabIndex={-1}\n data-danger={it.danger || undefined}\n data-active={active === i || undefined}\n disabled={it.disabled}\n onMouseEnter={() => setActive(i)}\n onClick={() => { it.onClick?.(); setOpen(false); }}\n >\n {it.icon}\n <span className=\"twc-menu__item-label\">{it.label}</span>\n {it.shortcut ? <span className=\"twc-menu__shortcut\">{it.shortcut}</span> : null}\n </button>\n );\n })}\n </div>\n ) : null;\n\n // Make the trigger a proper, focusable menu button that announces its popup +\n // open state. Clone a passed element (so a <button>/IconButton keeps its own\n // semantics) or wrap a non-element trigger in a focusable role=\"button\" span.\n // aria-activedescendant mirrors the highlighted item for screen readers while\n // DOM focus stays on the trigger.\n const activeDescId = open && active >= 0 ? `${menuId}-item-${active}` : undefined;\n const triggerEl = React.isValidElement(trigger)\n ? React.cloneElement(trigger, {\n onClick: (e) => { trigger.props.onClick?.(e); toggle(); },\n tabIndex: trigger.props.tabIndex ?? 0,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n \"aria-controls\": open ? menuId : undefined,\n \"aria-activedescendant\": activeDescId,\n })\n : (\n <span role=\"button\" tabIndex={0} aria-haspopup=\"menu\" aria-expanded={open}\n aria-controls={open ? menuId : undefined} aria-activedescendant={activeDescId} onClick={toggle}>\n {trigger}\n </span>\n );\n\n return (\n <span className={`twc-menu-wrap ${className}`} ref={wrapRef} onKeyDown={onKeyDown} {...rest}>\n {triggerEl}\n {menu && RD && RD.createPortal ? RD.createPortal(menu, document.body) : menu}\n </span>\n );\n}\n","import React from \"react\";\nimport { Avatar } from \"./Avatar\";\nimport { Menu } from \"../overlay/Menu\";\n\nconst AVATARMENU_CSS = `\n.twc-avatar-menu { display: inline-flex; align-items: center; gap: var(--space-2); padding: 3px 4px 3px 3px; border: none; background: transparent;\n cursor: pointer; border-radius: var(--radius-full); font-family: var(--font-sans); color: var(--color-text);\n transition: background-color var(--duration-fast) var(--ease-standard); }\n.twc-avatar-menu:hover { background: var(--color-surface-sunken); }\n.twc-avatar-menu:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-avatar-menu__text { display: flex; flex-direction: column; align-items: flex-start; gap: 0; min-width: 0; line-height: 1.2; }\n.twc-avatar-menu__name { font-size: var(--text-sm); font-weight: var(--font-semibold); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 140px; }\n.twc-avatar-menu__sub { font-size: var(--text-xs); color: var(--color-text-subtle); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 140px; }\n.twc-avatar-menu__chev { color: var(--color-text-subtle); display: inline-flex; flex: none; margin-inline-end: 2px; transition: transform var(--duration-base) var(--ease-spring); }\n.twc-avatar-menu__chev svg { width: 15px; height: 15px; }\n`;\n\nexport function AvatarMenu({\n name,\n src,\n email,\n subtitle,\n status,\n size = \"sm\",\n items,\n showName = false,\n showChevron,\n align = \"end\",\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-avatar-menu-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-avatar-menu-styles\";\n el.textContent = AVATARMENU_CSS;\n document.head.appendChild(el);\n }, []);\n\n const sub = subtitle ?? email;\n const showChev = showChevron ?? showName;\n\n const header = (\n <>\n <Avatar name={name} src={src} size=\"md\" status={status} />\n <span className=\"twc-menu__header-main\">\n <span className=\"twc-menu__header-title\">{name}</span>\n {sub ? <span className=\"twc-menu__header-sub\">{sub}</span> : null}\n </span>\n </>\n );\n\n const trigger = (\n <span\n className=\"twc-avatar-menu\"\n role=\"button\"\n tabIndex={0}\n aria-haspopup=\"menu\"\n aria-label={`${name || \"Account\"} menu`}\n >\n <Avatar name={name} src={src} size={size} status={status} />\n {showName ? (\n <span className=\"twc-avatar-menu__text\">\n <span className=\"twc-avatar-menu__name\">{name}</span>\n {sub ? <span className=\"twc-avatar-menu__sub\">{sub}</span> : null}\n </span>\n ) : null}\n {showChev ? (\n <span className=\"twc-avatar-menu__chev\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>\n </span>\n ) : null}\n </span>\n );\n\n return <Menu className={className} trigger={trigger} items={items} header={header} align={align} width={240} {...rest} />;\n}\n","import React from \"react\";\n\nconst BADGE_CSS = `\n.twc-badge {\n display: inline-flex; align-items: center; gap: 5px;\n padding: 2px 9px; height: 22px;\n font-family: var(--font-sans); font-size: var(--text-xs); font-weight: var(--font-semibold);\n line-height: 1; letter-spacing: 0.01em; border-radius: var(--radius-full);\n border: var(--border-thin) solid transparent; white-space: nowrap;\n}\n.twc-badge[data-size=\"sm\"] { height: 18px; gap: 4px; font-size: var(--text-xs); padding: 1px 7px; }\n.twc-badge[data-size=\"lg\"] { height: 26px; font-size: var(--text-sm); padding: 3px 12px; }\n.twc-badge__dot { width: 6px; height: 6px; border-radius: var(--radius-full); background: currentColor; }\n\n/* soft (default) */\n.twc-badge[data-variant=\"soft\"][data-tone=\"primary\"] { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\n.twc-badge[data-variant=\"soft\"][data-tone=\"success\"] { background: var(--color-success-subtle); color: var(--color-success-subtle-fg); }\n.twc-badge[data-variant=\"soft\"][data-tone=\"warning\"] { background: var(--color-warning-subtle); color: var(--color-warning-subtle-fg); }\n.twc-badge[data-variant=\"soft\"][data-tone=\"danger\"] { background: var(--color-danger-subtle); color: var(--color-danger-subtle-fg); }\n.twc-badge[data-variant=\"soft\"][data-tone=\"info\"] { background: var(--color-info-subtle); color: var(--color-info-subtle-fg); }\n.twc-badge[data-variant=\"soft\"][data-tone=\"neutral\"] { background: var(--color-surface-sunken); color: var(--color-text-muted); }\n\n/* solid */\n.twc-badge[data-variant=\"solid\"][data-tone=\"primary\"] { background: var(--color-primary); color: var(--color-primary-fg); }\n.twc-badge[data-variant=\"solid\"][data-tone=\"success\"] { background: var(--color-success); color: var(--color-success-fg); }\n.twc-badge[data-variant=\"solid\"][data-tone=\"warning\"] { background: var(--color-warning); color: var(--color-warning-fg); }\n.twc-badge[data-variant=\"solid\"][data-tone=\"danger\"] { background: var(--color-danger); color: var(--color-danger-fg); }\n.twc-badge[data-variant=\"solid\"][data-tone=\"info\"] { background: var(--color-info); color: var(--color-info-fg); }\n.twc-badge[data-variant=\"solid\"][data-tone=\"neutral\"] { background: var(--color-text); color: var(--color-surface); }\n\n/* outline */\n.twc-badge[data-variant=\"outline\"] { background: transparent; }\n.twc-badge[data-variant=\"outline\"][data-tone=\"primary\"] { color: var(--color-primary); border-color: var(--color-primary-border); }\n.twc-badge[data-variant=\"outline\"][data-tone=\"success\"] { color: var(--color-success-subtle-fg); border-color: var(--color-success); }\n.twc-badge[data-variant=\"outline\"][data-tone=\"warning\"] { color: var(--color-warning-subtle-fg); border-color: var(--color-warning); }\n.twc-badge[data-variant=\"outline\"][data-tone=\"danger\"] { color: var(--color-danger-subtle-fg); border-color: var(--color-danger); }\n.twc-badge[data-variant=\"outline\"][data-tone=\"info\"] { color: var(--color-info-subtle-fg); border-color: var(--color-info); }\n.twc-badge[data-variant=\"outline\"][data-tone=\"neutral\"] { color: var(--color-text-muted); border-color: var(--color-border-strong); }\n`;\n\nexport function Badge({\n children,\n tone = \"primary\",\n variant = \"soft\",\n size = \"md\",\n dot = false,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-badge-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-badge-styles\";\n el.textContent = BADGE_CSS;\n document.head.appendChild(el);\n }, []);\n\n return (\n <span className={`twc-badge ${className}`} data-tone={tone} data-variant={variant} data-size={size} {...rest}>\n {dot ? <span className=\"twc-badge__dot\" /> : null}\n {children}\n </span>\n );\n}\n","import React from \"react\";\n\nconst BREADCRUMB_CSS = `\n.twc-breadcrumb { display: flex; align-items: center; flex-wrap: wrap; gap: 2px; font-family: var(--font-sans); font-size: var(--text-sm); }\n.twc-breadcrumb__item { display: inline-flex; align-items: center; gap: 6px; color: var(--color-text-muted); text-decoration: none; padding: 3px 7px; border-radius: var(--radius-sm); transition: color var(--duration-fast) var(--ease-standard), background-color var(--duration-fast) var(--ease-standard); }\n.twc-breadcrumb__item:hover:not([aria-current]) { color: var(--color-text); background: var(--color-surface-sunken); }\n.twc-breadcrumb__item[aria-current=\"page\"] { color: var(--color-text); font-weight: var(--font-semibold); cursor: default; }\n.twc-breadcrumb__item svg { width: 15px; height: 15px; flex: none; }\n.twc-breadcrumb__sep { display: inline-flex; align-items: center; color: var(--color-text-subtle); pointer-events: none; }\n.twc-breadcrumb__sep svg { width: 15px; height: 15px; }\n[dir=\"rtl\"] .twc-breadcrumb__sep svg { transform: scaleX(-1); }\n.twc-breadcrumb__ellipsis { border: none; background: transparent; cursor: pointer; color: var(--color-text-subtle); padding: 3px 7px; border-radius: var(--radius-sm); font: inherit; }\n.twc-breadcrumb__ellipsis:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n`;\n\n// Block javascript:/data:/vbscript: URLs (incl. whitespace/control-char obfuscation\n// that browsers strip) from reaching a DOM href. Consumer hrefs are a trust boundary.\nfunction safeHref(url) {\n if (url == null) return undefined;\n const s = String(url).replace(/[\\x00-\\x20]+/g, \"\").toLowerCase();\n return s.startsWith(\"javascript:\") || s.startsWith(\"data:\") || s.startsWith(\"vbscript:\") ? undefined : url;\n}\n\nconst ChevronSep = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg>\n);\n\nexport function Breadcrumb({\n items,\n separator,\n maxItems = 0,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-breadcrumb-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-breadcrumb-styles\";\n el.textContent = BREADCRUMB_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [expanded, setExpanded] = React.useState(false);\n const sep = separator || <ChevronSep />;\n\n let display = items;\n let collapsed = false;\n if (maxItems > 0 && items.length > maxItems && !expanded) {\n // keep first 1 + last (maxItems - 1)\n const head = items.slice(0, 1);\n const keepTail = Math.max(1, maxItems - 1);\n const tail = items.slice(items.length - keepTail);\n display = [...head, { ellipsis: true }, ...tail];\n collapsed = true;\n }\n\n return (\n <nav className={`twc-breadcrumb ${className}`} aria-label=\"Breadcrumb\" {...rest}>\n {display.map((it, i) => {\n const last = i === display.length - 1;\n return (\n <React.Fragment key={i}>\n {it.ellipsis ? (\n <button className=\"twc-breadcrumb__ellipsis\" aria-label=\"Show more\" onClick={() => setExpanded(true)}>…</button>\n ) : last ? (\n <span\n className=\"twc-breadcrumb__item\"\n aria-current=\"page\"\n onClick={it.onClick}\n >\n {it.icon ? <span aria-hidden=\"true\" style={{ display: \"inline-flex\" }}>{it.icon}</span> : null}\n {it.label}\n </span>\n ) : (\n <a\n className=\"twc-breadcrumb__item\"\n href={safeHref(it.href) || \"#\"}\n onClick={it.onClick}\n >\n {it.icon ? <span aria-hidden=\"true\" style={{ display: \"inline-flex\" }}>{it.icon}</span> : null}\n {it.label}\n </a>\n )}\n {!last ? <span className=\"twc-breadcrumb__sep\" aria-hidden=\"true\">{sep}</span> : null}\n </React.Fragment>\n );\n })}\n </nav>\n );\n}\n","import React from \"react\";\n\nconst CSS = `\n.twc-btn {\n --_h: var(--control-h-md);\n --_px: var(--space-4);\n --_fs: var(--text-sm);\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-2);\n height: var(--_h);\n padding-inline: var(--_px);\n font-family: var(--font-sans);\n font-size: var(--_fs);\n font-weight: var(--font-semibold);\n line-height: 1;\n letter-spacing: -0.01em;\n border: var(--border-thin) solid transparent;\n border-radius: var(--radius-md);\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n overflow: hidden;\n text-decoration: none;\n transition: background-color var(--duration-fast) var(--ease-standard),\n border-color var(--duration-fast) var(--ease-standard),\n color var(--duration-fast) var(--ease-standard),\n box-shadow var(--duration-fast) var(--ease-standard),\n transform var(--duration-fast) var(--ease-spring);\n}\n.twc-btn:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-btn:active:not(:disabled) { transform: scale(var(--press-scale)); }\n.twc-btn:disabled { opacity: 0.5; cursor: not-allowed; }\n/* Hide the label/icons under the centered spinner via visibility on the content\n span — variant rules set \\`color\\` later in this sheet, so a color-based hide\n would lose the specificity tie and leave the label showing through. */\n.twc-btn[data-loading=\"true\"] { cursor: progress; }\n.twc-btn[data-loading=\"true\"] .twc-btn__content { visibility: hidden; }\n.twc-btn[data-block=\"true\"] { width: 100%; }\n.twc-btn__content { display: inline-flex; align-items: center; gap: var(--space-2); min-width: 0; }\n\n/* xs: ~26px tall — composed from space tokens (no global control-h-xs token). */\n.twc-btn[data-size=\"xs\"] { --_h: calc(var(--space-6) + var(--space-0-5)); --_px: var(--space-2-5); --_fs: var(--text-xs); }\n.twc-btn[data-size=\"sm\"] { --_h: var(--control-h-sm); --_px: var(--space-3); --_fs: var(--text-xs); }\n.twc-btn[data-size=\"lg\"] { --_h: var(--control-h-lg); --_px: var(--space-6); --_fs: var(--text-base); }\n\n/* tone supplies the accent color set; variant decides how it's applied. Default tone is primary;\n danger reuses its (active-less) hover for the pressed state. */\n.twc-btn {\n --_accent: var(--color-primary); --_accent-hover: var(--color-primary-hover); --_accent-active: var(--color-primary-active);\n --_accent-fg: var(--color-primary-fg); --_accent-subtle: var(--color-primary-subtle); --_accent-subtle-fg: var(--color-primary-subtle-fg);\n}\n.twc-btn[data-tone=\"danger\"] {\n --_accent: var(--color-danger); --_accent-hover: var(--color-danger-hover); --_accent-active: var(--color-danger-hover);\n --_accent-fg: var(--color-danger-fg); --_accent-subtle: var(--color-danger-subtle); --_accent-subtle-fg: var(--color-danger-subtle-fg);\n}\n/* solid */\n.twc-btn[data-variant=\"solid\"] { background: var(--_accent); color: var(--_accent-fg); }\n.twc-btn[data-variant=\"solid\"]:hover:not(:disabled) { background: var(--_accent-hover); box-shadow: var(--shadow-brand); }\n.twc-btn[data-variant=\"solid\"]:active:not(:disabled) { background: var(--_accent-active); }\n/* soft */\n.twc-btn[data-variant=\"soft\"] { background: var(--_accent-subtle); color: var(--_accent-subtle-fg); }\n.twc-btn[data-variant=\"soft\"]:hover:not(:disabled) { background: var(--_accent-subtle); filter: brightness(0.97); }\n.dark .twc-btn[data-variant=\"soft\"]:hover:not(:disabled) { filter: brightness(1.25); }\n/* outline — neutral at rest, accent on hover */\n.twc-btn[data-variant=\"outline\"] { background: transparent; color: var(--color-text); border-color: var(--color-border-strong); }\n.twc-btn[data-variant=\"outline\"]:hover:not(:disabled) { background: var(--color-surface-sunken); border-color: var(--_accent); color: var(--_accent); }\n/* ghost — neutral at rest, accent on hover */\n.twc-btn[data-variant=\"ghost\"] { background: transparent; color: var(--color-text-muted); }\n.twc-btn[data-variant=\"ghost\"]:hover:not(:disabled) { background: var(--color-surface-sunken); color: var(--_accent); }\n\n.twc-btn__spinner {\n position: absolute; inset: 0; margin: auto;\n width: 1.1em; height: 1.1em;\n border: 2px solid currentColor; border-right-color: transparent;\n border-radius: var(--radius-full);\n color: var(--_accent-fg);\n animation: twico-spin 0.6s linear infinite;\n}\n.twc-btn[data-variant=\"soft\"] .twc-btn__spinner,\n.twc-btn[data-variant=\"outline\"] .twc-btn__spinner,\n.twc-btn[data-variant=\"ghost\"] .twc-btn__spinner { color: var(--_accent); }\n\n.twc-ripple {\n position: absolute; border-radius: var(--radius-full);\n background: currentColor; opacity: 0.3;\n transform: scale(0); pointer-events: none;\n animation: twico-ripple var(--duration-slow) var(--ease-out) forwards;\n}\n`;\n\n// Block javascript:/data:/vbscript: URLs (incl. whitespace/control-char obfuscation\n// that browsers strip) from reaching a DOM href. Consumer hrefs are a trust boundary.\nfunction safeHref(url) {\n if (url == null) return undefined;\n const s = String(url).replace(/[\\x00-\\x20]+/g, \"\").toLowerCase();\n return s.startsWith(\"javascript:\") || s.startsWith(\"data:\") || s.startsWith(\"vbscript:\") ? undefined : url;\n}\n\nfunction useInjectedStyle(id, css) {\n React.useInsertionEffect(() => {\n if (document.getElementById(id)) return;\n const el = document.createElement(\"style\");\n el.id = id;\n el.textContent = css;\n document.head.appendChild(el);\n }, [id, css]);\n}\n\nexport function Button({\n children,\n variant = \"solid\",\n tone = \"primary\",\n size = \"md\",\n leftIcon,\n rightIcon,\n loading = false,\n fullWidth = false,\n disabled = false,\n as = \"button\",\n href,\n className = \"\",\n onClick,\n ...rest\n}) {\n useInjectedStyle(\"twc-btn-styles\", CSS);\n const [ripples, setRipples] = React.useState([]);\n const Tag = as;\n const inert = Tag === \"a\" && (disabled || loading);\n\n function handleClick(e) {\n if (disabled || loading) {\n if (inert) e.preventDefault();\n return;\n }\n const rect = e.currentTarget.getBoundingClientRect();\n const size = Math.max(rect.width, rect.height);\n // Keyboard activation (Enter/Space) has no pointer coords — clientX/Y are 0 and\n // e.detail is 0 — so center the ripple instead of pinning it to the corner.\n const keyboard = e.detail === 0 || (e.clientX === 0 && e.clientY === 0);\n const x = keyboard ? rect.width / 2 - size / 2 : e.clientX - rect.left - size / 2;\n const y = keyboard ? rect.height / 2 - size / 2 : e.clientY - rect.top - size / 2;\n const id = Date.now() + Math.random();\n setRipples((r) => [...r, { id, size, x, y }]);\n setTimeout(() => setRipples((r) => r.filter((x) => x.id !== id)), 600);\n onClick?.(e);\n }\n\n return (\n <Tag\n className={`twc-btn ${className}`}\n data-variant={variant}\n data-tone={tone}\n data-size={size}\n data-loading={loading || undefined}\n data-block={fullWidth || undefined}\n disabled={Tag === \"button\" ? disabled || loading : undefined}\n type={Tag === \"button\" ? \"button\" : undefined}\n href={inert ? undefined : safeHref(href)}\n aria-disabled={inert || undefined}\n tabIndex={inert ? -1 : undefined}\n aria-busy={loading || undefined}\n onClick={handleClick}\n {...rest}\n >\n <span className=\"twc-btn__content\">\n {leftIcon ? <span className=\"twc-btn__icon\" aria-hidden=\"true\">{leftIcon}</span> : null}\n {children}\n {rightIcon ? <span className=\"twc-btn__icon\" aria-hidden=\"true\">{rightIcon}</span> : null}\n </span>\n {loading ? <span className=\"twc-btn__spinner\" aria-hidden=\"true\" /> : null}\n {ripples.map((r) => (\n <span\n key={r.id}\n className=\"twc-ripple\"\n style={{ width: r.size, height: r.size, left: r.x, top: r.y }}\n />\n ))}\n </Tag>\n );\n}\n","import React from \"react\";\n\nconst CARD_CSS = `\n.twc-card {\n display: flex; flex-direction: column;\n background: var(--color-surface);\n border-radius: var(--radius-lg);\n font-family: var(--font-sans); color: var(--color-text);\n overflow: hidden;\n transition: box-shadow var(--duration-base) var(--ease-standard),\n transform var(--duration-base) var(--ease-spring),\n border-color var(--duration-base) var(--ease-standard);\n}\n.twc-card[data-variant=\"elevated\"] { box-shadow: var(--shadow-md); border: var(--border-thin) solid transparent; }\n.twc-card[data-variant=\"outline\"] { border: var(--border-thin) solid var(--color-border); }\n.twc-card[data-variant=\"soft\"] { background: var(--color-surface-sunken); border: var(--border-thin) solid transparent; }\n.twc-card[data-interactive=\"true\"] { cursor: pointer; }\n.twc-card[data-interactive=\"true\"]:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); border-color: var(--color-primary-border); }\n/* Fill the parent cell — equal-height cards in a grid/flex row. */\n.twc-card[data-full=\"true\"] { height: 100%; }\n.twc-card[data-pad=\"md\"] { padding: var(--space-5); }\n.twc-card[data-pad=\"lg\"] { padding: var(--space-6); }\n.twc-card[data-pad=\"none\"] { padding: 0; }\n.twc-card__header { display: flex; flex-direction: column; gap: 2px; margin-bottom: var(--space-3); }\n.twc-card__title { font-size: var(--text-lg); font-weight: var(--font-bold); letter-spacing: -0.01em; }\n.twc-card__subtitle { font-size: var(--text-sm); color: var(--color-text-muted); }\n.twc-card__body { font-size: var(--text-sm); color: var(--color-text-muted); line-height: var(--leading-normal); }\n.twc-card__footer { margin-top: var(--space-4); display: flex; gap: var(--space-2); align-items: center; }\n`;\n\nexport function Card({\n children,\n title,\n subtitle,\n footer,\n variant = \"elevated\",\n padding = \"md\",\n interactive = false,\n fullHeight = false,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-card-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-card-styles\";\n el.textContent = CARD_CSS;\n document.head.appendChild(el);\n }, []);\n\n return (\n <div\n className={`twc-card ${className}`}\n data-variant={variant}\n data-pad={padding}\n data-interactive={interactive || undefined}\n data-full={fullHeight || undefined}\n {...rest}\n >\n {(title || subtitle) ? (\n <div className=\"twc-card__header\">\n {title ? <div className=\"twc-card__title\">{title}</div> : null}\n {subtitle ? <div className=\"twc-card__subtitle\">{subtitle}</div> : null}\n </div>\n ) : null}\n {children ? <div className=\"twc-card__body\">{children}</div> : null}\n {footer ? <div className=\"twc-card__footer\">{footer}</div> : null}\n </div>\n );\n}\n","import React from \"react\";\n\nconst CAROUSEL_CSS = `\n.twc-carousel { position: relative; font-family: var(--font-sans); }\n.twc-carousel__viewport { overflow: hidden; border-radius: var(--radius-xl); }\n.twc-carousel__track { display: flex; transition: transform var(--duration-slow) var(--ease-emphasis); }\n.twc-carousel__slide { flex: 0 0 100%; min-width: 0; }\n.twc-carousel__arrow { position: absolute; top: 50%; transform: translateY(-50%); z-index: 2;\n display: grid; place-items: center; width: 38px; height: 38px; border-radius: var(--radius-full);\n background: color-mix(in srgb, var(--color-surface) 88%, transparent); color: var(--color-text);\n border: var(--border-thin) solid var(--color-border); box-shadow: var(--shadow-md); cursor: pointer; backdrop-filter: blur(6px);\n transition: background-color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring); }\n.twc-carousel__arrow:hover { background: var(--color-surface); }\n.twc-carousel__arrow:active { transform: translateY(-50%) scale(0.9); }\n.twc-carousel__arrow:disabled { opacity: 0; pointer-events: none; }\n.twc-carousel__arrow[data-dir=\"prev\"] { inset-inline-start: 12px; }\n.twc-carousel__arrow[data-dir=\"next\"] { inset-inline-end: 12px; }\n.twc-carousel__arrow svg { width: 18px; height: 18px; }\n[dir=\"rtl\"] .twc-carousel__arrow svg { transform: scaleX(-1); }\n.twc-carousel__dots { display: flex; justify-content: center; gap: 7px; margin-top: var(--space-3); }\n.twc-carousel__dot { width: 8px; height: 8px; border-radius: var(--radius-full); border: none; padding: 0; cursor: pointer;\n background: var(--color-border-strong); transition: width var(--duration-base) var(--ease-spring), background-color var(--duration-fast); }\n.twc-carousel__dot[data-active=\"true\"] { width: 22px; background: var(--color-primary); }\n`;\n\nexport function Carousel({\n children,\n index: indexProp,\n defaultIndex = 0,\n onIndexChange,\n showArrows = true,\n showDots = true,\n loop = true,\n autoPlay = false,\n interval = 4000,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-carousel-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-carousel-styles\";\n el.textContent = CAROUSEL_CSS;\n document.head.appendChild(el);\n }, []);\n\n const slides = React.Children.toArray(children);\n const count = slides.length;\n const [internal, setInternal] = React.useState(defaultIndex);\n const index = indexProp !== undefined ? indexProp : internal;\n const [paused, setPaused] = React.useState(false);\n\n const setIndex = React.useCallback((i) => {\n if (indexProp === undefined) setInternal(i);\n onIndexChange?.(i);\n }, [indexProp, onIndexChange]);\n\n const go = React.useCallback((i) => {\n setIndex(loop ? (i + count) % count : Math.min(Math.max(i, 0), count - 1));\n }, [count, loop, setIndex]);\n\n React.useEffect(() => {\n if (!autoPlay || paused || count <= 1) return;\n const t = setInterval(() => {\n const next = loop ? (index + 1) % count : (index + 1 >= count ? index : index + 1);\n if (next !== index) setIndex(next);\n }, interval);\n return () => clearInterval(t);\n }, [autoPlay, paused, count, interval, loop, index, setIndex]);\n\n const atStart = !loop && index === 0;\n const atEnd = !loop && index === count - 1;\n\n return (\n <div className={`twc-carousel ${className}`}\n onMouseEnter={() => setPaused(true)} onMouseLeave={() => setPaused(false)}\n onFocusCapture={() => setPaused(true)} onBlurCapture={() => setPaused(false)}\n role=\"region\" aria-roledescription=\"carousel\" {...rest}>\n <div className=\"twc-carousel__viewport\">\n <div className=\"twc-carousel__track\" style={{ transform: `translateX(-${index * 100}%)` }}>\n {slides.map((s, i) => (\n <div className=\"twc-carousel__slide\" key={i} role=\"group\" aria-roledescription=\"slide\" aria-label={`${i + 1} of ${count}`} aria-hidden={i !== index || undefined} inert={i !== index || undefined}>{s}</div>\n ))}\n </div>\n </div>\n {showArrows && count > 1 ? (\n <>\n <button className=\"twc-carousel__arrow\" data-dir=\"prev\" aria-label=\"Previous\" disabled={atStart} onClick={() => go(index - 1)}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m15 18-6-6 6-6\"/></svg>\n </button>\n <button className=\"twc-carousel__arrow\" data-dir=\"next\" aria-label=\"Next\" disabled={atEnd} onClick={() => go(index + 1)}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg>\n </button>\n </>\n ) : null}\n {showDots && count > 1 ? (\n <div className=\"twc-carousel__dots\">\n {slides.map((_, i) => (\n <button key={i} className=\"twc-carousel__dot\" data-active={i === index || undefined} aria-label={`Go to slide ${i + 1}`} onClick={() => go(i)} />\n ))}\n </div>\n ) : null}\n </div>\n );\n}\n","import React from \"react\";\n\nconst CHART_CSS = `\n.twc-chart { font-family: var(--font-sans); width: 100%; }\n.twc-chart svg { display: block; width: 100%; overflow: visible; }\n.twc-chart__grid { stroke: var(--color-divider); stroke-width: 1; }\n.twc-chart__axis { fill: var(--color-text-subtle); font-size: 11px; }\n.twc-chart__bar { fill: var(--color-primary); transition: fill var(--duration-fast) var(--ease-standard); }\n.twc-chart__bar:hover { fill: var(--color-primary-hover); }\n.twc-chart__line { fill: none; stroke: var(--color-primary); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }\n.twc-chart__dot { fill: var(--color-surface); stroke: var(--color-primary); stroke-width: 2.5; }\n.twc-chart__legend { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-3); font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-chart__leg { display: inline-flex; align-items: center; gap: 6px; }\n.twc-chart__leg-sw { width: 10px; height: 10px; border-radius: 3px; }\n@keyframes twc-chart-grow { from { transform: scaleY(0); } to { transform: scaleY(1); } }\n`;\n\nconst SERIES_COLORS = [\"var(--brand-500)\", \"var(--sky-500)\", \"var(--emerald-500)\", \"var(--amber-500)\", \"var(--rose-500)\"];\n\nexport function Chart({\n type = \"bar\",\n data,\n series,\n height = 220,\n showGrid = true,\n showAxis = true,\n showLegend = false,\n colors,\n valueFormat,\n ariaLabel,\n \"aria-label\": ariaLabelProp,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-chart-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-chart-styles\";\n el.textContent = CHART_CSS;\n document.head.appendChild(el);\n }, []);\n\n const keys = series || [\"value\"];\n const palette = colors && colors.length ? colors : SERIES_COLORS;\n const W = 600, H = height, padL = showAxis ? 40 : 8, padR = 8, padT = 12, padB = showAxis ? 26 : 8;\n const innerW = W - padL - padR, innerH = H - padT - padB;\n const max = Math.max(1, ...data.flatMap((d) => keys.map((k) => Number(d[k]) || 0)));\n const niceMax = niceCeil(max);\n const y = (v) => padT + innerH - (v / niceMax) * innerH;\n const fmt = valueFormat || ((v) => v.toLocaleString());\n const ticks = 4;\n const svgAriaLabel = ariaLabelProp ?? ariaLabel ?? `${type} chart`;\n\n return (\n <div className={`twc-chart ${className}`} {...rest}>\n <svg viewBox={`0 0 ${W} ${H}`} role=\"img\" aria-label={svgAriaLabel} preserveAspectRatio=\"none\">\n {showGrid ? Array.from({ length: ticks + 1 }).map((_, i) => {\n const gy = padT + (innerH / ticks) * i;\n return <line key={i} className=\"twc-chart__grid\" x1={padL} y1={gy} x2={W - padR} y2={gy} />;\n }) : null}\n {showAxis ? Array.from({ length: ticks + 1 }).map((_, i) => {\n const val = niceMax - (niceMax / ticks) * i;\n const gy = padT + (innerH / ticks) * i;\n return <text key={i} className=\"twc-chart__axis\" x={padL - 8} y={gy + 4} textAnchor=\"end\">{shortNum(val)}</text>;\n }) : null}\n\n {type === \"bar\" ? (() => {\n const groups = data.length;\n const groupW = innerW / groups;\n const barGap = 0.28;\n const bw = (groupW * (1 - barGap)) / keys.length;\n return data.map((d, gi) => keys.map((k, si) => {\n const v = Number(d[k]) || 0;\n const x = padL + groupW * gi + (groupW * barGap) / 2 + si * bw;\n const by = y(v);\n return <rect key={`${gi}-${si}`} className=\"twc-chart__bar\" x={x + 1} y={by} width={Math.max(1, bw - 2)} height={padT + innerH - by}\n rx=\"3\" style={{ fill: keys.length > 1 || (colors && colors.length) ? palette[si % palette.length] : undefined }}>\n <title>{`${d.label ?? gi}: ${fmt(v)}`}</title>\n </rect>;\n }));\n })() : null}\n\n {type === \"line\" ? keys.map((k, si) => {\n const pts = data.map((d, i) => [padL + (innerW / Math.max(1, data.length - 1)) * i, y(Number(d[k]) || 0)]);\n const dPath = pts.map((p, i) => `${i ? \"L\" : \"M\"}${p[0].toFixed(1)} ${p[1].toFixed(1)}`).join(\" \");\n const color = palette[si % palette.length];\n return (\n <g key={k}>\n <path className=\"twc-chart__line\" d={dPath} style={{ stroke: color }} />\n {pts.map((p, i) => <circle key={i} className=\"twc-chart__dot\" cx={p[0]} cy={p[1]} r=\"3.5\" style={{ stroke: color }}><title>{`${data[i].label ?? i}: ${fmt(Number(data[i][k]) || 0)}`}</title></circle>)}\n </g>\n );\n }) : null}\n\n {showAxis ? data.map((d, i) => {\n const groupW = innerW / data.length;\n const cx = type === \"line\" ? padL + (innerW / Math.max(1, data.length - 1)) * i : padL + groupW * i + groupW / 2;\n return <text key={i} className=\"twc-chart__axis\" x={cx} y={H - 8} textAnchor=\"middle\">{d.label}</text>;\n }) : null}\n </svg>\n {showLegend && keys.length > 1 ? (\n <div className=\"twc-chart__legend\">\n {keys.map((k, si) => <span key={k} className=\"twc-chart__leg\"><span className=\"twc-chart__leg-sw\" style={{ background: palette[si % palette.length] }} />{k}</span>)}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction niceCeil(v) {\n const pow = Math.pow(10, Math.floor(Math.log10(v)));\n const n = v / pow;\n const step = n <= 1 ? 1 : n <= 2 ? 2 : n <= 5 ? 5 : 10;\n return step * pow;\n}\nfunction shortNum(v) {\n if (v >= 1000000) return (v / 1000000).toFixed(v % 1000000 ? 1 : 0) + \"M\";\n if (v >= 1000) return (v / 1000).toFixed(v % 1000 ? 1 : 0) + \"k\";\n return String(Math.round(v));\n}\n","import React from \"react\";\n\nexport function Checkbox({\n label,\n description,\n error,\n checked,\n defaultChecked,\n indeterminate = false,\n required = false,\n disabled = false,\n size = \"md\",\n tone = \"primary\",\n id,\n className = \"\",\n onChange,\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-checkbox-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-checkbox-styles\";\n el.textContent = `\n.twc-check { display: inline-flex; align-items: flex-start; gap: var(--space-2-5); cursor: pointer; font-family: var(--font-sans); }\n/* tone → accent set (default primary). Mirrors Button's --_accent model; Badge's tone vocabulary. */\n.twc-check { --_accent: var(--color-primary); --_accent-fg: var(--color-primary-fg); --_accent-subtle: var(--color-primary-subtle); --_accent-subtle-fg: var(--color-primary-subtle-fg); --_accent-border: var(--color-primary-border); }\n.twc-check[data-tone=\"success\"] { --_accent: var(--color-success); --_accent-fg: var(--color-success-fg); --_accent-subtle: var(--color-success-subtle); --_accent-subtle-fg: var(--color-success-subtle-fg); --_accent-border: var(--color-success); }\n.twc-check[data-tone=\"warning\"] { --_accent: var(--color-warning); --_accent-fg: var(--color-warning-fg); --_accent-subtle: var(--color-warning-subtle); --_accent-subtle-fg: var(--color-warning-subtle-fg); --_accent-border: var(--color-warning); }\n.twc-check[data-tone=\"danger\"] { --_accent: var(--color-danger); --_accent-fg: var(--color-danger-fg); --_accent-subtle: var(--color-danger-subtle); --_accent-subtle-fg: var(--color-danger-subtle-fg); --_accent-border: var(--color-danger); }\n.twc-check[data-tone=\"info\"] { --_accent: var(--color-info); --_accent-fg: var(--color-info-fg); --_accent-subtle: var(--color-info-subtle); --_accent-subtle-fg: var(--color-info-subtle-fg); --_accent-border: var(--color-info); }\n.twc-check[data-tone=\"neutral\"] { --_accent: var(--color-text); --_accent-fg: var(--color-surface); --_accent-subtle: var(--color-surface-sunken); --_accent-subtle-fg: var(--color-text-muted); --_accent-border: var(--color-border-strong); }\n.twc-check[data-disabled=\"true\"] { cursor: not-allowed; opacity: 0.55; }\n.twc-check__input { position: absolute; opacity: 0; width: 0; height: 0; }\n.twc-check__box {\n --_sz: 20px;\n flex: none; width: var(--_sz); height: var(--_sz); margin-top: 1px;\n display: grid; place-items: center;\n border: var(--border-medium) solid var(--color-border-strong);\n border-radius: var(--radius-sm);\n background: var(--color-surface);\n color: var(--_accent-fg);\n transition: background-color var(--duration-fast) var(--ease-standard),\n border-color var(--duration-fast) var(--ease-standard),\n transform var(--duration-fast) var(--ease-spring);\n}\n.twc-check[data-size=\"sm\"] .twc-check__box { --_sz: 16px; }\n.twc-check[data-size=\"lg\"] .twc-check__box { --_sz: 24px; }\n.twc-check__svg { width: 70%; height: 70%; stroke-dasharray: 24; stroke-dashoffset: 24; transition: stroke-dashoffset var(--duration-base) var(--ease-out); }\n.twc-check__input:checked + .twc-check__box,\n.twc-check__input:indeterminate + .twc-check__box { background: var(--_accent); border-color: var(--_accent); }\n.twc-check__input:checked + .twc-check__box .twc-check__svg,\n.twc-check__input:indeterminate + .twc-check__box .twc-check__svg { stroke-dashoffset: 0; }\n.twc-check__input:active + .twc-check__box { transform: scale(0.88); }\n.twc-check__input:focus-visible + .twc-check__box { box-shadow: var(--ring); }\n.twc-check[data-invalid=\"true\"] .twc-check__box { border-color: var(--color-danger); }\n.twc-check__text { display: flex; flex-direction: column; gap: 2px; }\n.twc-check__label { font-size: var(--text-sm); font-weight: var(--font-medium); color: var(--color-text); line-height: 1.3; }\n.twc-check__desc { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n`;\n document.head.appendChild(el);\n }, []);\n\n const autoId = React.useId();\n const fieldId = id || autoId;\n const errId = `${fieldId}-error`;\n const invalid = Boolean(error);\n const ref = React.useRef(null);\n React.useEffect(() => { if (ref.current) ref.current.indeterminate = indeterminate; }, [indeterminate]);\n\n const describedBy = [rest[\"aria-describedby\"], error ? errId : null].filter(Boolean).join(\" \") || undefined;\n\n const control = (\n <label className={`twc-check ${className}`} data-size={size} data-tone={tone} data-invalid={invalid || undefined} data-disabled={disabled || undefined} htmlFor={fieldId}>\n <input\n ref={ref}\n id={fieldId}\n type=\"checkbox\"\n className=\"twc-check__input\"\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n onChange={onChange}\n {...rest}\n aria-required={required || undefined}\n aria-invalid={invalid || undefined}\n aria-describedby={describedBy}\n />\n <span className=\"twc-check__box\" aria-hidden=\"true\">\n <svg className=\"twc-check__svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n {indeterminate ? <path d=\"M5 12h14\"/> : <path d=\"M20 6 9 17l-5-5\"/>}\n </svg>\n </span>\n {(label || description) ? (\n <span className=\"twc-check__text\">\n {label ? <span className=\"twc-check__label\">{label}</span> : null}\n {description ? <span className=\"twc-check__desc\">{description}</span> : null}\n </span>\n ) : null}\n </label>\n );\n\n if (!error) return control;\n return (\n <div className=\"twc-field\">\n {control}\n <span id={errId} className=\"twc-field__error\">{error}</span>\n </div>\n );\n}\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nconst FIELD_CSS = `\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\n.twc-field__req { color: var(--color-danger); }\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n`;\n\nconst COLORPICKER_CSS = `\n.twc-cp { position: relative; font-family: var(--font-sans); display: flex; flex-direction: column; gap: var(--space-1-5); }\n.twc-cp__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); }\n.twc-cp__trigger { display: flex; align-items: center; gap: var(--space-2-5); height: var(--control-h-md); padding: 0 var(--space-2) 0 var(--space-2);\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md); cursor: pointer;\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard); }\n.twc-cp__trigger:hover:not([data-open=\"true\"]):not([data-disabled=\"true\"]) { border-color: var(--color-border-strong); }\n.twc-cp__trigger[data-open=\"true\"] { border-color: var(--color-primary); box-shadow: var(--ring); }\n.twc-cp__trigger[data-invalid=\"true\"] { border-color: var(--color-danger); }\n.twc-cp__trigger[data-invalid=\"true\"][data-open=\"true\"] { box-shadow: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 28%, transparent); }\n.twc-cp__trigger[data-disabled=\"true\"] { background: var(--color-surface-sunken); opacity: 0.7; cursor: not-allowed; }\n.twc-cp__swatch { flex: none; width: 26px; height: 26px; border-radius: var(--radius-sm); box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.12); }\n.twc-cp__value { flex: 1; font-family: var(--font-mono); font-size: var(--text-sm); color: var(--color-text); text-transform: uppercase; }\n.twc-cp__chev { flex: none; color: var(--color-text-subtle); display: inline-flex; }\n.twc-cp__chev svg { width: 16px; height: 16px; }\n.twc-cp__pop { position: fixed; z-index: var(--z-popover); width: 240px;\n background: var(--color-surface-raised); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg);\n box-shadow: var(--shadow-lg); padding: var(--space-3); animation: twico-scale-in var(--duration-fast) var(--ease-spring); transform-origin: top; }\n.twc-cp__area { position: relative; width: 100%; height: 140px; border-radius: var(--radius-md); cursor: crosshair; overflow: hidden; touch-action: none; }\n.twc-cp__area:focus-visible, .twc-cp__hue:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-cp__area-sat { position: absolute; inset: 0; background: linear-gradient(to right, #fff, hsl(var(--_h,0), 100%, 50%)); }\n.twc-cp__area-val { position: absolute; inset: 0; background: linear-gradient(to top, #000, transparent); }\n.twc-cp__area-knob { position: absolute; width: 14px; height: 14px; border-radius: var(--radius-full); border: 2px solid #fff; box-shadow: 0 0 0 1px rgb(0 0 0 / 0.3); transform: translate(-50%, -50%); pointer-events: none; }\n.twc-cp__hue { position: relative; height: 12px; margin-top: var(--space-3); border-radius: var(--radius-full); cursor: pointer; touch-action: none;\n background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%); }\n.twc-cp__hue-knob { position: absolute; top: 50%; width: 16px; height: 16px; border-radius: var(--radius-full); background: #fff; box-shadow: var(--shadow-sm), inset 0 0 0 1px rgb(0 0 0 / 0.2); transform: translate(-50%, -50%); pointer-events: none; }\n.twc-cp__foot { display: flex; align-items: center; gap: var(--space-2); margin-top: var(--space-3); }\n.twc-cp__hex { flex: 1; min-width: 0; height: 32px; padding: 0 8px; font-family: var(--font-mono); font-size: var(--text-xs); text-transform: uppercase;\n color: var(--color-text); background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-sm); outline: none; }\n/* tone → focus/open accent (default primary; reproduces current look). */\n.twc-cp__hex { --_accent: var(--color-primary); --_ring: var(--ring); }\n.twc-cp__hex[data-tone=\"success\"] { --_accent: var(--color-success); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-success) 32%, transparent); }\n.twc-cp__hex[data-tone=\"warning\"] { --_accent: var(--color-warning); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-warning) 32%, transparent); }\n.twc-cp__hex[data-tone=\"danger\"] { --_accent: var(--color-danger); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 32%, transparent); }\n.twc-cp__hex[data-tone=\"info\"] { --_accent: var(--color-info); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-info) 32%, transparent); }\n.twc-cp__hex[data-tone=\"neutral\"] { --_accent: var(--color-border-strong); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-text) 14%, transparent); }\n.twc-cp__hex:focus { border-color: var(--_accent); box-shadow: var(--_ring); }\n.twc-cp__presets { display: flex; flex-wrap: wrap; gap: 5px; margin-top: var(--space-3); }\n.twc-cp__preset { width: 22px; height: 22px; border-radius: var(--radius-sm); border: none; cursor: pointer; box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.12); padding: 0;\n transition: transform var(--duration-fast) var(--ease-spring); }\n.twc-cp__preset:hover { transform: scale(1.15); }\n.twc-cp__preset[data-active=\"true\"] { box-shadow: 0 0 0 2px var(--color-surface-raised), 0 0 0 4px var(--color-primary); }\n`;\n\n/* ---- color math ---- */\nfunction hsvToRgb(h, s, v) {\n s /= 100; v /= 100;\n const c = v * s, x = c * (1 - Math.abs(((h / 60) % 2) - 1)), m = v - c;\n let r = 0, g = 0, b = 0;\n if (h < 60) [r, g, b] = [c, x, 0]; else if (h < 120) [r, g, b] = [x, c, 0];\n else if (h < 180) [r, g, b] = [0, c, x]; else if (h < 240) [r, g, b] = [0, x, c];\n else if (h < 300) [r, g, b] = [x, 0, c]; else [r, g, b] = [c, 0, x];\n return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)];\n}\nfunction rgbToHex(r, g, b) { return \"#\" + [r, g, b].map((n) => n.toString(16).padStart(2, \"0\")).join(\"\"); }\nfunction hsvToHex(h, s, v) { return rgbToHex(...hsvToRgb(h, s, v)); }\nfunction hexToHsv(hex) {\n const m = /^#?([0-9a-f]{6})$/i.exec(hex || \"\"); if (!m) return null;\n const int = parseInt(m[1], 16); const r = (int >> 16) / 255, g = ((int >> 8) & 255) / 255, b = (int & 255) / 255;\n const max = Math.max(r, g, b), min = Math.min(r, g, b), d = max - min;\n let h = 0;\n if (d) { if (max === r) h = ((g - b) / d) % 6; else if (max === g) h = (b - r) / d + 2; else h = (r - g) / d + 4; h *= 60; if (h < 0) h += 360; }\n return { h, s: max ? (d / max) * 100 : 0, v: max * 100 };\n}\n\nconst DEFAULT_PRESETS = [\"#6366F1\",\"#0EA5E9\",\"#14B8A6\",\"#22C55E\",\"#F59E0B\",\"#F43F5E\",\"#8B5CF6\",\"#0F172A\"];\n\nexport function ColorPicker({\n label,\n hint,\n error,\n required = false,\n value,\n defaultValue = \"#6366F1\",\n presets = DEFAULT_PRESETS,\n disabled = false,\n tone = \"primary\",\n onChange,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (!document.getElementById(\"twc-field-styles\")) {\n const fel = document.createElement(\"style\");\n fel.id = \"twc-field-styles\";\n fel.textContent = FIELD_CSS;\n document.head.appendChild(fel);\n }\n if (document.getElementById(\"twc-colorpicker-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-colorpicker-styles\";\n el.textContent = COLORPICKER_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [internal, setInternal] = React.useState(defaultValue);\n const hex = (value !== undefined ? value : internal) || \"#000000\";\n // Track the last syntactically valid #rrggbb so an invalid hex entry can be reverted on blur.\n const lastValidRef = React.useRef(hex);\n if (/^#[0-9a-f]{6}$/i.test(hex)) lastValidRef.current = hex;\n const [open, setOpen] = React.useState(false);\n const [hsv, setHsv] = React.useState(() => hexToHsv(hex) || { h: 239, s: 60, v: 94 });\n const [coords, setCoords] = React.useState(null);\n const wrapRef = React.useRef(null);\n const triggerRef = React.useRef(null);\n const popRef = React.useRef(null);\n const areaRef = React.useRef(null);\n const hueRef = React.useRef(null);\n\n // Pin the popover with fixed positioning, portaled to <body>, so it escapes any\n // clipping/scrolling ancestor (cards, panels, dialogs). Flips up when low on room.\n const POP_W = 240;\n const place = React.useCallback(() => {\n const el = triggerRef.current; if (!el) return;\n const r = el.getBoundingClientRect();\n const vh = window.innerHeight;\n const below = vh - r.bottom;\n const flip = below < 340 && r.top > below;\n let left = Math.min(r.left, window.innerWidth - POP_W - 8);\n left = Math.max(8, left);\n setCoords({ left, top: flip ? undefined : Math.round(r.bottom + 6), bottom: flip ? Math.round(vh - r.top + 6) : undefined });\n }, []);\n React.useEffect(() => {\n if (!open) return undefined;\n place();\n const onMove = () => place();\n window.addEventListener(\"scroll\", onMove, true);\n window.addEventListener(\"resize\", onMove);\n return () => { window.removeEventListener(\"scroll\", onMove, true); window.removeEventListener(\"resize\", onMove); };\n }, [open, place]);\n const labelId = React.useId();\n const descId = `${labelId}-desc`;\n const invalid = Boolean(error);\n\n // close the popover if the picker becomes disabled while open\n React.useEffect(() => { if (disabled) setOpen(false); }, [disabled]);\n\n // sync external hex -> hsv when it changes and is valid\n React.useEffect(() => { const v = hexToHsv(hex); if (v && hsvToHex(v.h, v.s, v.v).toLowerCase() !== hsvToHex(hsv.h, hsv.s, hsv.v).toLowerCase()) setHsv(v); }, [hex]);\n\n React.useEffect(() => {\n if (!open) return;\n const onDown = (e) => {\n if (wrapRef.current && wrapRef.current.contains(e.target)) return;\n if (popRef.current && popRef.current.contains(e.target)) return;\n setOpen(false);\n };\n const onKey = (e) => { if (e.key === \"Escape\") setOpen(false); };\n document.addEventListener(\"mousedown\", onDown); document.addEventListener(\"keydown\", onKey);\n return () => { document.removeEventListener(\"mousedown\", onDown); document.removeEventListener(\"keydown\", onKey); };\n }, [open]);\n\n // Move focus into the popover when it opens (it's portaled to <body>, so Tab from the\n // trigger would otherwise skip it entirely), and return focus to the trigger on close.\n const prevOpen = React.useRef(false);\n React.useEffect(() => {\n let id;\n if (!prevOpen.current && open) {\n id = setTimeout(() => areaRef.current?.focus({ preventScroll: true }), 20);\n } else if (prevOpen.current && !open) {\n const ae = typeof document !== \"undefined\" ? document.activeElement : null;\n if (!ae || ae === document.body) triggerRef.current?.focus();\n }\n prevOpen.current = open;\n return () => clearTimeout(id);\n }, [open]);\n\n const commit = (next) => { const h = hsvToHex(next.h, next.s, next.v); setHsv(next); if (value === undefined) setInternal(h); onChange?.(h); };\n\n const dragArea = (e) => {\n const r = areaRef.current.getBoundingClientRect();\n const s = Math.min(1, Math.max(0, (e.clientX - r.left) / r.width)) * 100;\n const v = (1 - Math.min(1, Math.max(0, (e.clientY - r.top) / r.height))) * 100;\n commit({ ...hsv, s, v });\n };\n const dragHue = (e) => {\n const r = hueRef.current.getBoundingClientRect();\n const h = Math.min(1, Math.max(0, (e.clientX - r.left) / r.width)) * 360;\n commit({ ...hsv, h });\n };\n const startDrag = (handler) => (e) => {\n e.preventDefault(); handler(e);\n const move = (ev) => handler(ev);\n const up = () => { window.removeEventListener(\"pointermove\", move); window.removeEventListener(\"pointerup\", up); };\n window.addEventListener(\"pointermove\", move); window.addEventListener(\"pointerup\", up);\n };\n\n const onAreaKeyDown = (e) => {\n let { s, v } = hsv;\n if (e.key === \"ArrowRight\") s = Math.min(100, s + 1);\n else if (e.key === \"ArrowLeft\") s = Math.max(0, s - 1);\n else if (e.key === \"ArrowUp\") v = Math.min(100, v + 1);\n else if (e.key === \"ArrowDown\") v = Math.max(0, v - 1);\n else return;\n e.preventDefault();\n commit({ ...hsv, s, v });\n };\n const onHueKeyDown = (e) => {\n let h = hsv.h;\n if (e.key === \"ArrowRight\" || e.key === \"ArrowUp\") h = Math.min(360, h + 1);\n else if (e.key === \"ArrowLeft\" || e.key === \"ArrowDown\") h = Math.max(0, h - 1);\n else if (e.key === \"Home\") h = 0;\n else if (e.key === \"End\") h = 360;\n else return;\n e.preventDefault();\n commit({ ...hsv, h });\n };\n\n return (\n <div className={`twc-cp twc-field ${className}`} ref={wrapRef} {...rest}>\n {label ? (\n <span className=\"twc-field__label\" id={labelId}>\n {label}{required ? <span className=\"twc-field__req\">*</span> : null}\n </span>\n ) : null}\n <div ref={triggerRef} className=\"twc-cp__trigger\" data-open={open || undefined} data-disabled={disabled || undefined} data-invalid={invalid || undefined} role=\"button\" tabIndex={disabled ? -1 : 0}\n aria-haspopup=\"dialog\" aria-expanded={open} aria-disabled={disabled || undefined} aria-labelledby={label ? labelId : undefined}\n aria-invalid={invalid || undefined} aria-describedby={error || hint ? descId : undefined}\n onClick={() => !disabled && setOpen((o) => !o)} onKeyDown={(e) => { if (!disabled && (e.key === \"Enter\" || e.key === \" \")) { e.preventDefault(); setOpen((o) => !o); } }}>\n <span className=\"twc-cp__swatch\" style={{ background: hex }} />\n <span className=\"twc-cp__value\">{hex}</span>\n <span className=\"twc-cp__chev\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg></span>\n </div>\n\n {open && coords ? createPortal(\n <div className=\"twc-cp__pop\" ref={popRef} role=\"dialog\" aria-label=\"Color picker\"\n style={{ position: \"fixed\", left: coords.left, right: \"auto\", top: coords.top, bottom: coords.bottom, zIndex: \"var(--z-tooltip)\" }}>\n <div className=\"twc-cp__area\" ref={areaRef} style={{ \"--_h\": hsv.h }} onPointerDown={startDrag(dragArea)}\n role=\"slider\" tabIndex={0} aria-label=\"Saturation and brightness\"\n aria-valuemin={0} aria-valuemax={100} aria-valuenow={Math.round(hsv.s)}\n aria-valuetext={`Saturation ${Math.round(hsv.s)}%, Brightness ${Math.round(hsv.v)}%`}\n onKeyDown={onAreaKeyDown}>\n <div className=\"twc-cp__area-sat\" />\n <div className=\"twc-cp__area-val\" />\n <span className=\"twc-cp__area-knob\" style={{ left: `${hsv.s}%`, top: `${100 - hsv.v}%`, background: hex }} />\n </div>\n <div className=\"twc-cp__hue\" ref={hueRef} onPointerDown={startDrag(dragHue)}\n role=\"slider\" tabIndex={0} aria-label=\"Hue\"\n aria-valuemin={0} aria-valuemax={360} aria-valuenow={Math.round(hsv.h)}\n onKeyDown={onHueKeyDown}>\n <span className=\"twc-cp__hue-knob\" style={{ left: `${(hsv.h / 360) * 100}%` }} />\n </div>\n <div className=\"twc-cp__foot\">\n <span className=\"twc-cp__swatch\" style={{ background: hex }} />\n <input className=\"twc-cp__hex\" data-tone={tone} value={hex} maxLength={7} aria-label=\"Hex color\"\n onChange={(e) => { let v = e.target.value; if (!v.startsWith(\"#\")) v = \"#\" + v; if (value === undefined) setInternal(v); onChange?.(v); const p = hexToHsv(v); if (p) setHsv(p); }}\n onBlur={() => { if (/^#[0-9a-f]{6}$/i.test(hex)) return; const revert = lastValidRef.current; if (revert === hex) return; if (value === undefined) setInternal(revert); onChange?.(revert); const p = hexToHsv(revert); if (p) setHsv(p); }} />\n </div>\n {presets && presets.length ? (\n <div className=\"twc-cp__presets\">\n {presets.map((p) => (\n <button key={p} type=\"button\" className=\"twc-cp__preset\" data-active={p.toLowerCase() === hex.toLowerCase() || undefined}\n style={{ background: p }} aria-label={p} onClick={() => { if (value === undefined) setInternal(p); onChange?.(p); const h = hexToHsv(p); if (h) setHsv(h); }} />\n ))}\n </div>\n ) : null}\n </div>, document.body\n ) : null}\n {error ? <span id={descId} className=\"twc-field__error\">{error}</span> : hint ? <span id={descId} className=\"twc-field__hint\">{hint}</span> : null}\n </div>\n );\n}\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nconst COMBO_CSS = `\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\n.twc-field__req { color: var(--color-danger); }\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n\n.twc-cb { position: relative; font-family: var(--font-sans); }\n.twc-cb__control {\n --_h: var(--control-h-md);\n display: flex; align-items: center; gap: var(--space-2); width: 100%;\n min-height: var(--_h); padding: 0 var(--space-3);\n background: var(--color-surface);\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md);\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\n}\n.twc-cb__control[data-size=\"sm\"] { --_h: var(--control-h-sm); }\n.twc-cb__control[data-size=\"lg\"] { --_h: var(--control-h-lg); }\n.twc-cb__control:hover:not([data-open=\"true\"]) { border-color: var(--color-border-strong); }\n/* tone → focus/open accent (default primary; reproduces current look). */\n.twc-cb__control { --_accent: var(--color-primary); --_ring: var(--ring); }\n.twc-cb__control[data-tone=\"success\"] { --_accent: var(--color-success); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-success) 32%, transparent); }\n.twc-cb__control[data-tone=\"warning\"] { --_accent: var(--color-warning); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-warning) 32%, transparent); }\n.twc-cb__control[data-tone=\"danger\"] { --_accent: var(--color-danger); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 32%, transparent); }\n.twc-cb__control[data-tone=\"info\"] { --_accent: var(--color-info); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-info) 32%, transparent); }\n.twc-cb__control[data-tone=\"neutral\"] { --_accent: var(--color-border-strong); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-text) 14%, transparent); }\n.twc-cb__control[data-open=\"true\"] { border-color: var(--_accent); box-shadow: var(--_ring); }\n.twc-cb__control[data-invalid=\"true\"] { border-color: var(--color-danger); }\n.twc-cb__control[data-disabled=\"true\"] { background: var(--color-surface-sunken); opacity: 0.7; }\n.twc-cb__input { flex: 1; min-width: 0; border: none; outline: none; background: transparent; font-family: inherit; font-size: var(--text-sm); color: var(--color-text); height: calc(var(--_h) - 2px); cursor: text; }\n.twc-cb__input:focus, .twc-cb__input:focus-visible { outline: none; box-shadow: none; }\n.twc-cb__input::placeholder { color: var(--color-text-subtle); }\n.twc-cb__input:disabled { cursor: not-allowed; }\n.twc-cb__clear, .twc-cb__chev { flex: none; display: inline-grid; place-items: center; border: none; background: transparent; color: var(--color-text-subtle); cursor: pointer; padding: 0; }\n.twc-cb__clear { width: 20px; height: 20px; border-radius: var(--radius-full); }\n.twc-cb__clear:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-cb__clear svg { width: 14px; height: 14px; }\n.twc-cb__chev { transition: transform var(--duration-base) var(--ease-spring); }\n.twc-cb__control[data-open=\"true\"] .twc-cb__chev { transform: rotate(180deg); }\n.twc-cb__chev svg { width: 16px; height: 16px; }\n\n.twc-pop {\n position: absolute; z-index: var(--z-dropdown); top: calc(100% + 6px); inset-inline-start: 0; inset-inline-end: 0;\n background: var(--color-surface-raised); border: var(--border-thin) solid var(--color-border);\n border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); overflow: hidden;\n transform-origin: top; animation: twico-scale-in var(--duration-fast) var(--ease-spring);\n}\n.twc-pop[data-placement=\"top\"] { top: auto; bottom: calc(100% + 6px); transform-origin: bottom; }\n.twc-pop__list { max-height: 260px; overflow-y: auto; padding: var(--space-1-5); }\n.twc-pop__group { padding: 8px 10px 4px; font-size: var(--text-xs); font-weight: var(--font-bold); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); }\n.twc-pop__group:not(:first-child) { margin-top: 4px; border-top: var(--border-thin) solid var(--color-divider); padding-top: 10px; }\n.twc-opt {\n display: flex; align-items: center; gap: var(--space-2-5); width: 100%; padding: 8px 10px;\n border: none; background: transparent; cursor: pointer; text-align: start;\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text); border-radius: var(--radius-md);\n transition: background-color var(--duration-fast) var(--ease-standard);\n}\n.twc-opt:hover, .twc-opt[data-active=\"true\"] { background: var(--color-surface-sunken); }\n.twc-opt[data-selected=\"true\"] .twc-opt__label { color: var(--color-primary); font-weight: var(--font-semibold); }\n.twc-opt__main { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }\n.twc-opt__label { line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.twc-opt__desc { font-size: var(--text-xs); color: var(--color-text-muted); line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.twc-opt__check { flex: none; color: var(--color-primary); display: inline-flex; }\n.twc-opt__check svg { width: 16px; height: 16px; }\n.twc-pop__empty { padding: 14px 12px; text-align: center; font-size: var(--text-sm); color: var(--color-text-subtle); }\n`;\n\nfunction toOpt(o) { return typeof o === \"string\" ? { value: o, label: o } : o; }\nfunction normalizeGroups(options) {\n const groups = []; let cur = null;\n (options || []).forEach((o) => {\n if (o && typeof o === \"object\" && Array.isArray(o.options)) {\n groups.push({ group: o.group, options: o.options.map(toOpt) }); cur = null;\n } else {\n if (!cur) { cur = { group: null, options: [] }; groups.push(cur); }\n cur.options.push(toOpt(o));\n }\n });\n return groups;\n}\nfunction matches(o, q) {\n if (!q) return true;\n const s = q.toLowerCase();\n return o.label.toLowerCase().includes(s) || (o.description && o.description.toLowerCase().includes(s));\n}\nfunction ensureVisible(list, el) {\n if (!list || !el) return;\n const top = el.offsetTop, bottom = top + el.offsetHeight;\n if (top < list.scrollTop) list.scrollTop = top - 4;\n else if (bottom > list.scrollTop + list.clientHeight) list.scrollTop = bottom - list.clientHeight + 4;\n}\n\nexport function Combobox({\n label, hint, error, required = false, size = \"md\", tone = \"primary\",\n placeholder = \"Select…\", options, value, defaultValue = null,\n onChange, clearable = false, disabled = false, placement = \"bottom\", portal = true, minWidth = 0,\n id, className = \"\", onFocus, onKeyDown, ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-combo-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-combo-styles\"; el.textContent = COMBO_CSS;\n document.head.appendChild(el);\n }, []);\n\n const groups = React.useMemo(() => normalizeGroups(options), [options]);\n const flat = React.useMemo(() => groups.flatMap((g) => g.options), [groups]);\n const autoId = React.useId();\n const fieldId = id || autoId;\n const [internal, setInternal] = React.useState(defaultValue);\n const current = value !== undefined ? value : internal;\n const selected = flat.find((o) => o.value === current);\n\n const [open, setOpen] = React.useState(false);\n const [query, setQuery] = React.useState(\"\");\n const [active, setActive] = React.useState(0);\n const [coords, setCoords] = React.useState(null);\n const wrapRef = React.useRef(null);\n const controlRef = React.useRef(null);\n const inputRef = React.useRef(null);\n const popRef = React.useRef(null);\n const listRef = React.useRef(null);\n const activeRef = React.useRef(null);\n\n // Filtered groups + flat visible list\n const fGroups = React.useMemo(\n () => groups.map((g) => ({ group: g.group, options: g.options.filter((o) => matches(o, query.trim())) })).filter((g) => g.options.length),\n [groups, query]\n );\n const visible = React.useMemo(() => fGroups.flatMap((g) => g.options), [fGroups]);\n\n // Portal mode: measure the control and pin the popover with fixed positioning so\n // it escapes any clipping/scrolling ancestor. Auto-flips up when there isn't\n // enough room below (same logic as Select).\n const place = React.useCallback(() => {\n const el = controlRef.current; if (!el) return;\n const r = el.getBoundingClientRect();\n const vh = window.innerHeight;\n const below = vh - r.bottom;\n const flip = placement === \"top\" || (below < 260 && r.top > below);\n setCoords({ left: r.left, width: Math.max(r.width, minWidth),\n top: flip ? undefined : Math.round(r.bottom + 6),\n bottom: flip ? Math.round(vh - r.top + 6) : undefined, flip });\n }, [placement, minWidth]);\n\n React.useEffect(() => {\n if (!open || !portal) return;\n place();\n const onMove = () => place();\n window.addEventListener(\"scroll\", onMove, true);\n window.addEventListener(\"resize\", onMove);\n return () => { window.removeEventListener(\"scroll\", onMove, true); window.removeEventListener(\"resize\", onMove); };\n }, [open, portal, place]);\n\n React.useEffect(() => {\n if (!open) return;\n const onDown = (e) => {\n if (wrapRef.current && wrapRef.current.contains(e.target)) return;\n if (popRef.current && popRef.current.contains(e.target)) return;\n close();\n };\n document.addEventListener(\"mousedown\", onDown);\n return () => document.removeEventListener(\"mousedown\", onDown);\n }, [open]);\n React.useEffect(() => { setActive(0); }, [query]);\n React.useEffect(() => { if (open) ensureVisible(listRef.current, activeRef.current); }, [active, open]);\n\n function openMenu() { if (disabled) return; setQuery(\"\"); setOpen(true); }\n function close() { setOpen(false); setQuery(\"\"); }\n function commit(v) {\n if (value === undefined) setInternal(v);\n onChange?.(v); close();\n }\n function handleKeyDown(e) {\n if (e.key === \"ArrowDown\") { e.preventDefault(); if (!open) { openMenu(); return; } setActive((a) => Math.min(a + 1, visible.length - 1)); }\n else if (e.key === \"ArrowUp\") { e.preventDefault(); setActive((a) => Math.max(a - 1, 0)); }\n else if (e.key === \"Enter\") { e.preventDefault(); if (open && visible[active]) commit(visible[active].value); }\n else if (e.key === \"Escape\") { close(); inputRef.current?.blur(); }\n else if (e.key === \"Backspace\" && !query && selected) { /* keep selection; user can clear */ }\n }\n\n const displayValue = open ? query : (selected ? selected.label : \"\");\n const listboxId = `${fieldId}-listbox`;\n const optionId = (i) => `${fieldId}-opt-${i}`;\n const activeId = open && visible[active] ? optionId(active) : undefined;\n const descId = `${fieldId}-desc`;\n const describedBy = error || hint ? descId : undefined;\n let counter = -1;\n\n const popInner = (\n <div className=\"twc-pop__list\" ref={listRef}>\n {visible.length === 0 ? <div className=\"twc-pop__empty\">No results found</div> :\n fGroups.map((g, gi) => (\n <React.Fragment key={gi}>\n {g.group ? <div className=\"twc-pop__group\">{g.group}</div> : null}\n {g.options.map((o) => {\n counter += 1; const idx = counter; const isSel = o.value === current;\n return (\n <button key={o.value} id={optionId(idx)} type=\"button\" className=\"twc-opt\" role=\"option\" aria-selected={isSel}\n ref={idx === active ? activeRef : null}\n data-selected={isSel || undefined} data-active={idx === active || undefined}\n onMouseEnter={() => setActive(idx)} onMouseDown={(e) => e.preventDefault()} onClick={() => commit(o.value)}>\n <span className=\"twc-opt__main\">\n <span className=\"twc-opt__label\">{o.label}</span>\n {o.description ? <span className=\"twc-opt__desc\">{o.description}</span> : null}\n </span>\n {isSel ? <span className=\"twc-opt__check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"/></svg></span> : null}\n </button>\n );\n })}\n </React.Fragment>\n ))}\n </div>\n );\n\n const RD = { createPortal: (typeof createPortal === \"function\" ? createPortal : (typeof window !== \"undefined\" && window.ReactDOM && window.ReactDOM.createPortal)) };\n const canPortal = portal && RD && RD.createPortal;\n\n let popEl = null;\n if (open) {\n if (canPortal && coords) {\n popEl = RD.createPortal(\n <div className=\"twc-pop twc-pop--portal\" id={listboxId} role=\"listbox\" ref={popRef}\n data-placement={coords.flip ? \"top\" : undefined}\n style={{ position: \"fixed\", left: coords.left, top: coords.top, bottom: coords.bottom, width: coords.width, right: \"auto\", zIndex: \"var(--z-tooltip)\" }}>\n {popInner}\n </div>, document.body);\n } else if (!portal) {\n popEl = (\n <div className=\"twc-pop\" id={listboxId} role=\"listbox\" ref={popRef} data-placement={placement === \"top\" ? \"top\" : undefined}>\n {popInner}\n </div>\n );\n }\n }\n\n return (\n <div className={`twc-field ${className}`} ref={wrapRef}>\n {label ? (<label className=\"twc-field__label\" htmlFor={fieldId}>{label}{required ? <span className=\"twc-field__req\">*</span> : null}</label>) : null}\n <div className=\"twc-cb\">\n <div className=\"twc-cb__control\" ref={controlRef} data-size={size} data-tone={tone} data-open={open || undefined} data-invalid={Boolean(error) || undefined} data-disabled={disabled || undefined}\n onClick={() => { if (!disabled) { inputRef.current?.focus(); if (!open) openMenu(); } }}>\n <input\n ref={inputRef} id={fieldId} className=\"twc-cb__input\" role=\"combobox\" aria-expanded={open} aria-autocomplete=\"list\"\n aria-controls={open ? listboxId : undefined} aria-activedescendant={activeId}\n aria-invalid={Boolean(error) || undefined} aria-describedby={describedBy}\n placeholder={selected && !open ? selected.label : placeholder}\n value={displayValue} disabled={disabled}\n onFocus={(e) => { onFocus?.(e); if (!open) openMenu(); }}\n onChange={(e) => { setQuery(e.target.value); setOpen(true); }}\n onKeyDown={(e) => { onKeyDown?.(e); if (!e.defaultPrevented) handleKeyDown(e); }}\n {...rest}\n />\n {clearable && selected && !open ? (\n <button type=\"button\" className=\"twc-cb__clear\" aria-label=\"Clear\" onClick={(e) => { e.stopPropagation(); commit(null); }}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\n </button>\n ) : null}\n <button type=\"button\" className=\"twc-cb__chev\" aria-label=\"Toggle\" tabIndex={-1}\n onClick={(e) => { e.stopPropagation(); open ? close() : openMenu(); inputRef.current?.focus(); }}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>\n </button>\n </div>\n\n {popEl}\n </div>\n {error ? <span id={descId} className=\"twc-field__error\">{error}</span> : hint ? <span id={descId} className=\"twc-field__hint\">{hint}</span> : null}\n </div>\n );\n}\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nconst COMMAND_CSS = `\n.twc-cmdk__overlay { position: fixed; inset: 0; z-index: var(--z-modal); background: var(--color-overlay); backdrop-filter: blur(3px);\n display: flex; align-items: flex-start; justify-content: center; padding-top: 12vh; }\n.twc-cmdk__overlay[data-state=\"open\"] { animation: twico-fade-in var(--duration-base) var(--ease-out); }\n.twc-cmdk__overlay[data-state=\"closed\"] { animation: twc-cmdk-fade-out var(--duration-exit) var(--ease-in) forwards; pointer-events: none; }\n.twc-cmdk { width: 100%; max-width: 560px; max-height: 60vh; display: flex; flex-direction: column; overflow: hidden;\n background: var(--color-surface-raised); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-2xl);\n box-shadow: var(--shadow-xl); font-family: var(--font-sans); }\n.twc-cmdk[data-state=\"open\"] { animation: twico-pop-in var(--duration-base) var(--ease-spring); }\n.twc-cmdk[data-state=\"closed\"] { animation: twc-cmdk-pop-out var(--duration-exit) var(--ease-in) forwards; }\n@keyframes twc-cmdk-fade-out { from { opacity: 1; } to { opacity: 0; } }\n@keyframes twc-cmdk-pop-out { from { opacity: 1; transform: none; } to { opacity: 0; transform: translateY(-8px) scale(0.985); } }\n@media (prefers-reduced-motion: reduce) {\n .twc-cmdk__overlay[data-state], .twc-cmdk[data-state] { animation-duration: 1ms; }\n}\n.twc-cmdk__search { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-4) var(--space-5); border-bottom: var(--border-thin) solid var(--color-divider); }\n.twc-cmdk__search svg { width: 20px; height: 20px; color: var(--color-text-subtle); flex: none; }\n.twc-cmdk__input { flex: 1; min-width: 0; border: none; outline: none; background: transparent; font-family: inherit; font-size: var(--text-lg); color: var(--color-text); }\n.twc-cmdk__input:focus, .twc-cmdk__input:focus-visible { outline: none; box-shadow: none; }\n.twc-cmdk__input::placeholder { color: var(--color-text-subtle); }\n.twc-cmdk__kbd { flex: none; font-family: var(--font-mono); font-size: 11px; color: var(--color-text-subtle); padding: 3px 7px; border-radius: var(--radius-sm); background: var(--color-surface-sunken); border: var(--border-thin) solid var(--color-border); }\n.twc-cmdk__list { flex: 1; overflow-y: auto; padding: var(--space-2); }\n.twc-cmdk__group-label { font-size: 10px; font-weight: var(--font-bold); letter-spacing: var(--tracking-wider); text-transform: uppercase; color: var(--color-text-subtle); padding: var(--space-3) var(--space-3) var(--space-1); }\n.twc-cmdk__item { display: flex; align-items: center; gap: var(--space-3); width: 100%; padding: 10px 12px; border: none; background: none; cursor: pointer;\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text); text-align: start; border-radius: var(--radius-md); }\n.twc-cmdk__item[data-active=\"true\"] { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\n.twc-cmdk__item-ic { flex: none; display: inline-flex; color: var(--color-text-muted); }\n.twc-cmdk__item[data-active=\"true\"] .twc-cmdk__item-ic { color: var(--color-primary); }\n.twc-cmdk__item-ic svg { width: 18px; height: 18px; }\n.twc-cmdk__item-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }\n.twc-cmdk__item-label { font-weight: var(--font-medium); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.twc-cmdk__item-desc { font-size: var(--text-xs); color: var(--color-text-subtle); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.twc-cmdk__item-sc { flex: none; font-family: var(--font-mono); font-size: 11px; color: var(--color-text-subtle); }\n.twc-cmdk__empty { padding: var(--space-8); text-align: center; color: var(--color-text-subtle); font-size: var(--text-sm); }\n`;\n\nexport function CommandPalette({\n open,\n onClose,\n commands,\n placeholder = \"Type a command or search…\",\n emptyText = \"No results found\",\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-cmdk-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-cmdk-styles\";\n el.textContent = COMMAND_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [query, setQuery] = React.useState(\"\");\n const [active, setActive] = React.useState(0);\n const inputRef = React.useRef(null);\n const listRef = React.useRef(null);\n const paletteRef = React.useRef(null);\n const baseId = React.useId();\n\n // Stay mounted through the exit animation so closing is smooth, then unmount.\n const [mounted, setMounted] = React.useState(open);\n React.useEffect(() => {\n if (open) { setMounted(true); return; }\n const t = setTimeout(() => setMounted(false), 170);\n return () => clearTimeout(t);\n }, [open]);\n\n // Lock body scroll while open so the page behind the scrim can't scroll; restore\n // the previous overflow value on close/unmount. SSR-safe: effects run client-only.\n React.useEffect(() => {\n if (!open) return undefined;\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => { document.body.style.overflow = prev; };\n }, [open]);\n\n React.useEffect(() => {\n if (open) { setQuery(\"\"); setActive(0); const t = setTimeout(() => inputRef.current?.focus(), 30); return () => clearTimeout(t); }\n }, [open]);\n\n // Modal a11y (1/2): remember the element that opened the palette and restore\n // focus to it on close. Keyed on `open` only, so an unstable onClose identity\n // can't clobber the saved trigger element.\n React.useEffect(() => {\n if (!open) return;\n const prevFocused = document.activeElement;\n return () => {\n if (prevFocused && typeof prevFocused.focus === \"function\") prevFocused.focus();\n };\n }, [open]);\n\n // Modal a11y (2/2): Escape closes; Tab/Shift+Tab are trapped inside the palette.\n // The ref is read inside the handler so the trap works even though the panel\n // mounts one render after `open` flips.\n React.useEffect(() => {\n if (!open) return;\n const focusables = (node) =>\n node\n ? Array.from(\n node.querySelectorAll(\n 'a[href]:not([tabindex=\"-1\"]), button:not([disabled]):not([tabindex=\"-1\"]), textarea:not([disabled]):not([tabindex=\"-1\"]), input:not([disabled]):not([tabindex=\"-1\"]), select:not([disabled]):not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n )\n ).filter((el) => el.offsetParent !== null)\n : [];\n const onKey = (e) => {\n if (e.key === \"Escape\") { e.preventDefault(); onClose?.(); return; }\n if (e.key !== \"Tab\") return;\n const node = paletteRef.current;\n const f = focusables(node);\n if (!f.length) { e.preventDefault(); node?.focus(); return; }\n const first = f[0], last = f[f.length - 1], ae = document.activeElement;\n if (e.shiftKey) {\n if (ae === first || ae === node || !node.contains(ae)) { e.preventDefault(); last.focus(); }\n } else if (ae === last || !node.contains(ae)) { e.preventDefault(); first.focus(); }\n };\n document.addEventListener(\"keydown\", onKey);\n return () => document.removeEventListener(\"keydown\", onKey);\n }, [open, onClose]);\n\n const q = query.trim().toLowerCase();\n const filtered = React.useMemo(() => commands.filter((c) =>\n !q || c.label.toLowerCase().includes(q) || (c.keywords || \"\").toLowerCase().includes(q) || (c.group || \"\").toLowerCase().includes(q)\n ), [commands, q]);\n\n // group while preserving order; build flat index for keyboard nav\n const groups = [];\n const flat = [];\n filtered.forEach((c) => {\n const key = c.group || \"\";\n let g = groups.find((x) => x.key === key);\n if (!g) { g = { key, items: [] }; groups.push(g); }\n g.items.push(c); flat.push(c);\n });\n\n React.useEffect(() => { setActive(0); }, [query]);\n\n const run = (cmd) => { (cmd?.onSelect || cmd?.onClick)?.(); onClose?.(); };\n\n // Escape is handled by the document-level listener above (works from any focus).\n function onKeyDown(e) {\n if (e.key === \"ArrowDown\") { e.preventDefault(); setActive((a) => Math.min(a + 1, flat.length - 1)); }\n else if (e.key === \"ArrowUp\") { e.preventDefault(); setActive((a) => Math.max(a - 1, 0)); }\n else if (e.key === \"Enter\") { e.preventDefault(); const cmd = flat[active]; if (cmd) run(cmd); }\n }\n\n React.useEffect(() => {\n const node = listRef.current?.querySelector('[data-active=\"true\"]');\n if (node) node.scrollIntoView({ block: \"nearest\" });\n }, [active]);\n\n if (!mounted || typeof document === \"undefined\") return null;\n const state = open ? \"open\" : \"closed\";\n const listId = `${baseId}-list`;\n const optionId = (i) => `${baseId}-opt-${i}`;\n const activeId = flat[active] ? optionId(active) : undefined;\n let idx = -1;\n\n const overlay = (\n <div className=\"twc-cmdk__overlay\" data-state={state} onMouseDown={(e) => { if (e.target === e.currentTarget) onClose?.(); }}>\n <div ref={paletteRef} className={`twc-cmdk ${className}`} data-state={state} role=\"dialog\" aria-modal=\"true\" aria-label=\"Command palette\" tabIndex={-1} {...rest}>\n <div className=\"twc-cmdk__search\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/></svg>\n <input ref={inputRef} className=\"twc-cmdk__input\" value={query} placeholder={placeholder}\n role=\"combobox\" aria-expanded=\"true\" aria-controls={listId} aria-activedescendant={activeId}\n onChange={(e) => setQuery(e.target.value)} onKeyDown={onKeyDown} />\n <span className=\"twc-cmdk__kbd\">esc</span>\n </div>\n <div className=\"twc-cmdk__list\" id={listId} role=\"listbox\" ref={listRef}>\n {flat.length === 0 ? <div className=\"twc-cmdk__empty\">{emptyText}</div> :\n groups.map((g) => (\n <div key={g.key || \"_\"} role=\"group\">\n {g.key ? <div className=\"twc-cmdk__group-label\">{g.key}</div> : null}\n {g.items.map((c) => {\n idx += 1; const i = idx;\n return (\n <button key={c.id || i} id={optionId(i)} type=\"button\" className=\"twc-cmdk__item\" role=\"option\" aria-selected={i === active}\n tabIndex={-1}\n data-active={i === active || undefined} onMouseEnter={() => setActive(i)}\n onMouseDown={(e) => e.preventDefault()} onClick={() => run(c)}>\n {c.icon ? <span className=\"twc-cmdk__item-ic\" aria-hidden=\"true\">{c.icon}</span> : null}\n <span className=\"twc-cmdk__item-main\">\n <span className=\"twc-cmdk__item-label\">{c.label}</span>\n {c.description ? <span className=\"twc-cmdk__item-desc\">{c.description}</span> : null}\n </span>\n {c.shortcut ? <span className=\"twc-cmdk__item-sc\">{c.shortcut}</span> : null}\n </button>\n );\n })}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n\n // Portal to <body> so the overlay escapes any transformed / backdrop-filtered\n // ancestor (e.g. a sticky navbar) that would otherwise become its containing block.\n const RD = typeof createPortal === \"function\" ? createPortal : null;\n return RD ? RD(overlay, document.body) : overlay;\n}\n","import React from \"react\";\n\n// Currency metadata (symbol, code, decimal precision). Inlined so the bundler ships it.\nexport const CURRENCIES = {\n USD: { code: \"USD\", symbol: \"$\", precision: 2, label: \"US Dollar\" },\n EUR: { code: \"EUR\", symbol: \"€\", precision: 2, label: \"Euro\" },\n GBP: { code: \"GBP\", symbol: \"£\", precision: 2, label: \"British Pound\" },\n JPY: { code: \"JPY\", symbol: \"¥\", precision: 0, label: \"Japanese Yen\" },\n IDR: { code: \"IDR\", symbol: \"Rp\", precision: 2, label: \"Indonesian Rupiah\" },\n CNY: { code: \"CNY\", symbol: \"¥\", precision: 2, label: \"Chinese Yuan\" },\n INR: { code: \"INR\", symbol: \"₹\", precision: 2, label: \"Indian Rupee\" },\n SGD: { code: \"SGD\", symbol: \"S$\", precision: 2, label: \"Singapore Dollar\" },\n AUD: { code: \"AUD\", symbol: \"A$\", precision: 2, label: \"Australian Dollar\" },\n CAD: { code: \"CAD\", symbol: \"C$\", precision: 2, label: \"Canadian Dollar\" },\n CHF: { code: \"CHF\", symbol: \"Fr\", precision: 2, label: \"Swiss Franc\" },\n KRW: { code: \"KRW\", symbol: \"₩\", precision: 0, label: \"South Korean Won\" },\n BRL: { code: \"BRL\", symbol: \"R$\", precision: 2, label: \"Brazilian Real\" },\n MYR: { code: \"MYR\", symbol: \"RM\", precision: 2, label: \"Malaysian Ringgit\" },\n THB: { code: \"THB\", symbol: \"฿\", precision: 2, label: \"Thai Baht\" },\n};\n\nexport const CURRENCY_OPTIONS = Object.values(CURRENCIES).map((c) => ({\n value: c.code, label: `${c.code} — ${c.label}`,\n}));\n\n// Clamp a raw input string to the allowed precision (e.g. precision 2 → \"2.259\" → \"2.25\").\nexport function clampPrecision(str, precision) {\n if (str == null) return \"\";\n let s = String(str).replace(/[^0-9.\\-]/g, \"\");\n s = s.replace(/(?!^)-/g, \"\");\n const firstDot = s.indexOf(\".\");\n if (firstDot !== -1) s = s.slice(0, firstDot + 1) + s.slice(firstDot + 1).replace(/\\./g, \"\");\n if (precision <= 0) return s.split(\".\")[0];\n const [int, dec] = s.split(\".\");\n if (dec == null) return s;\n return (int || \"0\") + \".\" + dec.slice(0, precision);\n}\n\nconst CUR_CSS = `\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\n.twc-field__req { color: var(--color-danger); }\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n.twc-cur {\n --_h: var(--control-h-md);\n display: flex; align-items: stretch; height: var(--_h);\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border);\n border-radius: var(--radius-md); overflow: hidden;\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\n}\n.twc-cur[data-size=\"sm\"] { --_h: var(--control-h-sm); }\n.twc-cur[data-size=\"lg\"] { --_h: var(--control-h-lg); }\n.twc-cur:hover:not(:focus-within) { border-color: var(--color-border-strong); }\n/* tone → focus/open accent (default primary; reproduces current look). */\n.twc-cur { --_accent: var(--color-primary); --_ring: var(--ring); }\n.twc-cur[data-tone=\"success\"] { --_accent: var(--color-success); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-success) 32%, transparent); }\n.twc-cur[data-tone=\"warning\"] { --_accent: var(--color-warning); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-warning) 32%, transparent); }\n.twc-cur[data-tone=\"danger\"] { --_accent: var(--color-danger); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 32%, transparent); }\n.twc-cur[data-tone=\"info\"] { --_accent: var(--color-info); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-info) 32%, transparent); }\n.twc-cur[data-tone=\"neutral\"] { --_accent: var(--color-border-strong); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-text) 14%, transparent); }\n.twc-cur:focus-within { border-color: var(--_accent); box-shadow: var(--_ring); }\n.twc-cur[data-invalid=\"true\"] { border-color: var(--color-danger); }\n.twc-cur[data-invalid=\"true\"]:focus-within { box-shadow: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 28%, transparent); }\n.twc-cur[data-disabled=\"true\"] { background: var(--color-surface-sunken); opacity: 0.7; }\n.twc-cur__sym, .twc-cur__code {\n display: inline-flex; align-items: center; padding: 0 var(--space-3);\n background: var(--color-surface-sunken); color: var(--color-text-muted);\n font-size: var(--text-sm); font-weight: var(--font-semibold); white-space: nowrap; flex: none;\n}\n.twc-cur__sym { border-inline-end: var(--border-thin) solid var(--color-border); }\n.twc-cur__code { border-inline-start: var(--border-thin) solid var(--color-border); font-variant-numeric: tabular-nums; letter-spacing: 0.02em; }\n.twc-cur__el {\n flex: 1; min-width: 0; border: none; outline: none; background: transparent;\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text);\n text-align: end; padding: 0 var(--space-3); font-variant-numeric: tabular-nums;\n}\n.twc-cur__el:focus, .twc-cur__el:focus-visible { outline: none; box-shadow: none; }\n.twc-cur__el::placeholder { color: var(--color-text-subtle); }\n.twc-cur__el::-webkit-outer-spin-button, .twc-cur__el::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }\n`;\n\nfunction useCurStyles() {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-cur-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-cur-styles\"; el.textContent = CUR_CSS;\n document.head.appendChild(el);\n }, []);\n}\n\n/**\n * Currency input with a fixed currency (defined in code via `currency`).\n * Shows the symbol as a prefix and the currency code as a suffix, and enforces\n * the currency's decimal precision (e.g. 2 → rejects a 3rd decimal).\n */\nexport function Currency({\n label, hint, error, required = false, size = \"md\", tone = \"primary\",\n currency = \"USD\", precision, symbol, code,\n value, defaultValue = \"\", onChange, onValueChange,\n disabled = false, id, placeholder = \"0.00\", className = \"\", ...rest\n}) {\n useCurStyles();\n const meta = CURRENCIES[currency] || CURRENCIES.USD;\n const prec = precision != null ? precision : meta.precision;\n const sym = symbol != null ? symbol : meta.symbol;\n const cur = code != null ? code : meta.code;\n\n const autoId = React.useId();\n const fieldId = id || autoId;\n const invalid = Boolean(error);\n const controlled = value !== undefined;\n const [internal, setInternal] = React.useState(() => clampPrecision(String(defaultValue ?? \"\"), prec));\n const shown = controlled ? clampPrecision(String(value ?? \"\"), prec) : internal;\n\n // Link hint/error text to the input for screen readers (merged with any consumer-supplied ids).\n const describedBy = [error ? `${fieldId}-error` : hint ? `${fieldId}-hint` : null, rest[\"aria-describedby\"]]\n .filter(Boolean).join(\" \") || undefined;\n\n function handleChange(e) {\n const next = clampPrecision(e.target.value, prec);\n if (!controlled) setInternal(next);\n onChange?.(e);\n onValueChange?.(next === \"\" ? null : Number(next), next);\n }\n function handleBlur(e) {\n rest.onBlur?.(e); // consumer handler first, so it fires even when the value is empty/NaN\n if (shown === \"\" || shown == null) return;\n const n = Number(shown);\n if (Number.isNaN(n)) return;\n const fixed = n.toFixed(prec);\n if (!controlled) setInternal(fixed);\n onValueChange?.(Number(fixed), fixed);\n }\n\n return (\n <div className={`twc-field ${className}`}>\n {label ? (<label className=\"twc-field__label\" htmlFor={fieldId}>{label}{required ? <span className=\"twc-field__req\">*</span> : null}</label>) : null}\n <div className=\"twc-cur\" data-size={size} data-tone={tone} data-invalid={invalid || undefined} data-disabled={disabled || undefined}>\n <span className=\"twc-cur__sym\" aria-hidden=\"true\">{sym}</span>\n <input\n id={fieldId} className=\"twc-cur__el\" inputMode=\"decimal\" type=\"text\"\n value={shown} placeholder={placeholder} disabled={disabled} required={required || undefined}\n aria-invalid={invalid || undefined}\n {...rest}\n onChange={handleChange} onBlur={handleBlur} aria-describedby={describedBy}\n />\n <span className=\"twc-cur__code\">{cur}</span>\n </div>\n {error ? <span id={`${fieldId}-error`} className=\"twc-field__error\">{error}</span> : hint ? <span id={`${fieldId}-hint`} className=\"twc-field__hint\">{hint}</span> : null}\n </div>\n );\n}\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nconst SELECT_CSS = `\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\n.twc-field__req { color: var(--color-danger); }\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n\n.twc-sel { position: relative; font-family: var(--font-sans); }\n.twc-sel__trigger {\n --_h: var(--control-h-md);\n display: flex; align-items: center; gap: var(--space-2); width: 100%;\n min-height: var(--_h); padding: 0 var(--space-3); cursor: pointer;\n background: var(--color-surface); color: var(--color-text); text-align: start;\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md);\n font-family: inherit; font-size: var(--text-sm);\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\n}\n.twc-sel__trigger[data-size=\"sm\"] { --_h: var(--control-h-sm); }\n.twc-sel__trigger[data-size=\"lg\"] { --_h: var(--control-h-lg); }\n.twc-sel__trigger:hover:not([data-open=\"true\"]):not(:disabled) { border-color: var(--color-border-strong); }\n/* tone → focus/open accent (default primary; reproduces current look). */\n.twc-sel__trigger { --_accent: var(--color-primary); --_ring: var(--ring); }\n.twc-sel__trigger[data-tone=\"success\"] { --_accent: var(--color-success); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-success) 32%, transparent); }\n.twc-sel__trigger[data-tone=\"warning\"] { --_accent: var(--color-warning); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-warning) 32%, transparent); }\n.twc-sel__trigger[data-tone=\"danger\"] { --_accent: var(--color-danger); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 32%, transparent); }\n.twc-sel__trigger[data-tone=\"info\"] { --_accent: var(--color-info); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-info) 32%, transparent); }\n.twc-sel__trigger[data-tone=\"neutral\"] { --_accent: var(--color-border-strong); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-text) 14%, transparent); }\n.twc-sel__trigger[data-open=\"true\"] { border-color: var(--_accent); box-shadow: var(--_ring); }\n.twc-sel__trigger[data-invalid=\"true\"] { border-color: var(--color-danger); }\n.twc-sel__trigger:disabled { background: var(--color-surface-sunken); opacity: 0.7; cursor: not-allowed; }\n.twc-sel__value { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.twc-sel__value[data-placeholder=\"true\"] { color: var(--color-text-subtle); }\n.twc-sel__chevron { flex: none; color: var(--color-text-subtle); display: inline-flex; transition: transform var(--duration-base) var(--ease-spring); }\n.twc-sel__trigger[data-open=\"true\"] .twc-sel__chevron { transform: rotate(180deg); }\n.twc-sel__chevron svg { width: 16px; height: 16px; }\n.twc-sel__clear { flex: none; display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: var(--radius-full); color: var(--color-text-subtle); cursor: pointer; }\n.twc-sel__clear:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-sel__clear svg { width: 14px; height: 14px; }\n\n.twc-pop {\n position: absolute; z-index: var(--z-dropdown); top: calc(100% + 6px); inset-inline-start: 0; inset-inline-end: 0;\n background: var(--color-surface-raised); border: var(--border-thin) solid var(--color-border);\n border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); overflow: hidden;\n transform-origin: top;\n}\n.twc-pop[data-state=\"open\"] { animation: twico-scale-in var(--duration-fast) var(--ease-spring); }\n.twc-pop[data-state=\"closed\"] { animation: twc-select-out var(--duration-exit) var(--ease-in) forwards; pointer-events: none; }\n@keyframes twc-select-out { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.97); } }\n@media (prefers-reduced-motion: reduce) { .twc-pop[data-state] { animation-duration: 1ms; } }\n.twc-pop[data-placement=\"top\"] { top: auto; bottom: calc(100% + 6px); transform-origin: bottom; }\n.twc-pop__search { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); border-bottom: var(--border-thin) solid var(--color-divider); }\n.twc-pop__search svg { width: 15px; height: 15px; color: var(--color-text-subtle); flex: none; }\n.twc-pop__search input { flex: 1; min-width: 0; border: none; outline: none; background: transparent; font-family: inherit; font-size: var(--text-sm); color: var(--color-text); -webkit-appearance: none; appearance: none; border-radius: 0; box-shadow: none; padding: 2px 0; }\n.twc-pop__search input:focus, .twc-pop__search input:focus-visible { outline: none; box-shadow: none; border: none; }\n.twc-pop__search input::placeholder { color: var(--color-text-subtle); }\n.twc-pop__list { max-height: 260px; overflow-y: auto; padding: var(--space-1-5); }\n.twc-pop__group { padding: 8px 10px 4px; font-size: var(--text-xs); font-weight: var(--font-bold); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); }\n.twc-pop__group:not(:first-child) { margin-top: 4px; border-top: var(--border-thin) solid var(--color-divider); padding-top: 10px; }\n.twc-opt {\n display: flex; align-items: center; gap: var(--space-2-5); width: 100%; padding: 8px 10px;\n border: none; background: transparent; cursor: pointer; text-align: start;\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text); border-radius: var(--radius-md);\n transition: background-color var(--duration-fast) var(--ease-standard);\n}\n.twc-opt:hover, .twc-opt[data-active=\"true\"] { background: var(--color-surface-sunken); }\n.twc-opt[data-selected=\"true\"] .twc-opt__label { color: var(--color-primary); font-weight: var(--font-semibold); }\n.twc-opt__main { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }\n.twc-opt__label { line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.twc-opt__desc { font-size: var(--text-xs); color: var(--color-text-muted); line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.twc-opt__check { flex: none; color: var(--color-primary); display: inline-flex; }\n.twc-opt__check svg { width: 16px; height: 16px; }\n.twc-pop__empty { padding: 14px 12px; text-align: center; font-size: var(--text-sm); color: var(--color-text-subtle); }\n`;\n\nfunction toOpt(o) { return typeof o === \"string\" ? { value: o, label: o } : o; }\nfunction normalizeGroups(options) {\n const groups = []; let cur = null;\n (options || []).forEach((o) => {\n if (o && typeof o === \"object\" && Array.isArray(o.options)) {\n groups.push({ group: o.group, options: o.options.map(toOpt) }); cur = null;\n } else {\n if (!cur) { cur = { group: null, options: [] }; groups.push(cur); }\n cur.options.push(toOpt(o));\n }\n });\n return groups;\n}\nfunction ensureVisible(list, el) {\n if (!list || !el) return;\n const top = el.offsetTop, bottom = top + el.offsetHeight;\n if (top < list.scrollTop) list.scrollTop = top - 4;\n else if (bottom > list.scrollTop + list.clientHeight) list.scrollTop = bottom - list.clientHeight + 4;\n}\n\nexport function Select({\n label, hint, error, required = false, size = \"md\", tone = \"primary\",\n placeholder = \"Select…\", searchPlaceholder = \"Search…\", searchable, options, value, defaultValue = null,\n onChange, clearable = false, disabled = false, placement = \"bottom\", portal = true, minWidth = 0, id, className = \"\",\n onClick, onKeyDown, ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-select-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-select-styles\"; el.textContent = SELECT_CSS;\n document.head.appendChild(el);\n }, []);\n\n const groups = React.useMemo(() => normalizeGroups(options), [options]);\n const flat = React.useMemo(() => groups.flatMap((g) => g.options), [groups]);\n const autoId = React.useId();\n const fieldId = id || autoId;\n const [internal, setInternal] = React.useState(defaultValue);\n const current = value !== undefined ? value : internal;\n const [open, setOpen] = React.useState(false);\n const [render, setRender] = React.useState(false);\n const [active, setActive] = React.useState(0);\n const [coords, setCoords] = React.useState(null);\n const [query, setQuery] = React.useState(\"\");\n const wrapRef = React.useRef(null);\n const triggerRef = React.useRef(null);\n const popRef = React.useRef(null);\n const listRef = React.useRef(null);\n const activeRef = React.useRef(null);\n const searchRef = React.useRef(null);\n\n // Auto-enable search for longer lists unless the caller forces it on/off.\n const showSearch = searchable === undefined ? flat.length > 5 : searchable;\n const fGroups = React.useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return groups;\n return groups\n .map((g) => ({ group: g.group, options: g.options.filter((o) => o.label.toLowerCase().includes(q) || (o.description && o.description.toLowerCase().includes(q))) }))\n .filter((g) => g.options.length);\n }, [groups, query]);\n const visible = React.useMemo(() => fGroups.flatMap((g) => g.options), [fGroups]);\n\n const selected = flat.find((o) => o.value === current);\n\n // Portal mode: measure the trigger and pin the popover with fixed positioning so\n // it escapes any clipping/scrolling ancestor (e.g. a config panel). Auto-flips up\n // when there isn't enough room below.\n const place = React.useCallback(() => {\n const el = triggerRef.current; if (!el) return;\n const r = el.getBoundingClientRect();\n const vh = window.innerHeight;\n const below = vh - r.bottom;\n const flip = placement === \"top\" || (below < 260 && r.top > below);\n setCoords({ left: r.left, width: Math.max(r.width, minWidth),\n top: flip ? undefined : Math.round(r.bottom + 6),\n bottom: flip ? Math.round(vh - r.top + 6) : undefined, flip });\n }, [placement, minWidth]);\n\n React.useEffect(() => {\n if (!open || !portal) return;\n place();\n const onMove = () => place();\n window.addEventListener(\"scroll\", onMove, true);\n window.addEventListener(\"resize\", onMove);\n return () => { window.removeEventListener(\"scroll\", onMove, true); window.removeEventListener(\"resize\", onMove); };\n }, [open, portal, place]);\n\n React.useEffect(() => {\n if (!open) return;\n const idx = flat.findIndex((o) => o.value === current);\n setActive(idx >= 0 ? idx : 0);\n setQuery(\"\");\n if (showSearch) { const t = setTimeout(() => searchRef.current?.focus(), 20); }\n const onDown = (e) => {\n if (wrapRef.current && wrapRef.current.contains(e.target)) return;\n if (popRef.current && popRef.current.contains(e.target)) return;\n setOpen(false);\n };\n document.addEventListener(\"mousedown\", onDown);\n return () => document.removeEventListener(\"mousedown\", onDown);\n }, [open]);\n\n React.useEffect(() => { setActive(0); }, [query]);\n\n React.useEffect(() => { if (open) ensureVisible(listRef.current, activeRef.current); }, [active, open]);\n\n // Keep the listbox mounted through the close animation, then unmount.\n React.useEffect(() => {\n if (open) { setRender(true); return; }\n const t = setTimeout(() => setRender(false), 170);\n return () => clearTimeout(t);\n }, [open]);\n\n // On close, return focus to the trigger if it's still inside the (closing) popover —\n // e.g. a searchable Select moves focus into the search input on open, which would\n // otherwise drop to <body> when the popover unmounts. Never steals focus the user moved.\n const prevOpen = React.useRef(false);\n React.useEffect(() => {\n if (prevOpen.current && !open) {\n const ae = typeof document !== \"undefined\" ? document.activeElement : null;\n if (popRef.current && ae && popRef.current.contains(ae)) triggerRef.current?.focus();\n }\n prevOpen.current = open;\n }, [open]);\n\n function commit(v) {\n if (value === undefined) setInternal(v);\n onChange?.(v); setOpen(false);\n }\n function clear() {\n if (value === undefined) setInternal(null);\n onChange?.(null);\n }\n function handleKeyDown(e) {\n if (disabled) return;\n if (!open && clearable && current != null && (e.key === \"Delete\" || e.key === \"Backspace\")) { e.preventDefault(); clear(); return; }\n if (!open && (e.key === \"Enter\" || e.key === \" \" || e.key === \"ArrowDown\")) { e.preventDefault(); setOpen(true); return; }\n if (!open) return;\n if (e.key === \"Tab\") { setOpen(false); return; }\n if (e.key === \"Escape\") setOpen(false);\n else if (e.key === \"ArrowDown\") { e.preventDefault(); setActive((a) => Math.min(a + 1, visible.length - 1)); }\n else if (e.key === \"ArrowUp\") { e.preventDefault(); setActive((a) => Math.max(a - 1, 0)); }\n else if (e.key === \"Enter\") { e.preventDefault(); if (visible[active]) commit(visible[active].value); }\n }\n\n const listboxId = `${fieldId}-listbox`;\n const optionId = (i) => `${fieldId}-opt-${i}`;\n const activeId = open && visible[active] ? optionId(active) : undefined;\n const descId = `${fieldId}-desc`;\n const describedBy = error || hint ? descId : undefined;\n\n let counter = -1;\n const popInner = (\n <>\n {showSearch ? (\n <div className=\"twc-pop__search\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/></svg>\n <input ref={searchRef} value={query} placeholder={searchPlaceholder} onKeyDown={handleKeyDown}\n onChange={(e) => setQuery(e.target.value)} aria-label=\"Search options\"\n role=\"combobox\" aria-expanded={open} aria-controls={listboxId} aria-activedescendant={activeId} />\n </div>\n ) : null}\n <div className=\"twc-pop__list\" ref={listRef}>\n {visible.length === 0 ? <div className=\"twc-pop__empty\">No results found</div> :\n fGroups.map((g, gi) => (\n <React.Fragment key={gi}>\n {g.group ? <div className=\"twc-pop__group\">{g.group}</div> : null}\n {g.options.map((o) => {\n counter += 1; const idx = counter; const isSel = o.value === current;\n return (\n <button key={o.value} id={optionId(idx)} type=\"button\" className=\"twc-opt\" role=\"option\" aria-selected={isSel}\n ref={idx === active ? activeRef : null}\n data-selected={isSel || undefined} data-active={idx === active || undefined}\n onMouseEnter={() => setActive(idx)} onClick={() => commit(o.value)}>\n <span className=\"twc-opt__main\">\n <span className=\"twc-opt__label\">{o.label}</span>\n {o.description ? <span className=\"twc-opt__desc\">{o.description}</span> : null}\n </span>\n {isSel ? <span className=\"twc-opt__check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"/></svg></span> : null}\n </button>\n );\n })}\n </React.Fragment>\n ))}\n </div>\n </>\n );\n\n const RD = { createPortal: (typeof createPortal === \"function\" ? createPortal : (typeof window !== \"undefined\" && window.ReactDOM && window.ReactDOM.createPortal)) };\n const canPortal = portal && RD && RD.createPortal;\n\n const popState = open ? \"open\" : \"closed\";\n let popEl = null;\n if (render) {\n if (canPortal && coords) {\n popEl = RD.createPortal(\n <div className=\"twc-pop twc-pop--portal\" id={listboxId} role=\"listbox\" ref={popRef}\n data-state={popState} data-placement={coords.flip ? \"top\" : undefined}\n style={{ position: \"fixed\", left: coords.left, top: coords.top, bottom: coords.bottom, width: coords.width, right: \"auto\", zIndex: \"var(--z-tooltip)\" }}>\n {popInner}\n </div>, document.body);\n } else if (!portal) {\n popEl = (\n <div className=\"twc-pop\" id={listboxId} role=\"listbox\" ref={popRef} data-state={popState} data-placement={placement === \"top\" ? \"top\" : undefined}>\n {popInner}\n </div>\n );\n }\n }\n\n return (\n <div className={`twc-field ${className}`} ref={wrapRef}>\n {label ? (<label className=\"twc-field__label\" htmlFor={fieldId}>{label}{required ? <span className=\"twc-field__req\">*</span> : null}</label>) : null}\n <div className=\"twc-sel\">\n <button type=\"button\" id={fieldId} ref={triggerRef} className=\"twc-sel__trigger\" data-size={size} data-tone={tone}\n data-open={open || undefined} data-invalid={Boolean(error) || undefined} disabled={disabled}\n aria-haspopup=\"listbox\" aria-expanded={open} aria-controls={open ? listboxId : undefined} aria-activedescendant={activeId}\n aria-invalid={Boolean(error) || undefined} aria-describedby={describedBy}\n onClick={(e) => { onClick?.(e); if (!e.defaultPrevented) setOpen((o) => !o); }}\n onKeyDown={(e) => { onKeyDown?.(e); if (!e.defaultPrevented) handleKeyDown(e); }} {...rest}>\n <span className=\"twc-sel__value\" data-placeholder={!selected || undefined}>{selected ? selected.label : placeholder}</span>\n {clearable && selected && !disabled ? (\n <span className=\"twc-sel__clear\" aria-hidden=\"true\" onClick={(e) => { e.stopPropagation(); clear(); }}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\n </span>\n ) : null}\n <span className=\"twc-sel__chevron\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>\n </span>\n </button>\n {popEl}\n </div>\n {error ? <span id={descId} className=\"twc-field__error\">{error}</span> : hint ? <span id={descId} className=\"twc-field__hint\">{hint}</span> : null}\n </div>\n );\n}\n","import React from \"react\";\nimport { CURRENCIES, CURRENCY_OPTIONS, clampPrecision } from \"./Currency.jsx\";\nimport { Select } from \"./Select.jsx\";\n\nconst CURF_CSS = `\n/* Shared input shell (self-contained — CurrencyField must not depend on the\n Currency component being rendered on the same page to get these styles). */\n.twc-cur {\n --_h: var(--control-h-md);\n display: flex; align-items: stretch; height: var(--_h);\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border);\n border-radius: var(--radius-md); overflow: hidden;\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\n}\n.twc-cur[data-size=\"sm\"] { --_h: var(--control-h-sm); }\n.twc-cur[data-size=\"lg\"] { --_h: var(--control-h-lg); }\n.twc-cur:hover:not(:focus-within) { border-color: var(--color-border-strong); }\n/* tone → focus/open accent (default primary; reproduces current look). */\n.twc-cur { --_accent: var(--color-primary); --_ring: var(--ring); }\n.twc-cur[data-tone=\"success\"] { --_accent: var(--color-success); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-success) 32%, transparent); }\n.twc-cur[data-tone=\"warning\"] { --_accent: var(--color-warning); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-warning) 32%, transparent); }\n.twc-cur[data-tone=\"danger\"] { --_accent: var(--color-danger); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 32%, transparent); }\n.twc-cur[data-tone=\"info\"] { --_accent: var(--color-info); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-info) 32%, transparent); }\n.twc-cur[data-tone=\"neutral\"] { --_accent: var(--color-border-strong); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-text) 14%, transparent); }\n.twc-cur:focus-within { border-color: var(--_accent); box-shadow: var(--_ring); }\n.twc-cur[data-invalid=\"true\"] { border-color: var(--color-danger); }\n.twc-cur[data-invalid=\"true\"]:focus-within { box-shadow: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 28%, transparent); }\n.twc-cur[data-disabled=\"true\"] { background: var(--color-surface-sunken); opacity: 0.7; }\n.twc-cur__sym, .twc-cur__code {\n display: inline-flex; align-items: center; padding: 0 var(--space-3);\n background: var(--color-surface-sunken); color: var(--color-text-muted);\n font-size: var(--text-sm); font-weight: var(--font-semibold); white-space: nowrap; flex: none;\n}\n.twc-cur__sym { border-inline-end: var(--border-thin) solid var(--color-border); }\n.twc-cur__code { border-inline-start: var(--border-thin) solid var(--color-border); font-variant-numeric: tabular-nums; letter-spacing: 0.02em; }\n.twc-cur__el {\n flex: 1; min-width: 0; border: none; outline: none; background: transparent;\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text);\n text-align: end; padding: 0 var(--space-3); font-variant-numeric: tabular-nums;\n}\n.twc-cur__el:focus, .twc-cur__el:focus-visible { outline: none; box-shadow: none; }\n.twc-cur__el::placeholder { color: var(--color-text-subtle); }\n.twc-cur__el::-webkit-outer-spin-button, .twc-cur__el::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }\n.twc-curf__pick { flex: none; display: flex; align-items: stretch; border-inline-end: var(--border-thin) solid var(--color-border); }\n.twc-curf__pick .twc-field { width: 132px; }\n.twc-curf__pick .twc-sel__trigger { height: 100%; border: none; border-radius: 0; background: var(--color-surface-sunken); box-shadow: none; }\n.twc-curf__pick .twc-sel__trigger:focus-visible { box-shadow: var(--ring); }\n.twc-curf__pick .twc-sel__value { font-weight: var(--font-semibold); color: var(--color-text-muted); }\n`;\n\nfunction useCurfStyles() {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-curf-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-curf-styles\"; el.textContent = CURF_CSS;\n document.head.appendChild(el);\n }, []);\n}\n\n/**\n * Currency input where the USER picks the currency from a dropdown. The chosen\n * currency drives the prefix symbol, suffix code, and the enforced precision.\n */\nexport function CurrencyField({\n label, hint, error, required = false, size = \"md\", tone = \"primary\",\n currency, defaultCurrency = \"USD\", onCurrencyChange, currencies,\n value, defaultValue = \"\", onChange, onValueChange,\n disabled = false, id, placeholder = \"0.00\", className = \"\", ...rest\n}) {\n useCurfStyles();\n const autoId = React.useId();\n const fieldId = id || autoId;\n const invalid = Boolean(error);\n\n const curControlled = currency !== undefined;\n const [curInternal, setCurInternal] = React.useState(defaultCurrency);\n const cur = curControlled ? currency : curInternal;\n const meta = CURRENCIES[cur] || CURRENCIES.USD;\n const prec = meta.precision;\n\n const valControlled = value !== undefined;\n const [valInternal, setValInternal] = React.useState(() => clampPrecision(String(defaultValue ?? \"\"), prec));\n const shown = valControlled ? clampPrecision(String(value ?? \"\"), prec) : valInternal;\n\n // Link hint/error text to the input for screen readers (merged with any consumer-supplied ids).\n const describedBy = [error ? `${fieldId}-error` : hint ? `${fieldId}-hint` : null, rest[\"aria-describedby\"]]\n .filter(Boolean).join(\" \") || undefined;\n\n const options = React.useMemo(() => {\n if (!currencies) return CURRENCY_OPTIONS;\n return currencies.map((c) => (typeof c === \"string\" ? { value: c, label: `${c} — ${(CURRENCIES[c] || {}).label || c}` } : c));\n }, [currencies]);\n\n function setCurrency(next) {\n if (!curControlled) setCurInternal(next);\n onCurrencyChange?.(next);\n // re-clamp current value to the new currency's precision, and notify the consumer\n // so a controlled value (and any formatted display) stays in sync with what's shown.\n const reclamped = clampPrecision(shown, (CURRENCIES[next] || CURRENCIES.USD).precision);\n if (!valControlled) setValInternal(reclamped);\n onValueChange?.(reclamped === \"\" ? null : Number(reclamped), reclamped, next);\n }\n function handleChange(e) {\n onChange?.(e); // consumer handler first, then internal clamping/state\n const next = clampPrecision(e.target.value, prec);\n if (!valControlled) setValInternal(next);\n onValueChange?.(next === \"\" ? null : Number(next), next, cur);\n }\n function handleBlur(e) {\n rest.onBlur?.(e); // consumer handler first, so it fires even when the value is empty/NaN\n if (shown === \"\" || shown == null) return;\n const n = Number(shown); if (Number.isNaN(n)) return;\n const fixed = n.toFixed(prec);\n if (!valControlled) setValInternal(fixed);\n onValueChange?.(Number(fixed), fixed, cur);\n }\n\n return (\n <div className={`twc-field ${className}`}>\n {label ? (<label className=\"twc-field__label\" htmlFor={fieldId}>{label}{required ? <span className=\"twc-field__req\">*</span> : null}</label>) : null}\n <div className=\"twc-cur\" data-size={size} data-tone={tone} data-invalid={invalid || undefined} data-disabled={disabled || undefined}>\n <span className=\"twc-curf__pick\">\n <Select size={size} value={cur} options={options} disabled={disabled} searchable portal minWidth={260}\n aria-label=\"Currency\" onChange={setCurrency} />\n </span>\n <span className=\"twc-cur__sym\" aria-hidden=\"true\">{meta.symbol}</span>\n <input\n id={fieldId} className=\"twc-cur__el\" inputMode=\"decimal\" type=\"text\"\n value={shown} placeholder={placeholder} disabled={disabled} required={required || undefined}\n aria-invalid={invalid || undefined}\n {...rest}\n onChange={handleChange} onBlur={handleBlur} aria-describedby={describedBy}\n />\n <span className=\"twc-cur__code\">{meta.code}</span>\n </div>\n {error ? <span id={`${fieldId}-error`} className=\"twc-field__error\">{error}</span> : hint ? <span id={`${fieldId}-hint`} className=\"twc-field__hint\">{hint}</span> : null}\n </div>\n );\n}\n","import React from \"react\";\n\nconst FIELD_CSS = `\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\n.twc-field__req { color: var(--color-danger); }\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n\n.twc-input {\n --_h: var(--control-h-md);\n display: flex; align-items: center; gap: var(--space-2);\n height: var(--_h);\n padding-inline: var(--space-3);\n background: var(--color-surface);\n border: var(--border-thin) solid var(--color-border);\n border-radius: var(--radius-md);\n transition: border-color var(--duration-fast) var(--ease-standard),\n box-shadow var(--duration-fast) var(--ease-standard),\n background-color var(--duration-fast) var(--ease-standard);\n}\n.twc-input[data-size=\"sm\"] { --_h: var(--control-h-sm); padding-inline: var(--space-2-5); }\n.twc-input[data-size=\"lg\"] { --_h: var(--control-h-lg); padding-inline: var(--space-4); }\n.twc-input:hover:not([data-disabled]):not(:focus-within) { border-color: var(--color-border-strong); }\n/* tone → focus/open accent (default primary; reproduces current look). */\n.twc-input { --_accent: var(--color-primary); --_ring: var(--ring); }\n.twc-input[data-tone=\"success\"] { --_accent: var(--color-success); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-success) 32%, transparent); }\n.twc-input[data-tone=\"warning\"] { --_accent: var(--color-warning); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-warning) 32%, transparent); }\n.twc-input[data-tone=\"danger\"] { --_accent: var(--color-danger); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 32%, transparent); }\n.twc-input[data-tone=\"info\"] { --_accent: var(--color-info); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-info) 32%, transparent); }\n.twc-input[data-tone=\"neutral\"] { --_accent: var(--color-border-strong); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-text) 14%, transparent); }\n.twc-input:focus-within { border-color: var(--_accent); box-shadow: var(--_ring); }\n.twc-input[data-invalid=\"true\"] { border-color: var(--color-danger); }\n.twc-input[data-invalid=\"true\"]:focus-within { box-shadow: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 28%, transparent); }\n.twc-input[data-disabled] { background: var(--color-surface-sunken); opacity: 0.7; cursor: not-allowed; }\n.twc-input__el {\n flex: 1; min-width: 0; border: none; outline: none; background: transparent;\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text); height: 100%;\n}\n.twc-input__el:focus, .twc-input__el:focus-visible { outline: none; box-shadow: none; }\n.twc-input__el::placeholder { color: var(--color-text-subtle); }\n.twc-input__el:disabled { cursor: not-allowed; }\n.twc-input__affix { display: inline-flex; color: var(--color-text-subtle); flex: none; }\n.twc-input__reveal { display: inline-grid; place-items: center; width: 24px; height: 24px; padding: 0; border: none;\n background: transparent; color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-sm);\n transition: background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard); }\n.twc-input__reveal:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-input__reveal:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-input__reveal svg { width: 17px; height: 17px; }\n`;\n\nfunction useFieldStyles() {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-field-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-field-styles\";\n el.textContent = FIELD_CSS;\n document.head.appendChild(el);\n }, []);\n}\n\nexport function Input({\n label,\n hint,\n error,\n required = false,\n size = \"md\",\n tone = \"primary\",\n leftIcon,\n rightIcon,\n type = \"text\",\n disabled = false,\n id,\n className = \"\",\n ...rest\n}) {\n useFieldStyles();\n const autoId = React.useId();\n const fieldId = id || autoId;\n const descId = `${fieldId}-desc`;\n const invalid = Boolean(error);\n const isPassword = type === \"password\";\n const [revealed, setRevealed] = React.useState(false);\n const effectiveType = isPassword && revealed ? \"text\" : type;\n\n // Password fields get a built-in reveal/hide eye toggle unless the caller supplies their own rightIcon.\n const suffix = rightIcon\n ? <span className=\"twc-input__affix\">{rightIcon}</span>\n : isPassword\n ? (\n <button type=\"button\" className=\"twc-input__reveal\" disabled={disabled}\n aria-label={revealed ? \"Hide password\" : \"Show password\"} aria-pressed={revealed}\n onClick={() => setRevealed((v) => !v)} tabIndex={disabled ? -1 : 0}>\n {revealed ? (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M9.88 9.88a3 3 0 0 0 4.24 4.24\"/><path d=\"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68\"/><path d=\"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61\"/><path d=\"m2 2 20 20\"/></svg>\n ) : (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></svg>\n )}\n </button>\n )\n : null;\n\n return (\n <div className={`twc-field ${className}`}>\n {label ? (\n <label className=\"twc-field__label\" htmlFor={fieldId}>\n {label}{required ? <span className=\"twc-field__req\">*</span> : null}\n </label>\n ) : null}\n <div className=\"twc-input\" data-size={size} data-tone={tone} data-invalid={invalid || undefined} data-disabled={disabled || undefined}>\n {leftIcon ? <span className=\"twc-input__affix\">{leftIcon}</span> : null}\n <input\n id={fieldId}\n className=\"twc-input__el\"\n type={effectiveType}\n disabled={disabled}\n required={required || undefined}\n aria-required={required || undefined}\n aria-invalid={invalid || undefined}\n aria-describedby={error || hint ? descId : undefined}\n {...rest}\n />\n {suffix}\n </div>\n {error ? <span id={descId} className=\"twc-field__error\">{error}</span> : hint ? <span id={descId} className=\"twc-field__hint\">{hint}</span> : null}\n </div>\n );\n}\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nconst MULTI_CSS = `\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\n.twc-field__req { color: var(--color-danger); }\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n\n.twc-ms { position: relative; font-family: var(--font-sans); }\n.twc-ms__control {\n --_h: var(--control-h-md);\n display: flex; align-items: center; flex-wrap: wrap; gap: 5px; width: 100%;\n min-height: var(--_h); padding: 5px var(--space-3); cursor: text;\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md);\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\n}\n.twc-ms__control[data-size=\"sm\"] { --_h: var(--control-h-sm); }\n.twc-ms__control[data-size=\"lg\"] { --_h: var(--control-h-lg); }\n.twc-ms__control:hover:not([data-open=\"true\"]) { border-color: var(--color-border-strong); }\n/* tone → focus/open accent + selected-chip color (default primary; reproduces current look). */\n.twc-ms__control { --_accent: var(--color-primary); --_ring: var(--ring); --_accent-subtle: var(--color-primary-subtle); --_accent-subtle-fg: var(--color-primary-subtle-fg); }\n.twc-ms__control[data-tone=\"success\"] { --_accent: var(--color-success); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-success) 32%, transparent); --_accent-subtle: var(--color-success-subtle); --_accent-subtle-fg: var(--color-success-subtle-fg); }\n.twc-ms__control[data-tone=\"warning\"] { --_accent: var(--color-warning); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-warning) 32%, transparent); --_accent-subtle: var(--color-warning-subtle); --_accent-subtle-fg: var(--color-warning-subtle-fg); }\n.twc-ms__control[data-tone=\"danger\"] { --_accent: var(--color-danger); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 32%, transparent); --_accent-subtle: var(--color-danger-subtle); --_accent-subtle-fg: var(--color-danger-subtle-fg); }\n.twc-ms__control[data-tone=\"info\"] { --_accent: var(--color-info); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-info) 32%, transparent); --_accent-subtle: var(--color-info-subtle); --_accent-subtle-fg: var(--color-info-subtle-fg); }\n.twc-ms__control[data-tone=\"neutral\"] { --_accent: var(--color-border-strong); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-text) 14%, transparent); --_accent-subtle: var(--color-surface-sunken); --_accent-subtle-fg: var(--color-text-muted); }\n.twc-ms__control[data-open=\"true\"] { border-color: var(--_accent); box-shadow: var(--_ring); }\n.twc-ms__control[data-invalid=\"true\"] { border-color: var(--color-danger); }\n.twc-ms__control[data-disabled=\"true\"] { background: var(--color-surface-sunken); opacity: 0.7; cursor: not-allowed; }\n.twc-ms__chip {\n display: inline-flex; align-items: center; gap: 5px; padding: 2px 4px 2px 9px; height: 24px;\n background: var(--_accent-subtle); color: var(--_accent-subtle-fg);\n border-radius: var(--radius-full); font-size: var(--text-xs); font-weight: var(--font-semibold);\n}\n.twc-ms__chip-x { display: inline-grid; place-items: center; width: 16px; height: 16px; border: none; padding: 0; background: transparent; color: inherit; cursor: pointer; border-radius: var(--radius-full); opacity: 0.7; }\n.twc-ms__chip-x:hover { opacity: 1; background: color-mix(in srgb, currentColor 18%, transparent); }\n.twc-ms__chip-x svg { width: 12px; height: 12px; }\n.twc-ms__input { flex: 1; min-width: 70px; border: none; outline: none; background: transparent; font-family: inherit; font-size: var(--text-sm); color: var(--color-text); height: 24px; cursor: text; }\n.twc-ms__input:focus, .twc-ms__input:focus-visible { outline: none; box-shadow: none; }\n.twc-ms__input::placeholder { color: var(--color-text-subtle); }\n.twc-ms__chev { flex: none; display: inline-grid; place-items: center; border: none; background: transparent; color: var(--color-text-subtle); cursor: pointer; padding: 0; transition: transform var(--duration-base) var(--ease-spring); }\n.twc-ms__control[data-open=\"true\"] .twc-ms__chev { transform: rotate(180deg); }\n.twc-ms__chev svg { width: 16px; height: 16px; }\n.twc-ms__clear { flex: none; display: inline-grid; place-items: center; width: 20px; height: 20px; border: none; background: transparent; padding: 0; border-radius: var(--radius-full); color: var(--color-text-subtle); cursor: pointer; }\n.twc-ms__clear:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-ms__clear svg { width: 14px; height: 14px; }\n\n.twc-pop {\n position: absolute; z-index: var(--z-dropdown); top: calc(100% + 6px); inset-inline-start: 0; inset-inline-end: 0;\n background: var(--color-surface-raised); border: var(--border-thin) solid var(--color-border);\n border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); overflow: hidden;\n transform-origin: top; animation: twico-scale-in var(--duration-fast) var(--ease-spring);\n}\n.twc-pop[data-placement=\"top\"] { top: auto; bottom: calc(100% + 6px); transform-origin: bottom; }\n.twc-pop__list { max-height: 260px; overflow-y: auto; padding: var(--space-1-5); }\n.twc-pop__group { padding: 8px 10px 4px; font-size: var(--text-xs); font-weight: var(--font-bold); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); }\n.twc-pop__group:not(:first-child) { margin-top: 4px; border-top: var(--border-thin) solid var(--color-divider); padding-top: 10px; }\n.twc-opt {\n display: flex; align-items: center; gap: var(--space-2-5); width: 100%; padding: 8px 10px;\n border: none; background: transparent; cursor: pointer; text-align: start;\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text); border-radius: var(--radius-md);\n transition: background-color var(--duration-fast) var(--ease-standard);\n}\n.twc-opt:hover, .twc-opt[data-active=\"true\"] { background: var(--color-surface-sunken); }\n.twc-opt__box {\n flex: none; width: 18px; height: 18px; display: grid; place-items: center;\n border: var(--border-medium) solid var(--color-border-strong); border-radius: var(--radius-sm);\n color: var(--color-primary-fg); transition: background-color var(--duration-fast), border-color var(--duration-fast);\n}\n.twc-opt[data-selected=\"true\"] .twc-opt__box { background: var(--color-primary); border-color: var(--color-primary); }\n.twc-opt__box svg { width: 12px; height: 12px; opacity: 0; }\n.twc-opt[data-selected=\"true\"] .twc-opt__box svg { opacity: 1; }\n.twc-opt__main { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }\n.twc-opt__label { line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.twc-opt__desc { font-size: var(--text-xs); color: var(--color-text-muted); line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.twc-pop__empty { padding: 14px 12px; text-align: center; font-size: var(--text-sm); color: var(--color-text-subtle); }\n`;\n\nfunction toOpt(o) { return typeof o === \"string\" ? { value: o, label: o } : o; }\nfunction normalizeGroups(options) {\n const groups = []; let cur = null;\n (options || []).forEach((o) => {\n if (o && typeof o === \"object\" && Array.isArray(o.options)) {\n groups.push({ group: o.group, options: o.options.map(toOpt) }); cur = null;\n } else {\n if (!cur) { cur = { group: null, options: [] }; groups.push(cur); }\n cur.options.push(toOpt(o));\n }\n });\n return groups;\n}\nfunction matches(o, q) {\n if (!q) return true;\n const s = q.toLowerCase();\n return o.label.toLowerCase().includes(s) || (o.description && o.description.toLowerCase().includes(s));\n}\nfunction ensureVisible(list, el) {\n if (!list || !el) return;\n const top = el.offsetTop, bottom = top + el.offsetHeight;\n if (top < list.scrollTop) list.scrollTop = top - 4;\n else if (bottom > list.scrollTop + list.clientHeight) list.scrollTop = bottom - list.clientHeight + 4;\n}\n\nexport function MultiSelect({\n label, hint, error, required = false, size = \"md\", tone = \"primary\",\n placeholder = \"Select…\", options, value, defaultValue = [],\n onChange, clearable = false, disabled = false, placement = \"bottom\", portal = true, minWidth = 0,\n id, className = \"\", onFocus, onKeyDown, ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-ms-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-ms-styles\"; el.textContent = MULTI_CSS;\n document.head.appendChild(el);\n }, []);\n\n const groups = React.useMemo(() => normalizeGroups(options), [options]);\n const flat = React.useMemo(() => groups.flatMap((g) => g.options), [groups]);\n const autoId = React.useId();\n const fieldId = id || autoId;\n const [internal, setInternal] = React.useState(defaultValue);\n const selected = value !== undefined ? value : internal;\n\n const [open, setOpen] = React.useState(false);\n const [query, setQuery] = React.useState(\"\");\n const [active, setActive] = React.useState(0);\n const [coords, setCoords] = React.useState(null);\n const wrapRef = React.useRef(null);\n const controlRef = React.useRef(null);\n const inputRef = React.useRef(null);\n const popRef = React.useRef(null);\n const listRef = React.useRef(null);\n const activeRef = React.useRef(null);\n\n const fGroups = React.useMemo(\n () => groups.map((g) => ({ group: g.group, options: g.options.filter((o) => matches(o, query.trim())) })).filter((g) => g.options.length),\n [groups, query]\n );\n const visible = React.useMemo(() => fGroups.flatMap((g) => g.options), [fGroups]);\n\n // Portal mode: measure the control and pin the popover with fixed positioning so\n // it escapes any clipping/scrolling ancestor. Auto-flips up when there isn't\n // enough room below (same logic as Select).\n const place = React.useCallback(() => {\n const el = controlRef.current; if (!el) return;\n const r = el.getBoundingClientRect();\n const vh = window.innerHeight;\n const below = vh - r.bottom;\n const flip = placement === \"top\" || (below < 260 && r.top > below);\n setCoords({ left: r.left, width: Math.max(r.width, minWidth),\n top: flip ? undefined : Math.round(r.bottom + 6),\n bottom: flip ? Math.round(vh - r.top + 6) : undefined, flip });\n }, [placement, minWidth]);\n\n React.useEffect(() => {\n if (!open || !portal) return;\n place();\n const onMove = () => place();\n window.addEventListener(\"scroll\", onMove, true);\n window.addEventListener(\"resize\", onMove);\n return () => { window.removeEventListener(\"scroll\", onMove, true); window.removeEventListener(\"resize\", onMove); };\n }, [open, portal, place]);\n\n React.useEffect(() => {\n if (!open) return;\n const onDown = (e) => {\n if (wrapRef.current && wrapRef.current.contains(e.target)) return;\n if (popRef.current && popRef.current.contains(e.target)) return;\n setOpen(false); setQuery(\"\");\n };\n document.addEventListener(\"mousedown\", onDown);\n return () => document.removeEventListener(\"mousedown\", onDown);\n }, [open]);\n React.useEffect(() => { setActive(0); }, [query]);\n React.useEffect(() => { if (open) ensureVisible(listRef.current, activeRef.current); }, [active, open]);\n\n function commit(next) {\n if (value === undefined) setInternal(next);\n onChange?.(next);\n }\n function toggle(v) {\n commit(selected.includes(v) ? selected.filter((x) => x !== v) : [...selected, v]);\n setQuery(\"\");\n inputRef.current?.focus();\n }\n function handleKeyDown(e) {\n if (e.key === \"ArrowDown\") { e.preventDefault(); if (!open) setOpen(true); else setActive((a) => Math.min(a + 1, visible.length - 1)); }\n else if (e.key === \"ArrowUp\") { e.preventDefault(); setActive((a) => Math.max(a - 1, 0)); }\n else if (e.key === \"Enter\") { e.preventDefault(); if (open && visible[active]) toggle(visible[active].value); }\n else if (e.key === \"Escape\") { setOpen(false); setQuery(\"\"); }\n else if (e.key === \"Backspace\" && !query && selected.length) { commit(selected.slice(0, -1)); }\n }\n\n const selectedOpts = flat.filter((o) => selected.includes(o.value));\n const listboxId = `${fieldId}-listbox`;\n const optionId = (i) => `${fieldId}-opt-${i}`;\n const activeId = open && visible[active] ? optionId(active) : undefined;\n const descId = `${fieldId}-desc`;\n const describedBy = error || hint ? descId : undefined;\n let counter = -1;\n\n const popInner = (\n <div className=\"twc-pop__list\" id={listboxId} ref={listRef} role=\"listbox\" aria-multiselectable=\"true\">\n {visible.length === 0 ? <div className=\"twc-pop__empty\">No results found</div> :\n fGroups.map((g, gi) => (\n <React.Fragment key={gi}>\n {g.group ? <div className=\"twc-pop__group\">{g.group}</div> : null}\n {g.options.map((o) => {\n counter += 1; const idx = counter; const isSel = selected.includes(o.value);\n return (\n <button key={o.value} id={optionId(idx)} type=\"button\" className=\"twc-opt\" role=\"option\" aria-selected={isSel}\n ref={idx === active ? activeRef : null}\n data-selected={isSel || undefined} data-active={idx === active || undefined}\n onMouseEnter={() => setActive(idx)} onMouseDown={(e) => e.preventDefault()} onClick={() => toggle(o.value)}>\n <span className=\"twc-opt__box\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"/></svg></span>\n <span className=\"twc-opt__main\">\n <span className=\"twc-opt__label\">{o.label}</span>\n {o.description ? <span className=\"twc-opt__desc\">{o.description}</span> : null}\n </span>\n </button>\n );\n })}\n </React.Fragment>\n ))}\n </div>\n );\n\n const RD = { createPortal: (typeof createPortal === \"function\" ? createPortal : (typeof window !== \"undefined\" && window.ReactDOM && window.ReactDOM.createPortal)) };\n const canPortal = portal && RD && RD.createPortal;\n\n let popEl = null;\n if (open) {\n if (canPortal && coords) {\n popEl = RD.createPortal(\n <div className=\"twc-pop twc-pop--portal\" ref={popRef}\n data-placement={coords.flip ? \"top\" : undefined}\n style={{ position: \"fixed\", left: coords.left, top: coords.top, bottom: coords.bottom, width: coords.width, right: \"auto\", zIndex: \"var(--z-tooltip)\" }}>\n {popInner}\n </div>, document.body);\n } else if (!portal) {\n popEl = (\n <div className=\"twc-pop\" ref={popRef} data-placement={placement === \"top\" ? \"top\" : undefined}>\n {popInner}\n </div>\n );\n }\n }\n\n return (\n <div className={`twc-field ${className}`} ref={wrapRef}>\n {label ? (<label className=\"twc-field__label\" htmlFor={fieldId}>{label}{required ? <span className=\"twc-field__req\">*</span> : null}</label>) : null}\n <div className=\"twc-ms\">\n <div className=\"twc-ms__control\" ref={controlRef} data-size={size} data-tone={tone} data-open={open || undefined} data-invalid={Boolean(error) || undefined} data-disabled={disabled || undefined}\n onClick={() => { if (!disabled) { inputRef.current?.focus(); setOpen(true); } }}>\n {selectedOpts.map((o) => (\n <span className=\"twc-ms__chip\" key={o.value}>\n {o.label}\n <button type=\"button\" className=\"twc-ms__chip-x\" aria-label={`Remove ${o.label}`} onClick={(e) => { e.stopPropagation(); toggle(o.value); }}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\n </button>\n </span>\n ))}\n <input ref={inputRef} id={fieldId} className=\"twc-ms__input\" role=\"combobox\" aria-expanded={open} aria-autocomplete=\"list\"\n aria-controls={open ? listboxId : undefined} aria-activedescendant={activeId}\n aria-invalid={Boolean(error) || undefined} aria-describedby={describedBy}\n placeholder={selectedOpts.length ? \"\" : placeholder} value={query} disabled={disabled}\n onFocus={(e) => { onFocus?.(e); setOpen(true); }}\n onChange={(e) => { setQuery(e.target.value); setOpen(true); }}\n onKeyDown={(e) => { onKeyDown?.(e); if (!e.defaultPrevented) handleKeyDown(e); }} {...rest} />\n {clearable && selected.length > 0 && !disabled ? (\n <button type=\"button\" className=\"twc-ms__clear\" aria-label=\"Clear all\" onClick={(e) => { e.stopPropagation(); commit([]); setQuery(\"\"); }}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\n </button>\n ) : null}\n <button type=\"button\" className=\"twc-ms__chev\" aria-label=\"Toggle\" tabIndex={-1}\n onClick={(e) => { e.stopPropagation(); setOpen((o) => !o); inputRef.current?.focus(); }}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>\n </button>\n </div>\n\n {popEl}\n </div>\n {error ? <span id={descId} className=\"twc-field__error\">{error}</span> : hint ? <span id={descId} className=\"twc-field__hint\">{hint}</span> : null}\n </div>\n );\n}\n","import React from \"react\";\n\nconst PAGINATION_CSS = `\n.twc-pagination { display: inline-flex; align-items: center; gap: 4px; font-family: var(--font-sans); }\n.twc-page {\n display: inline-grid; place-items: center; min-width: 36px; height: 36px; padding: 0 8px;\n font-size: var(--text-sm); font-weight: var(--font-medium); color: var(--color-text-muted);\n background: transparent; border: var(--border-thin) solid transparent; border-radius: var(--radius-md);\n cursor: pointer;\n transition: background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring);\n}\n.twc-page:hover:not(:disabled):not([data-active=\"true\"]) { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-page:active:not(:disabled) { transform: scale(0.9); }\n.twc-page:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-page[data-active=\"true\"] { background: var(--color-primary); color: var(--color-primary-fg); font-weight: var(--font-semibold); }\n.twc-page:disabled { opacity: 0.4; cursor: not-allowed; }\n.twc-page svg { width: 17px; height: 17px; }\n[dir=\"rtl\"] .twc-page svg { transform: scaleX(-1); }\n.twc-page__ellipsis { color: var(--color-text-subtle); cursor: default; }\n.twc-page[data-size=\"sm\"] { min-width: 30px; height: 30px; font-size: var(--text-xs); }\n.twc-page[data-size=\"lg\"] { min-width: 42px; height: 42px; font-size: var(--text-base); }\n.twc-page[data-size=\"lg\"] svg { width: 20px; height: 20px; }\n.twc-pagination__jump { display: inline-flex; align-items: center; gap: 7px; margin-inline-start: 8px;\n font-size: var(--text-sm); color: var(--color-text-muted); white-space: nowrap; }\n.twc-pagination__jump input {\n width: 56px; height: 34px; text-align: center; box-sizing: border-box;\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text);\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border);\n border-radius: var(--radius-md); outline: none; -moz-appearance: textfield;\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\n}\n.twc-pagination__jump input::-webkit-outer-spin-button,\n.twc-pagination__jump input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }\n.twc-pagination__jump input:hover { border-color: var(--color-border-strong); }\n.twc-pagination__jump input:focus { border-color: var(--color-primary); box-shadow: var(--ring); }\n.twc-pagination__jump[data-size=\"sm\"] input { height: 30px; width: 50px; }\n.twc-pagination__jump[data-size=\"lg\"] input { height: 40px; width: 62px; font-size: var(--text-base); }\n`;\n\nfunction range(start, end) {\n const r = [];\n for (let i = start; i <= end; i++) r.push(i);\n return r;\n}\n\nfunction buildPages(current, total, siblings = 1, boundaries = 1) {\n // Always show `boundaries` pages at each edge + current ± siblings, ellipsis between.\n const pages = new Set();\n for (let i = 1; i <= boundaries; i++) { pages.add(i); pages.add(total - i + 1); }\n for (let i = current - siblings; i <= current + siblings; i++) pages.add(i);\n const valid = [...pages].filter((p) => p >= 1 && p <= total).sort((a, b) => a - b);\n // Collapse if the gap-with-ellipsis would be no shorter than just showing the page.\n const out = [];\n let prev = 0;\n for (const p of valid) {\n if (p - prev === 2) out.push(prev + 1);\n else if (p - prev > 2) out.push(\"…\");\n out.push(p);\n prev = p;\n }\n return out;\n}\n\nexport function Pagination({\n page: pageProp,\n defaultPage = 1,\n total,\n onChange,\n siblings = 1,\n boundaries = 1,\n size = \"md\",\n showJumper = false,\n showPageJumper,\n jumperLabel = \"Go to\",\n className = \"\",\n ...rest\n}) {\n // `showPageJumper` is the preferred alias for `showJumper`; either enables the input.\n const jumperEnabled = showPageJumper ?? showJumper;\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-pagination-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-pagination-styles\";\n el.textContent = PAGINATION_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [internal, setInternal] = React.useState(defaultPage);\n const page = pageProp !== undefined ? pageProp : internal;\n const pages = buildPages(page, total, siblings, boundaries);\n const go = (p) => {\n if (p < 1 || p > total || p === page) return;\n if (pageProp === undefined) setInternal(p);\n onChange?.(p);\n };\n const [jump, setJump] = React.useState(\"\");\n const submitJump = () => {\n const n = parseInt(jump, 10);\n if (!Number.isNaN(n)) go(Math.min(Math.max(n, 1), total));\n setJump(\"\");\n };\n\n return (\n <nav className={`twc-pagination ${className}`} aria-label=\"Pagination\" {...rest}>\n <button type=\"button\" className=\"twc-page\" data-size={size} onClick={() => go(page - 1)} disabled={page <= 1} aria-label=\"Previous page\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m15 18-6-6 6-6\"/></svg>\n </button>\n {pages.map((p, i) =>\n p === \"…\" ? (\n <span key={`e${i}`} className=\"twc-page twc-page__ellipsis\" aria-hidden=\"true\">…</span>\n ) : (\n <button key={p} type=\"button\" className=\"twc-page\" data-size={size} data-active={p === page || undefined}\n aria-current={p === page ? \"page\" : undefined} onClick={() => go(p)}>\n {p}\n </button>\n )\n )}\n <button type=\"button\" className=\"twc-page\" data-size={size} onClick={() => go(page + 1)} disabled={page >= total} aria-label=\"Next page\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg>\n </button>\n {jumperEnabled && total > 1 ? (\n <span className=\"twc-pagination__jump\" data-size={size}>\n {jumperLabel}\n <input type=\"number\" min={1} max={total} value={jump} placeholder={String(page)}\n aria-label=\"Go to page\"\n onChange={(e) => setJump(e.target.value)}\n onKeyDown={(e) => { if (e.key === \"Enter\") { e.preventDefault(); submitJump(); } }}\n onBlur={submitJump} />\n </span>\n ) : null}\n </nav>\n );\n}\n","import React from \"react\";\nimport { Select } from \"../inputs/Select.jsx\";\nimport { Input } from \"../inputs/Input.jsx\";\nimport { MultiSelect } from \"../inputs/MultiSelect.jsx\";\nimport { Pagination } from \"./Pagination.jsx\";\n\nconst DT_CSS = `\n.twc-dt { display: flex; flex-direction: column; font-family: var(--font-sans); color: var(--color-text);\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg);\n background: var(--color-surface); overflow: hidden;\n /* Stay inside the parent even in a flex/grid container: min-width:0 lets a wide\n grid shrink (default min-width:auto would force it to its content width and\n overflow), so the internal __scroll handles horizontal scrolling. */\n width: 100%; min-width: 0; max-width: 100%; }\n\n/* Toolbar */\n.twc-dt__toolbar { position: relative; z-index: 10; display: flex; align-items: center; gap: 6px; padding: 8px 10px;\n border-bottom: var(--border-thin) solid var(--color-divider); flex-wrap: wrap; }\n/* z-index above the scroll area's sticky header (z:3) so a toolbar button's\n hover tooltip (a ::after that hangs below the bar) paints over the table\n instead of being covered by the header/first rows. */\n.twc-dt__tbtn { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 10px;\n border: var(--border-thin) solid transparent; border-radius: var(--radius-md); background: transparent;\n font-family: inherit; font-size: var(--text-xs); font-weight: var(--font-semibold); color: var(--color-text-muted);\n cursor: pointer; transition: background-color var(--duration-fast), color var(--duration-fast); }\n.twc-dt__tbtn:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-dt__tbtn[data-tip], .twc-dt__export-toggle[data-tip], .twc-dt__export-main[data-tip] { position: relative; }\n.twc-dt__tbtn[data-tip]::after, .twc-dt__export-toggle[data-tip]::after, .twc-dt__export-main[data-tip]::after {\n content: attr(data-tip); position: absolute; top: calc(100% + 8px); inset-inline-start: 0;\n transform: translateY(2px); transform-origin: top center;\n background: var(--color-text); color: var(--color-surface);\n font-size: var(--text-xs); font-weight: var(--font-medium); letter-spacing: 0;\n padding: 5px 9px; border-radius: var(--radius-md); white-space: nowrap;\n box-shadow: var(--shadow-md); opacity: 0; pointer-events: none; z-index: var(--z-tooltip);\n transition: opacity var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring); }\n/* The toolbar tool buttons sit at the grid's start edge: anchor their tooltip to the button's\n start so it grows inward (over the table) and is never clipped by .twc-dt's overflow:hidden left\n border. The export split-button sits at the end edge, so anchor its tooltip to the end instead.\n inset-inline-* keeps both correct under RTL. */\n.twc-dt__export-toggle[data-tip]::after, .twc-dt__export-main[data-tip]::after { inset-inline-start: auto; inset-inline-end: 0; }\n.twc-dt__tbtn[data-tip]:hover::after, .twc-dt__export-toggle[data-tip]:hover::after, .twc-dt__export-main[data-tip]:hover::after {\n opacity: 1; transform: translateY(0); transition-delay: 0.4s; }\n.twc-dt__tbtn[data-active=\"true\"] { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\n.twc-dt__tbtn svg { width: 16px; height: 16px; }\n.twc-dt__export { display: inline-flex; align-items: stretch; border-radius: var(--radius-md); box-shadow: var(--shadow-xs); }\n.twc-dt__export-main, .twc-dt__export-toggle { height: 32px; border: none; appearance: none; -webkit-appearance: none; background: var(--color-primary); color: var(--color-primary-fg);\n font-family: inherit; font-weight: var(--font-semibold); cursor: pointer; display: inline-flex; align-items: center; transition: background-color var(--duration-fast); }\n.twc-dt__export-main { gap: 6px; padding: 0 12px; font-size: var(--text-xs); border-start-start-radius: var(--radius-md); border-end-start-radius: var(--radius-md); }\n.twc-dt__export-main svg { width: 16px; height: 16px; }\n.twc-dt__export-toggle { padding: 0 7px; gap: 0; border-start-end-radius: var(--radius-md); border-end-end-radius: var(--radius-md); border-inline-start: var(--border-thin) solid color-mix(in srgb, var(--color-primary-fg) 28%, var(--color-primary)); }\n.twc-dt__export-toggle svg { width: 15px; height: 15px; transition: transform var(--duration-base) var(--ease-spring); }\n.twc-dt__export-main:hover, .twc-dt__export-toggle:hover { background: var(--color-primary-hover); }\n.twc-dt__export-toggle[aria-expanded=\"true\"] { background: var(--color-primary-active); }\n.twc-dt__export-toggle[aria-expanded=\"true\"] svg { transform: rotate(180deg); }\n.twc-dt__tbadge { min-width: 16px; height: 16px; padding: 0 4px; border-radius: var(--radius-full);\n background: var(--color-primary); color: var(--color-primary-fg); font-size: 10px; font-weight: 700;\n display: inline-grid; place-items: center; }\n.twc-dt__tdot { width: 8px; height: 8px; padding: 0; border-radius: var(--radius-full); background: var(--color-primary);\n display: inline-block; flex: none; align-self: center; }\n.twc-dt__search { margin-inline-start: auto; display: flex; align-items: center; gap: 7px; height: 32px; padding: 0 10px;\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface);\n transition: border-color var(--duration-fast), box-shadow var(--duration-fast); }\n.twc-dt__search:focus-within { border-color: var(--color-primary); box-shadow: var(--ring); }\n.twc-dt__search svg { width: 15px; height: 15px; color: var(--color-text-subtle); flex: none; }\n.twc-dt__search input { border: none; outline: none; background: transparent; font-family: inherit;\n font-size: var(--text-sm); color: var(--color-text); width: 150px; }\n.twc-dt__search input:focus, .twc-dt__search input:focus-visible { outline: none; box-shadow: none; }\n.twc-dt__search input::placeholder { color: var(--color-text-subtle); }\n.twc-dt__tlabel { display: inline; }\n/* Narrow grid: collapse the toolbar to icon-only buttons (labels survive as\n hover tooltips via data-tip) and let the search flex so nothing wraps. */\n.twc-dt__toolbar[data-compact=\"true\"] { flex-wrap: nowrap; gap: 4px; }\n.twc-dt__toolbar[data-compact=\"true\"] .twc-dt__tlabel { display: none; }\n.twc-dt__toolbar[data-compact=\"true\"] .twc-dt__tbtn { padding: 0 8px; gap: 0; }\n.twc-dt__toolbar[data-compact=\"true\"] .twc-dt__tbtn .twc-dt__tbadge { margin-inline-start: 4px; }\n.twc-dt__toolbar[data-compact=\"true\"] .twc-dt__export-main { padding: 0 9px; gap: 0; }\n.twc-dt__toolbar[data-compact=\"true\"] .twc-dt__search { flex: 1 1 64px; min-width: 0; margin-inline-start: 6px; padding: 0 8px; }\n.twc-dt__toolbar[data-compact=\"true\"] .twc-dt__search input { width: 100%; min-width: 0; }\n\n/* Scroll area + table */\n.twc-dt__scroll { overflow: auto; position: relative; }\n.twc-dt__table { border-collapse: separate; border-spacing: 0; min-width: 100%; table-layout: fixed; }\n.twc-dt__th, .twc-dt__td { box-sizing: border-box; text-align: start; }\n.twc-dt__th { position: sticky; top: 0; z-index: 3; background: var(--color-surface-sunken);\n border-bottom: var(--border-thin) solid var(--color-border); padding: 0; height: 44px;\n font-size: var(--text-xs); font-weight: var(--font-bold); letter-spacing: var(--tracking-wide);\n text-transform: uppercase; color: var(--color-text-muted); white-space: nowrap; }\n.twc-dt__th-inner { display: flex; align-items: center; gap: 6px; height: 100%; padding: 0 12px; }\n.twc-dt__th[data-num=\"true\"] .twc-dt__th-inner { flex-direction: row-reverse; }\n.twc-dt__th-label { cursor: pointer; user-select: none; flex: 1; overflow: hidden; text-overflow: ellipsis;\n display: inline-flex; align-items: center; gap: 5px; }\n.twc-dt__th[data-num=\"true\"] .twc-dt__th-label { flex-direction: row-reverse; }\n.twc-dt__sort { display: inline-flex; opacity: 0; transition: opacity var(--duration-fast), transform var(--duration-base) var(--ease-spring); color: var(--color-primary); }\n.twc-dt__sort svg { width: 14px; height: 14px; }\n.twc-dt__th[data-sorted=\"asc\"] .twc-dt__sort, .twc-dt__th[data-sorted=\"desc\"] .twc-dt__sort { opacity: 1; }\n.twc-dt__th[data-sorted=\"desc\"] .twc-dt__sort { transform: rotate(180deg); }\n.twc-dt__th:hover .twc-dt__sort { opacity: 0.4; }\n.twc-dt__filterdot { width: 6px; height: 6px; border-radius: var(--radius-full); background: var(--color-primary); flex: none; }\n.twc-dt__menu-btn { display: inline-grid; place-items: center; width: 24px; height: 24px; border: none;\n background: transparent; color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-sm);\n opacity: 0; transition: opacity var(--duration-fast), background-color var(--duration-fast); flex: none; }\n.twc-dt__th:hover .twc-dt__menu-btn { opacity: 1; }\n.twc-dt__menu-btn:hover { background: var(--color-surface); color: var(--color-text); }\n.twc-dt__menu-btn svg { width: 16px; height: 16px; }\n\n/* Column resize handle */\n.twc-dt__resizer { position: absolute; top: 0; inset-inline-end: 0; width: 8px; height: 100%; cursor: col-resize; z-index: 6; touch-action: none; }\n.twc-dt__resizer::after { content: \"\"; position: absolute; top: 22%; right: 2px; width: 2px; height: 56%; background: transparent; border-radius: 2px; transition: background-color var(--duration-fast); }\n.twc-dt__th:hover .twc-dt__resizer::after { background: var(--color-border-strong); }\n.twc-dt__resizer:hover::after, .twc-dt__resizer[data-active=\"true\"]::after { background: var(--color-primary); }\n.twc-dt__resizer:focus-visible { outline: none; }\n.twc-dt__resizer:focus-visible::after { background: var(--color-primary); }\n.twc-dt[data-resizing=\"true\"] { cursor: col-resize; user-select: none; }\n\n/* Column reorder (drag) */\n.twc-dt__th-label[draggable=\"true\"] { cursor: grab; }\n.twc-dt__th[data-dragging=\"true\"] { opacity: 0.45; }\n.twc-dt__th[data-dropbefore=\"true\"] .twc-dt__th-inner { box-shadow: inset 3px 0 0 var(--color-primary); }\n.twc-dt__th[data-dropafter=\"true\"] .twc-dt__th-inner { box-shadow: inset -3px 0 0 var(--color-primary); }\n.twc-dt__grip { display: inline-flex; color: var(--color-text-subtle); opacity: 0; margin-inline-end: -2px; transition: opacity var(--duration-fast); flex: none; }\n.twc-dt__grip svg { width: 13px; height: 13px; }\n.twc-dt__th:hover .twc-dt__grip { opacity: 0.5; }\n\n/* Summary / aggregation footer row */\n.twc-dt__table tfoot td { position: sticky; bottom: 0; z-index: 3; background: var(--color-surface-sunken);\n border-top: var(--border-thin) solid var(--color-border); height: 42px; padding: 0 12px; box-sizing: border-box;\n font-size: var(--text-sm); color: var(--color-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 0; }\n.twc-dt__table tfoot td[data-num=\"true\"] { text-align: end; font-variant-numeric: tabular-nums; }\n.twc-dt__table tfoot td[data-pin] { z-index: 4; }\n.twc-dt__agg-label { color: var(--color-text-subtle); font-weight: 700; text-transform: uppercase; letter-spacing: var(--tracking-wide); font-size: 10px; margin-inline-end: 5px; }\n.twc-dt__agg-val { font-weight: var(--font-bold); }\n\n/* Row grouping */\n.twc-dt__groupbar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 8px 12px;\n border-bottom: var(--border-thin) solid var(--color-border); background: var(--color-surface-sunken); }\n.twc-dt__groupbar > svg { width: 15px; height: 15px; color: var(--color-text-subtle); }\n.twc-dt__groupbar-label { font-size: var(--text-xs); font-weight: 700; text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--color-text-subtle); }\n.twc-dt__groupchip { display: inline-flex; align-items: center; gap: 4px; padding: 3px 4px 3px 10px; height: 26px;\n background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); border-radius: var(--radius-full); font-size: var(--text-xs); font-weight: var(--font-semibold); }\n.twc-dt__groupchip-x { display: inline-grid; place-items: center; width: 18px; height: 18px; border: none; padding: 0; background: transparent; color: inherit; cursor: pointer; border-radius: var(--radius-full); opacity: 0.7; }\n.twc-dt__groupchip-x:hover { opacity: 1; background: color-mix(in srgb, currentColor 18%, transparent); }\n.twc-dt__groupchip-x svg { width: 12px; height: 12px; }\n.twc-dt__groupbar-clear { margin-inline-start: 2px; border: none; background: transparent; color: var(--color-text-muted); font-family: inherit; font-size: var(--text-xs); font-weight: var(--font-semibold); cursor: pointer; border-radius: var(--radius-sm); padding: 4px 6px; }\n.twc-dt__groupbar-clear:hover { color: var(--color-danger-subtle-fg); background: var(--color-danger-subtle); }\n.twc-dt__group-row td { background: var(--color-surface-sunken); border-bottom: var(--border-thin) solid var(--color-border); }\n.twc-dt__group-cell { padding: 0 12px !important; height: var(--_rowh, 44px); }\n.twc-dt__group-toggle { display: inline-flex; align-items: center; gap: 7px; border: none; background: transparent; cursor: pointer;\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text); padding: 6px 4px; border-radius: var(--radius-sm); }\n.twc-dt__group-toggle:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-dt__group-chev { display: inline-flex; color: var(--color-text-subtle); transform: rotate(-90deg); transition: transform var(--duration-base) var(--ease-spring); }\n.twc-dt__group-chev[data-open] { transform: rotate(0deg); color: var(--color-primary); }\n.twc-dt__group-chev svg { width: 16px; height: 16px; }\n.twc-dt__group-name { color: var(--color-text-muted); font-weight: var(--font-medium); }\n.twc-dt__group-val { font-weight: var(--font-bold); }\n.twc-dt__group-count { display: inline-grid; place-items: center; min-width: 20px; height: 18px; padding: 0 6px; border-radius: var(--radius-full); background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); font-size: 11px; font-weight: 700; }\n.twc-dt__group-sub { margin-inline-start: 14px; display: inline-flex; gap: 14px; font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-dt__group-sub span { font-variant-numeric: tabular-nums; }\n.twc-dt__group-sub span b { color: var(--color-text); }\n\n/* Pivot view */\n.twc-dt__pivot { table-layout: auto; width: 100%; }\n.twc-dt__pivot th, .twc-dt__pivot td { white-space: nowrap; }\n.twc-dt__pivot-vhcell, .twc-dt__pivot-cell { min-width: 104px; }\n.twc-dt__pivot-rowhead { min-width: 180px; }\n/* Corner (row-field label) */\n.twc-dt__pivot-corner { position: sticky; inset-inline-start: 0; top: 0; vertical-align: middle; text-align: center; background: var(--color-surface-sunken); z-index: 9 !important; border-inline-end: var(--border-medium) solid var(--color-border-strong); }\n.twc-dt__pivot-corner-label { font-size: var(--text-xs); font-weight: 700; letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); }\n/* Column-group header levels (e.g. Status ▸ Plan) */\n.twc-dt__pivot-colgroup { text-align: center !important; border-inline-start: var(--border-medium) solid var(--color-border-strong);\n background: var(--color-surface-sunken); font-weight: var(--font-bold); color: var(--color-text); letter-spacing: var(--tracking-wide); }\n/* Value sub-header (field + aggregation), centered to sit over its column */\n.twc-dt__pivot-vhcell { vertical-align: bottom; text-align: center !important; border-inline-start: var(--border-thin) solid var(--color-divider); padding-top: 6px; padding-bottom: 6px; }\n.twc-dt__pivot-vhcell[data-group-start] { border-inline-start: var(--border-medium) solid var(--color-border-strong); }\n.twc-dt__pivot-vh { display: inline-flex; flex-direction: column; align-items: center; gap: 1px; line-height: 1.15; }\n.twc-dt__pivot-vh-label { font-weight: var(--font-bold); color: var(--color-text); text-transform: none; letter-spacing: 0; }\n.twc-dt__pivot-vh-agg { font-size: 10px; font-weight: var(--font-semibold); color: var(--color-primary); text-transform: uppercase; letter-spacing: 0.04em; }\n/* Row headers + record counts (must outrank .twc-dt__row > .twc-dt__td:first-child = (0,3,0)) */\n.twc-dt__pivot tbody .twc-dt__pivot-rowhead[data-pin],\n.twc-dt__pivot tfoot .twc-dt__pivot-rowhead[data-pin] { position: sticky; inset-inline-start: 0; z-index: 5; }\n.twc-dt__pivot-rowhead { font-weight: var(--font-semibold); color: var(--color-text); background: var(--color-surface); border-inline-end: var(--border-medium) solid var(--color-border-strong); }\n.twc-dt__row[data-zebra] .twc-dt__pivot-rowhead { background: color-mix(in srgb, var(--color-surface-sunken) 45%, var(--color-surface)); }\n.twc-dt__pivot-rowcount { color: var(--color-text-subtle); font-weight: var(--font-normal); font-size: var(--text-xs); }\n/* Body value cells — centered under their header, with group separators */\n.twc-dt__pivot-cell { text-align: center !important; border-inline-start: var(--border-thin) solid var(--color-divider); font-variant-numeric: tabular-nums; }\n.twc-dt__pivot-cell[data-group-start] { border-inline-start: var(--border-medium) solid var(--color-border-strong); }\n.twc-dt__row[data-zebra] .twc-dt__pivot-cell { background: color-mix(in srgb, var(--color-surface-sunken) 45%, transparent); }\n.twc-dt__pivot td[data-empty] { color: var(--color-text-subtle); }\n/* Total column group (right) */\n.twc-dt__pivot-total-h:not(.twc-dt__pivot-vhcell) { text-align: center !important; vertical-align: middle; }\n.twc-dt__pivot-total, .twc-dt__pivot-total-h { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); font-weight: var(--font-bold); }\n.twc-dt__pivot-total[data-group-start], .twc-dt__pivot-total-h[data-group-start] { border-inline-start: var(--border-medium) solid var(--color-primary) !important; }\n.twc-dt__pivot-total-h .twc-dt__pivot-vh-label { color: var(--color-primary-subtle-fg); }\n.twc-dt__pivot-total-h .twc-dt__pivot-vh-agg { color: var(--color-primary); }\n.twc-dt__row[data-zebra] .twc-dt__pivot-total { background: var(--color-primary-subtle); }\n/* Grand-total footer row */\n.twc-dt__pivot tfoot td, .twc-dt__pivot tfoot th { position: sticky; bottom: 0; background: var(--color-surface-sunken); font-weight: var(--font-bold); border-top: var(--border-medium) solid var(--color-border-strong); }\n.twc-dt__pivot tfoot .twc-dt__pivot-rowhead { z-index: 6; }\n.twc-dt__pivot-grand { background: var(--color-surface-sunken); }\n.twc-dt__pivot tfoot .twc-dt__pivot-total { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\n\n/* Config panels (aggregation / pivot) */\n.twc-dt__cfg { padding: 0; }\n.twc-dt__cfg-toggle { display: flex; align-items: center; justify-content: space-between; gap: 10px;\n padding: 10px 12px; font-size: var(--text-sm); font-weight: var(--font-medium); color: var(--color-text);\n border-bottom: var(--border-thin) solid var(--color-divider); }\n.twc-dt__cfg-list { max-height: 280px; overflow-y: auto; padding: 6px; }\n.twc-dt__cfg-row { display: flex; align-items: center; gap: 8px; padding: 4px 6px; }\n.twc-dt__cfg-name { flex: 1; min-width: 0; font-size: var(--text-sm); color: var(--color-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.twc-dt__cfg-ctl { width: 120px; flex: none; }\n.twc-dt__cfg-x { flex: none; display: inline-grid; place-items: center; width: 28px; height: 28px; border: none;\n background: transparent; color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-md);\n transition: background-color var(--duration-fast), color var(--duration-fast); }\n.twc-dt__cfg-x:hover { background: var(--color-danger-subtle); color: var(--color-danger-subtle-fg); }\n.twc-dt__cfg-x svg { width: 15px; height: 15px; }\n.twc-dt__cfg-section { padding: 10px 12px; border-bottom: var(--border-thin) solid var(--color-divider); display: flex; flex-direction: column; gap: 7px; }\n.twc-dt__cfg-section:last-child { border-bottom: none; }\n.twc-dt__cfg-label { font-size: var(--text-xs); font-weight: var(--font-bold); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); }\n.twc-dt__cfg-add { margin-top: 1px; }\n.twc-dt__cfg-hint { padding: 9px 12px; font-size: var(--text-xs); color: var(--color-text-muted); background: var(--color-warning-subtle); border-bottom: var(--border-thin) solid var(--color-divider); }\n.twc-dt__cfg-hint b { color: var(--color-text); }\n.twc-dt__cfg-head { padding: 10px 12px; font-size: var(--text-sm); font-weight: var(--font-bold); color: var(--color-text); border-bottom: var(--border-thin) solid var(--color-divider); }\n.twc-dt__cfg-foot { display: flex; justify-content: flex-end; gap: 8px; padding: 10px 12px; border-top: var(--border-thin) solid var(--color-divider); }\n.twc-dt__cfg-btn { height: 32px; padding: 0 14px; border: var(--border-thin) solid var(--color-border-strong); border-radius: var(--radius-md);\n background: var(--color-surface); color: var(--color-text); font-family: inherit; font-size: var(--text-xs); font-weight: var(--font-semibold);\n cursor: pointer; transition: background-color var(--duration-fast), border-color var(--duration-fast), color var(--duration-fast); }\n.twc-dt__cfg-btn:hover { background: var(--color-surface-sunken); }\n.twc-dt__cfg-btn[data-primary=\"true\"] { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-primary-fg); }\n.twc-dt__cfg-btn[data-primary=\"true\"]:hover { background: var(--color-primary-hover); border-color: var(--color-primary-hover); }\n.twc-dt__be-row { display: flex; align-items: center; gap: 10px; padding: 5px 6px; opacity: 0.6; transition: opacity var(--duration-fast); }\n.twc-dt__be-row[data-on] { opacity: 1; }\n.twc-dt__be-check { display: inline-flex; align-items: center; gap: 7px; width: 120px; flex: none; font-size: var(--text-sm); color: var(--color-text); cursor: pointer; }\n.twc-dt__be-check input { width: 16px; height: 16px; accent-color: var(--color-primary); cursor: pointer; flex: none; }\n.twc-dt__be-check span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.twc-dt__be-ctl { flex: 1; min-width: 0; }\n\n/* Pinned rows */\n.twc-dt__row[data-pinned-row] > .twc-dt__td { background: var(--color-primary-subtle); }\n.twc-dt__row[data-pinned-row] > .twc-dt__td[data-pin] { background: var(--color-primary-subtle); }\n.twc-dt__row[data-pinned-row=\"top\"] > .twc-dt__td { border-bottom: var(--border-medium) solid var(--color-primary-border); box-shadow: 0 1px 0 var(--color-primary-border); }\n.twc-dt__row[data-pinned-row=\"bottom\"] > .twc-dt__td { border-top: var(--border-medium) solid var(--color-primary-border); }\n\n/* Row reordering */\n.twc-dt__row[data-reorderable] { cursor: grab; }\n.twc-dt__row[data-row-dragging] { opacity: 0.4; }\n.twc-dt__row[data-row-dropbefore] > .twc-dt__td { box-shadow: inset 0 3px 0 var(--color-primary); }\n.twc-dt__row[data-row-dropafter] > .twc-dt__td { box-shadow: inset 0 -3px 0 var(--color-primary); }\n/* Keyboard row reorder (grabbed) */\n.twc-dt__row[data-row-grabbed] > .twc-dt__td { background: var(--color-primary-subtle); box-shadow: inset 0 0 0 2px var(--color-primary); }\n.twc-dt__row[data-row-grabtarget] > .twc-dt__td { box-shadow: inset 0 3px 0 var(--color-primary); }\n.twc-dt__row[data-row-grabtarget=\"after\"] > .twc-dt__td { box-shadow: inset 0 -3px 0 var(--color-primary); }\n.twc-dt__row-handle { display: inline-flex; align-items: center; justify-content: center; color: var(--color-text-subtle);\n background: transparent; border: none; padding: 0; margin: 0; cursor: grab; border-radius: var(--radius-sm); opacity: 0; transition: opacity var(--duration-fast), color var(--duration-fast); }\n.twc-dt__row:hover .twc-dt__row-handle, .twc-dt__row-handle:focus-visible { opacity: 0.7; }\n.twc-dt__row-handle:focus-visible { outline: none; box-shadow: var(--ring); color: var(--color-primary); }\n.twc-dt__row-handle[data-grabbed=\"true\"] { opacity: 1; color: var(--color-primary); }\n.twc-dt__row-handle svg { width: 14px; height: 14px; }\n/* Visually-hidden aria-live region for reorder announcements */\n.twc-dt__sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }\n/* Row resizing — must not steal positioning from a pinned first column (checkbox/select) */\n.twc-dt__row > .twc-dt__td:first-child:not([data-pin]) { position: relative; }\n.twc-dt__row-resizer { position: absolute; left: 0; right: 0; bottom: -3px; height: 7px; cursor: row-resize; z-index: 6; touch-action: none; }\n.twc-dt__row-resizer::after { content: \"\"; position: absolute; left: 6px; right: 6px; bottom: 3px; height: 2px; border-radius: 2px; background: transparent; transition: background-color var(--duration-fast); }\n.twc-dt__row:hover .twc-dt__row-resizer::after { background: var(--color-border-strong); }\n.twc-dt__row-resizer:hover::after { background: var(--color-primary); }\n\n.twc-dt__td { padding: 0 12px; height: var(--_rowh, 44px); border-bottom: var(--border-thin) solid var(--color-divider);\n font-size: var(--text-sm); color: var(--color-text); background: var(--color-surface);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 0; }\n/* Wrap-text columns: content flows onto multiple lines (the row grows down) instead of\n clipping to one line. height stays a per-row minimum, so single-line cells are unchanged. */\n.twc-dt__td[data-wrap=\"true\"] { white-space: normal; overflow: hidden; text-overflow: clip;\n word-break: break-word; overflow-wrap: anywhere; vertical-align: top; padding-block: 10px; line-height: 1.45; }\n.twc-dt__td[data-num=\"true\"] { text-align: end; font-variant-numeric: tabular-nums; }\n/* Auto row-number gutter (rowNumbers) — a sticky-left ordinal column. */\n.twc-dt__rownum { text-align: end; font-variant-numeric: tabular-nums; color: var(--color-text-subtle);\n font-size: var(--text-xs); }\ntd.twc-dt__rownum { padding-inline: 8px; }\nth.twc-dt__rownum { color: var(--color-text-muted); }\n/* Tighten the narrow gutter header so the # label and its ⋮ menu button fit without overflowing. */\nth.twc-dt__rownum .twc-dt__th-inner { padding-inline: 8px; gap: 2px; justify-content: space-between; }\n.twc-dt[data-density=\"compact\"] .twc-dt__td { --_rowh: 36px; }\n.twc-dt[data-density=\"comfortable\"] .twc-dt__td { --_rowh: 56px; }\n.twc-dt__row:hover .twc-dt__td { background: var(--color-surface-sunken); }\n.twc-dt__row[data-selected=\"true\"] .twc-dt__td { background: var(--color-primary-subtle); }\n.twc-dt__row[data-selectable=\"true\"] { cursor: pointer; }\n.twc-dt__row[data-active=\"true\"] .twc-dt__td { background: var(--color-primary-subtle); box-shadow: inset 0 0 0 9999px transparent; }\n.twc-dt__row[data-active=\"true\"] .twc-dt__td[data-pin] { background: var(--color-primary-subtle); }\n.twc-dt__td[data-cell-active=\"true\"] { box-shadow: inset 0 0 0 2px var(--color-primary); background: var(--color-primary-subtle); }\n.twc-dt__row:last-child .twc-dt__td { border-bottom: none; }\n\n/* Pinning */\n.twc-dt__th[data-pin], .twc-dt__td[data-pin] { position: sticky; z-index: 2; }\n/* Pinned header cells must outrank every pinned BODY cell (z:2) — including a selected/active\n row's opaque primary-subtle pinned cell — so a selected row's background can never bleed up\n over the sticky header in the pinned (corner) zone. z:5 keeps a clear margin above z:2. */\n.twc-dt__th[data-pin] { z-index: 5; }\n/* Pinned-edge separator shadow. box-shadow has no logical form, so --_pin-sx carries\n the x-direction and flips under RTL (left-pinned sits at the inline-start = right edge). */\n.twc-dt__th[data-pin-edge], .twc-dt__td[data-pin-edge] { --_pin-sx: 6px; }\n[dir=\"rtl\"] .twc-dt__th[data-pin-edge], [dir=\"rtl\"] .twc-dt__td[data-pin-edge] { --_pin-sx: -6px; }\n.twc-dt__th[data-pin-edge=\"left\"], .twc-dt__td[data-pin-edge=\"left\"] { box-shadow: var(--_pin-sx) 0 8px -6px rgb(15 23 42 / 0.18); }\n.twc-dt__th[data-pin-edge=\"right\"], .twc-dt__td[data-pin-edge=\"right\"] { box-shadow: calc(-1 * var(--_pin-sx)) 0 8px -6px rgb(15 23 42 / 0.18); }\n.dark .twc-dt__th[data-pin-edge=\"left\"], .dark .twc-dt__td[data-pin-edge=\"left\"] { box-shadow: var(--_pin-sx) 0 10px -6px rgb(0 0 0 / 0.5); }\n.dark .twc-dt__th[data-pin-edge=\"right\"], .dark .twc-dt__td[data-pin-edge=\"right\"] { box-shadow: calc(-1 * var(--_pin-sx)) 0 10px -6px rgb(0 0 0 / 0.5); }\n\n/* Checkbox column */\n.twc-dt__check { width: 20px; height: 20px; display: grid; place-items: center; border: var(--border-medium) solid var(--color-border-strong);\n border-radius: var(--radius-sm); background: var(--color-surface); color: var(--color-primary-fg); cursor: pointer; transition: background-color var(--duration-fast), border-color var(--duration-fast); }\n.twc-dt__check[data-checked=\"true\"], .twc-dt__check[data-indeterminate=\"true\"] { background: var(--color-primary); border-color: var(--color-primary); }\n.twc-dt__check svg { width: 13px; height: 13px; opacity: 0; }\n.twc-dt__check[data-checked=\"true\"] svg, .twc-dt__check[data-indeterminate=\"true\"] svg { opacity: 1; }\n\n/* Skeleton */\n.twc-dt__sk { display: inline-block; height: 12px; border-radius: var(--radius-sm); background: var(--color-surface-sunken);\n position: relative; overflow: hidden; width: var(--_w, 70%); }\n.twc-dt__sk::after { content: \"\"; position: absolute; inset: 0; transform: translateX(-100%);\n background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--color-text) 8%, transparent), transparent);\n animation: twico-shimmer 1.4s infinite; }\n\n/* Footer */\n.twc-dt__footer { display: flex; flex-direction: column; align-items: stretch; gap: 8px; padding: 10px 12px;\n border-top: var(--border-thin) solid var(--color-divider); font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-dt__footer-row { display: flex; align-items: center; gap: 10px 18px; flex-wrap: wrap; }\n.twc-dt__footer-row[data-bottom=\"true\"] { justify-content: space-between; }\n.twc-dt__footer-row[data-pager=\"true\"] { justify-content: flex-end; }\n.twc-dt__status { white-space: nowrap; }\n.twc-dt__rpp { display: inline-flex; align-items: center; gap: 8px; flex: none; }\n.twc-dt__rpp-label { white-space: nowrap; }\n.twc-dt__status b { color: var(--color-text); font-weight: var(--font-semibold); }\n\n/* Floating panels & menus */\n.twc-dt__pop { position: fixed; z-index: var(--z-popover); min-width: 220px; background: var(--color-surface-raised);\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg);\n padding: 6px; animation: twico-scale-in var(--duration-fast) var(--ease-spring); transform-origin: top; }\n.twc-dt__caret { position: absolute; top: -6px; width: 11px; height: 11px; background: var(--color-surface-raised);\n border-left: var(--border-thin) solid var(--color-border); border-top: var(--border-thin) solid var(--color-border);\n border-radius: 3px 0 0 0; transform: rotate(45deg); }\n.twc-dt__mi { display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 10px; border: none; background: transparent;\n font-family: inherit; font-size: var(--text-sm); font-weight: var(--font-medium); color: var(--color-text); text-align: start;\n border-radius: var(--radius-md); cursor: pointer; transition: background-color var(--duration-fast); }\n.twc-dt__mi:hover { background: var(--color-surface-sunken); }\n.twc-dt__mi:disabled { color: var(--color-text-subtle); opacity: 0.5; cursor: default; pointer-events: none; }\n.twc-dt__mi svg { width: 16px; height: 16px; color: var(--color-text-subtle); flex: none; }\n.twc-dt__mi[data-active=\"true\"] { color: var(--color-primary); }\n.twc-dt__mi[data-active=\"true\"] svg { color: var(--color-primary); }\n.twc-dt__sep { height: 1px; background: var(--color-divider); margin: 5px 4px; }\n\n/* Columns panel */\n.twc-dt__cols { width: 268px; }\n.twc-dt__col-search { display: flex; align-items: center; gap: 7px; height: 34px; margin: 2px 4px 6px; padding: 0 10px;\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface);\n transition: border-color var(--duration-fast), box-shadow var(--duration-fast); }\n.twc-dt__col-search:focus-within { border-color: var(--color-primary); box-shadow: var(--ring); }\n.twc-dt__col-search svg { width: 15px; height: 15px; color: var(--color-text-subtle); flex: none; }\n.twc-dt__col-search input { border: none; outline: none; background: transparent; font-family: inherit; font-size: var(--text-sm); color: var(--color-text); width: 100%; }\n.twc-dt__col-search input:focus, .twc-dt__col-search input:focus-visible { outline: none; box-shadow: none; }\n.twc-dt__col-search input::placeholder { color: var(--color-text-subtle); }\n.twc-dt__col-list { max-height: 230px; overflow-y: auto; }\n.twc-dt__col-row { display: flex; align-items: center; gap: 10px; padding: 7px 8px; border-radius: var(--radius-md); cursor: pointer; }\n.twc-dt__col-row:hover { background: var(--color-surface-sunken); }\n.twc-dt__col-row[draggable=\"true\"] { cursor: grab; }\n.twc-dt__col-row[data-dragging=\"true\"] { opacity: 0.5; }\n.twc-dt__col-row[data-dropbefore=\"true\"] { box-shadow: inset 0 3px 0 var(--color-primary); }\n.twc-dt__col-row[data-dropafter=\"true\"] { box-shadow: inset 0 -3px 0 var(--color-primary); }\n.twc-dt__col-grip { display: inline-flex; color: var(--color-text-subtle); flex: none; opacity: 0.45; }\n.twc-dt__col-row:hover .twc-dt__col-grip { opacity: 0.8; }\n.twc-dt__col-grip svg { width: 14px; height: 14px; }\n.twc-dt__col-name { flex: 1; font-size: var(--text-sm); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.twc-dt__col-pins { display: inline-flex; gap: 2px; flex: none; }\n.twc-dt__col-pin { display: inline-grid; place-items: center; width: 24px; height: 24px; border: none; padding: 0; background: transparent; color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-sm); transition: background-color var(--duration-fast), color var(--duration-fast); }\n.twc-dt__col-pin:hover { background: var(--color-surface); color: var(--color-text); }\n.twc-dt__col-pin[data-on=\"true\"] { color: var(--color-primary); background: var(--color-primary-subtle); }\n.twc-dt__col-pin svg { width: 14px; height: 14px; }\n.twc-dt__sw { width: 32px; height: 18px; border-radius: var(--radius-full); background: var(--color-border-strong); position: relative; flex: none; transition: background-color var(--duration-base); }\n.twc-dt__sw[data-on=\"true\"] { background: var(--color-primary); }\n.twc-dt__sw::after { content: \"\"; position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: var(--radius-full); background: var(--color-primary-fg); box-shadow: var(--shadow-sm); transition: transform var(--duration-base) var(--ease-spring); }\n.twc-dt__sw:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-dt__sw[data-on=\"true\"]::after { transform: translateX(14px); }\n.twc-dt__panel-head { display: flex; align-items: center; justify-content: space-between; padding: 6px 8px 8px; }\n.twc-dt__panel-title { font-size: var(--text-xs); font-weight: 700; letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); }\n.twc-dt__link { border: none; background: transparent; color: var(--color-primary); font-family: inherit; font-size: var(--text-xs); font-weight: 600; cursor: pointer; padding: 2px 4px; border-radius: var(--radius-sm); }\n.twc-dt__link:hover { background: var(--color-primary-subtle); }\n\n/* Filter panel */\n.twc-dt__filters { width: 580px; max-width: calc(100vw - 32px); }\n.twc-dt__frow { display: flex; align-items: center; gap: 6px; padding: 5px 4px; }\n.twc-dt__f-col { width: 118px; flex: none; }\n.twc-dt__f-op { width: 118px; flex: none; }\n.twc-dt__f-val { flex: 1; min-width: 140px; }\n.twc-dt__frm-x { display: inline-grid; place-items: center; width: 30px; height: 38px; border: none; background: transparent; color: var(--color-text-subtle); border-radius: var(--radius-md); cursor: pointer; flex: none; align-self: flex-start; }\n.twc-dt__frm-x:hover { background: var(--color-danger-subtle); color: var(--color-danger-subtle-fg); }\n.twc-dt__frm-x svg { width: 15px; height: 15px; }\n.twc-dt__empty { padding: 30px 12px; text-align: center; color: var(--color-text-subtle); font-size: var(--text-sm); }\n\n/* Action cell */\n.twc-dt__th[data-actions-col=\"true\"], .twc-dt__td[data-actions=\"true\"] { border-inline-start: var(--border-thin) solid var(--color-border); }\n.twc-dt__td[data-actions=\"true\"] { overflow: visible; }\n.twc-dt__actions { display: inline-flex; align-items: center; gap: 2px; width: 100%; }\n\n/* Editable cells */\n.twc-dt__td[data-editable=\"true\"] { position: relative; cursor: text; padding-inline-end: 30px; }\n/* A pinned cell must stay position:sticky to line up with its (also sticky) header. The rule above\n sets position:relative at equal specificity, so an editable AND pinned column's body cells would\n un-stick and drift out of alignment. Re-assert sticky for that combination (sticky still anchors\n the absolutely-positioned edit hint). */\n.twc-dt__td[data-pin][data-editable=\"true\"] { position: sticky; }\n.twc-dt__td[data-editable=\"true\"]:hover { box-shadow: inset 0 0 0 1px var(--color-border-strong); }\n.twc-dt__edit-hint { position: absolute; inset-inline-end: 8px; top: 50%; transform: translateY(-50%); display: none;\n align-items: center; justify-content: center; color: var(--color-primary); pointer-events: none; }\n.twc-dt__edit-hint svg { width: 13px; height: 13px; }\n.twc-dt__td[data-editable=\"true\"]:hover .twc-dt__edit-hint { display: inline-flex; }\n/* Editing state — the cell becomes a transparent shell; the editor itself is the rounded control */\n.twc-dt__td[data-editing=\"true\"] { padding: 0 6px; overflow: visible; box-shadow: none; background: var(--color-surface); }\n.twc-dt__editor-wrap { width: 100%; }\n.twc-dt__editor {\n width: 100%; height: 32px; box-sizing: border-box; padding: 0 10px;\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text);\n background: var(--color-surface); border: var(--border-medium) solid var(--color-primary);\n border-radius: var(--radius-md); outline: none; box-shadow: var(--ring);\n}\n.twc-dt__td[data-num=\"true\"] .twc-dt__editor { text-align: end; }\n/* Keyboard focus (roving tabindex) */\n.twc-dt__td:focus { outline: none; }\n.twc-dt__td:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--color-primary); border-radius: 2px; }\n.twc-dt__check:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-dt__th-label:focus-visible { outline: none; box-shadow: var(--ring); border-radius: var(--radius-sm); }\n.twc-dt__act { display: inline-grid; place-items: center; width: 30px; height: 30px; border: none; background: transparent;\n color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-md);\n transition: background-color var(--duration-fast), color var(--duration-fast), transform var(--duration-fast) var(--ease-spring); }\n.twc-dt__act:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-dt__act:active { transform: scale(0.88); }\n.twc-dt__act[data-danger=\"true\"]:hover { background: var(--color-danger-subtle); color: var(--color-danger-subtle-fg); }\n.twc-dt__act svg { width: 16px; height: 16px; }\n\n/* Batch (selection) toolbar overlay */\n.twc-dt__batch { position: absolute; inset: 0; z-index: 6; display: flex; align-items: center; gap: 10px;\n padding: 8px 10px; background: var(--color-primary-subtle); animation: twico-slide-down var(--duration-fast) var(--ease-out); }\n.twc-dt__batch-x { display: inline-grid; place-items: center; width: 28px; height: 28px; border: none; background: transparent;\n color: var(--color-primary-subtle-fg); cursor: pointer; border-radius: var(--radius-md); transition: background-color var(--duration-fast); flex: none; }\n.twc-dt__batch-x:hover { background: color-mix(in srgb, var(--color-primary) 20%, transparent); }\n.twc-dt__batch-x svg { width: 16px; height: 16px; }\n.twc-dt__batch-count { font-size: var(--text-sm); font-weight: var(--font-bold); color: var(--color-primary-subtle-fg); white-space: nowrap; }\n.twc-dt__batch-actions { margin-inline-start: auto; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }\n.twc-dt__batch-btn { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 12px;\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface);\n color: var(--color-text); font-family: inherit; font-size: var(--text-xs); font-weight: var(--font-semibold); cursor: pointer;\n transition: border-color var(--duration-fast), color var(--duration-fast), background-color var(--duration-fast); }\n.twc-dt__batch-btn:hover { border-color: var(--color-primary); color: var(--color-primary); }\n.twc-dt__batch-btn[data-danger=\"true\"]:hover { border-color: var(--color-danger); color: var(--color-danger-subtle-fg); background: var(--color-danger-subtle); }\n.twc-dt__batch-btn svg { width: 15px; height: 15px; }\n`;\n\nconst I = {\n arrow: \"M12 19V5M5 12l7-7 7 7\",\n filter: \"M3 4h18l-7 8v6l-4 2v-8z\",\n columns: \"M3 3h18v18H3zM9 3v18M15 3v18\",\n eyeOff: \"M9.88 9.88a3 3 0 1 0 4.24 4.24M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61M2 2l20 20\",\n pinL: \"M9 4v6l-3 3v2h12v-2l-3-3V4M12 17v4\",\n pin: \"M12 17v5M9 4h6l-1 7 3 2v2H7v-2l3-2z\",\n more: \"M12 5h.01M12 12h.01M12 19h.01\",\n check: \"M20 6 9 17l-5-5\",\n minus: \"M5 12h14\",\n x: \"M18 6 6 18M6 6l12 12\",\n plus: \"M12 5v14M5 12h14\",\n search: \"M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16zM21 21l-4.3-4.3\",\n density: \"M3 6h18M3 12h18M3 18h18\",\n trash: \"M3 6h18M8 6V4h8v2M19 6l-1 14H6L5 6M10 11v6M14 11v6\",\n download: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3\",\n grip: \"M9 5h.01M9 12h.01M9 19h.01M15 5h.01M15 12h.01M15 19h.01\",\n pencil: \"M12 20h9M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4z\",\n sigma: \"M18 7V5a1 1 0 0 0-1-1H6l6 8-6 8h11a1 1 0 0 0 1-1v-2\",\n chevDown: \"M6 9l6 6 6-6\",\n group: \"M3 6h7M3 12h11M3 18h7M17 9l3 3-3 3\",\n pinUp: \"M12 19V5M6 11l6-6 6 6\",\n pinDown: \"M12 5v14M6 13l6 6 6-6\",\n pivot: \"M3 3h18v18H3zM3 9h18M9 9v12M9 3v6\",\n chevronDown: \"M6 9l6 6 6-6\",\n fileText: \"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zM14 2v6h6M9 13h6M9 17h6\",\n sheet: \"M3 3h18v18H3zM3 9h18M3 15h18M9 3v18M15 3v18\",\n wrap: \"M3 6h18M3 12h15a3 3 0 1 1 0 6h-4M16 16l-2 2 2 2M3 18h6\",\n};\nfunction Svg({ d, ...p }) {\n return (<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n {d.split(\"M\").filter(Boolean).map((seg, i) => <path key={i} d={\"M\" + seg} />)}\n </svg>);\n}\n\nconst STR_OPS = [\n { value: \"contains\", label: \"contains\" },\n { value: \"equals\", label: \"equals\" },\n { value: \"isAnyOf\", label: \"is any of\", multi: true },\n { value: \"startsWith\", label: \"starts with\" },\n { value: \"endsWith\", label: \"ends with\" },\n { value: \"isEmpty\", label: \"is empty\", noInput: true },\n { value: \"isNotEmpty\", label: \"is not empty\", noInput: true },\n];\nconst NUM_OPS = [\n { value: \"=\", label: \"=\" }, { value: \"!=\", label: \"≠\" },\n { value: \">\", label: \">\" }, { value: \">=\", label: \"≥\" },\n { value: \"<\", label: \"<\" }, { value: \"<=\", label: \"≤\" },\n { value: \"isAnyOf\", label: \"is any of\", multi: true },\n];\nconst opsFor = (type) => (type === \"number\" ? NUM_OPS : STR_OPS);\nconst isMultiOp = (op) => op === \"isAnyOf\";\n\nfunction testFilter(raw, op, target, type) {\n if (op === \"isEmpty\") return raw == null || raw === \"\";\n if (op === \"isNotEmpty\") return !(raw == null || raw === \"\");\n if (op === \"isAnyOf\") {\n if (!Array.isArray(target) || target.length === 0) return true;\n return target.map(String).includes(String(raw));\n }\n if (target === \"\" || target == null) return true;\n if (type === \"number\") {\n const a = Number(raw), b = Number(target);\n if (Number.isNaN(a) || Number.isNaN(b)) return true;\n switch (op) { case \"=\": return a === b; case \"!=\": return a !== b; case \">\": return a > b;\n case \">=\": return a >= b; case \"<\": return a < b; case \"<=\": return a <= b; default: return true; }\n }\n const s = String(raw ?? \"\").toLowerCase(), t = String(target).toLowerCase();\n switch (op) {\n case \"equals\": return s === t;\n case \"startsWith\": return s.startsWith(t);\n case \"endsWith\": return s.endsWith(t);\n default: return s.includes(t);\n }\n}\n\n/**\n * Apply a Datatable server-query (the object passed to `onServerChange`) to a\n * plain array of rows — quick search, per-column filters, sort, and paging —\n * using the EXACT same operator semantics the grid uses in client mode. Returns\n * the current page (`rows`), the filtered `total` (for `rowCount`), and the full\n * `filtered` set (pre-paging, e.g. to compute server-side aggregation totals).\n *\n * Lets you drive a `serverMode` Datatable from any backend (or fake one in tests)\n * and get results identical to client mode. Pass `columns` so number columns\n * compare numerically and quick-search scans the right fields.\n */\nexport function runDatatableQuery(rows, query, options = {}) {\n const q = query || {};\n const cols = options.columns || [];\n const typeOf = (field) => (cols.find((c) => c.field === field)?.type === \"number\" ? \"number\" : \"string\");\n const searchFields = options.searchFields\n || (cols.length ? cols.filter((c) => c.field && c.type !== \"actions\").map((c) => c.field)\n : (rows && rows[0] ? Object.keys(rows[0]) : []));\n\n let out = Array.isArray(rows) ? rows : [];\n const quick = String(q.quickFilter || \"\").trim().toLowerCase();\n if (quick) out = out.filter((r) => searchFields.some((f) => String(r[f] ?? \"\").toLowerCase().includes(quick)));\n for (const f of q.filters || []) out = out.filter((r) => testFilter(r[f.field], f.op, f.value, typeOf(f.field)));\n if (q.sort && q.sort.field) {\n const { field, dir } = q.sort, numeric = typeOf(field) === \"number\";\n out = [...out].sort((a, b) => {\n const av = a[field], bv = b[field];\n if (av == null) return 1; if (bv == null) return -1;\n const r = numeric ? av - bv : String(av).localeCompare(String(bv));\n return dir === \"desc\" ? -r : r;\n });\n }\n const total = out.length;\n const pageSize = q.pageSize ?? 0;\n const page = pageSize > 0 ? out.slice((q.page || 0) * pageSize, (q.page || 0) * pageSize + pageSize) : out;\n return { rows: page, total, filtered: out };\n}\n\nfunction useFloating() {\n const [pos, setPos] = React.useState(null);\n // Remember the trigger + alignment so the popover can be re-placed as the page\n // scrolls or resizes (a fixed popover otherwise stays at its open-time viewport\n // coordinates while the trigger scrolls away — it detaches and floats wrong).\n const cfg = React.useRef(null);\n const place = React.useCallback(() => {\n const c = cfg.current;\n if (!c || !c.el || !c.el.isConnected) return null;\n const r = c.el.getBoundingClientRect();\n const vw = window.innerWidth, vh = window.innerHeight, M = 8;\n // Trigger scrolled fully out of view -> signal the popover should close.\n if (r.bottom <= 0 || r.top >= vh || r.right <= 0 || r.left >= vw) return false;\n // anchor left edge; right-aligned menus start from the trigger's right edge\n let left = c.align === \"right\" ? r.right - c.width : r.left;\n // clamp into the viewport so menus never clip off-screen\n left = Math.max(M, Math.min(left, vw - c.width - M));\n const top = r.bottom + 6;\n return { top, left, width: c.width, anchorX: r.left + r.width / 2, maxHeight: Math.max(180, vh - top - M) };\n }, []);\n const open = React.useCallback((el, align = \"left\", width = 220) => {\n cfg.current = { el, align, width };\n const p = place();\n if (p) setPos(p);\n }, [place]);\n const close = React.useCallback(() => { cfg.current = null; setPos(null); }, []);\n\n const isOpen = pos != null;\n React.useEffect(() => {\n if (!isOpen) return undefined;\n const update = () => {\n const p = place();\n if (p === false) { cfg.current = null; setPos(null); } // trigger left the viewport\n else if (p) setPos((cur) => (cur && cur.top === p.top && cur.left === p.left && cur.maxHeight === p.maxHeight ? cur : p));\n };\n // capture:true so scroll inside ANY ancestor (the grid's own __scroll, a modal,\n // the page) re-places the popover, not just window scroll.\n window.addEventListener(\"scroll\", update, true);\n window.addEventListener(\"resize\", update);\n return () => {\n window.removeEventListener(\"scroll\", update, true);\n window.removeEventListener(\"resize\", update);\n };\n }, [isOpen, place]);\n\n return [pos, open, close];\n}\n\nfunction Caret({ pos }) {\n if (!pos) return null;\n const left = Math.max(12, Math.min(pos.anchorX - pos.left, pos.width - 20));\n return <span className=\"twc-dt__caret\" style={{ left }} />;\n}\n\nfunction EditCell({ col, value, options, onChange, onCommit, onCommitValue, onCancel, onKeyDown }) {\n const ref = React.useRef(null);\n const isSelect = col.editType === \"select\" || (options && col.editType !== \"text\");\n\n React.useEffect(() => {\n if (isSelect) {\n // auto-open the Twico Select popover so one double-click is enough\n const t = setTimeout(() => ref.current?.querySelector(\".twc-sel__trigger\")?.click(), 0);\n return () => clearTimeout(t);\n }\n const el = ref.current; if (!el) return;\n el.focus();\n if (el.select && col.type !== \"number\") el.select();\n }, [isSelect]);\n\n if (isSelect) {\n const opts = options || (col.valueOptions || []).map((o) => (typeof o === \"string\" ? { value: o, label: o } : o));\n return (\n <div className=\"twc-dt__editor-wrap\" ref={ref}\n onKeyDown={(e) => { if (e.key === \"Escape\") { e.stopPropagation(); onCancel(); } }}>\n <Select size=\"sm\" portal value={value ?? \"\"} options={opts} placeholder=\"Select…\"\n onChange={(v) => onCommitValue(v)} />\n </div>\n );\n }\n return (\n <div className=\"twc-dt__editor-wrap\">\n <input\n ref={ref}\n className=\"twc-dt__editor\"\n type={col.type === \"number\" ? \"number\" : \"text\"}\n value={value ?? \"\"}\n aria-label={`Edit ${col.headerName}`}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onKeyDown}\n onBlur={onCommit}\n />\n </div>\n );\n}\n\n// ---- Minimal, dependency-free .xlsx (OOXML) writer -------------------------\n// Builds a real SpreadsheetML workbook and packs it into a ZIP by hand (stored,\n// no compression — so no deflate dependency), keeping the library's zero-runtime\n// -deps rule. Strings use inline-string cells so there is no shared-strings part;\n// finite numbers become numeric cells so Excel/Sheets treat them as numbers.\n// All of this runs only inside the export click handler, never at render scope,\n// so TextEncoder / the DOM are safe to touch (SSR-safe).\nlet _crcTable = null;\nfunction crc32(bytes) {\n if (!_crcTable) {\n _crcTable = new Uint32Array(256);\n for (let n = 0; n < 256; n++) {\n let c = n;\n for (let k = 0; k < 8; k++) c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;\n _crcTable[n] = c >>> 0;\n }\n }\n let crc = 0xffffffff;\n for (let i = 0; i < bytes.length; i++) crc = (crc >>> 8) ^ _crcTable[(crc ^ bytes[i]) & 0xff];\n return (crc ^ 0xffffffff) >>> 0;\n}\n// Pack [{ name, data: Uint8Array }] into an uncompressed (method 0) ZIP archive.\nfunction zipStore(files) {\n const u16 = (n) => [n & 255, (n >>> 8) & 255];\n const u32 = (n) => [n & 255, (n >>> 8) & 255, (n >>> 16) & 255, (n >>> 24) & 255];\n const enc = new TextEncoder();\n const local = [];\n const central = [];\n let offset = 0;\n const DOSTIME = 0;\n const DOSDATE = 0x21; // 1980-01-01, a valid fixed timestamp\n for (const f of files) {\n const nameB = enc.encode(f.name);\n const data = f.data;\n const crc = crc32(data);\n const hdr = [\n ...u32(0x04034b50), ...u16(20), ...u16(0), ...u16(0), ...u16(DOSTIME), ...u16(DOSDATE),\n ...u32(crc), ...u32(data.length), ...u32(data.length), ...u16(nameB.length), ...u16(0),\n ];\n local.push(Uint8Array.from(hdr), nameB, data);\n central.push(Uint8Array.from([\n ...u32(0x02014b50), ...u16(20), ...u16(20), ...u16(0), ...u16(0), ...u16(DOSTIME), ...u16(DOSDATE),\n ...u32(crc), ...u32(data.length), ...u32(data.length), ...u16(nameB.length),\n ...u16(0), ...u16(0), ...u16(0), ...u16(0), ...u32(0), ...u32(offset),\n ]), nameB);\n offset += hdr.length + nameB.length + data.length;\n }\n const cdStart = offset;\n let cdSize = 0;\n for (const c of central) cdSize += c.length;\n const end = Uint8Array.from([\n ...u32(0x06054b50), ...u16(0), ...u16(0), ...u16(files.length), ...u16(files.length),\n ...u32(cdSize), ...u32(cdStart), ...u16(0),\n ]);\n const parts = [...local, ...central, end];\n let total = 0;\n for (const p of parts) total += p.length;\n const out = new Uint8Array(total);\n let at = 0;\n for (const p of parts) { out.set(p, at); at += p.length; }\n return out;\n}\n// 0-based column index -> spreadsheet letters (0->A, 26->AA, …).\nfunction colLetter(n) {\n let s = \"\";\n for (n += 1; n > 0; n = Math.floor((n - 1) / 26)) s = String.fromCharCode(65 + ((n - 1) % 26)) + s;\n return s;\n}\n// Wrap a <worksheet> XML string in the fixed package parts and return ZIP bytes.\nfunction xlsxPackage(sheetXml) {\n const enc = (s) => new TextEncoder().encode(s);\n const XD = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\n';\n const NS = \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\";\n return zipStore([\n { name: \"[Content_Types].xml\", data: enc(XD +\n '<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">' +\n '<Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>' +\n '<Default Extension=\"xml\" ContentType=\"application/xml\"/>' +\n '<Override PartName=\"/xl/workbook.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\"/>' +\n '<Override PartName=\"/xl/worksheets/sheet1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\"/>' +\n '<Override PartName=\"/xl/styles.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\"/>' +\n \"</Types>\") },\n { name: \"_rels/.rels\", data: enc(XD +\n '<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">' +\n '<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"xl/workbook.xml\"/>' +\n \"</Relationships>\") },\n { name: \"xl/workbook.xml\", data: enc(XD +\n `<workbook xmlns=\"${NS}\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">` +\n '<sheets><sheet name=\"Sheet1\" sheetId=\"1\" r:id=\"rId1\"/></sheets></workbook>') },\n { name: \"xl/_rels/workbook.xml.rels\", data: enc(XD +\n '<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">' +\n '<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\" Target=\"worksheets/sheet1.xml\"/>' +\n '<Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\" Target=\"styles.xml\"/>' +\n \"</Relationships>\") },\n { name: \"xl/styles.xml\", data: enc(XD +\n `<styleSheet xmlns=\"${NS}\">` +\n '<fonts count=\"1\"><font><sz val=\"11\"/><name val=\"Calibri\"/></font></fonts>' +\n '<fills count=\"1\"><fill><patternFill patternType=\"none\"/></fill></fills>' +\n '<borders count=\"1\"><border/></borders>' +\n '<cellStyleXfs count=\"1\"><xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\"/></cellStyleXfs>' +\n '<cellXfs count=\"1\"><xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\" xfId=\"0\"/></cellXfs>' +\n \"</styleSheet>\") },\n { name: \"xl/worksheets/sheet1.xml\", data: enc(sheetXml) },\n ]);\n}\n\nexport function Datatable({\n columns, rows, loading = false, rowKey, checkboxSelection = false,\n density: densityProp = \"standard\", pageSize = 10, pageSizeOptions = [5, 10, 25, 50],\n height = 440, serverMode = false, rowCount, onServerChange, batchActions = [],\n showExport = true, exportFilename = \"export\", aggregationValues = null,\n disableColumnReorder = false, disableColumnResize = false,\n editMode = false, onRowUpdate, onRowsChange, onBatchUpdate,\n showPageJumper = true,\n selectionMode = \"none\", onRowClick, onCellClick, onActiveCellChange,\n showAggregation = false, ariaLabel = \"Data table\", \"aria-label\": ariaLabelAttr, rowGrouping = [],\n rowNumbers = false,\n rowPinning = false, rowReorder = false, rowResize = false, onRowOrderChange,\n pivot = null, pivotMode = false,\n virtualized = false, overscan = 8, rowHeight,\n className = \"\", ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-dt-styles\")) return;\n const el = document.createElement(\"style\"); el.id = \"twc-dt-styles\"; el.textContent = DT_CSS;\n document.head.appendChild(el);\n }, []);\n\n const cols = React.useMemo(() => {\n const out = columns.map((c) => {\n const isActions = c.type === \"actions\";\n return {\n width: isActions ? 120 : 160, type: \"string\",\n sortable: !isActions, filterable: !isActions, hideable: !isActions, pinnable: true,\n groupable: !isActions && c.type !== \"number\",\n disableColumnMenu: false, headerName: isActions ? \"Actions\" : c.field,\n align: c.type === \"number\" ? \"right\" : isActions ? \"right\" : \"left\", ...c,\n };\n });\n // Row pinning exposes \"Pin to top/bottom\" through a row's ⋮ actions menu. If the consumer didn't\n // supply an actions column there'd be no menu to host them, so add a minimal trailing one.\n if (rowPinning && !out.some((c) => c.type === \"actions\")) {\n out.push({\n field: \"__pinactions__\", type: \"actions\", width: 96, headerName: \"Actions\", align: \"right\",\n sortable: false, filterable: false, hideable: false, pinnable: false, groupable: false,\n disableColumnMenu: true, getActions: () => [],\n });\n }\n return out;\n }, [columns, rowPinning]);\n\n // Stable per-row key. Prefer rowKey, then r.id; otherwise fall back to a key\n // tied to the row's object IDENTITY (a WeakMap), NOT its index — an index-based\n // key collapses/shifts across pages, sort, grouping and pinning, which would\n // mis-target selection, inline-edit commits and \"select all\" for id-less rows.\n const _autoKey = React.useRef();\n if (!_autoKey.current) _autoKey.current = { map: new WeakMap(), n: 0 };\n const keyOf = rowKey || ((r, i) => {\n if (r != null && r.id != null) return r.id;\n if (r != null && typeof r === \"object\") {\n const m = _autoKey.current.map;\n let k = m.get(r);\n if (k === undefined) { k = \"·r\" + _autoKey.current.n++; m.set(r, k); }\n return k;\n }\n return i;\n });\n const [sort, setSort] = React.useState(null);\n const [filters, setFilters] = React.useState([]);\n const [hidden, setHidden] = React.useState(() => new Set());\n // Runtime visibility of the row-number gutter, seeded from the `rowNumbers` prop and\n // toggled from the Columns panel (the prop just enables the feature + sets the default).\n const [showRowNum, setShowRowNum] = React.useState(rowNumbers);\n // Per-column text wrapping: cells in these fields wrap onto multiple lines\n // (the row grows down) instead of clipping to one line. Seeded from a column's\n // `wrapText`, toggled live from the column ⋮ menu.\n const [wrapped, setWrapped] = React.useState(() => new Set((columns || []).filter((c) => c.wrapText).map((c) => c.field)));\n const toggleWrap = (field) => setWrapped((w) => { const n = new Set(w); n.has(field) ? n.delete(field) : n.add(field); return n; });\n const [pins, setPins] = React.useState(() => {\n const left = [], right = [];\n columns.forEach((c) => { if (c.pinned === \"left\") left.push(c.field); else if (c.pinned === \"right\") right.push(c.field); });\n return { left, right };\n });\n const [density, setDensity] = React.useState(densityProp);\n const [quick, setQuick] = React.useState(\"\");\n const [selected, setSelected] = React.useState(() => new Set());\n const [activeRow, setActiveRow] = React.useState(null);\n const [activeCell, setActiveCell] = React.useState(null); // { key, field }\n const [page, setPage] = React.useState(0);\n const [rowsPerPage, setRowsPerPage] = React.useState(pageSize > 0 ? pageSize : 10);\n const [colQuery, setColQuery] = React.useState(\"\");\n const [widths, setWidths] = React.useState({});\n const [order, setOrder] = React.useState(() => columns.map((c) => c.field));\n const [drag, setDrag] = React.useState({ from: null, over: null, after: false });\n const [aggOn, setAggOn] = React.useState(showAggregation);\n const [focus, setFocus] = React.useState({ r: 0, c: 0 });\n const gridRef = React.useRef(null);\n const [groupBy, setGroupBy] = React.useState(rowGrouping || []);\n const [collapsed, setCollapsed] = React.useState(() => new Set());\n const [pinnedRows, setPinnedRows] = React.useState({ top: [], bottom: [] });\n const [headH, setHeadH] = React.useState(41);\n const theadRef = React.useRef(null);\n const [rowOrder, setRowOrder] = React.useState(null);\n const [rowHeights, setRowHeights] = React.useState({});\n const [rowDrag, setRowDrag] = React.useState({ from: null, over: null, after: false });\n // Keyboard row reorder (\"grab\" mode): { key, index } where index is the live target slot among middleRows.\n const [rowGrab, setRowGrab] = React.useState(null);\n const [reorderMsg, setReorderMsg] = React.useState(\"\");\n const rowFocusRef = React.useRef(null); // key to restore focus to after a keyboard drop\n // Collapse the toolbar to icon-only when the grid is too narrow for full labels.\n const rootRef = React.useRef(null);\n const [compact, setCompact] = React.useState(false);\n React.useEffect(() => {\n const el = rootRef.current;\n if (!el) return undefined;\n const measure = () => setCompact((el.clientWidth || 0) < 720);\n measure();\n const ro = typeof ResizeObserver !== \"undefined\" ? new ResizeObserver(measure) : null;\n if (ro) ro.observe(el);\n else if (typeof window !== \"undefined\") window.addEventListener(\"resize\", measure);\n return () => {\n if (ro) ro.disconnect();\n else if (typeof window !== \"undefined\") window.removeEventListener(\"resize\", measure);\n };\n }, []);\n // Row virtualization scroll state.\n const scrollRef = React.useRef(null);\n const [scrollTop, setScrollTop] = React.useState(0);\n const [viewportH, setViewportH] = React.useState(0);\n const [pivotOn, setPivotOn] = React.useState(pivotMode);\n // Runtime, user-editable aggregation config: { [field]: \"sum\"|\"avg\"|\"min\"|\"max\"|\"count\" }\n const [aggConfig, setAggConfig] = React.useState(() => {\n const m = {}; (columns || []).forEach((c) => { if (typeof c.aggregation === \"string\") m[c.field] = c.aggregation; });\n return m;\n });\n // Effective aggregation for a column: user config wins, else a function preset on the column.\n const aggOf = (c) => aggConfig[c.field] || (typeof c.aggregation === \"function\" ? c.aggregation : null);\n // Runtime, user-editable pivot model.\n const [pivotConfig, setPivotConfig] = React.useState(() => ({\n rows: (pivot && pivot.rows) || [], columns: (pivot && pivot.columns) || [],\n values: (pivot && pivot.values) || [],\n }));\n const pivotActive = pivotOn && pivotConfig.rows.length > 0 && pivotConfig.values.length > 0;\n\n // Keep custom order in sync if the columns prop changes (add new, drop removed).\n React.useEffect(() => {\n setOrder((prev) => {\n const fields = columns.map((c) => c.field);\n const kept = prev.filter((f) => fields.includes(f));\n const added = fields.filter((f) => !kept.includes(f));\n return [...kept, ...added];\n });\n }, [columns]);\n\n // Live-sync the props that seed internal toolbar state: changing the prop re-applies it\n // (the user can still adjust each one from the toolbar between prop changes).\n React.useEffect(() => { setDensity(densityProp); }, [densityProp]);\n React.useEffect(() => { setAggOn(showAggregation); }, [showAggregation]);\n // Keyed on content (not array identity) so inline `rowGrouping={[…]}` literals don't reset the user's grouping.\n const rowGroupingKey = (rowGrouping || []).join(\"\\u0000\");\n const rowGroupingKeyRef = React.useRef(rowGroupingKey);\n React.useEffect(() => {\n if (rowGroupingKeyRef.current === rowGroupingKey) return;\n rowGroupingKeyRef.current = rowGroupingKey;\n setGroupBy(rowGrouping || []);\n }, [rowGroupingKey]);\n\n const widthOf = (c) => widths[c.field] ?? c.width ?? 160;\n\n const [colMenu, setColMenu] = React.useState(null);\n const [menuPos, openMenu, closeMenu] = useFloating();\n const [panel, setPanel] = React.useState(null);\n const [panelPos, openPanel, closePanel] = useFloating();\n const [rowMenu, setRowMenu] = React.useState(null);\n const [rowMenuPos, openRowMenu, closeRowMenu] = useFloating();\n const [exportOpen, setExportOpen] = React.useState(false);\n const [exportPos, openExport, closeExport] = useFloating();\n // ARIA menu focus management: remember the trigger so focus returns to it on close.\n const menuTriggerRef = React.useRef(null);\n const colMenuRef = React.useRef(null);\n const rowMenuRef = React.useRef(null);\n const exportMenuRef = React.useRef(null);\n // Move focus to the first item when a menu opens; restore to the trigger when it closes.\n function focusFirstItem(container) {\n if (!container) return;\n const first = container.querySelector('[role=\"menuitem\"]:not([disabled])');\n if (first) first.focus();\n }\n function restoreTriggerFocus() {\n const t = menuTriggerRef.current; menuTriggerRef.current = null;\n if (t && document.contains(t)) t.focus();\n }\n // Roving ArrowUp/Down + Home/End inside an open menu; Tab/Escape close-and-restore is handled by the\n // shared outside-click/Escape effects plus onKeyDown below.\n function onMenuKeyDown(e, closeFn) {\n const container = e.currentTarget;\n const items = Array.from(container.querySelectorAll('[role=\"menuitem\"]:not([disabled])'));\n if (!items.length) return;\n const idx = items.indexOf(document.activeElement);\n if (e.key === \"ArrowDown\") { e.preventDefault(); items[(idx + 1 + items.length) % items.length].focus(); }\n else if (e.key === \"ArrowUp\") { e.preventDefault(); items[(idx - 1 + items.length) % items.length].focus(); }\n else if (e.key === \"Home\") { e.preventDefault(); items[0].focus(); }\n else if (e.key === \"End\") { e.preventDefault(); items[items.length - 1].focus(); }\n else if (e.key === \"Tab\") { e.preventDefault(); closeFn(); restoreTriggerFocus(); }\n else if (e.key === \"Escape\") { e.preventDefault(); e.stopPropagation(); closeFn(); restoreTriggerFocus(); }\n }\n // After each menu opens (its container mounts), pull focus to the first item.\n React.useEffect(() => { if (colMenu) focusFirstItem(colMenuRef.current); }, [colMenu]);\n React.useEffect(() => { if (rowMenu) focusFirstItem(rowMenuRef.current); }, [rowMenu]);\n React.useEffect(() => { if (exportOpen) focusFirstItem(exportMenuRef.current); }, [exportOpen]);\n\n React.useEffect(() => {\n if (!colMenu && !panel && !rowMenu) return;\n const closeAll = () => { setColMenu(null); closeMenu(); setPanel(null); closePanel(); setRowMenu(null); closeRowMenu(); };\n const onDown = (e) => { if (!e.target.closest(\".twc-dt__pop\") && !e.target.closest(\".twc-pop\") && !e.target.closest(\".twc-dt__menu-btn\") && !e.target.closest(\".twc-dt__tbtn\") && !e.target.closest(\".twc-dt__act\")) closeAll(); };\n const onKey = (e) => { if (e.key === \"Escape\") closeAll(); };\n document.addEventListener(\"mousedown\", onDown); document.addEventListener(\"keydown\", onKey);\n return () => { document.removeEventListener(\"mousedown\", onDown); document.removeEventListener(\"keydown\", onKey); };\n }, [colMenu, panel, rowMenu]);\n\n // Dedicated outside-click for the export menu so it closes on ANY click outside it\n // (including other toolbar buttons like Filters).\n React.useEffect(() => {\n if (!exportOpen) return;\n const close = () => { setExportOpen(false); closeExport(); };\n const onDown = (e) => { if (!e.target.closest(\".twc-dt__pop\") && !e.target.closest(\".twc-dt__export\")) close(); };\n const onKey = (e) => { if (e.key === \"Escape\") close(); };\n document.addEventListener(\"mousedown\", onDown); document.addEventListener(\"keydown\", onKey);\n return () => { document.removeEventListener(\"mousedown\", onDown); document.removeEventListener(\"keydown\", onKey); };\n }, [exportOpen]);\n\n const colByField = React.useMemo(() => Object.fromEntries(cols.map((c) => [c.field, c])), [cols]);\n const visibleCols = cols.filter((c) => !hidden.has(c.field));\n const ordered = React.useMemo(() => {\n const orderIdx = (f) => { const i = order.indexOf(f); return i === -1 ? 9999 : i; };\n const L = pins.left.map((f) => colByField[f]).filter((c) => c && !hidden.has(c.field));\n const R = pins.right.map((f) => colByField[f]).filter((c) => c && !hidden.has(c.field));\n const mid = visibleCols\n .filter((c) => !pins.left.includes(c.field) && !pins.right.includes(c.field))\n .sort((a, b) => orderIdx(a.field) - orderIdx(b.field));\n return [...L, ...mid, ...R];\n }, [pins, hidden, visibleCols, colByField, order]);\n\n // Leading sticky-left columns: the selection checkbox (44px) and the optional row-number column,\n // in that order. Pinned-left data columns start after both.\n const NUM_W = 56;\n const numLeft = checkboxSelection ? 44 : 0; // x of the row-number column\n const leadW = numLeft + (showRowNum ? NUM_W : 0); // x where pinned-left data columns begin\n const stickyOf = (field) => {\n if (pins.left.includes(field)) {\n let off = leadW;\n for (const f of pins.left) { if (f === field) break; off += widthOf(colByField[f] || {}); }\n const isEdge = pins.left[pins.left.length - 1] === field;\n return { style: { insetInlineStart: off }, pin: \"left\", edge: isEdge ? \"left\" : undefined };\n }\n if (pins.right.includes(field)) {\n let off = 0; const rev = [...pins.right].reverse();\n for (const f of rev) { if (f === field) break; off += widthOf(colByField[f] || {}); }\n const isEdge = pins.right[0] === field;\n return { style: { insetInlineEnd: off }, pin: \"right\", edge: isEdge ? \"right\" : undefined };\n }\n return {};\n };\n\n const processed = React.useMemo(() => {\n if (serverMode) {\n if (rowOrder) { const idx = new Map(rowOrder.map((k, i) => [k, i])); return [...rows].sort((a, b) => (idx.get(keyOf(a)) ?? 1e9) - (idx.get(keyOf(b)) ?? 1e9)); }\n return rows; // server already returns the filtered/sorted page\n }\n let out = rows;\n if (quick.trim()) {\n const q = quick.trim().toLowerCase();\n out = out.filter((r) => visibleCols.some((c) => String(r[c.field] ?? \"\").toLowerCase().includes(q)));\n }\n for (const f of filters) {\n const col = colByField[f.field]; if (!col) continue;\n out = out.filter((r) => testFilter(r[f.field], f.op, f.value, col.type));\n }\n if (sort) {\n const col = colByField[sort.field];\n out = [...out].sort((a, b) => {\n const av = a[sort.field], bv = b[sort.field];\n if (av == null) return 1; if (bv == null) return -1;\n const r = col?.type === \"number\" ? av - bv : String(av).localeCompare(String(bv));\n return sort.dir === \"desc\" ? -r : r;\n });\n }\n if (rowOrder && !sort) {\n const idx = new Map(rowOrder.map((k, i) => [k, i]));\n out = [...out].sort((a, b) => (idx.get(keyOf(a)) ?? 1e9) - (idx.get(keyOf(b)) ?? 1e9));\n }\n return out;\n }, [rows, quick, filters, sort, visibleCols, colByField, serverMode, rowOrder]);\n\n const paginated = pageSize > 0;\n const serverTotal = rowCount == null ? processed.length : rowCount;\n const totalRows = serverMode ? serverTotal : processed.length;\n const totalPages = paginated ? Math.max(1, Math.ceil(totalRows / rowsPerPage)) : 1;\n const paged = !paginated || serverMode ? processed : processed.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage);\n React.useEffect(() => { if (page > totalPages - 1) setPage(0); }, [totalPages]);\n\n // ---- Row grouping ----\n // Groups the rendered page by one or more fields into collapsible group rows.\n // (Operates over the current page; disable pagination with pageSize={0} to group all client rows.)\n const activeGroupBy = React.useMemo(() => groupBy.filter((f) => colByField[f]), [groupBy, colByField]);\n function subtotalText(rowsIn) {\n const parts = [];\n for (const c of ordered) {\n const agg = aggOf(c);\n if (!agg) continue;\n const v = computeAgg({ ...c, aggregation: agg }, rowsIn);\n if (v == null) continue;\n const disp = c.aggregationFormatter ? c.aggregationFormatter(v) : c.valueFormatter ? c.valueFormatter(v, null) : (typeof v === \"number\" ? v.toLocaleString() : v);\n parts.push(`${c.headerName} ${disp}`);\n }\n return parts;\n }\n function computeAgg(col, data) {\n const agg = col.aggregation; if (!agg) return null;\n const raw = data.map((r) => r[col.field]).filter((v) => v != null && v !== \"\");\n if (typeof agg === \"function\") return agg(raw, data);\n if (agg === \"count\") return raw.length;\n const nums = raw.map(Number).filter((n) => !Number.isNaN(n));\n if (!nums.length) return null;\n if (agg === \"sum\") return nums.reduce((a, b) => a + b, 0);\n if (agg === \"avg\") return Math.round((nums.reduce((a, b) => a + b, 0) / nums.length) * 100) / 100;\n if (agg === \"min\") return Math.min(...nums);\n if (agg === \"max\") return Math.max(...nums);\n return null;\n }\n const displayItems = React.useMemo(() => {\n if (!activeGroupBy.length) return null;\n const build = (rowsIn, depth, prefix) => {\n if (depth >= activeGroupBy.length) return rowsIn.map((row) => ({ kind: \"leaf\", row }));\n const field = activeGroupBy[depth];\n const map = new Map();\n for (const r of rowsIn) { const v = r[field] == null || r[field] === \"\" ? \"—\" : r[field]; if (!map.has(v)) map.set(v, []); map.get(v).push(r); }\n const items = [];\n for (const [value, rs] of map) {\n const key = `${prefix}/${field}:${value}`;\n const isCollapsed = collapsed.has(key);\n items.push({ kind: \"group\", key, field, value, depth, count: rs.length, rows: rs, collapsed: isCollapsed });\n if (!isCollapsed) items.push(...build(rs, depth + 1, key));\n }\n return items;\n };\n return build(paged, 0, \"\");\n }, [activeGroupBy, collapsed, paged, ordered, aggOn]);\n const leafRows = displayItems ? displayItems.filter((i) => i.kind === \"leaf\").map((i) => i.row) : paged;\n function toggleGroup(key) { setCollapsed((s) => { const n = new Set(s); n.has(key) ? n.delete(key) : n.add(key); return n; }); }\n function toggleGroupField(field) { setGroupBy((g) => (g.includes(field) ? g.filter((f) => f !== field) : [...g, field])); }\n\n // ---- Row pinning (sticky pinned rows above/below the scroll body) ----\n const pinSideOf = (key) => pinnedRows.top.includes(key) ? \"top\" : pinnedRows.bottom.includes(key) ? \"bottom\" : null;\n function pinRow(key, side) {\n setPinnedRows((p) => {\n const top = p.top.filter((k) => k !== key), bottom = p.bottom.filter((k) => k !== key);\n if (side === \"top\") top.push(key); else if (side === \"bottom\") bottom.push(key);\n return { top, bottom };\n });\n }\n React.useEffect(() => {\n if (!rowPinning) return;\n const measure = () => { if (theadRef.current) setHeadH(theadRef.current.offsetHeight || 41); };\n measure();\n const ro = window.ResizeObserver ? new ResizeObserver(measure) : null;\n if (ro && theadRef.current) ro.observe(theadRef.current);\n return () => ro && ro.disconnect();\n }, [rowPinning, density]);\n // Partition leaf rows: pinned rows render in sticky bands (only when not grouping).\n const canPinRows = rowPinning && !activeGroupBy.length;\n const pinnedTopRows = canPinRows ? pinnedRows.top.map((k) => leafRows.find((r, i) => keyOf(r, i) === k)).filter(Boolean) : [];\n const pinnedBottomRows = canPinRows ? pinnedRows.bottom.map((k) => leafRows.find((r, i) => keyOf(r, i) === k)).filter(Boolean) : [];\n const middleRows = canPinRows ? leafRows.filter((r, i) => !pinSideOf(keyOf(r, i))) : leafRows;\n const keyIndex = React.useMemo(() => { const m = new Map(); leafRows.forEach((r, i) => m.set(keyOf(r, i), i)); return m; }, [leafRows]);\n // Position of each key within middleRows — used by keyboard reorder to highlight the live target slot.\n const keyIndexMid = React.useMemo(() => { const m = new Map(); middleRows.forEach((r, i) => m.set(keyOf(r, keyIndex.get(keyOf(r)) ?? i), i)); return m; }, [middleRows, keyIndex]);\n\n // ---- Row reordering (drag) + row resizing (drag bottom edge) ----\n const canReorderRows = rowReorder && !activeGroupBy.length && !sort;\n function onRowDrop(targetKey) {\n const fromKey = rowDrag.from;\n setRowDrag({ from: null, over: null, after: false });\n if (fromKey == null || fromKey === targetKey) return;\n const base = (rowOrder && rowOrder.length ? rowOrder.slice() : processed.map((r) => keyOf(r)));\n for (const r of processed) { const k = keyOf(r); if (!base.includes(k)) base.push(k); }\n const next = base.filter((k) => k !== fromKey);\n let idx = next.indexOf(targetKey);\n if (idx === -1) return;\n if (rowDrag.after) idx += 1;\n next.splice(idx, 0, fromKey);\n setRowOrder(next); onRowOrderChange?.(next);\n }\n function startRowResize(e, key, tr) {\n e.preventDefault(); e.stopPropagation();\n const startY = e.clientY; const startH = rowHeights[key] || tr?.offsetHeight || 44;\n const onMove = (ev) => { const h = Math.max(32, Math.round(startH + (ev.clientY - startY))); setRowHeights((m) => ({ ...m, [key]: h })); };\n const onUp = () => { window.removeEventListener(\"pointermove\", onMove); window.removeEventListener(\"pointerup\", onUp); };\n window.addEventListener(\"pointermove\", onMove); window.addEventListener(\"pointerup\", onUp);\n }\n\n // Commit a keyboard reorder that moves `fromKey` to the slot occupied by `middleRows[targetIndex]`,\n // sharing the same persistence path as drag-drop (setRowOrder/onRowOrderChange). Targeting by the\n // neighbor's key (not a raw index) keeps it correct when pinned rows are interleaved.\n function commitRowMove(fromKey, targetIndex) {\n const targetRow = middleRows[Math.max(0, Math.min(targetIndex, middleRows.length - 1))];\n const targetKey = targetRow ? keyOf(targetRow, keyIndex.get(keyOf(targetRow)) ?? 0) : null;\n const base = (rowOrder && rowOrder.length ? rowOrder.slice() : processed.map((r) => keyOf(r)));\n for (const r of processed) { const k = keyOf(r); if (!base.includes(k)) base.push(k); }\n const fromIdx = base.indexOf(fromKey);\n if (fromIdx === -1) return;\n base.splice(fromIdx, 1);\n let insertAt = targetKey == null ? base.length : base.indexOf(targetKey);\n if (insertAt === -1) insertAt = base.length;\n // Moving down past the target lands after it; moving up lands before it.\n const fromMid = keyIndexMid.get(fromKey);\n if (fromMid != null && targetIndex > fromMid) insertAt += 1;\n base.splice(insertAt, 0, fromKey);\n setRowOrder(base); onRowOrderChange?.(base);\n }\n // Keyboard reorder on a row drag handle: Enter/Space grabs & drops, ArrowUp/Down move, Escape cancels.\n function onRowHandleKey(e, key, currentIdx, rowLabel) {\n const grabbed = rowGrab && rowGrab.key === key;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (!grabbed) {\n setRowGrab({ key, index: currentIdx });\n setReorderMsg(`${rowLabel} grabbed, row ${currentIdx + 1} of ${middleRows.length}. Use the up and down arrow keys to move, Enter to drop, Escape to cancel.`);\n } else {\n rowFocusRef.current = key;\n commitRowMove(key, rowGrab.index);\n setReorderMsg(`${rowLabel} dropped at row ${rowGrab.index + 1} of ${middleRows.length}.`);\n setRowGrab(null);\n }\n } else if (grabbed && (e.key === \"ArrowUp\" || e.key === \"ArrowDown\")) {\n e.preventDefault();\n const next = Math.max(0, Math.min(rowGrab.index + (e.key === \"ArrowDown\" ? 1 : -1), middleRows.length - 1));\n if (next !== rowGrab.index) { setRowGrab({ key, index: next }); setReorderMsg(`${rowLabel} moved to row ${next + 1} of ${middleRows.length}. Press Enter to drop.`); }\n } else if (grabbed && e.key === \"Escape\") {\n e.preventDefault();\n rowFocusRef.current = key;\n setRowGrab(null);\n setReorderMsg(\"Reorder cancelled.\");\n }\n }\n // Restore focus to a moved row's drag handle after a keyboard drop/cancel re-renders the rows.\n React.useEffect(() => {\n if (rowFocusRef.current == null) return;\n const key = rowFocusRef.current; rowFocusRef.current = null;\n const root = gridRef.current; if (!root) return;\n const sel = (typeof CSS !== \"undefined\" && CSS.escape) ? CSS.escape(String(key)) : String(key).replace(/\"/g, '\\\\\"');\n const el = root.querySelector(`.twc-dt__row-handle[data-row-key=\"${sel}\"]`);\n if (el) el.focus();\n });\n\n // ---- Row virtualization (opt-in) ----\n // Estimated fixed row height from density (overridable via rowHeight). Windowing only kicks in\n // when there's a fixed scroll viewport to measure against AND pagination is off, and never while\n // row grouping is active (group rows have variable structure) — see docs for the trade-off.\n const estRowH = rowHeight ?? (density === \"compact\" ? 36 : density === \"comfortable\" ? 56 : 44);\n // Only window when pagination is off (a paginated slice is already small) and not grouping/loading.\n const virtualizing = virtualized && !paginated && !activeGroupBy.length && !loading;\n // Measure the scroll viewport so the window matches what's actually visible.\n React.useEffect(() => {\n if (!virtualizing) return;\n const el = scrollRef.current; if (!el) return;\n const measure = () => setViewportH(el.clientHeight);\n measure();\n const ro = window.ResizeObserver ? new ResizeObserver(measure) : null;\n if (ro) ro.observe(el);\n return () => ro && ro.disconnect();\n }, [virtualizing, height]);\n const onScrollVirtual = React.useCallback((e) => { setScrollTop(e.currentTarget.scrollTop); }, []);\n // Window the middle (non-pinned) rows. Pinned top/bottom rows always render (they're sticky).\n const vh = viewportH || (typeof height === \"number\" ? height : 440);\n // Variable-height windowing: cache each row's MEASURED height by its stable key — rows can differ\n // in height (tall renderCell content, wrapped text, a drag-resized row), so a single fixed height\n // would drift the scrollbar. Unmeasured rows fall back to estRowH until they scroll into view once.\n const rowHRef = React.useRef(new Map());\n const [measureTick, setMeasureTick] = React.useState(0);\n // Prefix-sum of row tops: offsets[i] = y of row i's top, offsets[total] = total height. Rebuilt only\n // when the row set or a measurement changes — NOT on every scroll.\n const offsets = React.useMemo(() => {\n if (!virtualizing) return null;\n const total = middleRows.length;\n const arr = new Float64Array(total + 1);\n for (let i = 0; i < total; i++) {\n const h = rowHRef.current.get(String(keyOf(middleRows[i]))) ?? estRowH;\n arr[i + 1] = arr[i] + h;\n }\n return arr;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [virtualizing, middleRows, estRowH, measureTick]);\n // The window = rows intersecting [scrollTop, scrollTop+vh], padded by `overscan` rows each side,\n // binary-searched against `offsets` so scrolling stays O(log n).\n const vWindow = React.useMemo(() => {\n if (!virtualizing || !offsets) return null;\n const total = middleRows.length;\n const totalH = offsets[total];\n const firstBottomBelow = (y) => { let lo = 0, hi = total; while (lo < hi) { const m = (lo + hi) >> 1; if (offsets[m + 1] <= y) lo = m + 1; else hi = m; } return lo; };\n const firstTopAtOrBelow = (y, from) => { let lo = from, hi = total; while (lo < hi) { const m = (lo + hi) >> 1; if (offsets[m] < y) lo = m + 1; else hi = m; } return lo; };\n let start = firstBottomBelow(scrollTop);\n let end = firstTopAtOrBelow(scrollTop + vh, start);\n start = Math.max(0, start - overscan);\n end = Math.min(total, end + overscan);\n if (start > end) start = end;\n return { start, end, padTop: offsets[start], padBottom: Math.max(0, totalH - offsets[end]) };\n }, [virtualizing, offsets, middleRows.length, vh, scrollTop, overscan]);\n // After each render, measure the windowed rows; if a height changed, refine the cache and re-window.\n // Self-stabilizing: once a row is measured its height doesn't change from being measured again.\n React.useLayoutEffect(() => {\n if (!virtualizing) return;\n const el = scrollRef.current; if (!el) return;\n let changed = false;\n for (const tr of el.querySelectorAll(\"tr[data-vrow]\")) {\n const key = tr.getAttribute(\"data-vrow\");\n const h = tr.offsetHeight;\n if (h > 0 && rowHRef.current.get(key) !== h) { rowHRef.current.set(key, h); changed = true; }\n }\n if (changed) setMeasureTick((t) => t + 1);\n });\n\n // Server-side: report state changes so the parent can fetch the right slice (debounced).\n const onServerChangeRef = React.useRef(onServerChange);\n onServerChangeRef.current = onServerChange;\n React.useEffect(() => {\n if (!serverMode) return;\n const t = setTimeout(() => {\n onServerChangeRef.current?.({\n page, pageSize: rowsPerPage, sort,\n filters: filters.map(({ id, ...f }) => f),\n quickFilter: quick.trim(),\n });\n }, 250);\n return () => clearTimeout(t);\n }, [serverMode, page, rowsPerPage, sort, filters, quick]);\n\n function cycleSort(field) {\n setSort((s) => !s || s.field !== field ? { field, dir: \"asc\" } : s.dir === \"asc\" ? { field, dir: \"desc\" } : null);\n }\n function addFilter(field) {\n const col = colByField[field] || cols[0];\n setFilters((f) => [...f, { id: Date.now() + Math.random(), field: col.field, op: opsFor(col.type)[0].value, value: \"\" }]);\n }\n function setPin(field, side) {\n setPins((p) => {\n const left = p.left.filter((f) => f !== field), right = p.right.filter((f) => f !== field);\n if (side === \"left\") left.push(field); else if (side === \"right\") right.unshift(field);\n return { left, right };\n });\n }\n function toggleHiddenField(field) {\n setHidden((h) => { const n = new Set(h); n.has(field) ? n.delete(field) : n.add(field); return n; });\n }\n // The visible, unpinned columns in current order — the movable \"middle\" band that the\n // drag-reorder path can rearrange (pinned/left/right + actions stay put). Shared by the\n // keyboard moveCol() below and the column menu's Move left/right enable gate.\n const movableMidFields = React.useMemo(\n () => ordered.filter((c) => !pins.left.includes(c.field) && !pins.right.includes(c.field)).map((c) => c.field),\n [ordered, pins]\n );\n // Keyboard alternative to drag-reorder: move a column one slot among the visible, unpinned\n // columns. Goes through the same `order` state the drag path mutates (no public callback exists\n // for columns) and announces via the shared aria-live region.\n function moveCol(field, dir) {\n const mid = movableMidFields;\n const i = mid.indexOf(field); const j = i + dir;\n if (i === -1 || j < 0 || j >= mid.length) return;\n const other = mid[j];\n setOrder((prev) => {\n const next = prev.filter((f) => f !== field);\n const b = next.indexOf(other);\n if (b === -1) return prev;\n next.splice(dir > 0 ? b + 1 : b, 0, field);\n return next;\n });\n const label = colByField[field]?.headerName || field;\n setReorderMsg(`Moved ${label} ${dir < 0 ? \"left\" : \"right\"}.`);\n }\n\n // Distinct value options for \"is any of\" filters (column.valueOptions, else derived from rows).\n function optionsForField(field) {\n const col = colByField[field];\n if (col?.valueOptions) return col.valueOptions.map((o) => (typeof o === \"string\" ? { value: o, label: o } : o));\n const set = new Set();\n for (const r of rows) { const v = r[field]; if (v != null && v !== \"\") set.add(String(v)); if (set.size > 80) break; }\n return [...set].sort((a, b) => a.localeCompare(b)).map((v) => ({ value: v, label: v }));\n }\n\n // ---- Column resize (pointer drag on the right edge) ----\n const [resizing, setResizing] = React.useState(false);\n function startResize(e, field) {\n e.preventDefault(); e.stopPropagation();\n const startX = e.clientX; const startW = widthOf(colByField[field]);\n setResizing(true);\n const onMove = (ev) => {\n const w = Math.max(72, Math.round(startW + (ev.clientX - startX)));\n setWidths((m) => ({ ...m, [field]: w }));\n };\n const onUp = () => { setResizing(false); window.removeEventListener(\"pointermove\", onMove); window.removeEventListener(\"pointerup\", onUp); };\n window.addEventListener(\"pointermove\", onMove); window.addEventListener(\"pointerup\", onUp);\n }\n\n // Excel-style auto-fit: double-clicking the resize handle sizes the column to the\n // widest content among the header and the currently-rendered body cells. Each cell's\n // content is cloned into an off-screen, unconstrained, nowrap node and measured, so it\n // works for text, numbers, badges, and avatars alike — and can shrink as well as grow.\n function autoFitColumn(field, thEl) {\n const ci = ordered.findIndex((x) => x.field === field);\n const table = thEl && thEl.closest(\"table\");\n if (ci < 0 || !table) return;\n const cells = [thEl, ...table.querySelectorAll(`td[data-c=\"${ci}\"]`)];\n const meas = document.createElement(\"div\");\n meas.setAttribute(\"aria-hidden\", \"true\");\n meas.style.cssText =\n \"position:fixed;left:-9999px;top:-9999px;visibility:hidden;pointer-events:none;white-space:nowrap;display:inline-block;box-sizing:content-box;padding:0;\";\n document.body.appendChild(meas);\n let content = 0, pad = 0;\n try {\n for (const cell of cells) {\n // measure the header's inner content (skip the resizer/absolute bits) and full td content\n const src = cell.tagName === \"TH\" ? (cell.querySelector(\".twc-dt__th-inner\") || cell) : cell;\n const cs = getComputedStyle(cell);\n meas.style.font = cs.font;\n meas.style.fontFamily = cs.fontFamily;\n meas.style.fontSize = cs.fontSize;\n meas.style.fontWeight = cs.fontWeight;\n meas.style.letterSpacing = cs.letterSpacing;\n meas.innerHTML = src.innerHTML;\n content = Math.max(content, meas.scrollWidth);\n pad = Math.max(pad, (parseFloat(cs.paddingLeft) || 0) + (parseFloat(cs.paddingRight) || 0));\n }\n } finally {\n meas.innerHTML = \"\";\n document.body.removeChild(meas);\n }\n const w = Math.min(640, Math.max(72, Math.ceil(content) + Math.ceil(pad) + 6));\n setWidths((m) => ({ ...m, [field]: w }));\n }\n\n // ---- Column reorder (HTML5 drag-and-drop on header label) ----\n function onColDrop(targetField) {\n const fromField = drag.from;\n setDrag({ from: null, over: null, after: false });\n if (!fromField || fromField === targetField) return;\n setOrder((prev) => {\n const next = prev.filter((f) => f !== fromField);\n let idx = next.indexOf(targetField);\n if (idx === -1) return prev;\n if (drag.after) idx += 1;\n next.splice(idx, 0, fromField);\n return next;\n });\n }\n\n // ---- Export (client mode: all filtered+sorted rows; server mode: loaded page) ----\n function exportData(format = \"csv\") {\n const expCols = ordered.filter((c) => c.type !== \"actions\");\n const source = serverMode ? paged : processed;\n const cellValue = (c, row) => c.exportValue ? c.exportValue(row[c.field], row) : row[c.field];\n const fname = (ext) => `${exportFilename}.${ext}`;\n const download = (text, mime, ext) => {\n const blob = new Blob([text], { type: mime });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url; a.download = fname(ext);\n document.body.appendChild(a); a.click(); a.remove();\n setTimeout(() => URL.revokeObjectURL(url), 1000);\n };\n // Neutralize spreadsheet formula injection (CWE-1236): cells whose text starts with\n // = + - @ (after optional whitespace) would execute as formulas in Excel/Sheets, so\n // prefix them with a literal apostrophe. Real JS numbers can't carry a payload.\n const defang = (v, s) => (typeof v !== \"number\" && /^\\s*[=+\\-@]/.test(s) ? \"'\" + s : s);\n\n if (format === \"excel\") {\n // Real OOXML .xlsx, hand-built (no SheetJS) — see xlsxPackage above.\n // Strip XML-1.0-illegal control chars so the package never opens corrupt.\n const xesc = (s) => s.replace(/[\\u0000-\\u0008\\u000B\\u000C\\u000E-\\u001F]/g, \"\")\n .replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n const cell = (ref, v) => {\n if (typeof v === \"number\" && Number.isFinite(v)) return `<c r=\"${ref}\"><v>${v}</v></c>`;\n const s = defang(v, v == null ? \"\" : String(v)); // numbers can't carry a formula payload\n return `<c r=\"${ref}\" t=\"inlineStr\"><is><t xml:space=\"preserve\">${xesc(s)}</t></is></c>`;\n };\n const rowXml = (cells, r) => `<row r=\"${r}\">${cells.map((v, ci) => cell(`${colLetter(ci)}${r}`, v)).join(\"\")}</row>`;\n // <dimension> + <sheetViews> aren't strictly required (every reader auto-computes them) but\n // match what Excel itself emits, so stricter consumers never see a surprise. CT_Worksheet is\n // an ordered sequence: dimension, then sheetViews, then sheetData.\n const lastCell = `${expCols.length ? colLetter(expCols.length - 1) : \"A\"}${source.length + 1}`;\n const sheet = `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\n` +\n '<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\">' +\n `<dimension ref=\"A1:${lastCell}\"/>` +\n '<sheetViews><sheetView tabSelected=\"1\" workbookViewId=\"0\"/></sheetViews>' +\n \"<sheetData>\" +\n rowXml(expCols.map((c) => c.headerName), 1) +\n source.map((row, ri) => rowXml(expCols.map((c) => cellValue(c, row)), ri + 2)).join(\"\") +\n \"</sheetData></worksheet>\";\n download(xlsxPackage(sheet), \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \"xlsx\");\n return;\n }\n // csv (default)\n const escape = (v) => {\n const s = defang(v, v == null ? \"\" : String(v));\n return /[\",\\n]/.test(s) ? `\"${s.replace(/\"/g, '\"\"')}\"` : s;\n };\n const header = expCols.map((c) => escape(c.headerName)).join(\",\");\n const lines = source.map((row) => expCols.map((c) => escape(cellValue(c, row))).join(\",\"));\n const text = \"\\uFEFF\" + [header, ...lines].join(\"\\r\\n\");\n download(text, \"text/csv;charset=utf-8;\", \"csv\");\n }\n\n // ---- Aggregation / summary footer ----\n function aggregate(col) {\n const agg = aggOf(col);\n if (!agg) return null;\n if (aggregationValues && col.field in aggregationValues) {\n const pre = aggregationValues[col.field];\n // Per-function map { sum, avg, … } honors the user's chosen function; a scalar/node is used as-is.\n if (pre && typeof pre === \"object\" && !React.isValidElement(pre)) {\n if (typeof agg === \"string\" && agg in pre) return pre[agg];\n } else {\n return pre;\n }\n }\n const data = serverMode ? paged : processed;\n const raw = data.map((r) => r[col.field]).filter((v) => v != null && v !== \"\");\n if (typeof agg === \"function\") return agg(raw, data);\n if (agg === \"count\") return raw.length;\n const nums = raw.map(Number).filter((n) => !Number.isNaN(n));\n if (!nums.length) return null;\n if (agg === \"sum\") return nums.reduce((a, b) => a + b, 0);\n if (agg === \"avg\") return Math.round((nums.reduce((a, b) => a + b, 0) / nums.length) * 100) / 100;\n if (agg === \"min\") return Math.min(...nums);\n if (agg === \"max\") return Math.max(...nums);\n return null;\n }\n const aggLabels = { sum: \"Sum\", avg: \"Avg\", min: \"Min\", max: \"Max\", count: \"Count\" };\n const hasAggregation = ordered.some((c) => aggOf(c));\n\n const filteredFields = new Set(filters.map((f) => f.field));\n const allSel = paged.length > 0 && paged.every((r) => selected.has(keyOf(r)));\n const someSel = paged.some((r) => selected.has(keyOf(r)));\n function toggleAll() {\n setSelected((s) => { const n = new Set(s); if (allSel) paged.forEach((r) => n.delete(keyOf(r))); else paged.forEach((r) => n.add(keyOf(r))); return n; });\n }\n function toggleRow(k) { setSelected((s) => { const n = new Set(s); n.has(k) ? n.delete(k) : n.add(k); return n; }); }\n\n // Click-to-select (row or cell mode). Ignores clicks on interactive cell content.\n function handleRowClick(e, k, row) {\n if (selectionMode === \"none\") return;\n if (e.target.closest(\"button, a, input, select, .twc-dt__check, .twc-dt__editor-wrap\")) return;\n if (selectionMode === \"row\") {\n setActiveRow(k);\n onRowClick?.(row, k);\n onActiveCellChange?.(null);\n }\n }\n function handleCellClick(e, k, row, col) {\n if (selectionMode !== \"cell\") return;\n if (e.target.closest(\"button, a, input, select, .twc-dt__check, .twc-dt__editor-wrap\")) return;\n const next = { key: k, field: col.field };\n setActiveCell(next);\n setActiveRow(k);\n onCellClick?.(row[col.field], row, col.field);\n onActiveCellChange?.(next);\n }\n\n // ---- Keyboard grid navigation (roving tabindex over data cells) ----\n function focusCell(r, c) {\n const el = gridRef.current?.querySelector(`.twc-dt__td[data-r=\"${r}\"][data-c=\"${c}\"]`);\n if (el) el.focus();\n }\n function onGridKeyDown(e) {\n if (editing) return;\n const td = e.target.closest(\".twc-dt__td[data-r]\");\n if (!td) return;\n let r = +td.getAttribute(\"data-r\"), c = +td.getAttribute(\"data-c\");\n const maxR = leafRows.length - 1, maxC = ordered.length - 1;\n let handled = true;\n switch (e.key) {\n case \"ArrowDown\": r = Math.min(r + 1, maxR); break;\n case \"ArrowUp\": r = Math.max(r - 1, 0); break;\n case \"ArrowRight\": c = Math.min(c + 1, maxC); break;\n case \"ArrowLeft\": c = Math.max(c - 1, 0); break;\n case \"Home\": c = e.ctrlKey ? (r = 0, 0) : 0; break;\n case \"End\": c = maxC; if (e.ctrlKey) r = maxR; break;\n case \"Enter\": case \" \": {\n const col = ordered[c];\n if (col && isColEditable(col)) { e.preventDefault(); beginEdit(keyOf(leafRows[r], r), col, leafRows[r]); return; }\n if (selectionMode === \"cell\") { e.preventDefault(); handleCellClick({ target: td }, keyOf(leafRows[r], r), leafRows[r], ordered[c]); return; }\n if (selectionMode === \"row\") { e.preventDefault(); setActiveRow(keyOf(leafRows[r], r)); onRowClick?.(leafRows[r], keyOf(leafRows[r], r)); return; }\n handled = false; break;\n }\n default: handled = false;\n }\n if (handled) { e.preventDefault(); setFocus({ r, c }); focusCell(r, c); }\n }\n React.useEffect(() => { setFocus((f) => ({ r: Math.min(f.r, Math.max(0, leafRows.length - 1)), c: Math.min(f.c, Math.max(0, ordered.length - 1)) })); }, [leafRows.length, ordered.length, page]);\n\n const selectedRows = React.useMemo(() => rows.filter((r, i) => selected.has(keyOf(r, i))), [rows, selected]);\n function clearSelection() { setSelected(new Set()); }\n\n // ---- Inline editing ----\n const [editing, setEditing] = React.useState(null); // { key, field, value }\n const isColEditable = (c) => c.type !== \"actions\" && (c.editable ?? (editMode && c.editable !== false));\n\n function beginEdit(rowK, col, row) {\n if (!isColEditable(col)) return;\n setEditing({ key: rowK, field: col.field, value: row[col.field] ?? \"\" });\n }\n function cancelEdit() { setEditing(null); }\n function commitEdit(override) {\n if (!editing) return;\n const col = colByField[editing.field];\n let next = override !== undefined ? override : editing.value;\n if (col?.type === \"number\") { next = next === \"\" ? null : Number(next); if (Number.isNaN(next)) next = null; }\n const row = paged.find((r, i) => keyOf(r, i) === editing.key);\n setEditing(null);\n if (!row || row[editing.field] === next) return;\n const updated = { ...row, [editing.field]: next };\n onRowUpdate?.(updated, row, editing.field);\n if (onRowsChange) {\n onRowsChange(rows.map((r, i) => (keyOf(r, i) === editing.key ? updated : r)));\n }\n }\n function onEditKey(e) {\n if (e.key === \"Enter\") { e.preventDefault(); commitEdit(); }\n else if (e.key === \"Escape\") { e.preventDefault(); cancelEdit(); }\n }\n\n // ---- Batch edit: update one or more columns across all selected rows at once ----\n const batchEditableCols = React.useMemo(\n () => cols.filter((c) => c.type !== \"actions\" && (c.editable ?? (editMode && c.editable !== false))),\n [cols, editMode]\n );\n const [batchEdit, setBatchEdit] = React.useState(null); // { fields: {field:true}, values: {field:val} }\n const [batchEditPos, openBatchEdit, closeBatchEdit] = useFloating();\n\n function openBatchEditor(el) {\n setBatchEdit({ fields: {}, values: {} });\n openBatchEdit(el, \"left\", 320);\n }\n // Outside-click / Escape closes the batch-edit panel.\n React.useEffect(() => {\n if (!batchEdit) return;\n const close = () => { setBatchEdit(null); closeBatchEdit(); };\n const onDown = (e) => { if (!e.target.closest(\".twc-dt__pop\") && !e.target.closest(\".twc-dt__batch\")) close(); };\n const onKey = (e) => { if (e.key === \"Escape\") close(); };\n document.addEventListener(\"mousedown\", onDown); document.addEventListener(\"keydown\", onKey);\n return () => { document.removeEventListener(\"mousedown\", onDown); document.removeEventListener(\"keydown\", onKey); };\n }, [batchEdit]);\n // The editor targets the current selection, so if the selection empties (rows\n // deselected, cleared, or removed) while it's open, close it — never show\n // \"Edit 0 selected rows\" / \"Apply to 0\".\n React.useEffect(() => {\n if (batchEdit && selected.size === 0) { setBatchEdit(null); closeBatchEdit(); }\n }, [batchEdit, selected.size, closeBatchEdit]);\n\n function applyBatchEdit() {\n if (!batchEdit) return;\n const active = batchEditableCols.filter((c) => batchEdit.fields[c.field]);\n if (!active.length) { setBatchEdit(null); closeBatchEdit(); return; }\n const patch = {};\n active.forEach((c) => {\n let v = batchEdit.values[c.field];\n if (c.type === \"number\" || c.type === \"currency\") { v = v === \"\" || v == null ? null : Number(v); if (Number.isNaN(v)) v = null; }\n patch[c.field] = v;\n });\n const selKeys = new Set(selected);\n const changedRows = [];\n const nextAll = rows.map((r, i) => {\n const k = keyOf(r, i);\n if (!selKeys.has(k)) return r;\n const updated = { ...r, ...patch };\n changedRows.push(updated);\n return updated;\n });\n onBatchUpdate?.(changedRows, patch, [...selected]);\n onRowsChange?.(nextAll);\n setBatchEdit(null); closeBatchEdit();\n }\n\n // Dismiss an active editor when clicking outside it (and outside any popover it spawned).\n React.useEffect(() => {\n if (!editing) return;\n const onDown = (e) => {\n if (e.target.closest(\".twc-dt__editor-wrap\") || e.target.closest(\".twc-pop\")) return;\n setEditing(null);\n };\n document.addEventListener(\"mousedown\", onDown, true);\n return () => document.removeEventListener(\"mousedown\", onDown, true);\n }, [editing]);\n\n function renderActions(col, row) {\n const items = (col.getActions ? col.getActions(row) : []) || [];\n const inline = items.filter((a) => !a.showInMenu);\n const pinItems = canPinRows ? (() => {\n const key = keyOf(row); const side = pinSideOf(key);\n return [\n { label: side === \"top\" ? \"Unpin from top\" : \"Pin to top\", icon: <Svg d={I.pinUp} />, showInMenu: true, onClick: () => pinRow(key, side === \"top\" ? null : \"top\") },\n { label: side === \"bottom\" ? \"Unpin from bottom\" : \"Pin to bottom\", icon: <Svg d={I.pinDown} />, showInMenu: true, onClick: () => pinRow(key, side === \"bottom\" ? null : \"bottom\") },\n ];\n })() : [];\n const menu = [...items.filter((a) => a.showInMenu), ...pinItems];\n return (\n <div className=\"twc-dt__actions\" style={{ justifyContent: col.align === \"right\" ? \"flex-end\" : \"flex-start\" }}>\n {inline.map((a, i) => (\n <button type=\"button\" key={i} className=\"twc-dt__act\" data-danger={a.danger || undefined} title={a.label} aria-label={a.label}\n disabled={a.disabled} onClick={(e) => { e.stopPropagation(); a.onClick?.(row); }}>{a.icon}</button>\n ))}\n {menu.length ? (\n <button type=\"button\" className=\"twc-dt__act\" aria-label=\"More actions\" title=\"More\"\n aria-haspopup=\"menu\" aria-expanded={(rowMenu && rowMenu.row === row) || undefined}\n onClick={(e) => { e.stopPropagation(); menuTriggerRef.current = e.currentTarget; setColMenu(null); closeMenu(); setPanel(null); closePanel(); setExportOpen(false); closeExport(); setRowMenu({ items: menu, row }); openRowMenu(e.currentTarget, \"right\", 200); }}>\n <Svg d={I.more} />\n </button>\n ) : null}\n </div>\n );\n }\n\n const tableMinWidth = leadW + ordered.reduce((a, c) => a + widthOf(c), 0);\n const filterableCols = cols.filter((c) => c.filterable);\n const orderIdxOf = (f) => { const i = order.indexOf(f); return i === -1 ? 9999 : i; };\n const shownColRows = cols\n .filter((c) => c.field !== \"__pinactions__\" && c.headerName.toLowerCase().includes(colQuery.trim().toLowerCase()))\n .sort((a, b) => orderIdxOf(a.field) - orderIdxOf(b.field));\n // The row-number gutter gets its own show/hide row in the Columns panel when the feature is enabled.\n const rowNumMatch = rowNumbers && \"row number\".includes(colQuery.trim().toLowerCase());\n const rppOptions = Array.from(new Set([...(pageSizeOptions || []), pageSize].filter((n) => n > 0))).sort((a, b) => a - b).map((n) => ({ value: String(n), label: String(n) }));\n\n const totalCols = ordered.length + (checkboxSelection ? 1 : 0) + (showRowNum ? 1 : 0);\n function renderGroupRow(item) {\n const subs = aggOn ? subtotalText(item.rows) : [];\n return (\n <tr key={`g${item.key}`} className=\"twc-dt__group-row\" role=\"row\">\n <td className=\"twc-dt__group-cell\" role=\"gridcell\" colSpan={totalCols} style={{ maxWidth: \"none\" }}>\n <button type=\"button\" className=\"twc-dt__group-toggle\" style={{ marginLeft: item.depth * 18 }}\n aria-expanded={!item.collapsed} onClick={() => toggleGroup(item.key)}>\n <span className=\"twc-dt__group-chev\" data-open={!item.collapsed || undefined}><Svg d={I.chevDown} /></span>\n <span className=\"twc-dt__group-name\">{colByField[item.field]?.headerName || item.field}:</span>\n <span className=\"twc-dt__group-val\">{String(item.value)}</span>\n <span className=\"twc-dt__group-count\">{item.count}</span>\n </button>\n {subs.length ? <span className=\"twc-dt__group-sub\">{subs.map((s, i) => <span key={i}>{s}</span>)}</span> : null}\n </td>\n </tr>\n );\n }\n // Focusable keyboard drag handle for a reorderable row (mirrors the Kanban grab pattern).\n function rowHandle(k, midIdx, row) {\n const grabbed = rowGrab && rowGrab.key === k;\n const label = String(row[ordered[0]?.field] ?? `Row ${(midIdx ?? 0) + 1}`);\n return (\n <button type=\"button\" className=\"twc-dt__row-handle\" data-row-key={k} data-grabbed={grabbed || undefined}\n aria-label={`Reorder ${label}`} aria-roledescription=\"Draggable row\" aria-pressed={grabbed || undefined}\n title=\"Drag, or press Enter to reorder with the keyboard\"\n onKeyDown={(e) => onRowHandleKey(e, k, midIdx ?? 0, label)}\n onClick={(e) => e.stopPropagation()}\n onBlur={() => { if (rowGrab && rowGrab.key === k) { setRowGrab(null); } }}>\n <Svg d={I.grip} aria-hidden=\"true\" />\n </button>\n );\n }\n function renderLeaf(row, ri, pinSide, midIdx) {\n const k = keyOf(row, ri); const sel = selected.has(k);\n const rowActive = selectionMode === \"row\" && activeRow === k;\n const stickyStyle = pinSide === \"top\" ? { position: \"sticky\", top: headH, zIndex: 5 } : pinSide === \"bottom\" ? { position: \"sticky\", bottom: 0, zIndex: 5 } : undefined;\n const h = rowHeights[k];\n const rowStyle = { ...(stickyStyle || {}), ...(h ? { height: h } : {}) };\n const reorderable = canReorderRows && !pinSide;\n const grabbed = rowGrab && rowGrab.key === k;\n // The grabbed row's live target slot lights up the row currently occupying that index.\n const grabTarget = rowGrab && !grabbed && midIdx != null && rowGrab.index === midIdx\n ? (rowGrab.index >= keyIndexMid.get(rowGrab.key) ? \"after\" : \"before\") : undefined;\n return (\n <tr key={(pinSide ? \"p-\" : \"\") + k} className=\"twc-dt__row\" role=\"row\" aria-rowindex={(paginated && !serverMode ? page * rowsPerPage : 0) + ri + 2}\n aria-selected={(checkboxSelection ? sel : rowActive) || undefined}\n data-selected={sel || undefined} data-active={rowActive || undefined}\n data-pinned-row={pinSide || undefined}\n data-reorderable={reorderable || undefined}\n data-row-dragging={rowDrag.from === k || undefined}\n data-row-grabbed={grabbed || undefined}\n data-row-grabtarget={grabTarget}\n data-row-dropbefore={(reorderable && rowDrag.over === k && !rowDrag.after) || undefined}\n data-row-dropafter={(reorderable && rowDrag.over === k && rowDrag.after) || undefined}\n data-vrow={virtualizing && midIdx != null ? String(k) : undefined}\n data-selectable={selectionMode !== \"none\" || undefined}\n style={Object.keys(rowStyle).length ? rowStyle : undefined}\n draggable={reorderable || undefined}\n onDragStart={reorderable ? (e) => { setRowDrag({ from: k, over: null, after: false }); e.dataTransfer.effectAllowed = \"move\"; e.dataTransfer.setData(\"text/plain\", String(k)); } : undefined}\n onDragOver={reorderable && rowDrag.from != null ? (e) => { e.preventDefault(); const r = e.currentTarget.getBoundingClientRect(); const after = e.clientY > r.top + r.height / 2; setRowDrag((d) => (d.over === k && d.after === after ? d : { ...d, over: k, after })); } : undefined}\n onDrop={reorderable && rowDrag.from != null ? (e) => { e.preventDefault(); onRowDrop(k); } : undefined}\n onDragEnd={reorderable ? () => setRowDrag({ from: null, over: null, after: false }) : undefined}\n onClick={(e) => handleRowClick(e, k, row)}>\n {checkboxSelection ? (\n <td className=\"twc-dt__td\" role=\"gridcell\" data-pin=\"left\" data-pin-edge={(pins.left.length || showRowNum) ? undefined : \"left\"} style={{ insetInlineStart: 0, width: 44 }}>\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 4 }}>\n {reorderable ? rowHandle(k, midIdx, row) : null}\n <span className=\"twc-dt__check\" data-checked={sel || undefined} onClick={() => toggleRow(k)}\n role=\"checkbox\" aria-checked={sel} aria-label=\"Select row\" tabIndex={0}\n onKeyDown={(e) => { if (e.key === \" \" || e.key === \"Enter\") { e.preventDefault(); toggleRow(k); } }}><Svg d={I.check} /></span>\n </span>\n {rowResize && !pinSide ? <span className=\"twc-dt__row-resizer\" title=\"Drag to resize row\" onPointerDown={(e) => startRowResize(e, k, e.currentTarget.closest(\"tr\"))} onClick={(e) => e.stopPropagation()} /> : null}\n </td>\n ) : null}\n {showRowNum ? (\n <td className=\"twc-dt__td twc-dt__rownum\" role=\"gridcell\" aria-hidden=\"true\" data-pin=\"left\" data-pin-edge={pins.left.length ? undefined : \"left\"} style={{ insetInlineStart: numLeft, width: NUM_W }}>\n {typeof ri === \"number\" ? ((paginated || serverMode ? page * rowsPerPage : 0) + ri + 1) : \"\"}\n </td>\n ) : null}\n {ordered.map((c, ci) => {\n const st = stickyOf(c.field); const val = row[c.field];\n const isActions = c.type === \"actions\";\n const editable = isColEditable(c);\n const isEditing = editing && editing.key === k && editing.field === c.field;\n const cellActive = selectionMode === \"cell\" && activeCell && activeCell.key === k && activeCell.field === c.field;\n return (\n <td key={c.field} className=\"twc-dt__td\" role=\"gridcell\" data-r={ri} data-c={ci} aria-colindex={ci + 1 + (checkboxSelection ? 1 : 0)}\n tabIndex={focus.r === ri && focus.c === ci ? 0 : -1}\n data-num={c.type === \"number\" || undefined} data-actions={isActions || undefined}\n data-editable={editable && !isEditing || undefined} data-editing={isEditing || undefined}\n data-cell-active={cellActive || undefined} data-wrap={wrapped.has(c.field) || undefined}\n data-pin={st.pin} data-pin-edge={st.edge}\n style={{ width: widthOf(c), ...st.style }} title={isActions || c.renderCell || editable ? undefined : String(val ?? \"\")}\n onClick={selectionMode === \"cell\" ? (e) => handleCellClick(e, k, row, c) : undefined}\n onFocus={() => setFocus((f) => (f.r === ri && f.c === ci ? f : { r: ri, c: ci }))}\n onDoubleClick={editable ? () => beginEdit(k, c, row) : undefined}>\n {!checkboxSelection && reorderable && ci === 0 && !isEditing ? (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 6, maxWidth: \"100%\" }}>\n {rowHandle(k, midIdx, row)}\n <span style={{ overflow: \"hidden\", textOverflow: \"ellipsis\" }}>\n {isActions ? renderActions(c, row) : c.renderCell ? c.renderCell(val, row) : c.valueFormatter ? c.valueFormatter(val, row) : val}\n </span>\n </span>\n ) : isEditing ? (\n <EditCell col={c} value={editing.value} options={c.valueOptions ? optionsForField(c.field) : null}\n onChange={(v) => setEditing((e) => ({ ...e, value: v }))}\n onCommit={() => commitEdit()} onCommitValue={(v) => commitEdit(v)} onCancel={cancelEdit} onKeyDown={onEditKey} />\n ) : isActions ? renderActions(c, row) : c.renderCell ? c.renderCell(val, row) : c.valueFormatter ? c.valueFormatter(val, row) : val}\n {editable && !isEditing ? <span className=\"twc-dt__edit-hint\" aria-hidden=\"true\"><Svg d={I.pencil} /></span> : null}\n </td>\n );\n })}\n </tr>\n );\n }\n\n function renderPivot() {\n const rFields = pivotConfig.rows, cFields = pivotConfig.columns || [], values = pivotConfig.values;\n const rowKeyOf = (r) => rFields.map((f) => r[f] ?? \"—\").join(\" · \");\n const colPathOf = (r) => cFields.map((f) => String(r[f] ?? \"—\"));\n const aggOf = (subset, v) => computeAgg({ field: v.field, aggregation: v.agg || \"sum\" }, subset || []);\n const fmt = (val, v) => { if (val == null) return \"—\"; const col = colByField[v.field]; const f = v.valueFormatter || col?.valueFormatter; return f ? f(val, null) : (typeof val === \"number\" ? val.toLocaleString() : val); };\n const vlabel = (v) => v.label || (colByField[v.field]?.headerName || v.field);\n const rowFieldLabel = rFields.map((f) => colByField[f]?.headerName || f).join(\" / \");\n\n // Build the leaf column paths (ordered, distinct) and the per-level header spans.\n const leafPaths = [];\n const seen = new Set();\n for (const r of rows) {\n const path = colPathOf(r); const key = path.join(\"\\u0000\");\n if (!seen.has(key)) { seen.add(key); leafPaths.push(path); }\n }\n leafPaths.sort((a, b) => a.join(\"\\u0000\").localeCompare(b.join(\"\\u0000\")));\n // Header rows: one per column field. Each produces {label, span, key} cells by run-length on the path prefix.\n const headerLevels = cFields.map((_, lvl) => {\n const cells = []; let i = 0;\n while (i < leafPaths.length) {\n const label = leafPaths[i][lvl];\n const prefix = leafPaths[i].slice(0, lvl + 1).join(\"\\u0000\");\n let span = 0; let j = i;\n while (j < leafPaths.length && leafPaths[j].slice(0, lvl + 1).join(\"\\u0000\") === prefix) { span++; j++; }\n cells.push({ label, span: span * values.length, key: prefix });\n i = j;\n }\n return cells;\n });\n const leafKey = (path) => path.join(\"\\u0000\");\n const rowsForLeaf = (subset, path) => subset.filter((r) => leafKey(colPathOf(r)) === leafKey(path));\n\n const rowMap = new Map();\n for (const r of rows) { const rk = rowKeyOf(r); if (!rowMap.has(rk)) rowMap.set(rk, []); rowMap.get(rk).push(r); }\n const rowKeys = [...rowMap.keys()].sort((a, b) => String(a).localeCompare(String(b)));\n const totalHeaderRows = Math.max(cFields.length, 1) + 1; // column levels + the value-label row\n\n const ValueHead = ({ v, total }) => (\n <span className=\"twc-dt__pivot-vh\">\n <span className=\"twc-dt__pivot-vh-label\">{vlabel(v)}</span>\n <span className=\"twc-dt__pivot-vh-agg\">{v.agg || \"sum\"}</span>\n </span>\n );\n\n return (\n <div className=\"twc-dt__scroll\" style={{ maxHeight: height }}>\n <table className=\"twc-dt__table twc-dt__pivot\" role=\"grid\" aria-label={(ariaLabelAttr || ariaLabel) + \" (pivot)\"}>\n <thead>\n {/* One row per column-grouping field (e.g. Year, then Month) */}\n {cFields.map((cf, lvl) => (\n <tr role=\"row\" key={`lvl${lvl}`}>\n {lvl === 0 ? (\n <th className=\"twc-dt__th twc-dt__pivot-corner\" data-pin=\"left\" data-pin-edge=\"left\" style={{ insetInlineStart: 0 }} rowSpan={totalHeaderRows} scope=\"col\">\n <span className=\"twc-dt__pivot-corner-label\">{rowFieldLabel}</span>\n </th>\n ) : null}\n {headerLevels[lvl].map((cell) => (\n <th key={cell.key} className=\"twc-dt__th twc-dt__pivot-colgroup\" colSpan={cell.span} scope=\"colgroup\">{cell.label}</th>\n ))}\n {lvl === 0 ? (\n <th className=\"twc-dt__th twc-dt__pivot-total-h\" colSpan={values.length} rowSpan={Math.max(cFields.length, 1)} scope=\"colgroup\">Total</th>\n ) : null}\n </tr>\n ))}\n {/* Value-label row (field name + aggregation) */}\n <tr role=\"row\">\n {leafPaths.map((path) => values.map((v, vi) => (\n <th key={leafKey(path) + v.field + (v.agg || \"\")} className=\"twc-dt__th twc-dt__pivot-vhcell\" data-num=\"true\" data-group-start={vi === 0 || undefined} scope=\"col\"><ValueHead v={v} /></th>\n )))}\n {values.map((v, vi) => (\n <th key={\"t\" + v.field + (v.agg || \"\")} className=\"twc-dt__th twc-dt__pivot-vhcell twc-dt__pivot-total-h\" data-num=\"true\" data-group-start={vi === 0 || undefined} scope=\"col\"><ValueHead v={v} total /></th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rowKeys.map((rk, rIdx) => {\n const subset = rowMap.get(rk);\n return (\n <tr key={rk} className=\"twc-dt__row\" role=\"row\" data-zebra={rIdx % 2 === 1 || undefined}>\n <th className=\"twc-dt__td twc-dt__pivot-rowhead\" scope=\"row\" data-pin=\"left\" data-pin-edge=\"left\" style={{ insetInlineStart: 0 }}>\n {rk} <span className=\"twc-dt__pivot-rowcount\">({subset.length})</span>\n </th>\n {leafPaths.map((path) => { const cell = rowsForLeaf(subset, path); return values.map((v, vi) => {\n const val = cell.length ? aggOf(cell, v) : null;\n return <td key={leafKey(path) + v.field} className=\"twc-dt__td twc-dt__pivot-cell\" role=\"gridcell\" data-num=\"true\" data-group-start={vi === 0 || undefined} data-empty={val == null || undefined}>{fmt(val, v)}</td>;\n }); })}\n {values.map((v, vi) => <td key={\"t\" + v.field} className=\"twc-dt__td twc-dt__pivot-cell twc-dt__pivot-total\" role=\"gridcell\" data-num=\"true\" data-group-start={vi === 0 || undefined}>{fmt(aggOf(subset, v), v)}</td>)}\n </tr>\n );\n })}\n </tbody>\n <tfoot>\n <tr role=\"row\">\n <th className=\"twc-dt__pivot-rowhead twc-dt__pivot-grand\" data-pin=\"left\" data-pin-edge=\"left\" style={{ insetInlineStart: 0 }} scope=\"row\">Total</th>\n {leafPaths.map((path) => { const sub = rowsForLeaf(rows, path); return values.map((v, vi) => <td key={leafKey(path) + v.field} data-num=\"true\" data-group-start={vi === 0 || undefined} className=\"twc-dt__pivot-cell twc-dt__pivot-grand\">{fmt(sub.length ? aggOf(sub, v) : null, v)}</td>); })}\n {values.map((v, vi) => <td key={\"t\" + v.field} data-num=\"true\" data-group-start={vi === 0 || undefined} className=\"twc-dt__pivot-cell twc-dt__pivot-grand twc-dt__pivot-total\">{fmt(aggOf(rows, v), v)}</td>)}\n </tr>\n </tfoot>\n </table>\n </div>\n );\n }\n\n return (\n <div className={`twc-dt ${className}`} ref={rootRef} data-density={density} data-resizing={resizing || undefined} {...rest}>\n {/* PIVOT_RENDER_ANCHOR */}\n {/* Toolbar */}\n <div className=\"twc-dt__toolbar\" data-compact={compact || undefined}>\n {batchActions.length && selected.size > 0 ? (\n <div className=\"twc-dt__batch\">\n <button type=\"button\" className=\"twc-dt__batch-x\" onClick={clearSelection} aria-label=\"Clear selection\"><Svg d={I.x} /></button>\n <span className=\"twc-dt__batch-count\">{selected.size} selected</span>\n <div className=\"twc-dt__batch-actions\">\n {batchEditableCols.length ? (\n <button type=\"button\" className=\"twc-dt__batch-btn\" onClick={(e) => openBatchEditor(e.currentTarget)}>\n <Svg d={I.pencil} />Edit\n </button>\n ) : null}\n {batchActions.map((a, i) => (\n <button type=\"button\" key={i} className=\"twc-dt__batch-btn\" data-danger={a.danger || undefined} disabled={a.disabled}\n onClick={() => a.onClick?.([...selected], selectedRows, clearSelection)}>\n {a.icon}{a.label}\n </button>\n ))}\n </div>\n </div>\n ) : null}\n <button type=\"button\" className=\"twc-dt__tbtn\" data-active={panel === \"columns\" || undefined} data-tip=\"Show or hide columns\"\n onClick={(e) => { if (panel === \"columns\") { setPanel(null); closePanel(); } else { setColQuery(\"\"); setPanel(\"columns\"); setColMenu(null); openPanel(e.currentTarget, \"left\", 268); } }}>\n <Svg d={I.columns} /><span className=\"twc-dt__tlabel\">Columns</span>{hidden.size ? <span className=\"twc-dt__tbadge\">{cols.length - hidden.size}</span> : null}\n </button>\n <button type=\"button\" className=\"twc-dt__tbtn\" data-active={panel === \"filters\" || undefined} data-tip=\"Filter rows\"\n onClick={(e) => { if (panel === \"filters\") { setPanel(null); closePanel(); } else { setPanel(\"filters\"); setColMenu(null); openPanel(e.currentTarget, \"left\", 580); } }}>\n <Svg d={I.filter} /><span className=\"twc-dt__tlabel\">Filters</span>{filters.length ? <span className=\"twc-dt__tbadge\">{filters.length}</span> : null}\n </button>\n <button type=\"button\" className=\"twc-dt__tbtn\" data-tip=\"Change row density\" onClick={() => setDensity((d) => d === \"compact\" ? \"standard\" : d === \"standard\" ? \"comfortable\" : \"compact\")}>\n <Svg d={I.density} /><span className=\"twc-dt__tlabel\">{density[0].toUpperCase() + density.slice(1)}</span>\n </button>\n <button type=\"button\" className=\"twc-dt__tbtn\" data-active={panel === \"agg\" || aggOn || undefined} aria-haspopup=\"dialog\" aria-expanded={panel === \"agg\"} data-tip=\"Configure aggregation\"\n onClick={(e) => { if (panel === \"agg\") { setPanel(null); closePanel(); } else { setPanel(\"agg\"); setColMenu(null); openPanel(e.currentTarget, \"left\", 300); } }}>\n <Svg d={I.sigma} /><span className=\"twc-dt__tlabel\">Aggregation</span>{aggOn && hasAggregation ? <span className=\"twc-dt__tbadge\">{ordered.filter((c) => aggOf(c)).length}</span> : null}\n </button>\n <button type=\"button\" className=\"twc-dt__tbtn\" data-active={panel === \"pivot\" || pivotActive || undefined} aria-haspopup=\"dialog\" aria-expanded={panel === \"pivot\"} data-tip=\"Configure pivot\"\n onClick={(e) => { if (panel === \"pivot\") { setPanel(null); closePanel(); } else { setPanel(\"pivot\"); setColMenu(null); openPanel(e.currentTarget, \"left\", 320); } }}>\n <Svg d={I.pivot} /><span className=\"twc-dt__tlabel\">Pivot</span>{pivotActive ? <span className=\"twc-dt__tdot\" aria-label=\"on\" role=\"img\" /> : null}\n </button>\n {showExport ? (\n <span className=\"twc-dt__export\">\n <button type=\"button\" className=\"twc-dt__export-main\" data-tip=\"Export to CSV\" onClick={() => exportData(\"csv\")} aria-label=\"Export to CSV\">\n <Svg d={I.download} /><span className=\"twc-dt__tlabel\">Export</span>\n </button>\n <button type=\"button\" className=\"twc-dt__export-toggle\" data-tip=\"More formats\" aria-label=\"More export formats\" aria-haspopup=\"menu\" aria-expanded={exportOpen}\n onClick={(e) => { if (exportOpen) { setExportOpen(false); closeExport(); } else { menuTriggerRef.current = e.currentTarget; setColMenu(null); setPanel(null); setRowMenu(null); setExportOpen(true); openExport(e.currentTarget, \"right\", 180); } }}>\n <Svg d={I.chevronDown} />\n </button>\n </span>\n ) : null}\n <div className=\"twc-dt__search\">\n <Svg d={I.search} />\n <input placeholder=\"Search…\" aria-label=\"Search rows\" value={quick} onChange={(e) => { setQuick(e.target.value); setPage(0); }} />\n </div>\n </div>\n\n {/* Active row-grouping chips */}\n {!pivotActive && activeGroupBy.length ? (\n <div className=\"twc-dt__groupbar\">\n <Svg d={I.group} />\n <span className=\"twc-dt__groupbar-label\">Grouped by</span>\n {activeGroupBy.map((f) => (\n <span key={f} className=\"twc-dt__groupchip\">\n {colByField[f]?.headerName || f}\n <button type=\"button\" className=\"twc-dt__groupchip-x\" aria-label={`Stop grouping by ${colByField[f]?.headerName || f}`} onClick={() => toggleGroupField(f)}><Svg d={I.x} /></button>\n </span>\n ))}\n <button type=\"button\" className=\"twc-dt__groupbar-clear\" onClick={() => setGroupBy([])}>Clear all</button>\n </div>\n ) : null}\n\n {/* Visually-hidden live region for keyboard-reorder announcements */}\n <div className=\"twc-dt__sr\" role=\"status\" aria-live=\"polite\">{reorderMsg}</div>\n\n {/* Grid */}\n {pivotActive ? renderPivot() : (\n <div className=\"twc-dt__scroll\" style={{ maxHeight: height }} ref={scrollRef} onScroll={virtualizing ? onScrollVirtual : undefined}>\n <table className=\"twc-dt__table\" style={{ width: tableMinWidth, minWidth: \"100%\" }}\n ref={gridRef} role=\"grid\" aria-label={ariaLabelAttr || ariaLabel}\n aria-rowcount={totalRows + 1} aria-colcount={ordered.length + (checkboxSelection ? 1 : 0)}\n aria-busy={loading || undefined} onKeyDown={onGridKeyDown}>\n <thead ref={theadRef}>\n <tr role=\"row\" aria-rowindex={1}>\n {checkboxSelection ? (\n <th className=\"twc-dt__th\" role=\"columnheader\" aria-label=\"Select\" data-pin=\"left\" data-pin-edge={(pins.left.length || showRowNum) ? undefined : \"left\"} style={{ insetInlineStart: 0, width: 44, minWidth: 44 }}>\n <div className=\"twc-dt__th-inner\" style={{ justifyContent: \"center\", padding: 0 }}>\n <span className=\"twc-dt__check\" data-checked={allSel || undefined} data-indeterminate={(!allSel && someSel) || undefined} onClick={toggleAll}\n role=\"checkbox\" aria-checked={allSel ? true : someSel ? \"mixed\" : false} aria-label=\"Select all rows\" tabIndex={0}\n onKeyDown={(e) => { if (e.key === \" \" || e.key === \"Enter\") { e.preventDefault(); toggleAll(); } }}>\n <Svg d={allSel ? I.check : I.minus} />\n </span>\n </div>\n </th>\n ) : null}\n {showRowNum ? (\n <th className=\"twc-dt__th twc-dt__rownum\" role=\"columnheader\" aria-label=\"Row number\" data-pin=\"left\" data-pin-edge={pins.left.length ? undefined : \"left\"} style={{ insetInlineStart: numLeft, width: NUM_W, minWidth: NUM_W }}>\n <div className=\"twc-dt__th-inner\">\n <span className=\"twc-dt__th-label\" style={{ flex: \"none\", cursor: \"default\" }}>#</span>\n <button type=\"button\" className=\"twc-dt__menu-btn\" aria-label=\"Row number column menu\"\n aria-haspopup=\"menu\" aria-expanded={colMenu?.field === \"__rownum__\" || undefined}\n onClick={(e) => { e.stopPropagation(); menuTriggerRef.current = e.currentTarget; setPanel(null); closePanel(); setRowMenu(null); closeRowMenu(); setExportOpen(false); closeExport(); setColMenu({ field: \"__rownum__\" }); openMenu(e.currentTarget, \"right\", 180); }}>\n <Svg d={I.more} />\n </button>\n </div>\n </th>\n ) : null}\n {ordered.map((c) => {\n const st = stickyOf(c.field);\n const sorted = sort && sort.field === c.field ? sort.dir : undefined;\n const w = widthOf(c);\n const reorderable = !disableColumnReorder && st.pin == null && c.type !== \"actions\";\n const resizable = !disableColumnResize && c.resizable !== false;\n const hasMenu = !c.disableColumnMenu && (c.sortable || c.filterable || c.pinnable || c.hideable);\n return (\n <th key={c.field} className=\"twc-dt__th\" role=\"columnheader\" scope=\"col\"\n aria-sort={sorted ? (sorted === \"asc\" ? \"ascending\" : \"descending\") : (c.sortable ? \"none\" : undefined)}\n data-num={c.type === \"number\" || undefined} data-actions-col={c.type === \"actions\" || undefined}\n data-sorted={sorted} data-pin={st.pin} data-pin-edge={st.edge}\n data-dragging={drag.from === c.field || undefined}\n data-dropbefore={(drag.over === c.field && !drag.after) || undefined}\n data-dropafter={(drag.over === c.field && drag.after) || undefined}\n style={{ width: w, minWidth: w, ...st.style }}\n onDragOver={reorderable && drag.from ? (e) => { e.preventDefault(); const r = e.currentTarget.getBoundingClientRect(); const after = e.clientX > r.left + r.width / 2; setDrag((d) => (d.over === c.field && d.after === after ? d : { ...d, over: c.field, after })); } : undefined}\n onDrop={reorderable && drag.from ? (e) => { e.preventDefault(); onColDrop(c.field); } : undefined}>\n <div className=\"twc-dt__th-inner\">\n <span className=\"twc-dt__th-label\"\n role={c.sortable ? \"button\" : undefined} tabIndex={c.sortable ? 0 : undefined}\n aria-label={c.sortable ? `${c.headerName}, sort` : undefined}\n draggable={reorderable || undefined}\n onDragStart={reorderable ? (e) => { setDrag({ from: c.field, over: null, after: false }); e.dataTransfer.effectAllowed = \"move\"; e.dataTransfer.setData(\"text/plain\", c.field); } : undefined}\n onDragEnd={reorderable ? () => setDrag({ from: null, over: null, after: false }) : undefined}\n onClick={() => c.sortable && cycleSort(c.field)}\n onKeyDown={c.sortable ? (e) => { if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); cycleSort(c.field); } } : undefined}>\n {reorderable ? <span className=\"twc-dt__grip\" aria-hidden=\"true\"><Svg d={I.grip} /></span> : null}\n {filteredFields.has(c.field) ? <span className=\"twc-dt__filterdot\" /> : null}\n {c.headerName}\n {c.sortable ? <span className=\"twc-dt__sort\"><Svg d={I.arrow} /></span> : null}\n </span>\n {hasMenu ? (\n <button type=\"button\" className=\"twc-dt__menu-btn\" aria-label=\"Column menu\"\n aria-haspopup=\"menu\" aria-expanded={colMenu?.field === c.field || undefined}\n onClick={(e) => { e.stopPropagation(); menuTriggerRef.current = e.currentTarget; setPanel(null); closePanel(); setRowMenu(null); closeRowMenu(); setExportOpen(false); closeExport(); setColMenu({ field: c.field }); openMenu(e.currentTarget, \"right\", 230); }}>\n <Svg d={I.more} />\n </button>\n ) : null}\n </div>\n {resizable ? <span className=\"twc-dt__resizer\" data-active={resizing || undefined}\n role=\"separator\" aria-orientation=\"vertical\" aria-label={`Resize ${c.headerName} column (double-click to fit content)`}\n aria-valuenow={w} aria-valuemin={72} tabIndex={0}\n onPointerDown={(e) => startResize(e, c.field)} onClick={(e) => e.stopPropagation()}\n onDoubleClick={(e) => { e.preventDefault(); e.stopPropagation(); autoFitColumn(c.field, e.currentTarget.closest(\"th\")); }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault(); e.stopPropagation();\n autoFitColumn(c.field, e.currentTarget.closest(\"th\"));\n return;\n }\n if (e.key !== \"ArrowLeft\" && e.key !== \"ArrowRight\") return;\n e.preventDefault(); e.stopPropagation();\n const delta = e.key === \"ArrowRight\" ? 10 : -10;\n setWidths((m) => ({ ...m, [c.field]: Math.max(72, (m[c.field] ?? c.width ?? 160) + delta) }));\n }}\n title=\"Drag to resize · double-click to fit content\" /> : null}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {loading ? (\n Array.from({ length: paginated ? Math.min(rowsPerPage, 8) : 8 }).map((_, ri) => (\n <tr key={ri} className=\"twc-dt__row\">\n {checkboxSelection ? <td className=\"twc-dt__td\" data-pin=\"left\" style={{ insetInlineStart: 0, width: 44 }}><span className=\"twc-dt__sk\" style={{ \"--_w\": \"18px\", height: 18, borderRadius: 4 }} /></td> : null}\n {showRowNum ? <td className=\"twc-dt__td twc-dt__rownum\" aria-hidden=\"true\" data-pin=\"left\" style={{ insetInlineStart: numLeft, width: NUM_W }}><span className=\"twc-dt__sk\" style={{ \"--_w\": \"16px\", height: 14, borderRadius: 4 }} /></td> : null}\n {ordered.map((c, ci) => {\n const st = stickyOf(c.field);\n return <td key={c.field} className=\"twc-dt__td\" data-num={c.type === \"number\" || undefined} data-pin={st.pin} data-pin-edge={st.edge} style={{ width: widthOf(c), ...st.style }}>\n <span className=\"twc-dt__sk\" style={{ \"--_w\": `${45 + ((ri * 13 + ci * 29) % 45)}%` }} />\n </td>;\n })}\n </tr>\n ))\n ) : (displayItems ? displayItems.length === 0 : paged.length === 0) ? (\n <tr><td className=\"twc-dt__td\" colSpan={totalCols} style={{ maxWidth: \"none\" }}>\n <div className=\"twc-dt__empty\">No rows match your filters</div>\n </td></tr>\n ) : displayItems ? (() => {\n let li = -1;\n return displayItems.map((item) => item.kind === \"group\" ? renderGroupRow(item) : renderLeaf(item.row, ++li));\n })() : (<>\n {pinnedTopRows.map((row) => renderLeaf(row, keyIndex.get(keyOf(row)), \"top\"))}\n {vWindow ? (<>\n {vWindow.padTop > 0 ? <tr aria-hidden=\"true\" className=\"twc-dt__vspacer\"><td colSpan={totalCols} style={{ height: vWindow.padTop, padding: 0, border: \"none\", maxWidth: \"none\" }} /></tr> : null}\n {middleRows.slice(vWindow.start, vWindow.end).map((row, i) => renderLeaf(row, keyIndex.get(keyOf(row)), undefined, vWindow.start + i))}\n {vWindow.padBottom > 0 ? <tr aria-hidden=\"true\" className=\"twc-dt__vspacer\"><td colSpan={totalCols} style={{ height: vWindow.padBottom, padding: 0, border: \"none\", maxWidth: \"none\" }} /></tr> : null}\n </>) : (\n middleRows.map((row, i) => renderLeaf(row, keyIndex.get(keyOf(row)), undefined, i))\n )}\n {pinnedBottomRows.map((row) => renderLeaf(row, keyIndex.get(keyOf(row)), \"bottom\"))}\n </>)}\n </tbody>\n {hasAggregation && aggOn && !loading && paged.length > 0 ? (\n <tfoot>\n <tr role=\"row\">\n {checkboxSelection ? <td data-pin=\"left\" data-pin-edge={(pins.left.length || showRowNum) ? undefined : \"left\"} style={{ insetInlineStart: 0, width: 44 }} /> : null}\n {showRowNum ? <td className=\"twc-dt__rownum\" aria-hidden=\"true\" data-pin=\"left\" data-pin-edge={pins.left.length ? undefined : \"left\"} style={{ insetInlineStart: numLeft, width: NUM_W }} /> : null}\n {ordered.map((c) => {\n const st = stickyOf(c.field);\n const v = aggregate(c);\n const display = v == null ? null : (c.aggregationFormatter ? c.aggregationFormatter(v) : c.valueFormatter ? c.valueFormatter(v, null) : (typeof v === \"number\" ? v.toLocaleString() : v));\n return (\n <td key={c.field} data-num={c.type === \"number\" || undefined} data-pin={st.pin} data-pin-edge={st.edge} style={{ width: widthOf(c), ...st.style }}>\n {v == null ? null : (<>\n {typeof aggOf(c) === \"string\" ? <span className=\"twc-dt__agg-label\">{aggLabels[aggOf(c)]}</span> : null}\n <span className=\"twc-dt__agg-val\">{display}</span>\n </>)}\n </td>\n );\n })}\n </tr>\n </tfoot>\n ) : null}\n </table>\n </div>\n )}\n\n {/* Footer with pagination */}\n {!pivotActive ? (\n <div className=\"twc-dt__footer\">\n <div className=\"twc-dt__footer-row\" data-bottom=\"true\">\n <span className=\"twc-dt__status\">\n {loading ? \"Loading…\" : (() => {\n const nf = (n) => n.toLocaleString();\n if (totalRows === 0) return \"No rows\";\n const shown = paged.length;\n const start = paginated ? page * rowsPerPage + 1 : 1;\n const end = paginated ? start + shown - 1 : shown;\n return (\n <>\n {paginated\n ? <>Showing <b>{nf(start)}–{nf(end)}</b> of <b>{nf(totalRows)}</b> {totalRows === 1 ? \"row\" : \"rows\"}</>\n : <><b>{nf(totalRows)}</b> {totalRows === 1 ? \"row\" : \"rows\"}</>}\n {selected.size ? <> · <b>{nf(selected.size)}</b> selected</> : null}\n </>\n );\n })()}\n </span>\n {paginated ? (\n <div className=\"twc-dt__rpp\">\n <span className=\"twc-dt__rpp-label\">Rows per page</span>\n <div style={{ width: 78 }}>\n <Select size=\"sm\" portal value={String(rowsPerPage)} options={rppOptions} placement=\"top\" onChange={(v) => { setRowsPerPage(Number(v)); setPage(0); }} />\n </div>\n </div>\n ) : null}\n </div>\n {paginated ? (\n <div className=\"twc-dt__footer-row\" data-pager=\"true\">\n <Pagination size=\"sm\" page={page + 1} total={totalPages} boundaries={3} showJumper={showPageJumper && totalPages > 5} onChange={(p) => setPage(p - 1)} />\n </div>\n ) : null}\n </div>\n ) : null}\n\n {/* Export options menu */}\n {exportOpen && exportPos ? (\n <div className=\"twc-dt__pop\" role=\"menu\" aria-label=\"Export format\" ref={exportMenuRef}\n onKeyDown={(e) => onMenuKeyDown(e, () => { setExportOpen(false); closeExport(); })}\n style={{ top: exportPos.top, left: exportPos.left, width: exportPos.width, maxHeight: exportPos.maxHeight, overflowY: \"auto\" }}>\n <Caret pos={exportPos} />\n {[\n { fmt: \"csv\", label: \"CSV (.csv)\", icon: I.fileText },\n { fmt: \"excel\", label: \"Excel (.xlsx)\", icon: I.sheet },\n ].map((o) => (\n <button type=\"button\" key={o.fmt} role=\"menuitem\" className=\"twc-dt__mi\" onClick={() => { exportData(o.fmt); setExportOpen(false); closeExport(); restoreTriggerFocus(); }}>\n <Svg d={o.icon} /> {o.label}\n </button>\n ))}\n </div>\n ) : null}\n\n {/* Batch edit panel — set columns across all selected rows */}\n {batchEdit && batchEditPos ? (\n <div className=\"twc-dt__pop twc-dt__cfg\" style={{ top: batchEditPos.top, left: batchEditPos.left, width: 320 }}>\n <Caret pos={batchEditPos} />\n <div className=\"twc-dt__cfg-head\">Edit {selected.size} selected {selected.size === 1 ? \"row\" : \"rows\"}</div>\n <div className=\"twc-dt__cfg-list\">\n {batchEditableCols.map((c) => {\n const on = !!batchEdit.fields[c.field];\n const opts = c.valueOptions ? c.valueOptions.map((o) => (typeof o === \"string\" ? { value: o, label: o } : o)) : null;\n return (\n <div key={c.field} className=\"twc-dt__be-row\" data-on={on || undefined}>\n <label className=\"twc-dt__be-check\">\n <input type=\"checkbox\" checked={on} onChange={(e) => setBatchEdit((b) => ({ ...b, fields: { ...b.fields, [c.field]: e.target.checked } }))} />\n <span>{c.headerName}</span>\n </label>\n <div className=\"twc-dt__be-ctl\">\n {opts ? (\n <Select size=\"sm\" portal searchable placeholder=\"New value…\" value={batchEdit.values[c.field] ?? \"\"} options={opts} disabled={!on}\n onChange={(v) => setBatchEdit((b) => ({ ...b, fields: { ...b.fields, [c.field]: true }, values: { ...b.values, [c.field]: v } }))} />\n ) : (\n <Input size=\"sm\" type={c.type === \"number\" || c.type === \"currency\" ? \"number\" : \"text\"} placeholder=\"New value…\" value={batchEdit.values[c.field] ?? \"\"} disabled={!on}\n onChange={(e) => setBatchEdit((b) => ({ ...b, values: { ...b.values, [c.field]: e.target.value } }))} />\n )}\n </div>\n </div>\n );\n })}\n </div>\n <div className=\"twc-dt__cfg-foot\">\n <button type=\"button\" className=\"twc-dt__cfg-btn\" onClick={() => { setBatchEdit(null); closeBatchEdit(); }}>Cancel</button>\n <button type=\"button\" className=\"twc-dt__cfg-btn\" data-primary=\"true\" onClick={applyBatchEdit}>Apply to {selected.size}</button>\n </div>\n </div>\n ) : null}\n\n {/* Column header menu */}\n {colMenu && menuPos ? (\n <div className=\"twc-dt__pop\" role=\"menu\" aria-label=\"Column options\" ref={colMenuRef}\n onKeyDown={(e) => onMenuKeyDown(e, () => { setColMenu(null); closeMenu(); })}\n style={{ top: menuPos.top, left: menuPos.left, width: menuPos.width, maxHeight: menuPos.maxHeight, overflowY: \"auto\" }}>\n <Caret pos={menuPos} />\n {colMenu.field === \"__rownum__\" ? (() => {\n const close = () => { setColMenu(null); closeMenu(); restoreTriggerFocus(); };\n return <button type=\"button\" role=\"menuitem\" className=\"twc-dt__mi\" onClick={() => { setShowRowNum(false); close(); }}><Svg d={I.eyeOff} /> Hide column</button>;\n })() : (() => {\n const c = colByField[colMenu.field]; const close = () => { setColMenu(null); closeMenu(); restoreTriggerFocus(); };\n const hasTop = c.sortable || c.filterable;\n const hasBottom = c.pinnable || c.hideable;\n return (<>\n {c.sortable ? (<>\n <button type=\"button\" role=\"menuitem\" className=\"twc-dt__mi\" data-active={sort?.field === c.field && sort.dir === \"asc\" || undefined} onClick={() => { setSort({ field: c.field, dir: \"asc\" }); close(); }}><Svg d={I.arrow} /> Sort ascending</button>\n <button type=\"button\" role=\"menuitem\" className=\"twc-dt__mi\" data-active={sort?.field === c.field && sort.dir === \"desc\" || undefined} onClick={() => { setSort({ field: c.field, dir: \"desc\" }); close(); }}><Svg d={I.arrow} style={{ transform: \"rotate(180deg)\" }} /> Sort descending</button>\n </>) : null}\n {c.filterable ? <button type=\"button\" role=\"menuitem\" className=\"twc-dt__mi\" onClick={(e) => { addFilter(c.field); setColMenu(null); closeMenu(); restoreTriggerFocus(); setPanel(\"filters\"); openPanel(document.querySelector(\".twc-dt__toolbar .twc-dt__tbtn:nth-child(2)\"), \"left\", 580); }}><Svg d={I.filter} /> Filter</button> : null}\n {hasTop && hasBottom ? <div className=\"twc-dt__sep\" /> : null}\n {c.groupable ? <button type=\"button\" role=\"menuitem\" className=\"twc-dt__mi\" data-active={groupBy.includes(c.field) || undefined} onClick={() => { toggleGroupField(c.field); close(); }}><Svg d={I.group} /> {groupBy.includes(c.field) ? \"Stop grouping\" : \"Group by this column\"}</button> : null}\n {!disableColumnReorder && c.type !== \"actions\" && !pins.left.includes(c.field) && !pins.right.includes(c.field) ? (() => {\n // Position within the movable middle band — same set the drag path can rearrange.\n const midIdx = movableMidFields.indexOf(c.field);\n const atFirst = midIdx <= 0;\n const atLast = midIdx === -1 || midIdx >= movableMidFields.length - 1;\n return (<>\n <button type=\"button\" role=\"menuitem\" className=\"twc-dt__mi\" disabled={atFirst} aria-disabled={atFirst || undefined} onClick={() => { moveCol(c.field, -1); close(); }}><Svg d={I.arrow} style={{ transform: \"rotate(-90deg)\" }} /> Move left</button>\n <button type=\"button\" role=\"menuitem\" className=\"twc-dt__mi\" disabled={atLast} aria-disabled={atLast || undefined} onClick={() => { moveCol(c.field, 1); close(); }}><Svg d={I.arrow} style={{ transform: \"rotate(90deg)\" }} /> Move right</button>\n </>);\n })() : null}\n {c.pinnable ? (<>\n <button type=\"button\" role=\"menuitem\" className=\"twc-dt__mi\" data-active={pins.left.includes(c.field) || undefined} onClick={() => { setPin(c.field, pins.left.includes(c.field) ? null : \"left\"); close(); }}><Svg d={I.pinL} /> {pins.left.includes(c.field) ? \"Unpin\" : \"Pin to left\"}</button>\n <button type=\"button\" role=\"menuitem\" className=\"twc-dt__mi\" data-active={pins.right.includes(c.field) || undefined} onClick={() => { setPin(c.field, pins.right.includes(c.field) ? null : \"right\"); close(); }}><Svg d={I.pin} /> {pins.right.includes(c.field) ? \"Unpin\" : \"Pin to right\"}</button>\n </>) : null}\n {c.type !== \"actions\" ? <button type=\"button\" role=\"menuitem\" className=\"twc-dt__mi\" data-active={wrapped.has(c.field) || undefined} onClick={() => { toggleWrap(c.field); close(); }}><Svg d={I.wrap} /> {wrapped.has(c.field) ? \"Unwrap text\" : \"Wrap text\"}</button> : null}\n {c.hideable ? <button type=\"button\" role=\"menuitem\" className=\"twc-dt__mi\" onClick={() => { setHidden((h) => new Set(h).add(c.field)); close(); }}><Svg d={I.eyeOff} /> Hide column</button> : null}\n </>);\n })()}\n </div>\n ) : null}\n\n {/* Row actions overflow menu */}\n {rowMenu && rowMenuPos ? (\n <div className=\"twc-dt__pop\" role=\"menu\" aria-label=\"Row actions\" ref={rowMenuRef}\n onKeyDown={(e) => onMenuKeyDown(e, () => { setRowMenu(null); closeRowMenu(); })}\n style={{ top: rowMenuPos.top, left: rowMenuPos.left, width: rowMenuPos.width, maxHeight: rowMenuPos.maxHeight, overflowY: \"auto\" }}>\n <Caret pos={rowMenuPos} />\n {rowMenu.items.map((a, i) => (\n <button type=\"button\" key={i} role=\"menuitem\" className=\"twc-dt__mi\" disabled={a.disabled}\n style={a.danger ? { color: \"var(--color-danger-subtle-fg)\" } : undefined}\n onClick={() => { a.onClick?.(rowMenu.row); setRowMenu(null); closeRowMenu(); restoreTriggerFocus(); }}>\n {a.icon || null}{a.label}\n </button>\n ))}\n </div>\n ) : null}\n\n {/* Columns panel (searchable) */}\n {panel === \"columns\" && panelPos ? (\n <div className=\"twc-dt__pop twc-dt__cols\" style={{ top: panelPos.top, left: panelPos.left }} role=\"dialog\" aria-label=\"Column settings\">\n <div className=\"twc-dt__panel-head\">\n <span className=\"twc-dt__panel-title\">Columns</span>\n <div>\n <button type=\"button\" className=\"twc-dt__link\" onClick={() => setHidden(new Set())}>Show all</button>\n <button type=\"button\" className=\"twc-dt__link\" onClick={() => setHidden(new Set(cols.filter((c) => c.hideable).map((c) => c.field)))}>Hide all</button>\n </div>\n </div>\n <div className=\"twc-dt__col-search\">\n <Svg d={I.search} />\n <input autoFocus placeholder=\"Find column…\" aria-label=\"Find column\" value={colQuery} onChange={(e) => setColQuery(e.target.value)} />\n </div>\n <div className=\"twc-dt__col-list\">\n {rowNumMatch ? (\n <div className=\"twc-dt__col-row\" onClick={() => setShowRowNum((v) => !v)}>\n <span className=\"twc-dt__col-name\">Row number</span>\n <span className=\"twc-dt__sw\" data-on={showRowNum || undefined}\n role=\"switch\" aria-checked={showRowNum} aria-label=\"Row number column\" tabIndex={0}\n onKeyDown={(e) => { if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); setShowRowNum((v) => !v); } }} />\n </div>\n ) : null}\n {shownColRows.length === 0 ? (rowNumMatch ? null : <div className=\"twc-dt__empty\" style={{ padding: \"18px 12px\" }}>No columns found</div>) :\n shownColRows.map((c) => {\n const canDrag = !disableColumnReorder && !colQuery.trim();\n return (\n <div key={c.field} className=\"twc-dt__col-row\"\n data-dragging={drag.from === c.field || undefined}\n data-dropbefore={(drag.over === c.field && !drag.after) || undefined}\n data-dropafter={(drag.over === c.field && drag.after) || undefined}\n draggable={canDrag || undefined}\n onDragStart={canDrag ? (e) => { setDrag({ from: c.field, over: null, after: false }); e.dataTransfer.effectAllowed = \"move\"; e.dataTransfer.setData(\"text/plain\", c.field); } : undefined}\n onDragEnd={canDrag ? () => setDrag({ from: null, over: null, after: false }) : undefined}\n onDragOver={canDrag && drag.from ? (e) => { e.preventDefault(); const r = e.currentTarget.getBoundingClientRect(); const after = e.clientY > r.top + r.height / 2; setDrag((d) => (d.over === c.field && d.after === after ? d : { ...d, over: c.field, after })); } : undefined}\n onDrop={canDrag && drag.from ? (e) => { e.preventDefault(); onColDrop(c.field); } : undefined}\n onClick={() => c.hideable && toggleHiddenField(c.field)}>\n {canDrag ? <span className=\"twc-dt__col-grip\" aria-hidden=\"true\"><Svg d={I.grip} /></span> : null}\n <span className=\"twc-dt__col-name\">{c.headerName}</span>\n {c.pinnable && c.type !== \"actions\" ? (\n // Pin from here too, so columns scrolled out of view (no reachable header ⋮) can still be pinned.\n <span className=\"twc-dt__col-pins\" draggable={false} onClick={(e) => e.stopPropagation()}>\n <button type=\"button\" className=\"twc-dt__col-pin\" data-on={pins.left.includes(c.field) || undefined}\n aria-pressed={pins.left.includes(c.field)} aria-label={`Pin ${c.headerName} to left`} title={pins.left.includes(c.field) ? \"Unpin\" : \"Pin to left\"}\n onClick={() => setPin(c.field, pins.left.includes(c.field) ? null : \"left\")}><Svg d={I.pinL} /></button>\n <button type=\"button\" className=\"twc-dt__col-pin\" data-on={pins.right.includes(c.field) || undefined}\n aria-pressed={pins.right.includes(c.field)} aria-label={`Pin ${c.headerName} to right`} title={pins.right.includes(c.field) ? \"Unpin\" : \"Pin to right\"}\n onClick={() => setPin(c.field, pins.right.includes(c.field) ? null : \"right\")}><Svg d={I.pin} /></button>\n </span>\n ) : null}\n <span className=\"twc-dt__sw\" data-on={!hidden.has(c.field) || undefined}\n role=\"switch\" aria-checked={!hidden.has(c.field)} aria-label={c.headerName}\n aria-disabled={!c.hideable || undefined} tabIndex={c.hideable ? 0 : -1}\n onKeyDown={(e) => { if ((e.key === \"Enter\" || e.key === \" \") && c.hideable) { e.preventDefault(); toggleHiddenField(c.field); } }}\n style={c.hideable ? undefined : { opacity: 0.4 }} />\n </div>\n );\n })}\n </div>\n </div>\n ) : null}\n\n {/* Aggregation config panel */}\n {panel === \"agg\" && panelPos ? (\n <div className=\"twc-dt__pop twc-dt__cfg\" style={{ top: panelPos.top, left: panelPos.left, width: 300 }} role=\"dialog\" aria-label=\"Aggregation settings\">\n <div className=\"twc-dt__panel-head\">\n <span className=\"twc-dt__panel-title\">Aggregation</span>\n <button type=\"button\" className=\"twc-dt__link\" onClick={() => setAggConfig({})}>Clear</button>\n </div>\n <div className=\"twc-dt__cfg-toggle\">\n <span>Show totals row</span>\n <span className=\"twc-dt__sw\" data-on={aggOn || undefined} role=\"switch\" aria-checked={aggOn} tabIndex={0}\n onClick={() => setAggOn((v) => !v)} onKeyDown={(e) => { if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); setAggOn((v) => !v); } }} />\n </div>\n <div className=\"twc-dt__cfg-list\">\n {ordered.filter((c) => c.type !== \"actions\" && typeof c.aggregation !== \"function\").map((c) => {\n const numeric = c.type === \"number\";\n const opts = numeric\n ? [{ value: \"\", label: \"None\" }, { value: \"sum\", label: \"Sum\" }, { value: \"avg\", label: \"Avg\" }, { value: \"min\", label: \"Min\" }, { value: \"max\", label: \"Max\" }, { value: \"count\", label: \"Count\" }]\n : [{ value: \"\", label: \"None\" }, { value: \"count\", label: \"Count\" }];\n return (\n <div className=\"twc-dt__cfg-row\" key={c.field}>\n <span className=\"twc-dt__cfg-name\">{c.headerName}</span>\n <div className=\"twc-dt__cfg-ctl\">\n <Select size=\"sm\" value={aggConfig[c.field] || \"\"} options={opts} portal\n onChange={(v) => { setAggConfig((m) => { const n = { ...m }; if (!v) delete n[c.field]; else n[c.field] = v; return n; }); if (v) setAggOn(true); }} />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n ) : null}\n\n {/* Pivot config panel */}\n {panel === \"pivot\" && panelPos ? (() => {\n const fieldOpts = ordered.filter((c) => c.type !== \"actions\").map((c) => ({ value: c.field, label: c.headerName }));\n const aggOpts = [{ value: \"sum\", label: \"Sum\" }, { value: \"avg\", label: \"Avg\" }, { value: \"min\", label: \"Min\" }, { value: \"max\", label: \"Max\" }, { value: \"count\", label: \"Count\" }];\n const valueFieldOpts = ordered.filter((c) => c.type !== \"actions\" && !pivotConfig.values.some((v) => v.field === c.field)).map((c) => ({ value: c.field, label: c.headerName }));\n return (\n <div className=\"twc-dt__pop twc-dt__cfg\" style={{ top: panelPos.top, left: panelPos.left, width: 320 }} role=\"dialog\" aria-label=\"Pivot settings\">\n <div className=\"twc-dt__panel-head\">\n <span className=\"twc-dt__panel-title\">Pivot</span>\n <button type=\"button\" className=\"twc-dt__link\" onClick={() => { setPivotConfig({ rows: [], columns: [], values: [] }); setPivotOn(false); }}>Reset</button>\n </div>\n <div className=\"twc-dt__cfg-toggle\">\n <span>Pivot mode</span>\n <span className=\"twc-dt__sw\" data-on={pivotOn || undefined} role=\"switch\" aria-checked={pivotOn} tabIndex={0}\n onClick={() => setPivotOn((v) => !v)} onKeyDown={(e) => { if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); setPivotOn((v) => !v); } }} />\n </div>\n {!pivotActive && pivotOn ? <div className=\"twc-dt__cfg-hint\">Add at least one <b>Row</b> field and one <b>Value</b> to see the pivot.</div> : null}\n <div className=\"twc-dt__cfg-section\">\n <span className=\"twc-dt__cfg-label\">Rows</span>\n <MultiSelect portal placeholder=\"Add row fields…\" value={pivotConfig.rows} options={fieldOpts}\n onChange={(vals) => { setPivotConfig((p) => ({ ...p, rows: vals })); if (vals.length) setPivotOn(true); }} />\n </div>\n <div className=\"twc-dt__cfg-section\">\n <span className=\"twc-dt__cfg-label\">Columns</span>\n <MultiSelect portal placeholder=\"Add column fields…\" value={pivotConfig.columns} options={fieldOpts}\n onChange={(vals) => setPivotConfig((p) => ({ ...p, columns: vals }))} />\n </div>\n <div className=\"twc-dt__cfg-section\">\n <span className=\"twc-dt__cfg-label\">Values</span>\n {pivotConfig.values.map((v, i) => (\n <div className=\"twc-dt__cfg-row\" key={v.field + i}>\n <span className=\"twc-dt__cfg-name\">{colByField[v.field]?.headerName || v.field}</span>\n <div className=\"twc-dt__cfg-ctl\">\n <Select size=\"sm\" value={v.agg || \"sum\"} options={aggOpts} portal\n onChange={(a) => setPivotConfig((p) => ({ ...p, values: p.values.map((x, j) => (j === i ? { ...x, agg: a } : x)) }))} />\n </div>\n <button type=\"button\" className=\"twc-dt__cfg-x\" aria-label={`Remove ${colByField[v.field]?.headerName || v.field}`}\n onClick={() => setPivotConfig((p) => ({ ...p, values: p.values.filter((_, j) => j !== i) }))}><Svg d={I.x} /></button>\n </div>\n ))}\n {valueFieldOpts.length ? (\n <div className=\"twc-dt__cfg-add\">\n <Select size=\"sm\" placeholder=\"Add value field…\" value=\"\" options={valueFieldOpts} portal searchable searchPlaceholder=\"Search fields…\"\n onChange={(f) => { if (f) { setPivotConfig((p) => (p.values.some((x) => x.field === f) ? p : { ...p, values: [...p.values, { field: f, agg: \"sum\" }] })); setPivotOn(true); } }} />\n </div>\n ) : null}\n </div>\n </div>\n );\n })() : null}\n\n {/* Filters panel (uses Select + Input components) */}\n {panel === \"filters\" && panelPos ? (\n <div className=\"twc-dt__pop twc-dt__filters\" style={{ top: panelPos.top, left: panelPos.left }}>\n <div className=\"twc-dt__panel-head\">\n <span className=\"twc-dt__panel-title\">Filters</span>\n {filters.length ? <button type=\"button\" className=\"twc-dt__link\" onClick={() => setFilters([])}>Clear all</button> : null}\n </div>\n {filters.length === 0 ? <div className=\"twc-dt__empty\" style={{ padding: \"16px 12px\" }}>No filters applied</div> :\n filters.map((f) => {\n const col = colByField[f.field] || cols[0]; const ops = opsFor(col.type);\n const op = ops.find((o) => o.value === f.op) || ops[0];\n return (\n <div className=\"twc-dt__frow\" key={f.id}>\n <div className=\"twc-dt__f-col\">\n <Select size=\"sm\" portal value={f.field}\n options={filterableCols.map((c) => ({ value: c.field, label: c.headerName }))}\n onChange={(v) => { const nc = colByField[v]; setFilters((arr) => arr.map((x) => x.id === f.id ? { ...x, field: v, op: opsFor(nc.type)[0].value, value: \"\" } : x)); }} />\n </div>\n <div className=\"twc-dt__f-op\">\n <Select size=\"sm\" portal value={f.op}\n options={ops.map((o) => ({ value: o.value, label: o.label }))}\n onChange={(v) => setFilters((arr) => arr.map((x) => {\n if (x.id !== f.id) return x;\n const nextMulti = isMultiOp(v); const wasArr = Array.isArray(x.value);\n return { ...x, op: v, value: nextMulti ? (wasArr ? x.value : []) : (wasArr ? \"\" : x.value) };\n }))} />\n </div>\n <div className=\"twc-dt__f-val\">\n {op.noInput ? null : op.multi ? (\n <MultiSelect portal placeholder=\"Any of…\" value={Array.isArray(f.value) ? f.value : []}\n options={optionsForField(f.field)}\n onChange={(vals) => setFilters((arr) => arr.map((x) => x.id === f.id ? { ...x, value: vals } : x))} />\n ) : (\n <Input size=\"sm\" type={col.type === \"number\" ? \"number\" : \"text\"} placeholder=\"Value\" value={f.value}\n onChange={(e) => setFilters((arr) => arr.map((x) => x.id === f.id ? { ...x, value: e.target.value } : x))} />\n )}\n </div>\n <button type=\"button\" className=\"twc-dt__frm-x\" aria-label=\"Remove filter\" onClick={() => setFilters((arr) => arr.filter((x) => x.id !== f.id))}><Svg d={I.x} /></button>\n </div>\n );\n })}\n <div style={{ padding: \"6px 4px 2px\" }}>\n <button type=\"button\" className=\"twc-dt__mi\" style={{ color: \"var(--color-primary)\" }} onClick={() => addFilter(cols[0].field)}><Svg d={I.plus} style={{ color: \"var(--color-primary)\" }} /> Add filter</button>\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nconst FIELD_CSS = `\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\n.twc-field__req { color: var(--color-danger); }\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n`;\n\nconst DATEPICKER_CSS = `\n.twc-dp { position: relative; font-family: var(--font-sans); display: flex; flex-direction: column; gap: var(--space-1-5); }\n.twc-dp__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); }\n.twc-dp__control {\n display: flex; align-items: center; gap: var(--space-2); height: var(--control-h-md); padding: 0 var(--space-3);\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md);\n cursor: pointer; transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\n}\n.twc-dp__control:hover:not([data-open=\"true\"]) { border-color: var(--color-border-strong); }\n/* tone → focus/open accent (default primary; reproduces current look). */\n.twc-dp__control { --_accent: var(--color-primary); --_ring: var(--ring); }\n.twc-dp__control[data-tone=\"success\"] { --_accent: var(--color-success); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-success) 32%, transparent); }\n.twc-dp__control[data-tone=\"warning\"] { --_accent: var(--color-warning); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-warning) 32%, transparent); }\n.twc-dp__control[data-tone=\"danger\"] { --_accent: var(--color-danger); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 32%, transparent); }\n.twc-dp__control[data-tone=\"info\"] { --_accent: var(--color-info); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-info) 32%, transparent); }\n.twc-dp__control[data-tone=\"neutral\"] { --_accent: var(--color-border-strong); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-text) 14%, transparent); }\n.twc-dp__control[data-open=\"true\"] { border-color: var(--_accent); box-shadow: var(--_ring); }\n.twc-dp__control[data-invalid=\"true\"] { border-color: var(--color-danger); }\n.twc-dp__control[data-invalid=\"true\"][data-open=\"true\"] { box-shadow: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 28%, transparent); }\n.twc-dp__control[data-disabled=\"true\"] { background: var(--color-surface-sunken); opacity: 0.7; cursor: not-allowed; }\n.twc-dp__field { position: relative; display: flex; flex-direction: column; }\n.twc-dp__control[data-has-clear=\"true\"] { padding-inline-end: 34px; }\n.twc-dp__ic { flex: none; color: var(--color-text-subtle); display: inline-flex; }\n.twc-dp__ic svg { width: 17px; height: 17px; }\n.twc-dp__text { flex: 1; font-size: var(--text-sm); color: var(--color-text); }\n.twc-dp__text[data-placeholder=\"true\"] { color: var(--color-text-subtle); }\n.twc-dp__clear { position: absolute; inset-inline-end: 10px; top: 50%; transform: translateY(-50%); display: inline-grid; place-items: center; width: 20px; height: 20px; border: none; background: transparent; color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-full); }\n.twc-dp__clear:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-dp__clear svg { width: 14px; height: 14px; }\n\n.twc-dp__pop {\n position: fixed; z-index: var(--z-popover); width: 280px;\n background: var(--color-surface-raised); border: var(--border-thin) solid var(--color-border);\n border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); padding: var(--space-3);\n animation: twico-scale-in var(--duration-fast) var(--ease-spring); transform-origin: top;\n}\n.twc-dp__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-2); }\n.twc-dp__nav { display: inline-grid; place-items: center; width: 30px; height: 30px; border: none; background: transparent; color: var(--color-text-muted); cursor: pointer; border-radius: var(--radius-md); transition: background-color var(--duration-fast); }\n.twc-dp__nav:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-dp__nav svg { width: 17px; height: 17px; }\n.twc-dp__title { font-size: var(--text-sm); font-weight: var(--font-bold); color: var(--color-text); border: none; background: transparent; cursor: pointer; padding: 5px 10px; border-radius: var(--radius-md); }\n.twc-dp__title:hover { background: var(--color-surface-sunken); }\n.twc-dp__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }\n.twc-dp__dow { text-align: center; font-size: 11px; font-weight: var(--font-bold); color: var(--color-text-subtle); padding: 4px 0; text-transform: uppercase; }\n.twc-dp__day { aspect-ratio: 1; display: grid; place-items: center; border: none; background: transparent; cursor: pointer;\n font-family: inherit; font-size: var(--text-sm); color: var(--color-text); border-radius: var(--radius-md);\n transition: background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard); }\n.twc-dp__day:hover:not(:disabled):not([data-selected=\"true\"]) { background: var(--color-surface-sunken); }\n.twc-dp__day[data-outside=\"true\"] { color: var(--color-text-subtle); opacity: 0.5; }\n.twc-dp__day[data-today=\"true\"] { font-weight: var(--font-bold); box-shadow: inset 0 0 0 1px var(--color-primary-border); }\n.twc-dp__day[data-selected=\"true\"] { background: var(--color-primary); color: var(--color-primary-fg); font-weight: var(--font-bold); }\n.twc-dp__day:disabled { color: var(--color-text-subtle); opacity: 0.4; cursor: not-allowed; }\n.twc-dp__day:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-dp__months { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }\n.twc-dp__mo { padding: 10px 0; border: none; background: transparent; cursor: pointer; font-family: inherit; font-size: var(--text-sm); color: var(--color-text); border-radius: var(--radius-md); }\n.twc-dp__mo:hover { background: var(--color-surface-sunken); }\n.twc-dp__mo[data-selected=\"true\"] { background: var(--color-primary); color: var(--color-primary-fg); font-weight: var(--font-bold); }\n[dir=\"rtl\"] .twc-dp__nav svg { transform: scaleX(-1); }\n`;\n\n// Default-locale fallbacks — preserve the exact strings the component shipped with\n// so output is byte-identical when `locale` is omitted (Intl short weekdays are 3-letter).\nconst MONTHS = [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\nconst DOW = [\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"];\n// Full month names (January…December), Intl-derived for the given locale.\nconst monthNames = (locale) => {\n const f = new Intl.DateTimeFormat(locale, { month: \"long\" });\n return Array.from({ length: 12 }, (_, i) => f.format(new Date(2021, i, 1)));\n};\n// Abbreviated month names (Jan…Dec) for the month grid, Intl-derived.\nconst monthShortNames = (locale) => {\n const f = new Intl.DateTimeFormat(locale, { month: \"short\" });\n return Array.from({ length: 12 }, (_, i) => f.format(new Date(2021, i, 1)));\n};\n// Weekday header labels in calendar column order (starting at `weekStartsOn`), Intl-derived.\nconst weekdayNames = (locale, weekStartsOn) => {\n const f = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n // 2021-08-01 is a Sunday — index 0..6 maps to Sun..Sat.\n return Array.from({ length: 7 }, (_, i) => f.format(new Date(2021, 7, 1 + ((i + weekStartsOn) % 7))));\n};\nconst sameDay = (a, b) => a && b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n\nexport function DatePicker({\n label,\n hint,\n error,\n required = false,\n value,\n defaultValue = null,\n placeholder = \"Select date\",\n min,\n max,\n disabled = false,\n tone = \"primary\",\n clearable = true,\n format,\n locale,\n weekStartsOn = 0,\n onChange,\n id,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (!document.getElementById(\"twc-field-styles\")) {\n const fel = document.createElement(\"style\");\n fel.id = \"twc-field-styles\";\n fel.textContent = FIELD_CSS;\n document.head.appendChild(fel);\n }\n if (document.getElementById(\"twc-datepicker-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-datepicker-styles\";\n el.textContent = DATEPICKER_CSS;\n document.head.appendChild(el);\n }, []);\n\n const autoId = React.useId();\n const fieldId = id || autoId;\n const descId = `${fieldId}-desc`;\n const invalid = Boolean(error);\n const [internal, setInternal] = React.useState(defaultValue);\n const selected = value !== undefined ? value : internal;\n const [open, setOpen] = React.useState(false);\n const [view, setView] = React.useState(selected || new Date());\n const [mode, setMode] = React.useState(\"days\");\n const [focusDate, setFocusDate] = React.useState(null);\n const [coords, setCoords] = React.useState(null);\n const wrapRef = React.useRef(null);\n const triggerRef = React.useRef(null);\n const popRef = React.useRef(null);\n const gridRef = React.useRef(null);\n\n // Portal the calendar to <body> with fixed positioning so it escapes any clipping\n // or scrolling ancestor; flips up when there isn't room below.\n const POP_W = 280;\n const place = React.useCallback(() => {\n const el = triggerRef.current; if (!el) return;\n const r = el.getBoundingClientRect();\n const vh = window.innerHeight;\n const below = vh - r.bottom;\n const flip = below < 360 && r.top > below;\n let left = Math.min(r.left, window.innerWidth - POP_W - 8);\n left = Math.max(8, left);\n setCoords({ left, top: flip ? undefined : Math.round(r.bottom + 6), bottom: flip ? Math.round(vh - r.top + 6) : undefined });\n }, []);\n React.useEffect(() => {\n if (!open) return undefined;\n place();\n const onMove = () => place();\n window.addEventListener(\"scroll\", onMove, true);\n window.addEventListener(\"resize\", onMove);\n return () => { window.removeEventListener(\"scroll\", onMove, true); window.removeEventListener(\"resize\", onMove); };\n }, [open, place]);\n\n React.useEffect(() => {\n if (!open) return;\n setView(selected || new Date());\n setMode(\"days\");\n setFocusDate(null);\n const onDown = (e) => {\n if (wrapRef.current && wrapRef.current.contains(e.target)) return;\n if (popRef.current && popRef.current.contains(e.target)) return;\n setOpen(false);\n };\n const onKey = (e) => { if (e.key === \"Escape\") setOpen(false); };\n document.addEventListener(\"mousedown\", onDown); document.addEventListener(\"keydown\", onKey);\n return () => { document.removeEventListener(\"mousedown\", onDown); document.removeEventListener(\"keydown\", onKey); };\n }, [open]);\n\n // Move focus into the calendar when it opens (it's portaled to <body>, so Tab from the\n // trigger would skip it), and return focus to the trigger on close.\n const prevOpen = React.useRef(false);\n React.useEffect(() => {\n let id;\n if (!prevOpen.current && open) {\n id = setTimeout(() => gridRef.current?.querySelector('[tabindex=\"0\"]')?.focus({ preventScroll: true }), 30);\n } else if (prevOpen.current && !open) {\n const ae = typeof document !== \"undefined\" ? document.activeElement : null;\n if (!ae || ae === document.body) triggerRef.current?.focus();\n }\n prevOpen.current = open;\n return () => clearTimeout(id);\n }, [open]);\n\n // Locale-aware month/weekday names — fall back to the shipped English arrays\n // when `locale` is omitted so default output stays byte-identical.\n const months = React.useMemo(() => (locale === undefined ? MONTHS : monthNames(locale)), [locale]);\n const monthsShort = React.useMemo(() => (locale === undefined ? MONTHS.map((n) => n.slice(0, 3)) : monthShortNames(locale)), [locale]);\n const dows = React.useMemo(\n () => (locale === undefined ? Array.from({ length: 7 }, (_, i) => DOW[(i + weekStartsOn) % 7]) : weekdayNames(locale, weekStartsOn)),\n [locale, weekStartsOn],\n );\n\n const fmt = (d) => {\n if (!d) return \"\";\n if (format) return format(d);\n return d.toLocaleDateString(locale, { year: \"numeric\", month: \"short\", day: \"numeric\" });\n };\n const pick = (d) => { if (value === undefined) setInternal(d); onChange?.(d); setOpen(false); };\n\n const y = view.getFullYear(), m = view.getMonth();\n const first = new Date(y, m, 1);\n const startOffset = (first.getDay() - weekStartsOn + 7) % 7;\n const gridStart = new Date(y, m, 1 - startOffset);\n const today = new Date();\n const outOfRange = (d) => (min && d < new Date(min.getFullYear(), min.getMonth(), min.getDate())) || (max && d > new Date(max.getFullYear(), max.getMonth(), max.getDate()));\n\n const keyOf = (d) => `${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`;\n const addDays = (d, n) => new Date(d.getFullYear(), d.getMonth(), d.getDate() + n);\n const addMonths = (d, n) => { const last = new Date(d.getFullYear(), d.getMonth() + n + 1, 0); return new Date(last.getFullYear(), last.getMonth(), Math.min(d.getDate(), last.getDate())); };\n const cells = Array.from({ length: 42 }, (_, i) => new Date(gridStart.getFullYear(), gridStart.getMonth(), gridStart.getDate() + i));\n // Roving tabindex: one Tab stop in the day grid — the focused day, else selected, else today, else the 1st.\n const tabbableDate =\n (focusDate && cells.some((c) => sameDay(c, focusDate)) ? focusDate : null) ||\n (selected && cells.some((c) => sameDay(c, selected)) ? selected : null) ||\n (cells.some((c) => sameDay(c, today)) ? today : null) ||\n new Date(y, m, 1);\n\n // Move DOM focus to the freshly navigated day once it exists (month may have re-rendered).\n React.useEffect(() => {\n if (!open || mode !== \"days\" || !focusDate) return;\n gridRef.current?.querySelector(`[data-key=\"${keyOf(focusDate)}\"]`)?.focus();\n }, [focusDate, open, mode]);\n\n // Calendar keyboard navigation: arrows move by day/week, Home/End to week edges, PageUp/PageDown by month.\n const onGridKeyDown = (e) => {\n const btn = e.target.closest?.(\"[data-key]\");\n if (!btn) return;\n const [fy, fm, fd] = btn.getAttribute(\"data-key\").split(\"-\").map(Number);\n const cur = new Date(fy, fm, fd);\n // Per-key stepper: arrows ±1/±7, Home/End within the week, PageUp/PageDown ±month.\n // Reused to keep stepping in the same direction past out-of-range (disabled) days.\n let step;\n if (e.key === \"ArrowLeft\") step = (d) => addDays(d, -1);\n else if (e.key === \"ArrowRight\") step = (d) => addDays(d, 1);\n else if (e.key === \"ArrowUp\") step = (d) => addDays(d, -7);\n else if (e.key === \"ArrowDown\") step = (d) => addDays(d, 7);\n else if (e.key === \"Home\") step = (d) => addDays(d, -((d.getDay() - weekStartsOn + 7) % 7));\n else if (e.key === \"End\") step = (d) => addDays(d, 6 - ((d.getDay() - weekStartsOn + 7) % 7));\n else if (e.key === \"PageUp\") step = (d) => addMonths(d, -1);\n else if (e.key === \"PageDown\") step = (d) => addMonths(d, 1);\n else return;\n e.preventDefault();\n let next = step(cur);\n // Skip over out-of-range days in the same direction; bail if none is reachable.\n let guard = 0;\n while (outOfRange(next) && guard < 366) { next = step(next); guard += 1; }\n if (outOfRange(next)) return;\n setFocusDate(next);\n if (next.getFullYear() !== y || next.getMonth() !== m) setView(new Date(next.getFullYear(), next.getMonth(), 1));\n };\n\n return (\n <div className={`twc-dp twc-field ${className}`} ref={wrapRef} {...rest}>\n {label ? (\n <label className=\"twc-field__label\" id={`${fieldId}-label`}>\n {label}{required ? <span className=\"twc-field__req\">*</span> : null}\n </label>\n ) : null}\n <div className=\"twc-dp__field\">\n <div ref={triggerRef} className=\"twc-dp__control\" id={fieldId} data-open={open || undefined} data-disabled={disabled || undefined}\n data-tone={tone}\n data-has-clear={clearable && selected && !disabled ? \"true\" : undefined}\n data-invalid={invalid || undefined}\n role=\"button\" tabIndex={disabled ? -1 : 0} aria-haspopup=\"dialog\" aria-expanded={open}\n aria-labelledby={label ? `${fieldId}-label` : undefined}\n aria-invalid={invalid || undefined} aria-describedby={error || hint ? descId : undefined}\n onClick={() => !disabled && setOpen((o) => !o)}\n onKeyDown={(e) => { if ((e.key === \"Enter\" || e.key === \" \") && !disabled) { e.preventDefault(); setOpen((o) => !o); } }}>\n <span className=\"twc-dp__ic\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"/><path d=\"M16 2v4M8 2v4M3 10h18\"/></svg>\n </span>\n <span className=\"twc-dp__text\" data-placeholder={!selected || undefined}>{selected ? fmt(selected) : placeholder}</span>\n </div>\n {clearable && selected && !disabled ? (\n <button type=\"button\" className=\"twc-dp__clear\" aria-label=\"Clear\" onClick={(e) => { e.stopPropagation(); pick(null); }}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\n </button>\n ) : null}\n </div>\n\n {open && coords ? createPortal(\n <div className=\"twc-dp__pop\" ref={popRef} role=\"dialog\" aria-label=\"Choose date\"\n style={{ position: \"fixed\", left: coords.left, right: \"auto\", top: coords.top, bottom: coords.bottom, zIndex: \"var(--z-tooltip)\" }}>\n <div className=\"twc-dp__head\">\n <button type=\"button\" className=\"twc-dp__nav\" aria-label=\"Previous\" onClick={() => setView(mode === \"months\" ? new Date(y - 1, m, 1) : new Date(y, m - 1, 1))}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m15 18-6-6 6-6\"/></svg>\n </button>\n <button type=\"button\" className=\"twc-dp__title\" onClick={() => setMode(mode === \"days\" ? \"months\" : \"days\")}>\n {mode === \"days\" ? `${months[m]} ${y}` : y}\n </button>\n <button type=\"button\" className=\"twc-dp__nav\" aria-label=\"Next\" onClick={() => setView(mode === \"months\" ? new Date(y + 1, m, 1) : new Date(y, m + 1, 1))}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg>\n </button>\n </div>\n\n {mode === \"days\" ? (\n <div className=\"twc-dp__grid\" ref={gridRef} onKeyDown={onGridKeyDown}>\n {dows.map((d, i) => <div key={i} className=\"twc-dp__dow\">{d}</div>)}\n {cells.map((d, i) => {\n const outside = d.getMonth() !== m;\n return (\n <button key={i} type=\"button\" className=\"twc-dp__day\" disabled={outOfRange(d)}\n data-outside={outside || undefined} data-today={sameDay(d, today) || undefined} data-selected={sameDay(d, selected) || undefined}\n data-key={keyOf(d)} tabIndex={sameDay(d, tabbableDate) ? 0 : -1}\n aria-pressed={!!sameDay(d, selected)} aria-current={sameDay(d, today) ? \"date\" : undefined}\n aria-label={locale === undefined ? d.toDateString() : d.toLocaleDateString(locale, { weekday: \"long\", year: \"numeric\", month: \"long\", day: \"numeric\" })} onClick={() => pick(d)}>\n {d.getDate()}\n </button>\n );\n })}\n </div>\n ) : (\n <div className=\"twc-dp__months\">\n {monthsShort.map((name, i) => (\n <button key={i} type=\"button\" className=\"twc-dp__mo\" data-selected={selected && selected.getFullYear() === y && selected.getMonth() === i || undefined}\n onClick={() => { setView(new Date(y, i, 1)); setMode(\"days\"); }}>\n {name}\n </button>\n ))}\n </div>\n )}\n </div>, document.body\n ) : null}\n {error ? <span id={descId} className=\"twc-field__error\">{error}</span> : hint ? <span id={descId} className=\"twc-field__hint\">{hint}</span> : null}\n </div>\n );\n}\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nconst FIELD_CSS = `\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\n.twc-field__req { color: var(--color-danger); }\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n`;\n\nconst RANGE_CSS = `\n.twc-drp { position: relative; font-family: var(--font-sans); display: flex; flex-direction: column; gap: var(--space-1-5); }\n.twc-drp__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); }\n.twc-drp__control { display: flex; align-items: center; gap: var(--space-2); height: var(--control-h-md); padding: 0 var(--space-3);\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md); cursor: pointer;\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard); }\n.twc-drp__control:hover:not([data-open=\"true\"]):not([data-disabled=\"true\"]) { border-color: var(--color-border-strong); }\n/* tone → focus/open accent (default primary; reproduces current look). */\n.twc-drp__control { --_accent: var(--color-primary); --_ring: var(--ring); }\n.twc-drp__control[data-tone=\"success\"] { --_accent: var(--color-success); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-success) 32%, transparent); }\n.twc-drp__control[data-tone=\"warning\"] { --_accent: var(--color-warning); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-warning) 32%, transparent); }\n.twc-drp__control[data-tone=\"danger\"] { --_accent: var(--color-danger); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 32%, transparent); }\n.twc-drp__control[data-tone=\"info\"] { --_accent: var(--color-info); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-info) 32%, transparent); }\n.twc-drp__control[data-tone=\"neutral\"] { --_accent: var(--color-border-strong); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-text) 14%, transparent); }\n.twc-drp__control[data-open=\"true\"] { border-color: var(--_accent); box-shadow: var(--_ring); }\n.twc-drp__control[data-invalid=\"true\"] { border-color: var(--color-danger); }\n.twc-drp__control[data-invalid=\"true\"][data-open=\"true\"] { box-shadow: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 28%, transparent); }\n.twc-drp__control[data-disabled=\"true\"] { background: var(--color-surface-sunken); opacity: 0.7; cursor: not-allowed; }\n.twc-drp__ic { flex: none; color: var(--color-text-subtle); display: inline-flex; }\n.twc-drp__ic svg { width: 17px; height: 17px; }\n.twc-drp__text { flex: 1; font-size: var(--text-sm); color: var(--color-text); white-space: nowrap; }\n.twc-drp__text[data-placeholder=\"true\"] { color: var(--color-text-subtle); }\n.twc-drp__pop { position: fixed; z-index: var(--z-popover); display: flex;\n background: var(--color-surface-raised); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg);\n box-shadow: var(--shadow-lg); animation: twico-scale-in var(--duration-fast) var(--ease-spring); transform-origin: top; }\n.twc-drp__presets { display: flex; flex-direction: column; gap: 2px; padding: var(--space-3); border-inline-end: var(--border-thin) solid var(--color-divider); min-width: 130px; }\n.twc-drp__preset { border: none; background: none; text-align: start; font-family: inherit; font-size: var(--text-sm); color: var(--color-text);\n padding: 7px 10px; border-radius: var(--radius-md); cursor: pointer; white-space: nowrap; }\n.twc-drp__preset:hover { background: var(--color-surface-sunken); }\n.twc-drp__cal { padding: var(--space-3); width: 268px; }\n.twc-drp__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-2); }\n.twc-drp__nav { display: inline-grid; place-items: center; width: 30px; height: 30px; border: none; background: transparent; color: var(--color-text-muted); cursor: pointer; border-radius: var(--radius-md); }\n.twc-drp__nav:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-drp__nav svg { width: 17px; height: 17px; }\n.twc-drp__title { font-size: var(--text-sm); font-weight: var(--font-bold); }\n.twc-drp__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; }\n.twc-drp__dow { text-align: center; font-size: 11px; font-weight: var(--font-bold); color: var(--color-text-subtle); padding: 4px 0; }\n.twc-drp__day { aspect-ratio: 1; border: none; background: transparent; cursor: pointer; font-family: inherit; font-size: var(--text-sm); color: var(--color-text); display: grid; place-items: center; position: relative; }\n.twc-drp__day[data-outside=\"true\"] { color: var(--color-text-subtle); opacity: 0.45; }\n.twc-drp__day:hover:not(:disabled) { background: var(--color-surface-sunken); border-radius: var(--radius-md); }\n.twc-drp__day[data-in=\"true\"] { background: var(--color-primary-subtle); border-radius: 0; }\n.twc-drp__day[data-edge=\"start\"] { background: var(--color-primary); color: var(--color-primary-fg); border-radius: var(--radius-md) 0 0 var(--radius-md); font-weight: var(--font-bold); }\n.twc-drp__day[data-edge=\"end\"] { background: var(--color-primary); color: var(--color-primary-fg); border-radius: 0 var(--radius-md) var(--radius-md) 0; font-weight: var(--font-bold); }\n.twc-drp__day[data-edge=\"both\"] { background: var(--color-primary); color: var(--color-primary-fg); border-radius: var(--radius-md); font-weight: var(--font-bold); }\n.twc-drp__day:disabled { opacity: 0.3; cursor: not-allowed; }\n[dir=\"rtl\"] .twc-drp__nav svg { transform: scaleX(-1); }\n`;\n\n// Default-locale fallbacks — preserve the exact strings the component shipped with\n// so output is byte-identical when `locale` is omitted (Intl short weekdays are 3-letter).\nconst MONTHS = [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\nconst DOW = [\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"];\n// Full month names (January…December), Intl-derived for the given locale.\nconst monthNames = (locale) => {\n const f = new Intl.DateTimeFormat(locale, { month: \"long\" });\n return Array.from({ length: 12 }, (_, i) => f.format(new Date(2021, i, 1)));\n};\n// Weekday header labels in calendar column order (starting at `weekStartsOn`), Intl-derived.\nconst weekdayNames = (locale, weekStartsOn) => {\n const f = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n // 2021-08-01 is a Sunday — index 0..6 maps to Sun..Sat.\n return Array.from({ length: 7 }, (_, i) => f.format(new Date(2021, 7, 1 + ((i + weekStartsOn) % 7))));\n};\nconst ymd = (d) => d ? new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime() : null;\nconst fmtD = (d, locale) => d ? d.toLocaleDateString(locale, { month: \"short\", day: \"numeric\", year: \"numeric\" }) : \"\";\n\nexport function DateRangePicker({\n label,\n hint,\n error,\n required = false,\n value,\n defaultValue = { start: null, end: null },\n placeholder = \"Select date range\",\n presets = true,\n locale,\n weekStartsOn = 0,\n disabled = false,\n tone = \"primary\",\n onChange,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (!document.getElementById(\"twc-field-styles\")) {\n const fel = document.createElement(\"style\");\n fel.id = \"twc-field-styles\";\n fel.textContent = FIELD_CSS;\n document.head.appendChild(fel);\n }\n if (document.getElementById(\"twc-drp-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-drp-styles\";\n el.textContent = RANGE_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [internal, setInternal] = React.useState(defaultValue);\n const range = value !== undefined ? value : internal;\n const [open, setOpen] = React.useState(false);\n const [view, setView] = React.useState(range.start || new Date());\n const [hover, setHover] = React.useState(null);\n const [coords, setCoords] = React.useState(null);\n const wrapRef = React.useRef(null);\n const triggerRef = React.useRef(null);\n const popRef = React.useRef(null);\n const labelId = React.useId();\n const descId = `${labelId}-desc`;\n const invalid = Boolean(error);\n\n // close the popover if the picker becomes disabled while open\n React.useEffect(() => { if (disabled) setOpen(false); }, [disabled]);\n\n // Portal the calendar to <body> with fixed positioning so it escapes any clipping\n // or scrolling ancestor; flips up when there isn't room below.\n const POP_W = 420;\n const place = React.useCallback(() => {\n const el = triggerRef.current; if (!el) return;\n const r = el.getBoundingClientRect();\n const vh = window.innerHeight;\n const below = vh - r.bottom;\n const flip = below < 380 && r.top > below;\n let left = Math.min(r.left, window.innerWidth - POP_W - 8);\n left = Math.max(8, left);\n setCoords({ left, top: flip ? undefined : Math.round(r.bottom + 6), bottom: flip ? Math.round(vh - r.top + 6) : undefined });\n }, []);\n React.useEffect(() => {\n if (!open) return undefined;\n place();\n const onMove = () => place();\n window.addEventListener(\"scroll\", onMove, true);\n window.addEventListener(\"resize\", onMove);\n return () => { window.removeEventListener(\"scroll\", onMove, true); window.removeEventListener(\"resize\", onMove); };\n }, [open, place]);\n\n React.useEffect(() => {\n if (!open) return;\n const onDown = (e) => {\n if (wrapRef.current && wrapRef.current.contains(e.target)) return;\n if (popRef.current && popRef.current.contains(e.target)) return;\n setOpen(false);\n };\n const onKey = (e) => { if (e.key === \"Escape\") setOpen(false); };\n document.addEventListener(\"mousedown\", onDown); document.addEventListener(\"keydown\", onKey);\n return () => { document.removeEventListener(\"mousedown\", onDown); document.removeEventListener(\"keydown\", onKey); };\n }, [open]);\n\n const set = (r) => { if (value === undefined) setInternal(r); onChange?.(r); };\n\n const clickDay = (d) => {\n if (!range.start || (range.start && range.end)) { set({ start: d, end: null }); }\n else {\n // second pick: normalize so the committed range always has start <= end (swap if before the first pick).\n const [start, end] = ymd(d) < ymd(range.start) ? [d, range.start] : [range.start, d];\n set({ start, end });\n setOpen(false);\n }\n };\n\n const applyPreset = (days) => {\n const end = new Date(); const start = new Date(); start.setDate(end.getDate() - days + 1);\n set({ start, end }); setView(start); setOpen(false);\n };\n\n // Locale-aware month/weekday names — fall back to the shipped English arrays\n // when `locale` is omitted so default output stays byte-identical.\n const months = React.useMemo(() => (locale === undefined ? MONTHS : monthNames(locale)), [locale]);\n const dows = React.useMemo(\n () => (locale === undefined ? Array.from({ length: 7 }, (_, i) => DOW[(i + weekStartsOn) % 7]) : weekdayNames(locale, weekStartsOn)),\n [locale, weekStartsOn],\n );\n\n const y = view.getFullYear(), m = view.getMonth();\n const startOffset = (new Date(y, m, 1).getDay() - weekStartsOn + 7) % 7;\n const gridStart = new Date(y, m, 1 - startOffset);\n\n const edgeOf = (t) => {\n const s = ymd(range.start), e = ymd(range.end) || (range.start && hover ? ymd(hover) : null);\n const lo = s != null && e != null ? Math.min(s, e) : s, hi = s != null && e != null ? Math.max(s, e) : s;\n if (s != null && hi === lo && t === s) return \"both\";\n if (t === lo) return \"start\"; if (t === hi) return \"end\"; return null;\n };\n const inRange = (t) => {\n const s = ymd(range.start); let e = ymd(range.end);\n if (s != null && e == null && hover) e = ymd(hover);\n if (s == null || e == null) return false;\n return t > Math.min(s, e) && t < Math.max(s, e);\n };\n\n const text = range.start ? `${fmtD(range.start, locale)} – ${range.end ? fmtD(range.end, locale) : \"…\"}` : \"\";\n\n return (\n <div className={`twc-drp twc-field ${className}`} ref={wrapRef} {...rest}>\n {label ? (\n <span className=\"twc-field__label\" id={labelId}>\n {label}{required ? <span className=\"twc-field__req\">*</span> : null}\n </span>\n ) : null}\n <div ref={triggerRef} className=\"twc-drp__control\" data-open={open || undefined} data-disabled={disabled || undefined} data-invalid={invalid || undefined} data-tone={tone} role=\"button\" tabIndex={disabled ? -1 : 0}\n aria-haspopup=\"dialog\" aria-expanded={open} aria-disabled={disabled || undefined} aria-labelledby={label ? labelId : undefined}\n aria-invalid={invalid || undefined} aria-describedby={error || hint ? descId : undefined}\n onClick={() => !disabled && setOpen((o) => !o)} onKeyDown={(e) => { if (!disabled && (e.key === \"Enter\" || e.key === \" \")) { e.preventDefault(); setOpen((o) => !o); } }}>\n <span className=\"twc-drp__ic\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"/><path d=\"M16 2v4M8 2v4M3 10h18\"/></svg></span>\n <span className=\"twc-drp__text\" data-placeholder={!range.start || undefined}>{range.start ? text : placeholder}</span>\n </div>\n\n {open && coords ? createPortal(\n <div className=\"twc-drp__pop\" ref={popRef} role=\"dialog\" aria-label=\"Choose date range\"\n style={{ position: \"fixed\", left: coords.left, right: \"auto\", top: coords.top, bottom: coords.bottom, zIndex: \"var(--z-tooltip)\" }}>\n {presets ? (\n <div className=\"twc-drp__presets\">\n {[[\"Last 7 days\", 7], [\"Last 14 days\", 14], [\"Last 30 days\", 30], [\"Last 90 days\", 90]].map(([lbl, n]) => (\n <button key={n} type=\"button\" className=\"twc-drp__preset\" onClick={() => applyPreset(n)}>{lbl}</button>\n ))}\n </div>\n ) : null}\n <div className=\"twc-drp__cal\">\n <div className=\"twc-drp__head\">\n <button type=\"button\" className=\"twc-drp__nav\" aria-label=\"Previous month\" onClick={() => setView(new Date(y, m - 1, 1))}><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m15 18-6-6 6-6\"/></svg></button>\n <span className=\"twc-drp__title\">{months[m]} {y}</span>\n <button type=\"button\" className=\"twc-drp__nav\" aria-label=\"Next month\" onClick={() => setView(new Date(y, m + 1, 1))}><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg></button>\n </div>\n <div className=\"twc-drp__grid\">\n {dows.map((d, i) => <div key={i} className=\"twc-drp__dow\">{d}</div>)}\n {Array.from({ length: 42 }).map((_, i) => {\n const d = new Date(gridStart.getFullYear(), gridStart.getMonth(), gridStart.getDate() + i);\n const t = ymd(d), outside = d.getMonth() !== m;\n return (\n <button key={i} type=\"button\" className=\"twc-drp__day\" data-outside={outside || undefined}\n data-in={inRange(t) || undefined} data-edge={edgeOf(t) || undefined}\n aria-pressed={!!edgeOf(t)}\n aria-label={locale === undefined ? d.toDateString() : d.toLocaleDateString(locale, { weekday: \"long\", year: \"numeric\", month: \"long\", day: \"numeric\" })}\n onMouseEnter={() => setHover(d)} onClick={() => clickDay(d)}>\n {d.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n </div>, document.body\n ) : null}\n {error ? <span id={descId} className=\"twc-field__error\">{error}</span> : hint ? <span id={descId} className=\"twc-field__hint\">{hint}</span> : null}\n </div>\n );\n}\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nconst DIALOG_CSS = `\n.twc-dialog__overlay {\n position: fixed; inset: 0; z-index: var(--z-modal);\n display: grid; place-items: center; padding: var(--space-4);\n background: var(--color-overlay); backdrop-filter: blur(3px);\n}\n.twc-dialog__overlay[data-state=\"open\"] { animation: twico-fade-in var(--duration-base) var(--ease-out); }\n.twc-dialog__overlay[data-state=\"closed\"] { animation: twc-dialog-fade-out var(--duration-exit) var(--ease-in) forwards; pointer-events: none; }\n.twc-dialog {\n position: relative; width: 100%; max-width: var(--_mw, 480px);\n max-height: calc(100vh - 48px); overflow: auto;\n background: var(--color-surface); color: var(--color-text);\n border: var(--border-thin) solid var(--color-border);\n border-radius: var(--radius-2xl); box-shadow: var(--shadow-xl);\n font-family: var(--font-sans);\n}\n.twc-dialog[data-state=\"open\"] { animation: twico-pop-in var(--duration-base) var(--ease-spring); }\n.twc-dialog[data-state=\"closed\"] { animation: twc-dialog-pop-out var(--duration-exit) var(--ease-in) forwards; }\n@keyframes twc-dialog-fade-out { from { opacity: 1; } to { opacity: 0; } }\n@keyframes twc-dialog-pop-out { from { opacity: 1; transform: none; } to { opacity: 0; transform: translateY(8px) scale(0.985); } }\n@media (prefers-reduced-motion: reduce) {\n .twc-dialog__overlay[data-state], .twc-dialog[data-state] { animation-duration: 1ms; }\n}\n.twc-dialog[data-size=\"sm\"] { --_mw: 380px; }\n.twc-dialog[data-size=\"lg\"] { --_mw: 640px; }\n/* Near-fullscreen: fill the overlay's padded area (overlay already pads --space-4 each side). */\n.twc-dialog[data-size=\"full\"] {\n --_mw: none;\n width: calc(100vw - var(--space-8));\n height: calc(100vh - var(--space-8));\n max-height: calc(100vh - var(--space-8));\n border-radius: var(--radius-2xl);\n}\n/* Scroll-body: header + footer stay fixed, only the body scrolls. */\n.twc-dialog[data-scroll-body=\"true\"] { display: flex; flex-direction: column; overflow: hidden; }\n.twc-dialog[data-scroll-body=\"true\"] .twc-dialog__header { flex: none; }\n.twc-dialog[data-scroll-body=\"true\"] .twc-dialog__body { flex: 1 1 auto; min-height: 0; overflow: auto; }\n.twc-dialog[data-scroll-body=\"true\"] .twc-dialog__footer { flex: none; }\n.twc-dialog__header { display: flex; align-items: flex-start; gap: var(--space-3); padding: var(--space-5) var(--space-5) 0; }\n.twc-dialog__titles { flex: 1; min-width: 0; }\n.twc-dialog__title { font-size: var(--text-xl); font-weight: var(--font-bold); letter-spacing: -0.01em; }\n.twc-dialog__desc { font-size: var(--text-sm); color: var(--color-text-muted); margin-top: 4px; line-height: var(--leading-snug); }\n.twc-dialog__close {\n flex: none; display: inline-grid; place-items: center; width: 32px; height: 32px;\n border: none; background: transparent; color: var(--color-text-subtle); cursor: pointer;\n border-radius: var(--radius-md); transition: background-color var(--duration-fast), color var(--duration-fast);\n}\n.twc-dialog__close:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-dialog__close svg { width: 18px; height: 18px; }\n.twc-dialog__body { padding: var(--space-4) var(--space-5); font-size: var(--text-sm); color: var(--color-text-muted); line-height: var(--leading-normal); }\n.twc-dialog__footer { display: flex; gap: var(--space-2); justify-content: flex-end; padding: 0 var(--space-5) var(--space-5); }\n`;\n\nexport function Dialog({\n open,\n onClose,\n title,\n description,\n footer,\n children,\n size = \"md\",\n scrollBody = false,\n closeOnBackdrop = true,\n className = \"\",\n ...rest\n}) {\n const autoId = React.useId();\n const titleId = `${autoId}-title`;\n const descId = `${autoId}-desc`;\n const dialogRef = React.useRef(null);\n\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-dialog-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-dialog-styles\";\n el.textContent = DIALOG_CSS;\n document.head.appendChild(el);\n }, []);\n\n // Stay mounted through the exit animation so closing is smooth, then unmount.\n const [mounted, setMounted] = React.useState(open);\n React.useEffect(() => {\n if (open) { setMounted(true); return; }\n const t = setTimeout(() => setMounted(false), 170);\n return () => clearTimeout(t);\n }, [open]);\n\n // Lock body scroll while open so the page behind the scrim can't scroll; restore\n // the previous overflow value on close/unmount. SSR-safe: effects run client-only.\n React.useEffect(() => {\n if (!open) return undefined;\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => { document.body.style.overflow = prev; };\n }, [open]);\n\n // Modal a11y (1/2): move focus into the dialog on open and restore it to the\n // previously-focused element on close. Keyed on `open` only, so an unstable\n // onClose identity can't clobber the saved trigger element.\n React.useEffect(() => {\n // Gate on `mounted` too: the panel renders one render AFTER `open` flips (mounted is\n // set in the effect above), so keying only on [open] runs this before dialogRef exists\n // and focus never moves inside. [open, mounted] re-runs once the panel is in the DOM.\n if (!open || !mounted) return undefined;\n const node = dialogRef.current;\n const prevFocused = document.activeElement;\n // Focus the first focusable element inside the panel (same selector as the\n // focus trap); fall back to the panel container when there is nothing to land on.\n const first = node?.querySelector(\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n );\n (first || node)?.focus();\n return () => {\n if (prevFocused && typeof prevFocused.focus === \"function\") prevFocused.focus();\n };\n }, [open, mounted]);\n\n // Modal a11y (2/2): Escape closes; Tab/Shift+Tab are trapped inside the dialog.\n React.useEffect(() => {\n if (!open) return;\n const node = dialogRef.current;\n const focusables = () =>\n node\n ? Array.from(\n node.querySelectorAll(\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n )\n ).filter((el) => el.offsetParent !== null)\n : [];\n const onKey = (e) => {\n if (e.key === \"Escape\") { e.preventDefault(); onClose?.(); return; }\n if (e.key !== \"Tab\") return;\n const f = focusables();\n if (!f.length) { e.preventDefault(); node?.focus(); return; }\n const first = f[0], last = f[f.length - 1], ae = document.activeElement;\n if (e.shiftKey) {\n if (ae === first || ae === node || !node.contains(ae)) { e.preventDefault(); last.focus(); }\n } else if (ae === last || !node.contains(ae)) { e.preventDefault(); first.focus(); }\n };\n document.addEventListener(\"keydown\", onKey);\n return () => document.removeEventListener(\"keydown\", onKey);\n }, [open, onClose]);\n\n if (!mounted) return null;\n const state = open ? \"open\" : \"closed\";\n\n const overlay = (\n <div className=\"twc-dialog__overlay\" data-state={state} onMouseDown={(e) => { if (closeOnBackdrop && e.target === e.currentTarget) onClose?.(); }}>\n <div ref={dialogRef} className={`twc-dialog ${className}`} data-state={state} data-size={size} data-scroll-body={scrollBody ? \"true\" : undefined} role=\"dialog\" aria-modal=\"true\" tabIndex={-1} aria-labelledby={title ? titleId : undefined} aria-label={!title ? \"Dialog\" : undefined} aria-describedby={description ? descId : undefined} {...rest}>\n {(title || description || onClose) ? (\n <div className=\"twc-dialog__header\">\n <div className=\"twc-dialog__titles\">\n {title ? <div className=\"twc-dialog__title\" id={titleId}>{title}</div> : null}\n {description ? <div className=\"twc-dialog__desc\" id={descId}>{description}</div> : null}\n </div>\n {onClose ? (\n <button className=\"twc-dialog__close\" onClick={onClose} aria-label=\"Close\" type=\"button\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\n </button>\n ) : null}\n </div>\n ) : null}\n {children ? <div className=\"twc-dialog__body\">{children}</div> : null}\n {footer ? <div className=\"twc-dialog__footer\">{footer}</div> : null}\n </div>\n </div>\n );\n\n // Portal to <body> so the overlay escapes any transformed / backdrop-filtered\n // ancestor that would otherwise become its containing block. SSR renders null:\n // there is no document, and portal output is client-only anyway (no hydration mismatch).\n if (typeof document === \"undefined\") return null;\n const RD = typeof createPortal === \"function\" ? createPortal : null;\n return RD ? RD(overlay, document.body) : overlay;\n}\n","import React from \"react\";\n\nconst DIVIDER_CSS = `\n.twc-divider { border: none; background: var(--color-divider); }\n.twc-divider[data-orientation=\"horizontal\"] { width: 100%; height: 1px; margin: var(--space-4) 0; }\n.twc-divider[data-orientation=\"vertical\"] { width: 1px; align-self: stretch; min-height: 1em; margin: 0 var(--space-3); }\n.twc-divider[data-inset=\"true\"][data-orientation=\"horizontal\"] { margin-inline-start: var(--space-4); }\n/* Labeled divider */\n.twc-divider-label { display: flex; align-items: center; gap: var(--space-3); margin: var(--space-4) 0; font-family: var(--font-sans); color: var(--color-text-muted); font-size: var(--text-xs); font-weight: var(--font-semibold); letter-spacing: var(--tracking-wide); text-transform: uppercase; }\n.twc-divider-label::before, .twc-divider-label::after { content: \"\"; height: 1px; background: var(--color-divider); flex: 1; }\n/* Logical align: the short segment sits on the inline-start (start) or inline-end (end).\n Because the label is a flex row, an rtl direction reverses the main axis automatically,\n so ::before/::after land on the correct inline edge under RTL — no physical override needed. */\n.twc-divider-label[data-align=\"start\"]::before { flex: 0 0 var(--space-6); }\n.twc-divider-label[data-align=\"end\"]::after { flex: 0 0 var(--space-6); }\n`;\n\nexport function Divider({\n orientation = \"horizontal\",\n inset = false,\n children,\n align = \"center\",\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-divider-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-divider-styles\";\n el.textContent = DIVIDER_CSS;\n document.head.appendChild(el);\n }, []);\n\n // Canonicalize to the logical values the CSS targets (data-align=\"start\"/\"end\"),\n // accepting physical aliases too: left -> start, right -> end.\n const resolvedAlign = align === \"left\" ? \"start\" : align === \"right\" ? \"end\" : align;\n\n if (children) {\n return (\n <div className={`twc-divider-label ${className}`} data-align={resolvedAlign} role=\"separator\" {...rest}>\n {children}\n </div>\n );\n }\n return (\n <hr\n className={`twc-divider ${className}`}\n data-orientation={orientation}\n data-inset={inset || undefined}\n role=\"separator\"\n aria-orientation={orientation}\n {...rest}\n />\n );\n}\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nconst DRAWER_CSS = `\n.twc-drawer__overlay { position: fixed; inset: 0; z-index: var(--z-modal); background: var(--color-overlay); backdrop-filter: blur(2px); }\n.twc-drawer__overlay[data-state=\"open\"] { animation: twico-fade-in var(--duration-base) var(--ease-out); }\n.twc-drawer__overlay[data-state=\"closed\"] { animation: twc-drawer-fade-out var(--duration-exit) var(--ease-in) forwards; pointer-events: none; }\n@keyframes twc-drawer-fade-out { from { opacity: 1; } to { opacity: 0; } }\n.twc-drawer {\n position: fixed; z-index: var(--z-modal); background: var(--color-surface); color: var(--color-text);\n display: flex; flex-direction: column; box-shadow: var(--shadow-xl); font-family: var(--font-sans);\n}\n.twc-drawer[data-side=\"right\"] { top: 0; right: 0; height: 100%; width: var(--_w, 380px); max-width: 92vw; border-left: var(--border-thin) solid var(--color-border); border-top-left-radius: var(--radius-2xl); border-bottom-left-radius: var(--radius-2xl); }\n.twc-drawer[data-side=\"left\"] { top: 0; left: 0; height: 100%; width: var(--_w, 380px); max-width: 92vw; border-right: var(--border-thin) solid var(--color-border); border-top-right-radius: var(--radius-2xl); border-bottom-right-radius: var(--radius-2xl); }\n.twc-drawer[data-side=\"bottom\"] { left: 0; right: 0; bottom: 0; width: 100%; max-height: 88vh; height: var(--_h, auto); border-top: var(--border-thin) solid var(--color-border); border-top-left-radius: var(--radius-2xl); border-top-right-radius: var(--radius-2xl); }\n.twc-drawer[data-side=\"top\"] { left: 0; right: 0; top: 0; width: 100%; max-height: 88vh; height: var(--_h, auto); border-bottom: var(--border-thin) solid var(--color-border); border-bottom-left-radius: var(--radius-2xl); border-bottom-right-radius: var(--radius-2xl); }\n/* Logical sides — mirror under dir=\"rtl\". --_off carries the off-screen slide direction. */\n.twc-drawer[data-side=\"end\"] { top: 0; height: 100%; inset-inline-end: 0; width: var(--_w, 380px); max-width: 92vw; border-inline-start: var(--border-thin) solid var(--color-border); border-start-start-radius: var(--radius-2xl); border-end-start-radius: var(--radius-2xl); --_off: 100%; }\n.twc-drawer[data-side=\"start\"] { top: 0; height: 100%; inset-inline-start: 0; width: var(--_w, 380px); max-width: 92vw; border-inline-end: var(--border-thin) solid var(--color-border); border-start-end-radius: var(--radius-2xl); border-end-end-radius: var(--radius-2xl); --_off: -100%; }\n[dir=\"rtl\"] .twc-drawer[data-side=\"end\"] { --_off: -100%; }\n[dir=\"rtl\"] .twc-drawer[data-side=\"start\"] { --_off: 100%; }\n.twc-drawer[data-side=\"right\"][data-state=\"open\"] { animation: twc-drawer-r var(--duration-base) var(--ease-out); }\n.twc-drawer[data-side=\"left\"][data-state=\"open\"] { animation: twc-drawer-l var(--duration-base) var(--ease-out); }\n.twc-drawer[data-side=\"bottom\"][data-state=\"open\"] { animation: twc-drawer-b var(--duration-base) var(--ease-out); }\n.twc-drawer[data-side=\"top\"][data-state=\"open\"] { animation: twc-drawer-t var(--duration-base) var(--ease-out); }\n.twc-drawer[data-side=\"right\"][data-state=\"closed\"] { animation: twc-drawer-r-out var(--duration-exit) var(--ease-in) forwards; }\n.twc-drawer[data-side=\"left\"][data-state=\"closed\"] { animation: twc-drawer-l-out var(--duration-exit) var(--ease-in) forwards; }\n.twc-drawer[data-side=\"bottom\"][data-state=\"closed\"] { animation: twc-drawer-b-out var(--duration-exit) var(--ease-in) forwards; }\n.twc-drawer[data-side=\"top\"][data-state=\"closed\"] { animation: twc-drawer-t-out var(--duration-exit) var(--ease-in) forwards; }\n@keyframes twc-drawer-r { from { transform: translateX(100%); } to { transform: translateX(0); } }\n@keyframes twc-drawer-l { from { transform: translateX(-100%); } to { transform: translateX(0); } }\n@keyframes twc-drawer-b { from { transform: translateY(100%); } to { transform: translateY(0); } }\n@keyframes twc-drawer-t { from { transform: translateY(-100%); } to { transform: translateY(0); } }\n@keyframes twc-drawer-r-out { from { transform: translateX(0); } to { transform: translateX(100%); } }\n@keyframes twc-drawer-l-out { from { transform: translateX(0); } to { transform: translateX(-100%); } }\n@keyframes twc-drawer-b-out { from { transform: translateY(0); } to { transform: translateY(100%); } }\n@keyframes twc-drawer-t-out { from { transform: translateY(0); } to { transform: translateY(-100%); } }\n.twc-drawer[data-side=\"start\"][data-state=\"open\"], .twc-drawer[data-side=\"end\"][data-state=\"open\"] { animation: twc-drawer-in-x var(--duration-base) var(--ease-out); }\n.twc-drawer[data-side=\"start\"][data-state=\"closed\"], .twc-drawer[data-side=\"end\"][data-state=\"closed\"] { animation: twc-drawer-out-x var(--duration-exit) var(--ease-in) forwards; }\n@keyframes twc-drawer-in-x { from { transform: translateX(var(--_off)); } to { transform: translateX(0); } }\n@keyframes twc-drawer-out-x { from { transform: translateX(0); } to { transform: translateX(var(--_off)); } }\n.twc-drawer__header { display: flex; align-items: flex-start; gap: var(--space-3); padding: var(--space-5) var(--space-5) var(--space-3); }\n.twc-drawer__titles { flex: 1; min-width: 0; }\n.twc-drawer__title { font-size: var(--text-xl); font-weight: var(--font-bold); letter-spacing: -0.01em; }\n.twc-drawer__desc { font-size: var(--text-sm); color: var(--color-text-muted); margin-top: 4px; }\n.twc-drawer__close { flex: none; display: inline-grid; place-items: center; width: 32px; height: 32px; border: none; background: transparent; color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-md); transition: background-color var(--duration-fast), color var(--duration-fast); }\n.twc-drawer__close:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-drawer__close svg { width: 18px; height: 18px; }\n.twc-drawer__body { flex: 1; overflow-y: auto; padding: var(--space-2) var(--space-5) var(--space-5); font-size: var(--text-sm); color: var(--color-text-muted); line-height: var(--leading-normal); }\n.twc-drawer__footer { display: flex; gap: var(--space-2); justify-content: flex-end; padding: var(--space-4) var(--space-5); border-top: var(--border-thin) solid var(--color-divider); }\n@media (prefers-reduced-motion: reduce) {\n .twc-drawer__overlay[data-state], .twc-drawer[data-state] { animation-duration: 1ms; }\n}\n`;\n\n// Preset sizes (\"md\" matches the CSS fallback width); numbers are px, other strings pass through.\nconst DRAWER_SIZES = { sm: \"320px\", md: \"380px\", lg: \"480px\" };\n\nexport function Drawer({\n open,\n onClose,\n side = \"right\",\n title,\n description,\n footer,\n width,\n height,\n closeOnBackdrop = true,\n children,\n className = \"\",\n style,\n ...rest\n}) {\n const autoId = React.useId();\n const titleId = `${autoId}-title`;\n const descId = `${autoId}-desc`;\n const panelRef = React.useRef(null);\n\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-drawer-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-drawer-styles\";\n el.textContent = DRAWER_CSS;\n document.head.appendChild(el);\n }, []);\n\n // Stay mounted through the slide-out animation so closing is smooth, then unmount.\n const [mounted, setMounted] = React.useState(open);\n React.useEffect(() => {\n if (open) { setMounted(true); return; }\n const t = setTimeout(() => setMounted(false), 170);\n return () => clearTimeout(t);\n }, [open]);\n\n // Lock body scroll while open so the page behind the scrim can't scroll; restore\n // the previous overflow value on close/unmount. SSR-safe: effects run client-only.\n React.useEffect(() => {\n if (!open) return undefined;\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => { document.body.style.overflow = prev; };\n }, [open]);\n\n // Modal a11y (1/2): move focus into the drawer on open and restore it to the\n // previously-focused element on close. Keyed on `open` only, so an unstable\n // onClose identity can't clobber the saved trigger element.\n React.useEffect(() => {\n // Gate on `mounted` too: the panel renders one render after `open` flips, so keying\n // only on [open] runs this before panelRef exists and focus never moves inside.\n if (!open || !mounted) return undefined;\n const node = panelRef.current;\n const prevFocused = document.activeElement;\n // Focus the first focusable element inside the panel (same selector as the\n // focus trap); fall back to the panel container when there is nothing to land on.\n const first = node?.querySelector(\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n );\n (first || node)?.focus();\n return () => {\n if (prevFocused && typeof prevFocused.focus === \"function\") prevFocused.focus();\n };\n }, [open, mounted]);\n\n // Modal a11y (2/2): Escape closes; Tab/Shift+Tab are trapped inside the drawer.\n React.useEffect(() => {\n if (!open) return;\n const node = panelRef.current;\n const focusables = () =>\n node\n ? Array.from(\n node.querySelectorAll(\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n )\n ).filter((el) => el.offsetParent !== null)\n : [];\n const onKey = (e) => {\n if (e.key === \"Escape\") { e.preventDefault(); onClose?.(); return; }\n if (e.key !== \"Tab\") return;\n const f = focusables();\n if (!f.length) { e.preventDefault(); node?.focus(); return; }\n const first = f[0], last = f[f.length - 1], ae = document.activeElement;\n if (e.shiftKey) {\n if (ae === first || ae === node || !node.contains(ae)) { e.preventDefault(); last.focus(); }\n } else if (ae === last || !node.contains(ae)) { e.preventDefault(); first.focus(); }\n };\n document.addEventListener(\"keydown\", onKey);\n return () => document.removeEventListener(\"keydown\", onKey);\n }, [open, onClose]);\n\n if (!mounted) return null;\n const state = open ? \"open\" : \"closed\";\n const isHorizontal = side === \"left\" || side === \"right\" || side === \"start\" || side === \"end\";\n // The panel's cross-axis size is `width` for left/right, `height` for top/bottom — only the one\n // matching the side applies. Each accepts a preset (\"sm\"/\"md\"/\"lg\"), a number (px), or a CSS length.\n const raw = isHorizontal ? width : height;\n const dim = DRAWER_SIZES[raw] || (typeof raw === \"number\" ? `${raw}px` : raw);\n const sizeVar = isHorizontal ? { \"--_w\": dim } : { \"--_h\": dim };\n\n const overlay = (\n <div className=\"twc-drawer__overlay\" data-state={state} onMouseDown={(e) => { if (closeOnBackdrop && e.target === e.currentTarget) onClose?.(); }}>\n <div ref={panelRef} className={`twc-drawer ${className}`} data-side={side} data-state={state} role=\"dialog\" aria-modal=\"true\" tabIndex={-1} aria-labelledby={title ? titleId : undefined} aria-label={!title ? \"Drawer\" : undefined} aria-describedby={description ? descId : undefined} style={{ ...(dim ? sizeVar : null), ...style }} {...rest}>\n {(title || description || onClose) ? (\n <div className=\"twc-drawer__header\">\n <div className=\"twc-drawer__titles\">\n {title ? <div className=\"twc-drawer__title\" id={titleId}>{title}</div> : null}\n {description ? <div className=\"twc-drawer__desc\" id={descId}>{description}</div> : null}\n </div>\n {onClose ? (\n <button className=\"twc-drawer__close\" onClick={onClose} aria-label=\"Close\" type=\"button\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\n </button>\n ) : null}\n </div>\n ) : null}\n <div className=\"twc-drawer__body\">{children}</div>\n {footer ? <div className=\"twc-drawer__footer\">{footer}</div> : null}\n </div>\n </div>\n );\n\n // Portal to <body> so the overlay escapes any transformed / backdrop-filtered\n // ancestor that would otherwise become its containing block. SSR renders null:\n // there is no document, and portal output is client-only anyway (no hydration mismatch).\n if (typeof document === \"undefined\") return null;\n const RD = typeof createPortal === \"function\" ? createPortal : null;\n return RD ? RD(overlay, document.body) : overlay;\n}\n","import React from \"react\";\n\nconst EMPTY_CSS = `\n.twc-empty { display: flex; flex-direction: column; align-items: center; text-align: center; gap: var(--space-3);\n padding: var(--space-10) var(--space-6); font-family: var(--font-sans); }\n.twc-empty__icon { display: inline-grid; place-items: center; width: 64px; height: 64px; border-radius: var(--radius-2xl);\n background: var(--color-surface-sunken); color: var(--color-text-subtle); margin-bottom: var(--space-1); }\n.twc-empty__icon svg { width: 30px; height: 30px; }\n.twc-empty__title { font-size: var(--text-lg); font-weight: var(--font-bold); color: var(--color-text); }\n.twc-empty__desc { font-size: var(--text-sm); color: var(--color-text-muted); max-width: 380px; line-height: var(--leading-normal); }\n.twc-empty__actions { display: flex; gap: var(--space-2); margin-top: var(--space-2); }\n.twc-empty[data-bordered=\"true\"] { border: var(--border-medium) dashed var(--color-border); border-radius: var(--radius-xl); }\n`;\n\nexport function EmptyState({\n icon,\n title,\n description,\n actions,\n bordered = false,\n border,\n className = \"\",\n ...rest\n}) {\n // `border` is the preferred alias for `bordered`; either enables the dashed border.\n const hasBorder = border ?? bordered;\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-empty-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-empty-styles\";\n el.textContent = EMPTY_CSS;\n document.head.appendChild(el);\n }, []);\n\n return (\n <div className={`twc-empty ${className}`} data-bordered={hasBorder || undefined} {...rest}>\n {icon ? <span className=\"twc-empty__icon\" aria-hidden=\"true\">{icon}</span> : null}\n {title ? <div className=\"twc-empty__title\">{title}</div> : null}\n {description ? <div className=\"twc-empty__desc\">{description}</div> : null}\n {actions ? <div className=\"twc-empty__actions\">{actions}</div> : null}\n </div>\n );\n}\n","import React from \"react\";\n\n// Shared form-field chrome (label + hint/error). Mirrors the exact markup Input.jsx and\n// Select.jsx inline so any control wrapped in <Field> looks and behaves identically.\nconst FIELD_CSS = `\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\n.twc-field__req { color: var(--color-danger); }\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n`;\n\nfunction useFieldStyles() {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-field-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-field-styles\";\n el.textContent = FIELD_CSS;\n document.head.appendChild(el);\n }, []);\n}\n\nexport function Field({\n label,\n hint,\n error,\n required = false,\n htmlFor,\n size = \"md\",\n id,\n className = \"\",\n children,\n ...rest\n}) {\n useFieldStyles();\n const autoId = React.useId();\n const fieldId = id || autoId;\n // Stable id for the hint/error element so the consumer can point their control's\n // aria-describedby at it. Same `${id}-desc` convention Input/Select use internally.\n const descId = `${fieldId}-desc`;\n\n return (\n <div className={`twc-field ${className}`} data-size={size} {...rest}>\n {label ? (\n <label className=\"twc-field__label\" htmlFor={htmlFor}>\n {label}{required ? <span className=\"twc-field__req\">*</span> : null}\n </label>\n ) : null}\n {children}\n {error\n ? <span id={descId} className=\"twc-field__error\">{error}</span>\n : hint ? <span id={descId} className=\"twc-field__hint\">{hint}</span> : null}\n </div>\n );\n}\n","import React from \"react\";\n\nconst UPLOAD_CSS = `\n.twc-upload { font-family: var(--font-sans); display: flex; flex-direction: column; gap: var(--space-3); }\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\n.twc-field__req { color: var(--color-danger); }\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n.twc-upload__zone[data-invalid=\"true\"] { border-color: var(--color-danger); }\n.twc-upload__zone {\n display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center;\n gap: 6px; padding: var(--space-8) var(--space-6); cursor: pointer;\n border: var(--border-medium) dashed var(--color-border-strong); border-radius: var(--radius-xl);\n background: var(--color-surface); color: var(--color-text-muted);\n transition: border-color var(--duration-fast) var(--ease-standard), background-color var(--duration-fast) var(--ease-standard);\n}\n.twc-upload__zone:hover { border-color: var(--color-primary); background: var(--color-surface-sunken); }\n/* tone → focus/open accent (default primary; reproduces current look). */\n.twc-upload__zone { --_accent: var(--color-primary); --_ring: var(--ring); }\n.twc-upload__zone[data-tone=\"success\"] { --_accent: var(--color-success); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-success) 32%, transparent); }\n.twc-upload__zone[data-tone=\"warning\"] { --_accent: var(--color-warning); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-warning) 32%, transparent); }\n.twc-upload__zone[data-tone=\"danger\"] { --_accent: var(--color-danger); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 32%, transparent); }\n.twc-upload__zone[data-tone=\"info\"] { --_accent: var(--color-info); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-info) 32%, transparent); }\n.twc-upload__zone[data-tone=\"neutral\"] { --_accent: var(--color-border-strong); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-text) 14%, transparent); }\n.twc-upload__zone[data-drag=\"true\"] { border-color: var(--_accent); background: var(--color-primary-subtle); }\n.twc-upload__zone[data-disabled=\"true\"] { opacity: 0.6; cursor: not-allowed; }\n.twc-upload__zone:focus-visible { outline: none; box-shadow: var(--_ring); }\n.twc-upload__icon { display: inline-grid; place-items: center; width: 46px; height: 46px; border-radius: var(--radius-lg);\n background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); margin-bottom: 4px; }\n.twc-upload__icon svg { width: 24px; height: 24px; }\n.twc-upload__title { font-size: var(--text-sm); color: var(--color-text); font-weight: var(--font-semibold); }\n.twc-upload__title em { color: var(--color-primary); font-style: normal; }\n.twc-upload__hint { font-size: var(--text-xs); color: var(--color-text-subtle); }\n.twc-upload__input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }\n.twc-upload__list { display: flex; flex-direction: column; gap: 8px; }\n.twc-upload__file { display: flex; align-items: center; gap: var(--space-3); padding: 9px 12px;\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md); }\n.twc-upload__file-ic { flex: none; display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: var(--radius-sm);\n background: var(--color-surface-sunken); color: var(--color-text-muted); }\n.twc-upload__file-ic svg { width: 16px; height: 16px; }\n.twc-upload__file-main { flex: 1; min-width: 0; }\n.twc-upload__file-name { font-size: var(--text-sm); font-weight: var(--font-medium); color: var(--color-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.twc-upload__file-size { font-size: var(--text-xs); color: var(--color-text-subtle); }\n.twc-upload__file-x { flex: none; display: inline-grid; place-items: center; width: 26px; height: 26px; border: none; background: transparent; color: var(--color-text-subtle); cursor: pointer; border-radius: var(--radius-full); transition: background-color var(--duration-fast), color var(--duration-fast); }\n.twc-upload__file-x:hover { background: var(--color-danger-subtle); color: var(--color-danger-subtle-fg); }\n.twc-upload__file-x svg { width: 15px; height: 15px; }\n`;\n\nfunction fmtSize(bytes) {\n if (bytes < 1024) return bytes + \" B\";\n if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + \" KB\";\n return (bytes / (1024 * 1024)).toFixed(1) + \" MB\";\n}\n\nexport function FileUpload({\n accept,\n multiple = false,\n disabled = false,\n tone = \"primary\",\n label,\n hint,\n error,\n required = false,\n value,\n defaultValue = [],\n onChange,\n id,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-upload-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-upload-styles\";\n el.textContent = UPLOAD_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [internal, setInternal] = React.useState(defaultValue);\n const files = value !== undefined ? value : internal;\n const [drag, setDrag] = React.useState(false);\n const inputRef = React.useRef(null);\n\n const autoId = React.useId();\n const fieldId = id || autoId;\n const descId = `${fieldId}-desc`;\n const invalid = Boolean(error);\n\n const set = (next) => { if (value === undefined) setInternal(next); onChange?.(next); };\n\n function addFiles(list) {\n const arr = Array.from(list);\n set(multiple ? [...files, ...arr] : arr.slice(0, 1));\n }\n function remove(i) { set(files.filter((_, idx) => idx !== i)); }\n\n return (\n <div className={`twc-upload ${className}`} {...rest}>\n {label ? (\n <label className=\"twc-field__label\" htmlFor={fieldId}>\n {label}{required ? <span className=\"twc-field__req\">*</span> : null}\n </label>\n ) : null}\n <div\n id={fieldId}\n className=\"twc-upload__zone\" data-drag={drag || undefined} data-disabled={disabled || undefined}\n data-invalid={invalid || undefined} data-tone={tone}\n role=\"button\" tabIndex={disabled ? -1 : 0}\n aria-required={required || undefined}\n aria-invalid={invalid || undefined}\n aria-describedby={error || hint ? descId : undefined}\n onClick={() => !disabled && inputRef.current?.click()}\n onKeyDown={(e) => { if ((e.key === \"Enter\" || e.key === \" \") && !disabled) { e.preventDefault(); inputRef.current?.click(); } }}\n onDragOver={(e) => { e.preventDefault(); if (!disabled) setDrag(true); }}\n onDragLeave={() => setDrag(false)}\n onDrop={(e) => { e.preventDefault(); setDrag(false); if (!disabled && e.dataTransfer.files.length) addFiles(e.dataTransfer.files); }}\n >\n <span className=\"twc-upload__icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12\"/></svg>\n </span>\n <span className=\"twc-upload__title\"><em>Click to upload</em> or drag and drop</span>\n <span className=\"twc-upload__hint\" id={!error && hint ? descId : undefined}>{hint || (accept ? accept.replace(/\\./g, \"\").toUpperCase() : \"Any file\")}</span>\n <input ref={inputRef} className=\"twc-upload__input\" type=\"file\" accept={accept} multiple={multiple} disabled={disabled}\n onChange={(e) => { if (e.target.files.length) addFiles(e.target.files); e.target.value = \"\"; }} />\n </div>\n {files.length ? (\n <div className=\"twc-upload__list\">\n {files.map((f, i) => (\n <div className=\"twc-upload__file\" key={i}>\n <span className=\"twc-upload__file-ic\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zM14 2v6h6\"/></svg>\n </span>\n <span className=\"twc-upload__file-main\">\n <span className=\"twc-upload__file-name\">{f.name}</span>\n <span className=\"twc-upload__file-size\">{fmtSize(f.size)}</span>\n </span>\n <button className=\"twc-upload__file-x\" aria-label={`Remove ${f.name}`} onClick={() => remove(i)} type=\"button\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\n </button>\n </div>\n ))}\n </div>\n ) : null}\n {error ? <span id={descId} className=\"twc-field__error\">{error}</span> : null}\n </div>\n );\n}\n","import React from \"react\";\n\nconst ICONBTN_CSS = `\n.twc-iconbtn {\n --_sz: var(--control-h-md);\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--_sz);\n height: var(--_sz);\n padding: 0;\n border: var(--border-thin) solid transparent;\n border-radius: var(--radius-md);\n cursor: pointer;\n color: var(--color-text-muted);\n background: transparent;\n overflow: hidden;\n transition: background-color var(--duration-fast) var(--ease-standard),\n color var(--duration-fast) var(--ease-standard),\n border-color var(--duration-fast) var(--ease-standard),\n box-shadow var(--duration-fast) var(--ease-standard),\n transform var(--duration-fast) var(--ease-spring);\n}\n.twc-iconbtn[data-round=\"true\"] { border-radius: var(--radius-full); }\n/* xs: ~26px square — composed from space tokens (no global control-h-xs token). */\n.twc-iconbtn[data-size=\"xs\"] { --_sz: calc(var(--space-6) + var(--space-0-5)); }\n.twc-iconbtn[data-size=\"sm\"] { --_sz: var(--control-h-sm); }\n.twc-iconbtn[data-size=\"lg\"] { --_sz: var(--control-h-lg); }\n.twc-iconbtn:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-iconbtn:active:not(:disabled) { transform: scale(var(--press-scale)); }\n.twc-iconbtn:disabled { opacity: 0.5; cursor: not-allowed; }\n.twc-iconbtn svg { width: 1.25em; height: 1.25em; }\n\n/* tone supplies the accent set; variant decides how it's applied — mirrors Button. Default tone\n primary; danger reuses its (active-less) hover for the pressed state. */\n.twc-iconbtn { --_accent: var(--color-primary); --_accent-hover: var(--color-primary-hover);\n --_accent-fg: var(--color-primary-fg); --_accent-subtle: var(--color-primary-subtle); --_accent-subtle-fg: var(--color-primary-subtle-fg); }\n.twc-iconbtn[data-tone=\"danger\"] { --_accent: var(--color-danger); --_accent-hover: var(--color-danger-hover);\n --_accent-fg: var(--color-danger-fg); --_accent-subtle: var(--color-danger-subtle); --_accent-subtle-fg: var(--color-danger-subtle-fg); }\n.twc-iconbtn[data-variant=\"solid\"] { background: var(--_accent); color: var(--_accent-fg); }\n.twc-iconbtn[data-variant=\"solid\"]:hover:not(:disabled) { background: var(--_accent-hover); box-shadow: var(--shadow-brand); }\n.twc-iconbtn[data-variant=\"solid\"]:active:not(:disabled) { filter: brightness(0.92); }\n.twc-iconbtn[data-variant=\"soft\"] { background: var(--_accent-subtle); color: var(--_accent-subtle-fg); }\n.twc-iconbtn[data-variant=\"soft\"]:hover:not(:disabled) { background: var(--_accent-subtle); filter: brightness(0.97); }\n.dark .twc-iconbtn[data-variant=\"soft\"]:hover:not(:disabled) { filter: brightness(1.25); }\n.twc-iconbtn[data-variant=\"outline\"] { border-color: var(--color-border-strong); color: var(--color-text); }\n.twc-iconbtn[data-variant=\"outline\"]:hover:not(:disabled) { border-color: var(--_accent); color: var(--_accent); background: var(--color-surface-sunken); }\n.twc-iconbtn[data-variant=\"ghost\"]:hover:not(:disabled) { background: var(--color-surface-sunken); color: var(--_accent); }\n`;\n\nexport function IconButton({\n children,\n icon,\n variant = \"ghost\",\n tone = \"primary\",\n size = \"md\",\n round = false,\n disabled = false,\n className = \"\",\n \"aria-label\": ariaLabel,\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-iconbtn-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-iconbtn-styles\";\n el.textContent = ICONBTN_CSS;\n document.head.appendChild(el);\n }, []);\n\n return (\n <button\n className={`twc-iconbtn ${className}`}\n data-variant={variant}\n data-tone={tone}\n data-size={size}\n data-round={round || undefined}\n disabled={disabled}\n type=\"button\"\n aria-label={ariaLabel}\n {...rest}\n >\n {icon || children}\n </button>\n );\n}\n","import React from \"react\";\n\nconst KANBAN_CSS = `\n.twc-kanban { display: flex; gap: var(--space-4); font-family: var(--font-sans); overflow-x: auto; padding-bottom: var(--space-2); align-items: flex-start; }\n.twc-kanban__col { flex: 0 0 280px; display: flex; flex-direction: column; max-height: 100%;\n background: var(--color-surface-sunken); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-xl); }\n.twc-kanban__col[data-over=\"true\"] { box-shadow: inset 0 0 0 2px var(--color-primary); background: var(--color-primary-subtle); }\n.twc-kanban__col-h { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-3) var(--space-4); }\n.twc-kanban__dot { width: 9px; height: 9px; border-radius: var(--radius-full); flex: none; background: var(--_c, var(--color-text-subtle)); }\n.twc-kanban__col-title { font-size: var(--text-sm); font-weight: var(--font-bold); color: var(--color-text); }\n.twc-kanban__count { font-size: var(--text-xs); font-weight: var(--font-bold); color: var(--color-text-subtle); background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-full); padding: 1px 8px; }\n.twc-kanban__list { display: flex; flex-direction: column; gap: var(--space-2); padding: 0 var(--space-3) var(--space-3); overflow-y: auto; min-height: 24px; }\n.twc-kanban__card { background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-3); box-shadow: var(--shadow-xs); cursor: grab;\n transition: box-shadow var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring), border-color var(--duration-fast); }\n.twc-kanban__card:hover { box-shadow: var(--shadow-sm); border-color: var(--color-border-strong); }\n.twc-kanban__card[data-dragging=\"true\"] { opacity: 0.5; }\n.twc-kanban__card:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-kanban__card[data-grabbed=\"true\"] { box-shadow: var(--ring); border-color: var(--color-primary); }\n.twc-kanban__card:active { cursor: grabbing; }\n.twc-kanban__sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }\n.twc-kanban__card-title { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); line-height: var(--leading-snug); }\n.twc-kanban__card-desc { font-size: var(--text-xs); color: var(--color-text-muted); margin-top: 4px; line-height: var(--leading-snug); }\n.twc-kanban__card-foot { display: flex; align-items: center; justify-content: space-between; margin-top: var(--space-3); }\n.twc-kanban__tags { display: flex; flex-wrap: wrap; gap: 4px; }\n.twc-kanban__tag { font-size: 10px; font-weight: var(--font-bold); padding: 2px 7px; border-radius: var(--radius-full); background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); text-transform: uppercase; letter-spacing: 0.03em; }\n`;\n\nexport function Kanban({\n columns,\n cards,\n defaultCards,\n onCardMove,\n renderCard,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-kanban-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-kanban-styles\";\n el.textContent = KANBAN_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [internal, setInternal] = React.useState(cards ?? defaultCards ?? []);\n const items = cards !== undefined ? cards : internal;\n const [drag, setDrag] = React.useState(null); // card id\n const [overCol, setOverCol] = React.useState(null);\n const [grab, setGrab] = React.useState(null); // keyboard move mode: { id, targetIdx }\n const [announce, setAnnounce] = React.useState(\"\");\n const rootRef = React.useRef(null);\n const focusIdRef = React.useRef(null);\n\n // Restore focus to a card after a keyboard drop re-parents it into another column.\n // The card may not have rendered into its new column yet when this effect runs, so\n // defer the focus() to the next frame (after the DOM has settled) and clear the ref then.\n React.useEffect(() => {\n if (focusIdRef.current == null) return undefined;\n const raf = requestAnimationFrame(() => {\n const id = focusIdRef.current;\n if (id == null) return;\n focusIdRef.current = null;\n const els = rootRef.current ? rootRef.current.querySelectorAll(\".twc-kanban__card\") : [];\n for (const el of els) if (el.getAttribute(\"data-card-id\") === id) { el.focus(); break; }\n });\n return () => cancelAnimationFrame(raf);\n });\n\n const move = (cardId, toCol) => {\n const card = items.find((c) => c.id === cardId);\n if (!card || card.column === toCol) return;\n const next = items.map((c) => (c.id === cardId ? { ...c, column: toCol } : c));\n if (cards === undefined) setInternal(next);\n onCardMove?.(cardId, toCol, next);\n };\n\n const colTitle = (col) => (typeof col.title === \"string\" ? col.title : col.id);\n const cardTitle = (card) => (typeof card.title === \"string\" ? card.title : \"Card\");\n\n // Keyboard move mode: Enter/Space grabs, ArrowLeft/ArrowRight picks a column, Enter drops, Escape cancels.\n const handleCardKey = (e, card, colIdx) => {\n if (e.target !== e.currentTarget) return; // let interactive content inside cards keep its keys\n const grabbed = grab && grab.id === card.id;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (!grabbed) {\n setGrab({ id: card.id, targetIdx: colIdx });\n setAnnounce(`${cardTitle(card)} grabbed. Use the left and right arrow keys to choose a column, Enter to drop, Escape to cancel.`);\n } else {\n const toCol = columns[grab.targetIdx];\n if (toCol) { focusIdRef.current = card.id; move(card.id, toCol.id); setAnnounce(`${cardTitle(card)} dropped in ${colTitle(toCol)}.`); }\n setGrab(null);\n }\n } else if (grabbed && (e.key === \"ArrowLeft\" || e.key === \"ArrowRight\")) {\n e.preventDefault();\n const next = (grab.targetIdx + (e.key === \"ArrowRight\" ? 1 : -1) + columns.length) % columns.length;\n setGrab({ id: card.id, targetIdx: next });\n setAnnounce(`Move ${cardTitle(card)} to ${colTitle(columns[next])}. Press Enter to drop.`);\n } else if (grabbed && e.key === \"Escape\") {\n e.preventDefault();\n setGrab(null);\n setAnnounce(\"Move cancelled.\");\n }\n };\n\n const keyTargetCol = grab ? columns[grab.targetIdx]?.id : null;\n\n return (\n <div className={`twc-kanban ${className}`} ref={rootRef} {...rest}>\n <div className=\"twc-kanban__sr\" role=\"status\" aria-live=\"polite\">{announce}</div>\n {columns.map((col, colIdx) => {\n const colCards = items.filter((c) => c.column === col.id);\n return (\n <div key={col.id} className=\"twc-kanban__col\" role=\"group\" aria-label={typeof col.title === \"string\" ? col.title : undefined}\n data-over={overCol === col.id || keyTargetCol === col.id || undefined}\n onDragOver={(e) => { e.preventDefault(); setOverCol(col.id); }}\n onDragLeave={(e) => { if (!e.currentTarget.contains(e.relatedTarget)) setOverCol(null); }}\n onDrop={(e) => { e.preventDefault(); if (drag) move(drag, col.id); setOverCol(null); setDrag(null); }}>\n <div className=\"twc-kanban__col-h\">\n <span className=\"twc-kanban__dot\" style={col.color ? { \"--_c\": col.color } : undefined} />\n <span className=\"twc-kanban__col-title\">{col.title}</span>\n <span className=\"twc-kanban__count\">{colCards.length}</span>\n </div>\n <div className=\"twc-kanban__list\">\n {colCards.map((card) => (\n <div key={card.id} className=\"twc-kanban__card\" draggable data-dragging={drag === card.id || undefined}\n role=\"button\" tabIndex={0} aria-roledescription=\"draggable card\" data-card-id={card.id}\n data-grabbed={(grab && grab.id === card.id) || undefined}\n onKeyDown={(e) => handleCardKey(e, card, colIdx)}\n onBlur={() => { if (grab && grab.id === card.id) setGrab(null); }}\n onDragStart={(e) => { setDrag(card.id); e.dataTransfer.effectAllowed = \"move\"; }}\n onDragEnd={() => { setDrag(null); setOverCol(null); }}>\n {renderCard ? renderCard(card) : (\n <>\n <div className=\"twc-kanban__card-title\">{card.title}</div>\n {card.description ? <div className=\"twc-kanban__card-desc\">{card.description}</div> : null}\n {(card.tags?.length || card.footer) ? (\n <div className=\"twc-kanban__card-foot\">\n <span className=\"twc-kanban__tags\">{(card.tags || []).map((t, i) => <span key={i} className=\"twc-kanban__tag\">{t}</span>)}</span>\n {card.footer || null}\n </div>\n ) : null}\n </>\n )}\n </div>\n ))}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n","import React from \"react\";\n\nconst LIST_CSS = `\n.twc-list { display: flex; flex-direction: column; font-family: var(--font-sans); margin: 0; padding: 0; list-style: none;\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg); overflow: hidden; }\n.twc-list[data-plain=\"true\"] { background: transparent; border: none; border-radius: 0; }\n.twc-list__item { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3) var(--space-4);\n border-bottom: var(--border-thin) solid var(--color-divider); text-align: start; }\n.twc-list__item:last-child { border-bottom: none; }\n.twc-list[data-plain=\"true\"] .twc-list__item { padding-inline-start: 0; padding-inline-end: 0; }\n.twc-list__item[data-interactive=\"true\"] { cursor: pointer; background: transparent; border-inline-start: none; border-inline-end: none; border-top: none; width: 100%; font: inherit; color: inherit;\n transition: background-color var(--duration-fast) var(--ease-standard); }\n.twc-list__item[data-interactive=\"true\"]:hover { background: var(--color-surface-sunken); }\n.twc-list__item[data-interactive=\"true\"]:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-list__item[data-active=\"true\"] { background: var(--color-primary-subtle); }\n.twc-list__lead { flex: none; display: inline-flex; align-items: center; color: var(--color-text-muted); }\n.twc-list__lead svg { width: 18px; height: 18px; }\n.twc-list__main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }\n.twc-list__title { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.twc-list__desc { font-size: var(--text-xs); color: var(--color-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.twc-list__trail { flex: none; display: inline-flex; align-items: center; gap: var(--space-2); color: var(--color-text-subtle); font-size: var(--text-sm); }\n`;\n\nexport function List({ items, plain = false, className = \"\", ...rest }) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-list-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-list-styles\";\n el.textContent = LIST_CSS;\n document.head.appendChild(el);\n }, []);\n\n // Block javascript:/data:/vbscript: URLs from reaching a DOM href (trust boundary).\n const safeHref = (url) => {\n if (url == null) return undefined;\n const s = String(url).replace(/[\\x00-\\x20]+/g, \"\").toLowerCase();\n return s.startsWith(\"javascript:\") || s.startsWith(\"data:\") || s.startsWith(\"vbscript:\") ? undefined : url;\n };\n\n return (\n <ul className={`twc-list ${className}`} data-plain={plain || undefined} {...rest}>\n {items.map((it, i) => {\n const href = safeHref(it.href);\n const interactive = Boolean(it.onClick || href);\n const Tag = href ? \"a\" : interactive ? \"button\" : \"div\";\n const content = (\n <>\n {it.leading ? <span className=\"twc-list__lead\" aria-hidden=\"true\">{it.leading}</span> : null}\n <span className=\"twc-list__main\">\n <span className=\"twc-list__title\">{it.title}</span>\n {it.description ? <span className=\"twc-list__desc\">{it.description}</span> : null}\n </span>\n {it.trailing ? <span className=\"twc-list__trail\">{it.trailing}</span> : null}\n </>\n );\n return (\n <li key={i} style={{ display: \"contents\" }}>\n <Tag\n className=\"twc-list__item\"\n data-interactive={interactive || undefined}\n data-active={it.active || undefined}\n href={href}\n type={Tag === \"button\" ? \"button\" : undefined}\n onClick={it.onClick}\n >\n {content}\n </Tag>\n </li>\n );\n })}\n </ul>\n );\n}\n","import React from \"react\";\n\nconst NAVBAR_CSS = `\n.twc-navbar { display: flex; align-items: center; gap: var(--space-4); height: 60px; padding: 0 var(--space-5);\n font-family: var(--font-sans); background: var(--color-surface); border-bottom: var(--border-thin) solid var(--color-border); }\n.twc-navbar[data-sticky=\"true\"] { position: sticky; top: 0; z-index: var(--z-sticky);\n background: color-mix(in srgb, var(--color-surface) 85%, transparent); backdrop-filter: blur(10px); }\n.twc-navbar__brand { display: inline-flex; align-items: center; gap: var(--space-2-5); font-weight: var(--font-extrabold);\n font-size: var(--text-lg); letter-spacing: -0.02em; color: var(--color-text); text-decoration: none; flex: none;\n border: none; background: none; padding: 0; font-family: inherit; }\nbutton.twc-navbar__brand, a.twc-navbar__brand { cursor: pointer; }\n.twc-navbar__links { display: flex; align-items: center; gap: 2px; }\n.twc-navbar__link { display: inline-flex; align-items: center; gap: 7px; padding: 8px 12px; border-radius: var(--radius-md);\n font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text-muted); text-decoration: none; cursor: pointer;\n background: none; border: none; font-family: inherit; transition: background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard); }\n.twc-navbar__link:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-navbar__link[data-active=\"true\"] { color: var(--color-primary); background: var(--color-primary-subtle); }\n.twc-navbar__link svg { width: 16px; height: 16px; }\n.twc-navbar__spacer { flex: 1; }\n.twc-navbar__actions { display: flex; align-items: center; gap: var(--space-2); flex: none; }\n.twc-navbar__menu-btn { display: none; place-items: center; width: 38px; height: 38px; flex: none; border: none; background: none;\n color: var(--color-text); cursor: pointer; border-radius: var(--radius-md); transition: background-color var(--duration-fast) var(--ease-standard); }\n.twc-navbar__menu-btn:hover { background: var(--color-surface-sunken); }\n.twc-navbar__menu-btn:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-navbar__menu-btn svg { width: 20px; height: 20px; }\n@media (max-width: 720px) {\n .twc-navbar__links { display: none; }\n .twc-navbar__menu-btn { display: inline-grid; }\n}\n`;\n\n// Block javascript:/data:/vbscript: URLs (incl. whitespace/control-char obfuscation)\n// from reaching a DOM href. Consumer hrefs are a trust boundary.\nfunction safeHref(url) {\n if (url == null) return undefined;\n const s = String(url).replace(/[\\x00-\\x20]+/g, \"\").toLowerCase();\n return s.startsWith(\"javascript:\") || s.startsWith(\"data:\") || s.startsWith(\"vbscript:\") ? undefined : url;\n}\n\nexport function Navbar({\n brand,\n brandHref,\n onBrandClick,\n links = [],\n actions,\n sticky = true,\n onMenuClick,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-navbar-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-navbar-styles\";\n el.textContent = NAVBAR_CSS;\n document.head.appendChild(el);\n }, []);\n\n return (\n <header className={`twc-navbar ${className}`} data-sticky={sticky || undefined} {...rest}>\n {onMenuClick ? (\n <button type=\"button\" className=\"twc-navbar__menu-btn\" aria-label=\"Open menu\" onClick={onMenuClick}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M4 6h16M4 12h16M4 18h16\"/></svg>\n </button>\n ) : null}\n {brand ? (\n brandHref ? <a className=\"twc-navbar__brand\" href={safeHref(brandHref)}>{brand}</a>\n : onBrandClick ? <button type=\"button\" className=\"twc-navbar__brand\" onClick={onBrandClick}>{brand}</button>\n : <span className=\"twc-navbar__brand\">{brand}</span>\n ) : null}\n <nav className=\"twc-navbar__links\">\n {links.map((l, i) => {\n const href = safeHref(l.href);\n const inner = <>{l.icon}{l.label}</>;\n return href != null ? (\n <a key={i} className=\"twc-navbar__link\" href={href} data-active={l.active || undefined}\n aria-current={l.active ? \"page\" : undefined} onClick={l.onClick}>\n {inner}\n </a>\n ) : (\n <button key={i} type=\"button\" className=\"twc-navbar__link\" data-active={l.active || undefined}\n aria-current={l.active ? \"page\" : undefined} onClick={l.onClick}>\n {inner}\n </button>\n );\n })}\n </nav>\n <span className=\"twc-navbar__spacer\" />\n {actions ? <div className=\"twc-navbar__actions\">{actions}</div> : null}\n </header>\n );\n}\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nconst POPOVER_CSS = `\n.twc-popover-wrap { position: relative; display: inline-flex; }\n.twc-popover {\n position: fixed; z-index: var(--z-popover); min-width: 200px;\n background: var(--color-surface-raised); color: var(--color-text);\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-lg);\n box-shadow: var(--shadow-lg); font-family: var(--font-sans);\n transform-origin: top;\n}\n.twc-popover:focus { outline: none; }\n.twc-popover[data-state=\"open\"] { animation: twico-scale-in var(--duration-fast) var(--ease-spring); }\n.twc-popover[data-state=\"closed\"] { animation: twc-popover-out var(--duration-exit) var(--ease-in) forwards; pointer-events: none; }\n@keyframes twc-popover-out { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.96); } }\n@media (prefers-reduced-motion: reduce) { .twc-popover[data-state] { animation-duration: 1ms; } }\n.twc-popover[data-flip=\"true\"] { transform-origin: bottom; }\n.twc-popover__arrow { position: absolute; width: 11px; height: 11px; background: var(--color-surface-raised);\n border-left: var(--border-thin) solid var(--color-border); border-top: var(--border-thin) solid var(--color-border);\n transform: rotate(45deg); }\n.twc-popover__inner { padding: var(--space-4); font-size: var(--text-sm); color: var(--color-text-muted); line-height: var(--leading-normal); }\n.twc-popover__title { font-size: var(--text-sm); font-weight: var(--font-bold); color: var(--color-text); margin-bottom: 4px; }\n`;\n\nexport function Popover({\n trigger,\n children,\n title,\n placement = \"bottom\",\n align = \"center\",\n width,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-popover-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-popover-styles\";\n el.textContent = POPOVER_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [openState, setOpenState] = React.useState(defaultOpen);\n const [render, setRender] = React.useState(false);\n const [pos, setPos] = React.useState(null);\n const wrapRef = React.useRef(null);\n const popRef = React.useRef(null);\n const popId = React.useId();\n\n // Controlled when an `open` prop is passed; uncontrolled (internal state) otherwise.\n // Every internal open/close request goes through setOpen so `onOpenChange` always fires.\n const controlled = openProp !== undefined;\n const open = controlled ? !!openProp : openState;\n const openRef = React.useRef(open);\n openRef.current = open;\n const controlledRef = React.useRef(controlled);\n controlledRef.current = controlled;\n const onOpenChangeRef = React.useRef(onOpenChange);\n onOpenChangeRef.current = onOpenChange;\n const setOpen = React.useCallback((next) => {\n const value = typeof next === \"function\" ? next(openRef.current) : next;\n if (value === openRef.current) return;\n if (!controlledRef.current) setOpenState(value);\n onOpenChangeRef.current?.(value);\n }, []);\n const toggle = () => setOpen((o) => !o);\n const RD = { createPortal: (typeof createPortal === \"function\" ? createPortal : (typeof window !== \"undefined\" && window.ReactDOM && window.ReactDOM.createPortal)) };\n\n const place = React.useCallback(() => {\n const t = wrapRef.current; if (!t) return;\n const r = t.getBoundingClientRect();\n const w = width || 240;\n const gap = 10;\n const vw = window.innerWidth, vh = window.innerHeight, M = 8;\n let top, left, flip = false, arrow = {};\n const vertical = placement === \"top\" || placement === \"bottom\";\n if (vertical) {\n flip = placement === \"top\" || (placement === \"bottom\" && vh - r.bottom < 180 && r.top > vh - r.bottom);\n top = flip ? undefined : r.bottom + gap;\n const bottom = flip ? vh - r.top + gap : undefined;\n let l = align === \"start\" ? r.left : align === \"end\" ? r.right - w : r.left + r.width / 2 - w / 2;\n l = Math.max(M, Math.min(l, vw - w - M));\n left = l;\n arrow = { left: Math.min(Math.max(r.left + r.width / 2 - l - 5.5, 10), w - 20), [flip ? \"bottom\" : \"top\"]: -6 };\n return setPos({ top, bottom, left, width: w, flip, arrow });\n }\n // left / right — center on the trigger using the REAL panel height, flip to the\n // other side when there isn't room, and clamp within the viewport.\n const ph = popRef.current ? popRef.current.offsetHeight : 120;\n let onRight = placement === \"right\";\n const spaceRight = vw - r.right - gap, spaceLeft = r.left - gap;\n if (onRight && spaceRight < w + M && spaceLeft > spaceRight) onRight = false;\n else if (!onRight && spaceLeft < w + M && spaceRight > spaceLeft) onRight = true;\n left = onRight ? r.right + gap : r.left - w - gap;\n left = Math.max(M, Math.min(left, vw - w - M));\n const cy = r.top + r.height / 2;\n top = Math.max(M, Math.min(cy - ph / 2, vh - ph - M));\n arrow = { top: Math.min(Math.max(cy - top - 5.5, 8), ph - 18), [onRight ? \"left\" : \"right\"]: -6 };\n setPos({ top, left, width: w, flip: false, arrow });\n }, [placement, align, width]);\n\n React.useEffect(() => {\n if (!open) return;\n place();\n const onMove = () => place();\n const onDown = (e) => {\n if (wrapRef.current?.contains(e.target)) return;\n if (popRef.current?.contains(e.target)) return;\n setOpen(false);\n };\n const onKey = (e) => { if (e.key === \"Escape\") setOpen(false); };\n window.addEventListener(\"scroll\", onMove, true);\n window.addEventListener(\"resize\", onMove);\n document.addEventListener(\"mousedown\", onDown);\n document.addEventListener(\"keydown\", onKey);\n return () => {\n window.removeEventListener(\"scroll\", onMove, true);\n window.removeEventListener(\"resize\", onMove);\n document.removeEventListener(\"mousedown\", onDown);\n document.removeEventListener(\"keydown\", onKey);\n };\n }, [open, place]);\n\n // Keep the popover mounted through the close animation, then unmount.\n React.useEffect(() => {\n if (open) { setRender(true); return; }\n const t = setTimeout(() => setRender(false), 170);\n return () => clearTimeout(t);\n }, [open]);\n\n // Re-measure once the panel is in the DOM so left/right placement centers on the\n // real panel height (the first place() runs before the panel mounts).\n React.useEffect(() => { if (render && open) place(); }, [render, place]);\n\n // Remember what to restore focus to on open; restore it on close, but only if\n // focus is still inside the panel (don't steal focus after an outside click).\n const restoreRef = React.useRef(null);\n const needFocusRef = React.useRef(false);\n React.useEffect(() => {\n if (open) {\n restoreRef.current = document.activeElement;\n needFocusRef.current = true;\n return;\n }\n const prev = restoreRef.current;\n restoreRef.current = null;\n needFocusRef.current = false;\n if (prev && typeof prev.focus === \"function\" && popRef.current?.contains(document.activeElement)) prev.focus();\n }, [open]);\n\n // Move focus into the panel once it has mounted and been positioned.\n React.useEffect(() => {\n if (open && render && pos && needFocusRef.current) {\n needFocusRef.current = false;\n popRef.current?.focus({ preventScroll: true });\n }\n }, [open, render, pos]);\n\n const pop = render && pos ? (\n <div className=\"twc-popover\" id={popId} ref={popRef} tabIndex={-1} data-state={open ? \"open\" : \"closed\"} data-flip={pos.flip || undefined} role=\"dialog\"\n aria-labelledby={title ? `${popId}-title` : undefined}\n style={{ top: pos.top, bottom: pos.bottom, left: pos.left, width: pos.width }}>\n <span className=\"twc-popover__arrow\" style={pos.arrow} aria-hidden=\"true\" />\n <div className=\"twc-popover__inner\">\n {title ? <div className=\"twc-popover__title\" id={`${popId}-title`}>{title}</div> : null}\n {children}\n </div>\n </div>\n ) : null;\n\n // Make the trigger a proper, focusable disclosure button that announces its\n // popup + open state. Clone a passed element (so a <button>/IconButton keeps\n // its own semantics) or wrap a non-element trigger in a focusable\n // role=\"button\" span with Enter/Space activation.\n const triggerEl = React.isValidElement(trigger)\n ? React.cloneElement(trigger, {\n onClick: (e) => { trigger.props.onClick?.(e); toggle(); },\n tabIndex: trigger.props.tabIndex ?? 0,\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": open,\n \"aria-controls\": open ? popId : undefined,\n })\n : (\n <span role=\"button\" tabIndex={0} aria-haspopup=\"dialog\" aria-expanded={open}\n aria-controls={open ? popId : undefined} onClick={toggle}\n onKeyDown={(e) => { if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); toggle(); } }}>\n {trigger}\n </span>\n );\n\n return (\n <span className={`twc-popover-wrap ${className}`} ref={wrapRef} {...rest}>\n {triggerEl}\n {pop && RD && RD.createPortal ? RD.createPortal(pop, document.body) : pop}\n </span>\n );\n}\n","import React from \"react\";\n\nexport function Progress({\n value = 0,\n max = 100,\n tone = \"primary\",\n size = \"md\",\n indeterminate = false,\n showLabel = false,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-progress-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-progress-styles\";\n el.textContent = `\n.twc-progress-wrap { display: flex; flex-direction: column; gap: 6px; font-family: var(--font-sans); }\n.twc-progress {\n --_h: 8px;\n position: relative; width: 100%; height: var(--_h); overflow: hidden;\n background: var(--color-surface-sunken); border-radius: var(--radius-full);\n}\n.twc-progress[data-size=\"sm\"] { --_h: 5px; }\n.twc-progress[data-size=\"lg\"] { --_h: 12px; }\n.twc-progress__bar {\n height: 100%; border-radius: var(--radius-full);\n background: var(--_c, var(--color-primary));\n transition: width var(--duration-slow) var(--ease-out);\n}\n.twc-progress[data-tone=\"info\"] .twc-progress__bar { --_c: var(--color-info); }\n.twc-progress[data-tone=\"success\"] .twc-progress__bar { --_c: var(--color-success); }\n.twc-progress[data-tone=\"warning\"] .twc-progress__bar { --_c: var(--color-warning); }\n.twc-progress[data-tone=\"danger\"] .twc-progress__bar { --_c: var(--color-danger); }\n.twc-progress[data-indeterminate=\"true\"] .twc-progress__bar {\n position: absolute; width: 40%; animation: twc-progress-indeterminate 1.3s var(--ease-standard) infinite;\n}\n/* Logical-property keyframe so the indeterminate bar follows document direction (RTL-safe). */\n@keyframes twc-progress-indeterminate {\n 0% { inset-inline-start: -40%; inset-inline-end: 100%; }\n 60% { inset-inline-start: 100%; inset-inline-end: -90%; }\n 100% { inset-inline-start: 100%; inset-inline-end: -90%; }\n}\n.twc-progress__meta { display: flex; justify-content: space-between; font-size: var(--text-xs); color: var(--color-text-muted); }\n/* Indeterminate progress signals ongoing work — keep it animating under reduced motion. */\n@media (prefers-reduced-motion: reduce) {\n .twc-progress[data-indeterminate=\"true\"] .twc-progress__bar { animation-duration: 1.3s !important; animation-iteration-count: infinite !important; }\n}\n`;\n document.head.appendChild(el);\n }, []);\n\n const v = Number.isFinite(value) ? value : 0;\n const pct = indeterminate ? 0 : (max > 0 ? Math.min(100, Math.max(0, (v / max) * 100)) : 0);\n\n return (\n // Single-root contract: className and ...rest (style, id, handlers, …) share the outer\n // wrapper; role=\"progressbar\" + aria-value* stay on the inner track.\n <div className={`twc-progress-wrap ${className}`} {...rest}>\n {showLabel && !indeterminate ? (\n <div className=\"twc-progress__meta\"><span>Progress</span><span>{Math.round(pct)}%</span></div>\n ) : null}\n <div className=\"twc-progress\" data-tone={tone} data-size={size} data-indeterminate={indeterminate || undefined}\n role=\"progressbar\" aria-valuenow={indeterminate ? undefined : Math.round(pct)} aria-valuemin={0} aria-valuemax={100}>\n <div className=\"twc-progress__bar\" style={indeterminate ? undefined : { width: `${pct}%` }} />\n </div>\n </div>\n );\n}\n","import React from \"react\";\n\nexport function Radio({\n label,\n description,\n error,\n checked,\n defaultChecked,\n required = false,\n disabled = false,\n size = \"md\",\n tone = \"primary\",\n id,\n name,\n value,\n className = \"\",\n onChange,\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-radio-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-radio-styles\";\n el.textContent = `\n.twc-radio { display: inline-flex; align-items: flex-start; gap: var(--space-2-5); cursor: pointer; font-family: var(--font-sans); }\n/* tone → accent set (default primary). Mirrors Button's --_accent model; Badge's tone vocabulary. */\n.twc-radio { --_accent: var(--color-primary); --_accent-fg: var(--color-primary-fg); --_accent-subtle: var(--color-primary-subtle); --_accent-subtle-fg: var(--color-primary-subtle-fg); --_accent-border: var(--color-primary-border); }\n.twc-radio[data-tone=\"success\"] { --_accent: var(--color-success); --_accent-fg: var(--color-success-fg); --_accent-subtle: var(--color-success-subtle); --_accent-subtle-fg: var(--color-success-subtle-fg); --_accent-border: var(--color-success); }\n.twc-radio[data-tone=\"warning\"] { --_accent: var(--color-warning); --_accent-fg: var(--color-warning-fg); --_accent-subtle: var(--color-warning-subtle); --_accent-subtle-fg: var(--color-warning-subtle-fg); --_accent-border: var(--color-warning); }\n.twc-radio[data-tone=\"danger\"] { --_accent: var(--color-danger); --_accent-fg: var(--color-danger-fg); --_accent-subtle: var(--color-danger-subtle); --_accent-subtle-fg: var(--color-danger-subtle-fg); --_accent-border: var(--color-danger); }\n.twc-radio[data-tone=\"info\"] { --_accent: var(--color-info); --_accent-fg: var(--color-info-fg); --_accent-subtle: var(--color-info-subtle); --_accent-subtle-fg: var(--color-info-subtle-fg); --_accent-border: var(--color-info); }\n.twc-radio[data-tone=\"neutral\"] { --_accent: var(--color-text); --_accent-fg: var(--color-surface); --_accent-subtle: var(--color-surface-sunken); --_accent-subtle-fg: var(--color-text-muted); --_accent-border: var(--color-border-strong); }\n.twc-radio[data-disabled=\"true\"] { cursor: not-allowed; opacity: 0.55; }\n.twc-radio__input { position: absolute; opacity: 0; width: 0; height: 0; }\n.twc-radio__dot {\n --_sz: 20px;\n flex: none; width: var(--_sz); height: var(--_sz); margin-top: 1px;\n display: grid; place-items: center;\n border: var(--border-medium) solid var(--color-border-strong);\n border-radius: var(--radius-full);\n background: var(--color-surface);\n transition: border-color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring);\n}\n.twc-radio[data-size=\"sm\"] .twc-radio__dot { --_sz: 16px; }\n.twc-radio[data-size=\"lg\"] .twc-radio__dot { --_sz: 25px; }\n.twc-radio__dot::after {\n content: \"\"; width: 50%; height: 50%; border-radius: var(--radius-full);\n background: var(--_accent); transform: scale(0);\n transition: transform var(--duration-base) var(--ease-spring);\n}\n.twc-radio__input:checked + .twc-radio__dot { border-color: var(--_accent); }\n.twc-radio__input:checked + .twc-radio__dot::after { transform: scale(1); }\n.twc-radio__input:active + .twc-radio__dot { transform: scale(0.88); }\n.twc-radio__input:focus-visible + .twc-radio__dot { box-shadow: var(--ring); }\n.twc-radio[data-invalid=\"true\"] .twc-radio__dot { border-color: var(--color-danger); }\n.twc-radio__text { display: flex; flex-direction: column; gap: 2px; }\n.twc-radio__label { font-size: var(--text-sm); font-weight: var(--font-medium); color: var(--color-text); line-height: 1.3; }\n.twc-radio__desc { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n`;\n document.head.appendChild(el);\n }, []);\n\n const autoId = React.useId();\n const fieldId = id || autoId;\n const errId = `${fieldId}-error`;\n const invalid = Boolean(error);\n\n const describedBy = [rest[\"aria-describedby\"], error ? errId : null].filter(Boolean).join(\" \") || undefined;\n\n const control = (\n <label className={`twc-radio ${className}`} data-size={size} data-tone={tone} data-invalid={invalid || undefined} data-disabled={disabled || undefined} htmlFor={fieldId}>\n <input\n id={fieldId}\n type=\"radio\"\n className=\"twc-radio__input\"\n name={name}\n value={value}\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n onChange={onChange}\n {...rest}\n aria-required={required || undefined}\n aria-invalid={invalid || undefined}\n aria-describedby={describedBy}\n />\n <span className=\"twc-radio__dot\" aria-hidden=\"true\" />\n {(label || description) ? (\n <span className=\"twc-radio__text\">\n {label ? <span className=\"twc-radio__label\">{label}</span> : null}\n {description ? <span className=\"twc-radio__desc\">{description}</span> : null}\n </span>\n ) : null}\n </label>\n );\n\n if (!error) return control;\n return (\n <div className=\"twc-field\">\n {control}\n <span id={errId} className=\"twc-field__error\">{error}</span>\n </div>\n );\n}\n","import React from \"react\";\n\nconst RATING_CSS = `\n.twc-rating { display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-sans); }\n.twc-rating__stars { display: inline-flex; gap: 2px; }\n.twc-rating__btn { border: none; background: transparent; padding: 1px; cursor: pointer; color: var(--color-border-strong); line-height: 0;\n transition: transform var(--duration-fast) var(--ease-spring), color var(--duration-fast) var(--ease-standard); }\n.twc-rating__btn:focus-visible { outline: none; box-shadow: var(--ring); border-radius: var(--radius-sm); }\n.twc-rating[data-readonly=\"true\"] .twc-rating__btn { cursor: default; }\n.twc-rating[data-disabled=\"true\"] { opacity: 0.55; }\n.twc-rating[data-disabled=\"true\"] .twc-rating__btn { cursor: not-allowed; }\n.twc-rating:not([data-readonly=\"true\"]):not([data-disabled=\"true\"]) .twc-rating__btn:hover { transform: scale(1.18); }\n/* tone -> star color (default warning = gold). An explicit color prop (--_c) still wins. */\n.twc-rating { --_accent: var(--color-warning); }\n.twc-rating[data-tone=\"primary\"] { --_accent: var(--color-primary); }\n.twc-rating[data-tone=\"success\"] { --_accent: var(--color-success); }\n.twc-rating[data-tone=\"warning\"] { --_accent: var(--color-warning); }\n.twc-rating[data-tone=\"danger\"] { --_accent: var(--color-danger); }\n.twc-rating[data-tone=\"info\"] { --_accent: var(--color-info); }\n.twc-rating[data-tone=\"neutral\"] { --_accent: var(--color-text); }\n.twc-rating__btn[data-on=\"true\"] { color: var(--_c, var(--_accent)); }\n.twc-rating__btn svg { width: var(--_sz, 24px); height: var(--_sz, 24px); display: block; }\n.twc-rating[data-size=\"sm\"] { --_sz: 18px; }\n.twc-rating[data-size=\"lg\"] { --_sz: 32px; }\n.twc-rating__value { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text-muted); font-variant-numeric: tabular-nums; }\n`;\n\nconst StarPath = \"M12 2l2.9 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14l-5-4.87 7.1-1.01L12 2z\";\n\nexport function Rating({\n value,\n defaultValue = 0,\n count = 5,\n size = \"md\",\n tone = \"warning\",\n color,\n readOnly = false,\n disabled = false,\n showValue = false,\n onChange,\n className = \"\",\n style,\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-rating-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-rating-styles\";\n el.textContent = RATING_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [internal, setInternal] = React.useState(defaultValue);\n const [hover, setHover] = React.useState(0);\n const val = value !== undefined ? value : internal;\n const shown = hover || val;\n const interactive = !readOnly && !disabled;\n const btnRefs = React.useRef([]);\n // The star that holds the roving tab stop: the checked star, or the first when unset.\n const tabStar = Math.min(count, Math.max(1, Math.round(val) || 1));\n\n const set = (v) => { if (!interactive) return; if (value === undefined) setInternal(v); onChange?.(v); };\n\n const onKeyDown = (e) => {\n if (!interactive) return;\n let next;\n if (e.key === \"ArrowRight\" || e.key === \"ArrowUp\") next = Math.min(count, val + 1);\n else if (e.key === \"ArrowLeft\" || e.key === \"ArrowDown\") next = Math.max(1, val - 1);\n else if (e.key === \"Home\") next = 1;\n else if (e.key === \"End\") next = count;\n else return;\n e.preventDefault();\n set(next);\n btnRefs.current[next - 1]?.focus();\n };\n\n return (\n <div className={`twc-rating ${className}`} data-size={size} data-tone={tone} data-readonly={readOnly || undefined} data-disabled={disabled || undefined}\n style={color ? { \"--_c\": color, ...style } : style} role=\"radiogroup\" aria-label=\"Rating\" aria-disabled={disabled || undefined} {...rest}>\n <span className=\"twc-rating__stars\" onMouseLeave={() => setHover(0)} onKeyDown={onKeyDown}>\n {Array.from({ length: count }).map((_, i) => {\n const n = i + 1;\n return (\n <button key={n} ref={(el) => { btnRefs.current[i] = el; }} type=\"button\" className=\"twc-rating__btn\" data-on={n <= shown || undefined}\n role=\"radio\" aria-label={`${n} star${n > 1 ? \"s\" : \"\"}`} aria-checked={n === val}\n disabled={readOnly || disabled} tabIndex={interactive && n === tabStar ? 0 : -1}\n onMouseEnter={() => interactive && setHover(n)} onClick={() => set(n === val ? 0 : n)}>\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d={StarPath} /></svg>\n </button>\n );\n })}\n </span>\n {showValue ? <span className=\"twc-rating__value\">{val.toFixed(1)}</span> : null}\n </div>\n );\n}\n","import React from \"react\";\n\nconst SIDEBAR_CSS = `\n.twc-sidebar { display: flex; flex-direction: column; height: 100%; font-family: var(--font-sans);\n background: var(--color-surface); border-inline-end: var(--border-thin) solid var(--color-border);\n flex: 0 0 248px; min-width: 0; width: 248px; max-width: 248px;\n transition: flex-basis var(--duration-base) var(--ease-standard), width var(--duration-base) var(--ease-standard), max-width var(--duration-base) var(--ease-standard); overflow: hidden; }\n.twc-sidebar[data-collapsed=\"true\"] { flex-basis: 68px; width: 68px; max-width: 68px; }\n.twc-sidebar__head { display: flex; align-items: center; gap: var(--space-2-5); height: 60px; padding: 0 var(--space-4); flex: none;\n border-bottom: var(--border-thin) solid var(--color-divider); }\n.twc-sidebar__brand { display: inline-flex; align-items: center; gap: var(--space-2-5); font-weight: var(--font-extrabold); font-size: var(--text-lg); letter-spacing: -0.02em; color: var(--color-text); white-space: nowrap; overflow: hidden; }\n.twc-sidebar__nav { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; padding: var(--space-3); display: flex; flex-direction: column; gap: 2px; }\n.twc-sidebar__section { font-size: 10px; font-weight: var(--font-bold); letter-spacing: var(--tracking-wider); text-transform: uppercase; color: var(--color-text-subtle); padding: var(--space-3) var(--space-3) var(--space-1); white-space: nowrap; }\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__section { display: none; }\n.twc-sidebar__item { display: flex; align-items: center; gap: var(--space-3); padding: 9px 11px; border-radius: var(--radius-md);\n font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text-muted); text-decoration: none; cursor: pointer;\n border: none; background: none; font-family: inherit; width: 100%; min-width: 0; text-align: start; white-space: nowrap; overflow: hidden;\n transition: background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard); }\n.twc-sidebar__item:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-sidebar__item[data-active=\"true\"] { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\n.twc-sidebar__item:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-sidebar__ic { flex: none; display: inline-flex; }\n.twc-sidebar__ic svg { width: 19px; height: 19px; }\n.twc-sidebar__ic--initial { width: 19px; justify-content: center; font-size: var(--text-sm); font-weight: var(--font-bold); text-transform: uppercase; line-height: 1; }\n.twc-sidebar:not([data-collapsed=\"true\"]) .twc-sidebar__ic--initial { display: none; }\n.twc-sidebar__label { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__label, .twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__badge { display: none; }\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__head { padding: 0; justify-content: center; }\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__brand, .twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__foot-user { font-size: 0; gap: 0; }\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__foot-user { justify-content: center; }\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__brand > :not(:first-child), .twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__foot-user > * > :not(:first-child) { display: none; }\n.twc-sidebar__badge { flex: none; font-size: 11px; font-weight: var(--font-bold); padding: 1px 7px; border-radius: var(--radius-full); background: var(--color-primary); color: var(--color-primary-fg); }\n.twc-sidebar__foot { flex: none; border-top: var(--border-thin) solid var(--color-divider); padding: var(--space-2); }\n.twc-sidebar__foot-user { display: flex; align-items: center; padding: 6px 6px 8px; }\n.twc-sidebar__collapse { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; padding: 9px; border: none; background: none; cursor: pointer;\n color: var(--color-text-muted); border-radius: var(--radius-md); font-family: inherit; font-size: var(--text-xs); font-weight: var(--font-semibold); }\n.twc-sidebar__collapse:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-sidebar__collapse svg { width: 18px; height: 18px; transition: transform var(--duration-base) var(--ease-spring); }\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__collapse svg { transform: rotate(180deg); }\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__item { gap: 0; justify-content: center; padding: 9px 0; width: 40px; margin: 0 auto; }\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__foot { display: flex; flex-direction: column; align-items: center; padding: var(--space-2) 0; }\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__collapse { width: auto; padding: 11px; gap: 0; margin: 0; }\n.twc-sidebar[data-collapsed=\"true\"] .twc-sidebar__collapse span { display: none; }\n`;\n\nexport function Sidebar({\n brand,\n items,\n footer,\n collapsed: collapsedProp,\n defaultCollapsed = false,\n collapsible = true,\n onCollapsedChange,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-sidebar-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-sidebar-styles\";\n el.textContent = SIDEBAR_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [internal, setInternal] = React.useState(defaultCollapsed);\n const collapsed = collapsedProp !== undefined ? collapsedProp : internal;\n const toggle = () => { const next = !collapsed; if (collapsedProp === undefined) setInternal(next); onCollapsedChange?.(next); };\n\n // Block javascript:/data:/vbscript: URLs from reaching a DOM href (trust boundary).\n const safeHref = (url) => {\n if (url == null) return undefined;\n const s = String(url).replace(/[\\x00-\\x20]+/g, \"\").toLowerCase();\n return s.startsWith(\"javascript:\") || s.startsWith(\"data:\") || s.startsWith(\"vbscript:\") ? undefined : url;\n };\n\n return (\n <aside className={`twc-sidebar ${className}`} data-collapsed={collapsed || undefined} {...rest}>\n {brand ? <div className=\"twc-sidebar__head\"><span className=\"twc-sidebar__brand\">{brand}</span></div> : null}\n <nav className=\"twc-sidebar__nav\">\n {items.map((it, i) =>\n it.section ? (\n <div key={i} className=\"twc-sidebar__section\">{it.section}</div>\n ) : (\n (() => {\n const href = safeHref(it.href);\n const labelStr = typeof it.label === \"string\" ? it.label : undefined;\n const inner = (\n <>\n {it.icon ? (\n <span className=\"twc-sidebar__ic\" aria-hidden=\"true\">{it.icon}</span>\n ) : labelStr != null ? (\n <span className=\"twc-sidebar__ic twc-sidebar__ic--initial\" aria-hidden=\"true\">{labelStr.charAt(0)}</span>\n ) : null}\n <span className=\"twc-sidebar__label\">{it.label}</span>\n {it.badge != null ? <span className=\"twc-sidebar__badge\">{it.badge}</span> : null}\n </>\n );\n const common = {\n className: \"twc-sidebar__item\",\n \"data-active\": it.active || undefined,\n \"aria-current\": it.active ? \"page\" : undefined,\n onClick: it.onClick,\n title: collapsed && labelStr != null ? labelStr : undefined,\n \"aria-label\": collapsed && labelStr != null ? labelStr : undefined,\n };\n return href != null ? (\n <a key={i} href={href} {...common}>{inner}</a>\n ) : (\n <button key={i} type=\"button\" {...common}>{inner}</button>\n );\n })()\n )\n )}\n </nav>\n {(footer || collapsible) ? (\n <div className=\"twc-sidebar__foot\">\n {footer ? <div className=\"twc-sidebar__foot-user\">{footer}</div> : null}\n {collapsible ? (\n <button type=\"button\" className=\"twc-sidebar__collapse\" onClick={toggle} aria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m15 18-6-6 6-6\"/></svg>\n <span>Collapse</span>\n </button>\n ) : null}\n </div>\n ) : null}\n </aside>\n );\n}\n","import React from \"react\";\n\nexport function Skeleton({\n variant = \"text\",\n width,\n height,\n lines = 1,\n className = \"\",\n style,\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-skeleton-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-skeleton-styles\";\n el.textContent = `\n.twc-skeleton {\n position: relative; overflow: hidden;\n background: var(--color-surface-sunken); border-radius: var(--radius-md);\n}\n.twc-skeleton::after {\n content: \"\"; position: absolute; inset: 0; transform: translateX(-100%);\n background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--color-text) 8%, transparent), transparent);\n animation: twico-shimmer 1.4s infinite;\n}\n.twc-skeleton[data-variant=\"text\"] { height: 0.9em; border-radius: var(--radius-sm); }\n.twc-skeleton[data-variant=\"circle\"] { aspect-ratio: 1; border-radius: var(--radius-full); }\n.twc-skeleton[data-variant=\"rect\"] { border-radius: var(--radius-md); }\n.twc-skeleton__group { display: flex; flex-direction: column; gap: 8px; }\n.twc-skeleton__group .twc-skeleton:last-child { width: 70%; }\n/* The shimmer signals loading — keep it animating even under reduced motion. */\n@media (prefers-reduced-motion: reduce) {\n .twc-skeleton::after { animation-duration: 1.4s !important; animation-iteration-count: infinite !important; }\n}\n`;\n document.head.appendChild(el);\n }, []);\n\n if (variant === \"text\" && lines > 1) {\n // `height` and consumer `style` apply to the group wrapper; `width` applies per line.\n return (\n <div className={`twc-skeleton__group ${className}`} style={{ height, ...style }} {...rest}>\n {Array.from({ length: lines }).map((_, i) => (\n <span key={i} className=\"twc-skeleton\" data-variant=\"text\" style={{ width: width || \"100%\" }} />\n ))}\n </div>\n );\n }\n\n return (\n <span\n className={`twc-skeleton ${className}`}\n data-variant={variant}\n style={{ width, height, ...style }}\n {...rest}\n />\n );\n}\n","import React from \"react\";\n\nconst SLIDER_CSS = `\n.twc-slider { font-family: var(--font-sans); }\n/* tone → accent set (default primary). Mirrors Button's --_accent model; Badge's tone vocabulary. */\n.twc-slider { --_accent: var(--color-primary); --_accent-fg: var(--color-primary-fg); --_accent-subtle: var(--color-primary-subtle); --_accent-subtle-fg: var(--color-primary-subtle-fg); --_accent-border: var(--color-primary-border); }\n.twc-slider[data-tone=\"success\"] { --_accent: var(--color-success); --_accent-fg: var(--color-success-fg); --_accent-subtle: var(--color-success-subtle); --_accent-subtle-fg: var(--color-success-subtle-fg); --_accent-border: var(--color-success); }\n.twc-slider[data-tone=\"warning\"] { --_accent: var(--color-warning); --_accent-fg: var(--color-warning-fg); --_accent-subtle: var(--color-warning-subtle); --_accent-subtle-fg: var(--color-warning-subtle-fg); --_accent-border: var(--color-warning); }\n.twc-slider[data-tone=\"danger\"] { --_accent: var(--color-danger); --_accent-fg: var(--color-danger-fg); --_accent-subtle: var(--color-danger-subtle); --_accent-subtle-fg: var(--color-danger-subtle-fg); --_accent-border: var(--color-danger); }\n.twc-slider[data-tone=\"info\"] { --_accent: var(--color-info); --_accent-fg: var(--color-info-fg); --_accent-subtle: var(--color-info-subtle); --_accent-subtle-fg: var(--color-info-subtle-fg); --_accent-border: var(--color-info); }\n.twc-slider[data-tone=\"neutral\"] { --_accent: var(--color-text); --_accent-fg: var(--color-surface); --_accent-subtle: var(--color-surface-sunken); --_accent-subtle-fg: var(--color-text-muted); --_accent-border: var(--color-border-strong); }\n.twc-slider__msgs { display: flex; flex-direction: column; gap: var(--space-1-5); margin-top: var(--space-2); }\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n.twc-slider__head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: var(--space-2); }\n.twc-slider__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); }\n.twc-slider__value { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--_accent); font-variant-numeric: tabular-nums; }\n.twc-slider__track {\n position: relative; height: 22px; display: flex; align-items: center; cursor: pointer; touch-action: none;\n}\n.twc-slider[data-disabled=\"true\"] { opacity: 0.55; }\n.twc-slider[data-disabled=\"true\"] .twc-slider__track { cursor: not-allowed; }\n.twc-slider__rail { position: absolute; left: 0; right: 0; height: 6px; border-radius: var(--radius-full); background: var(--color-surface-sunken); box-shadow: inset 0 0 0 1px var(--color-border); }\n.twc-slider__fill { position: absolute; height: 6px; border-radius: var(--radius-full); background: var(--_accent); }\n.twc-slider__thumb {\n position: absolute; width: 18px; height: 18px; border-radius: var(--radius-full);\n background: var(--color-surface); border: var(--border-thick) solid var(--_accent);\n box-shadow: var(--shadow-sm); transform: translateX(-50%); top: 50%; margin-top: -9px;\n transition: box-shadow var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring);\n}\n.twc-slider__thumb:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-slider__thumb:active { transform: translateX(-50%) scale(1.15); }\n.twc-slider__ticks { position: absolute; left: 0; right: 0; top: 50%; }\n.twc-slider__tick { position: absolute; width: 3px; height: 3px; border-radius: var(--radius-full); background: var(--color-border-strong); transform: translate(-50%, -50%); }\n.twc-slider__bubble {\n position: absolute; bottom: calc(100% + 8px); transform: translateX(-50%) scale(0.9); transform-origin: bottom center;\n background: var(--color-text); color: var(--color-surface); font-size: var(--text-xs); font-weight: var(--font-semibold);\n padding: 3px 8px; border-radius: var(--radius-md); white-space: nowrap; opacity: 0; pointer-events: none;\n transition: opacity var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring);\n}\n.twc-slider__track[data-show-bubble=\"true\"] .twc-slider__bubble { opacity: 1; transform: translateX(-50%) scale(1); }\n`;\n\nexport function Slider({\n label,\n hint,\n error,\n value,\n defaultValue = 0,\n min: minProp = 0,\n max: maxProp = 100,\n step: stepProp = 1,\n tone = \"primary\",\n disabled = false,\n showValue = true,\n showTicks = false,\n formatValue,\n onChange,\n id,\n className = \"\",\n ...rest\n}) {\n // Guard against invalid range/step props so the component never produces NaN/Infinity.\n const min = Number.isFinite(minProp) ? minProp : 0;\n const max = Number.isFinite(maxProp) && maxProp > min ? maxProp : min + 1;\n const step = Number.isFinite(stepProp) && stepProp > 0 ? stepProp : 1;\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-slider-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-slider-styles\";\n el.textContent = SLIDER_CSS;\n document.head.appendChild(el);\n }, []);\n\n const autoId = React.useId();\n const fieldId = id || autoId;\n const [internal, setInternal] = React.useState(defaultValue);\n const val = value !== undefined ? value : internal;\n const trackRef = React.useRef(null);\n const [dragging, setDragging] = React.useState(false);\n\n const pct = ((val - min) / (max - min)) * 100;\n const fmt = (v) => (formatValue ? formatValue(v) : v);\n const clampSnap = (raw) => {\n const stepped = Math.round((raw - min) / step) * step + min;\n return Math.min(max, Math.max(min, Math.round(stepped * 1e6) / 1e6));\n };\n const setVal = (v) => { if (value === undefined) setInternal(v); onChange?.(v); };\n\n const fromClientX = (clientX) => {\n const node = trackRef.current;\n if (!node) return val; // ref gone (e.g. a stray event after unmount) — never crash\n const r = node.getBoundingClientRect();\n const ratio = Math.min(1, Math.max(0, (clientX - r.left) / r.width));\n return clampSnap(min + ratio * (max - min));\n };\n\n // Detach any in-flight drag listeners if the component unmounts mid-drag, so we\n // neither leak window listeners nor fire setState/getBoundingClientRect after unmount.\n const dragCleanupRef = React.useRef(null);\n React.useEffect(() => () => dragCleanupRef.current?.(), []);\n\n function onPointerDown(e) {\n if (disabled) return;\n e.preventDefault();\n setDragging(true);\n setVal(fromClientX(e.clientX));\n const move = (ev) => setVal(fromClientX(ev.clientX));\n const detach = () => {\n window.removeEventListener(\"pointermove\", move);\n window.removeEventListener(\"pointerup\", up);\n dragCleanupRef.current = null;\n };\n const up = () => { setDragging(false); detach(); };\n dragCleanupRef.current = detach;\n window.addEventListener(\"pointermove\", move);\n window.addEventListener(\"pointerup\", up);\n }\n function onKeyDown(e) {\n if (disabled) return;\n let next = val;\n if (e.key === \"ArrowRight\" || e.key === \"ArrowUp\") next = clampSnap(val + step);\n else if (e.key === \"ArrowLeft\" || e.key === \"ArrowDown\") next = clampSnap(val - step);\n else if (e.key === \"Home\") next = min;\n else if (e.key === \"End\") next = max;\n else return;\n e.preventDefault();\n setVal(next);\n }\n\n const ticks = showTicks ? Math.floor((max - min) / step) + 1 : 0;\n const labelId = label ? `${fieldId}-label` : undefined;\n const descId = `${fieldId}-desc`;\n const invalid = Boolean(error);\n const display = fmt(val);\n // Human-readable value for assistive tech, only when a custom format is in play.\n const valueText = formatValue && (typeof display === \"string\" || typeof display === \"number\") ? String(display) : undefined;\n\n return (\n <div className={`twc-slider ${className}`} data-tone={tone} data-disabled={disabled || undefined} {...rest}>\n {(label || showValue) ? (\n <div className=\"twc-slider__head\">\n {label ? <label className=\"twc-slider__label\" id={labelId}>{label}</label> : <span />}\n {showValue ? <span className=\"twc-slider__value\">{display}</span> : null}\n </div>\n ) : null}\n <div className=\"twc-slider__track\" ref={trackRef} data-show-bubble={dragging || undefined} onPointerDown={onPointerDown}>\n <div className=\"twc-slider__rail\" />\n <div className=\"twc-slider__fill\" style={{ width: `${pct}%` }} />\n {showTicks ? (\n <div className=\"twc-slider__ticks\">\n {Array.from({ length: ticks }).map((_, i) => (\n <span key={i} className=\"twc-slider__tick\" style={{ left: `${ticks > 1 ? (i / (ticks - 1)) * 100 : 0}%` }} />\n ))}\n </div>\n ) : null}\n <div\n id={fieldId}\n className=\"twc-slider__thumb\"\n style={{ left: `${pct}%` }}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={val}\n aria-valuetext={valueText}\n aria-labelledby={labelId}\n aria-label={labelId ? undefined : \"Slider\"}\n aria-describedby={error || hint ? descId : undefined}\n aria-invalid={invalid || undefined}\n aria-disabled={disabled || undefined}\n onKeyDown={onKeyDown}\n >\n <span className=\"twc-slider__bubble\">{display}</span>\n </div>\n </div>\n {error || hint ? (\n <div className=\"twc-slider__msgs\">\n {error ? <span id={descId} className=\"twc-field__error\">{error}</span> : <span id={descId} className=\"twc-field__hint\">{hint}</span>}\n </div>\n ) : null}\n </div>\n );\n}\n","import React from \"react\";\n\nexport function Spinner({\n size = \"md\",\n color,\n tone = \"current\",\n label = \"Loading\",\n className = \"\",\n ...rest\n}) {\n // `color` is the preferred name; `tone` is a deprecated alias. `color` wins when both are set.\n const resolvedColor = color ?? tone;\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-spinner-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-spinner-styles\";\n el.textContent = `\n.twc-spinner {\n --_sz: 24px; --_bw: 2.5px;\n display: inline-block; width: var(--_sz); height: var(--_sz);\n /* Default to currentColor so the spinner is visible in any context — including\n inside a solid button, where it inherits the button's (light) text color. */\n border: var(--_bw) solid var(--_track, color-mix(in srgb, currentColor 25%, transparent));\n border-top-color: var(--_c, currentColor);\n border-radius: var(--radius-full); animation: twico-spin 0.65s linear infinite;\n}\n.twc-spinner[data-size=\"sm\"] { --_sz: 16px; --_bw: 2px; }\n.twc-spinner[data-size=\"lg\"] { --_sz: 36px; --_bw: 3.5px; }\n.twc-spinner[data-size=\"xl\"] { --_sz: 52px; --_bw: 4px; }\n.twc-spinner[data-tone=\"primary\"] { --_c: var(--color-primary); --_track: var(--color-border); }\n.twc-spinner[data-tone=\"success\"] { --_c: var(--color-success); --_track: var(--color-border); }\n.twc-spinner[data-tone=\"warning\"] { --_c: var(--color-warning); --_track: var(--color-border); }\n.twc-spinner[data-tone=\"danger\"] { --_c: var(--color-danger); --_track: var(--color-border); }\n.twc-spinner[data-tone=\"info\"] { --_c: var(--color-info); --_track: var(--color-border); }\n.twc-spinner[data-tone=\"white\"] { --_c: #fff; --_track: rgba(255,255,255,0.35); }\n.twc-spinner[data-tone=\"neutral\"] { --_c: var(--color-text); --_track: var(--color-border); }\n/* A loading spinner conveys state — keep it spinning even under reduced motion. */\n@media (prefers-reduced-motion: reduce) {\n .twc-spinner { animation-duration: 0.65s !important; animation-iteration-count: infinite !important; }\n}\n`;\n document.head.appendChild(el);\n }, []);\n\n return <span className={`twc-spinner ${className}`} data-size={size} data-tone={resolvedColor} role=\"status\" aria-label={label} {...rest} />;\n}\n","import React from \"react\";\n\nconst STAT_CSS = `\n.twc-stat { display: flex; flex-direction: column; gap: 6px; font-family: var(--font-sans);\n background: var(--color-surface); border: var(--border-thin) solid var(--color-border);\n border-radius: var(--radius-lg); padding: var(--space-5); }\n.twc-stat[data-plain=\"true\"] { background: transparent; border: none; padding: 0; }\n.twc-stat__top { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }\n.twc-stat__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text-muted); }\n.twc-stat__icon { flex: none; display: inline-grid; place-items: center; width: 38px; height: 38px; border-radius: var(--radius-md);\n background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); }\n.twc-stat__icon svg { width: 20px; height: 20px; }\n.twc-stat__value { font-size: var(--text-3xl); font-weight: var(--font-extrabold); letter-spacing: -0.02em; color: var(--color-text); line-height: 1.1; }\n.twc-stat__foot { display: flex; align-items: center; gap: 8px; font-size: var(--text-sm); }\n.twc-stat__delta { display: inline-flex; align-items: center; gap: 3px; font-weight: var(--font-bold); padding: 2px 7px; border-radius: var(--radius-full); }\n.twc-stat__delta svg { width: 14px; height: 14px; }\n.twc-stat__delta[data-dir=\"up\"] { color: var(--color-success-subtle-fg); background: var(--color-success-subtle); }\n.twc-stat__delta[data-dir=\"down\"] { color: var(--color-danger-subtle-fg); background: var(--color-danger-subtle); }\n.twc-stat__delta[data-dir=\"flat\"] { color: var(--color-text-muted); background: var(--color-surface-sunken); }\n.twc-stat__help { color: var(--color-text-subtle); }\n`;\n\nconst Arrow = ({ dir }) => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n {dir === \"up\" ? <path d=\"M7 17 17 7M9 7h8v8\" /> : dir === \"down\" ? <path d=\"M7 7l10 10M17 9v8H9\" /> : <path d=\"M5 12h14\" />}\n </svg>\n);\n\nexport function Stat({\n label,\n value,\n icon,\n delta,\n deltaDirection,\n helpText,\n plain = false,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-stat-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-stat-styles\";\n el.textContent = STAT_CSS;\n document.head.appendChild(el);\n }, []);\n\n const isNeg = delta != null && String(delta).trim().startsWith(\"-\");\n const dir = deltaDirection || (delta != null ? (isNeg ? \"down\" : \"up\") : undefined);\n\n return (\n <div className={`twc-stat ${className}`} data-plain={plain || undefined} {...rest}>\n <div className=\"twc-stat__top\">\n <span className=\"twc-stat__label\">{label}</span>\n {icon ? <span className=\"twc-stat__icon\" aria-hidden=\"true\">{icon}</span> : null}\n </div>\n <div className=\"twc-stat__value\">{value}</div>\n {(delta != null || helpText) ? (\n <div className=\"twc-stat__foot\">\n {delta != null ? <span className=\"twc-stat__delta\" data-dir={dir}><Arrow dir={dir} />{delta}</span> : null}\n {helpText ? <span className=\"twc-stat__help\">{helpText}</span> : null}\n </div>\n ) : null}\n </div>\n );\n}\n","import React from \"react\";\n\nconst STEPPER_CSS = `\n.twc-stepper { display: flex; font-family: var(--font-sans); }\n/* tone → accent set (default primary). Mirrors Button's --_accent model; Badge's tone vocabulary. */\n.twc-stepper { --_accent: var(--color-primary); --_accent-fg: var(--color-primary-fg); --_accent-subtle: var(--color-primary-subtle); --_accent-subtle-fg: var(--color-primary-subtle-fg); --_accent-border: var(--color-primary-border); }\n.twc-stepper[data-tone=\"success\"] { --_accent: var(--color-success); --_accent-fg: var(--color-success-fg); --_accent-subtle: var(--color-success-subtle); --_accent-subtle-fg: var(--color-success-subtle-fg); --_accent-border: var(--color-success); }\n.twc-stepper[data-tone=\"warning\"] { --_accent: var(--color-warning); --_accent-fg: var(--color-warning-fg); --_accent-subtle: var(--color-warning-subtle); --_accent-subtle-fg: var(--color-warning-subtle-fg); --_accent-border: var(--color-warning); }\n.twc-stepper[data-tone=\"danger\"] { --_accent: var(--color-danger); --_accent-fg: var(--color-danger-fg); --_accent-subtle: var(--color-danger-subtle); --_accent-subtle-fg: var(--color-danger-subtle-fg); --_accent-border: var(--color-danger); }\n.twc-stepper[data-tone=\"info\"] { --_accent: var(--color-info); --_accent-fg: var(--color-info-fg); --_accent-subtle: var(--color-info-subtle); --_accent-subtle-fg: var(--color-info-subtle-fg); --_accent-border: var(--color-info); }\n.twc-stepper[data-tone=\"neutral\"] { --_accent: var(--color-text); --_accent-fg: var(--color-surface); --_accent-subtle: var(--color-surface-sunken); --_accent-subtle-fg: var(--color-text-muted); --_accent-border: var(--color-border-strong); }\n.twc-stepper[data-orientation=\"horizontal\"] { flex-direction: row; align-items: flex-start; }\n.twc-stepper[data-orientation=\"vertical\"] { flex-direction: column; gap: 4px; }\n.twc-step { display: flex; flex: 1; min-width: 0; }\n.twc-stepper[data-orientation=\"horizontal\"] .twc-step { flex-direction: column; align-items: center; text-align: center; position: relative; }\n.twc-stepper[data-orientation=\"vertical\"] .twc-step { flex-direction: row; align-items: flex-start; gap: var(--space-3); flex: none; }\n.twc-step__indicator {\n position: relative; z-index: 1; flex: none; width: 32px; height: 32px; border-radius: var(--radius-full);\n display: grid; place-items: center; font-size: var(--text-sm); font-weight: var(--font-bold);\n background: var(--color-surface); color: var(--color-text-subtle);\n border: var(--border-medium) solid var(--color-border-strong);\n transition: background-color var(--duration-base) var(--ease-standard), border-color var(--duration-base) var(--ease-standard), color var(--duration-base) var(--ease-standard), transform var(--duration-base) var(--ease-spring);\n}\n.twc-step__indicator svg { width: 17px; height: 17px; }\n.twc-step[data-state=\"active\"] .twc-step__indicator { border-color: var(--_accent); color: var(--_accent); box-shadow: 0 0 0 4px var(--_accent-subtle); }\n.twc-step[data-state=\"complete\"] .twc-step__indicator { background: var(--_accent); border-color: var(--_accent); color: var(--_accent-fg); }\n.twc-step[data-state=\"error\"] .twc-step__indicator { background: var(--color-danger); border-color: var(--color-danger); color: var(--color-danger-fg); }\n.twc-step[data-clickable=\"true\"] { cursor: pointer; }\n.twc-step[data-clickable=\"true\"]:hover .twc-step__indicator { transform: scale(1.06); }\n.twc-step__body { display: flex; flex-direction: column; gap: 1px; }\n.twc-stepper[data-orientation=\"horizontal\"] .twc-step__body { margin-top: 8px; padding: 0 6px; }\n.twc-step__title { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); }\n.twc-step[data-state=\"upcoming\"] .twc-step__title { color: var(--color-text-muted); }\n.twc-step__desc { font-size: var(--text-xs); color: var(--color-text-subtle); }\n.twc-step__connector { background: var(--color-border); transition: background-color var(--duration-base) var(--ease-standard); }\n.twc-stepper[data-orientation=\"horizontal\"] .twc-step__connector { position: absolute; top: 16px; height: 2px; inset-inline-start: calc(50% + 22px); inset-inline-end: calc(-50% + 22px); }\n.twc-stepper[data-orientation=\"vertical\"] .twc-step__connector { width: 2px; flex: 1; min-height: 22px; margin: 4px 0; align-self: stretch; margin-inline-start: 15px; }\n.twc-stepper[data-orientation=\"vertical\"] .twc-step__col { display: flex; flex-direction: column; align-items: center; }\n.twc-step[data-state=\"complete\"] .twc-step__connector, .twc-step[data-state=\"active\"] .twc-step__connector { background: var(--_accent); }\n.twc-stepper[data-orientation=\"vertical\"] .twc-step__vbody { padding-bottom: var(--space-2); }\n`;\n\nconst CheckIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"/></svg>\n);\nconst BangIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M12 8v5M12 17h.01\"/></svg>\n);\n\nexport function Stepper({\n steps,\n active: activeProp,\n defaultActive = 0,\n orientation = \"horizontal\",\n tone = \"primary\",\n onStepClick,\n clickable = false,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-stepper-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-stepper-styles\";\n el.textContent = STEPPER_CSS;\n document.head.appendChild(el);\n }, []);\n\n // Controlled when `active` is passed; uncontrolled (internal state seeded by\n // `defaultActive`) otherwise. A clicked step advances the internal index in\n // uncontrolled mode, and onStepClick always fires.\n const [activeInternal, setActiveInternal] = React.useState(defaultActive);\n const active = activeProp !== undefined ? activeProp : activeInternal;\n const handleStep = (i) => { if (activeProp === undefined) setActiveInternal(i); onStepClick?.(i); };\n\n const stateOf = (i, step) => {\n if (step.error) return \"error\";\n if (i < active) return \"complete\";\n if (i === active) return \"active\";\n return \"upcoming\";\n };\n\n return (\n <div className={`twc-stepper ${className}`} data-orientation={orientation} data-tone={tone} {...rest}>\n {steps.map((step, i) => {\n const state = stateOf(i, step);\n const last = i === steps.length - 1;\n const isClickable = clickable && i <= active;\n const interactive = isClickable\n ? {\n role: \"button\",\n tabIndex: 0,\n onClick: () => handleStep(i),\n onKeyDown: (e) => {\n if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); handleStep(i); }\n },\n }\n : null;\n const indicator = (\n <span className=\"twc-step__indicator\" aria-hidden=\"true\">\n {state === \"complete\" ? <CheckIcon /> : state === \"error\" ? <BangIcon /> : (step.icon || i + 1)}\n </span>\n );\n if (orientation === \"vertical\") {\n return (\n <div key={i} className=\"twc-step\" data-state={state} data-clickable={isClickable || undefined}\n aria-current={state === \"active\" ? \"step\" : undefined} {...interactive}>\n <div className=\"twc-step__col\">\n {indicator}\n {!last ? <span className=\"twc-step__connector\" /> : null}\n </div>\n <div className=\"twc-step__body twc-step__vbody\">\n <span className=\"twc-step__title\">{step.title}</span>\n {step.description ? <span className=\"twc-step__desc\">{step.description}</span> : null}\n </div>\n </div>\n );\n }\n return (\n <div key={i} className=\"twc-step\" data-state={state} data-clickable={isClickable || undefined}\n aria-current={state === \"active\" ? \"step\" : undefined} {...interactive}>\n {indicator}\n {!last ? <span className=\"twc-step__connector\" /> : null}\n <div className=\"twc-step__body\">\n <span className=\"twc-step__title\">{step.title}</span>\n {step.description ? <span className=\"twc-step__desc\">{step.description}</span> : null}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n","import React from \"react\";\n\nexport function Switch({\n label,\n description,\n error,\n checked,\n defaultChecked,\n required = false,\n disabled = false,\n size = \"md\",\n tone = \"primary\",\n id,\n className = \"\",\n onChange,\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-switch-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-switch-styles\";\n el.textContent = `\n/* tone → accent set (default primary). Mirrors Button's --_accent model; Badge's tone vocabulary. */\n.twc-switch { --_accent: var(--color-primary); --_accent-fg: var(--color-primary-fg); --_accent-subtle: var(--color-primary-subtle); --_accent-subtle-fg: var(--color-primary-subtle-fg); --_accent-border: var(--color-primary-border); }\n.twc-switch[data-tone=\"success\"] { --_accent: var(--color-success); --_accent-fg: var(--color-success-fg); --_accent-subtle: var(--color-success-subtle); --_accent-subtle-fg: var(--color-success-subtle-fg); --_accent-border: var(--color-success); }\n.twc-switch[data-tone=\"warning\"] { --_accent: var(--color-warning); --_accent-fg: var(--color-warning-fg); --_accent-subtle: var(--color-warning-subtle); --_accent-subtle-fg: var(--color-warning-subtle-fg); --_accent-border: var(--color-warning); }\n.twc-switch[data-tone=\"danger\"] { --_accent: var(--color-danger); --_accent-fg: var(--color-danger-fg); --_accent-subtle: var(--color-danger-subtle); --_accent-subtle-fg: var(--color-danger-subtle-fg); --_accent-border: var(--color-danger); }\n.twc-switch[data-tone=\"info\"] { --_accent: var(--color-info); --_accent-fg: var(--color-info-fg); --_accent-subtle: var(--color-info-subtle); --_accent-subtle-fg: var(--color-info-subtle-fg); --_accent-border: var(--color-info); }\n.twc-switch[data-tone=\"neutral\"] { --_accent: var(--color-text); --_accent-fg: var(--color-surface); --_accent-subtle: var(--color-surface-sunken); --_accent-subtle-fg: var(--color-text-muted); --_accent-border: var(--color-border-strong); }\n.twc-switch { display: inline-flex; align-items: center; gap: var(--space-3); cursor: pointer; font-family: var(--font-sans); --_tx: 1; }\n[dir=\"rtl\"] .twc-switch { --_tx: -1; }\n.twc-switch[data-disabled=\"true\"] { cursor: not-allowed; opacity: 0.55; }\n.twc-switch__input { position: absolute; opacity: 0; width: 0; height: 0; }\n.twc-switch__track {\n --_w: 44px; --_h: 24px; --_pad: 3px;\n position: relative; flex: none; width: var(--_w); height: var(--_h);\n background: var(--color-border-strong); border-radius: var(--radius-full);\n transition: background-color var(--duration-base) var(--ease-standard);\n}\n.twc-switch[data-size=\"sm\"] .twc-switch__track { --_w: 36px; --_h: 20px; }\n.twc-switch[data-size=\"lg\"] .twc-switch__track { --_w: 52px; --_h: 28px; --_pad: 4px; }\n.twc-switch__thumb {\n position: absolute; top: var(--_pad); inset-inline-start: var(--_pad);\n width: calc(var(--_h) - var(--_pad) * 2); height: calc(var(--_h) - var(--_pad) * 2);\n background: var(--_accent-fg); border-radius: var(--radius-full); box-shadow: var(--shadow-sm);\n transition: transform var(--duration-base) var(--ease-spring);\n}\n.twc-switch__input:checked + .twc-switch__track { background: var(--_accent); }\n.twc-switch__input:checked + .twc-switch__track .twc-switch__thumb { transform: translateX(calc((var(--_w) - var(--_h)) * var(--_tx))); }\n.twc-switch__input:focus-visible + .twc-switch__track { box-shadow: var(--ring); }\n.twc-switch__input:active + .twc-switch__track .twc-switch__thumb { width: calc(var(--_h) - var(--_pad) * 2 + 4px); }\n.twc-switch[data-invalid=\"true\"] .twc-switch__track { box-shadow: inset 0 0 0 var(--border-medium) var(--color-danger); }\n.twc-switch__text { display: flex; flex-direction: column; gap: 2px; }\n.twc-switch__label { font-size: var(--text-sm); font-weight: var(--font-medium); color: var(--color-text); line-height: 1.3; }\n.twc-switch__desc { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n`;\n document.head.appendChild(el);\n }, []);\n\n const autoId = React.useId();\n const fieldId = id || autoId;\n const errId = `${fieldId}-error`;\n const invalid = Boolean(error);\n\n const describedBy = [rest[\"aria-describedby\"], error ? errId : null].filter(Boolean).join(\" \") || undefined;\n\n const control = (\n <label className={`twc-switch ${className}`} data-size={size} data-tone={tone} data-invalid={invalid || undefined} data-disabled={disabled || undefined} htmlFor={fieldId}>\n <input\n id={fieldId}\n type=\"checkbox\"\n role=\"switch\"\n className=\"twc-switch__input\"\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n onChange={onChange}\n {...rest}\n aria-required={required || undefined}\n aria-invalid={invalid || undefined}\n aria-describedby={describedBy}\n />\n <span className=\"twc-switch__track\" aria-hidden=\"true\">\n <span className=\"twc-switch__thumb\" />\n </span>\n {(label || description) ? (\n <span className=\"twc-switch__text\">\n {label ? <span className=\"twc-switch__label\">{label}</span> : null}\n {description ? <span className=\"twc-switch__desc\">{description}</span> : null}\n </span>\n ) : null}\n </label>\n );\n\n if (!error) return control;\n return (\n <div className=\"twc-field\">\n {control}\n <span id={errId} className=\"twc-field__error\">{error}</span>\n </div>\n );\n}\n","import React from \"react\";\n\nconst TABLE_CSS = `\n.twc-table-wrap { width: 100%; overflow-x: auto; border-radius: var(--radius-lg); border: var(--border-thin) solid var(--color-border); background: var(--color-surface); }\n.twc-table { width: 100%; border-collapse: collapse; font-family: var(--font-sans); font-size: var(--text-sm); color: var(--color-text); }\n.twc-table thead th {\n text-align: start; font-weight: var(--font-semibold); color: var(--color-text-muted);\n font-size: var(--text-xs); letter-spacing: var(--tracking-wide); text-transform: uppercase;\n padding: var(--space-3) var(--space-4); background: var(--color-surface-sunken);\n border-bottom: var(--border-thin) solid var(--color-border); white-space: nowrap;\n}\n.twc-table th[data-align=\"right\"], .twc-table td[data-align=\"right\"] { text-align: end; }\n.twc-table th[data-align=\"center\"], .twc-table td[data-align=\"center\"] { text-align: center; }\n.twc-table th[data-sortable=\"true\"] { cursor: pointer; user-select: none; }\n.twc-table th[data-sortable=\"true\"]:hover { color: var(--color-text); }\n.twc-table__sort { display: inline-flex; align-items: center; gap: 5px; background: none; border: none; padding: 0; margin: 0; font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit; cursor: pointer; }\n.twc-table__sort:focus-visible { outline: var(--border-medium) solid var(--color-primary); outline-offset: 2px; border-radius: var(--radius-sm); }\n.twc-table__sort svg { width: 13px; height: 13px; opacity: 0.5; transition: opacity var(--duration-fast), transform var(--duration-fast); }\n.twc-table th[data-active=\"true\"] .twc-table__sort svg { opacity: 1; color: var(--color-primary); }\n.twc-table th[data-dir=\"desc\"] .twc-table__sort svg { transform: rotate(180deg); }\n.twc-table tbody td { padding: var(--space-3) var(--space-4); border-bottom: var(--border-thin) solid var(--color-divider); }\n.twc-table tbody tr:last-child td { border-bottom: none; }\n.twc-table[data-hover=\"true\"] tbody tr { transition: background-color var(--duration-fast) var(--ease-standard); }\n.twc-table[data-hover=\"true\"] tbody tr:hover { background: var(--color-surface-sunken); }\n.twc-table[data-striped=\"true\"] tbody tr:nth-child(even) { background: color-mix(in srgb, var(--color-surface-sunken) 55%, transparent); }\n.twc-table tbody tr[data-selected=\"true\"] { background: var(--color-primary-subtle); }\n.twc-table[data-size=\"sm\"] thead th { padding: var(--space-2) var(--space-3); }\n.twc-table[data-size=\"sm\"] tbody td { padding: var(--space-2) var(--space-3); }\n.twc-table[data-size=\"lg\"] thead th { padding: var(--space-4) var(--space-5); }\n.twc-table[data-size=\"lg\"] tbody td { padding: var(--space-4) var(--space-5); font-size: var(--text-base); }\n.twc-table[data-sticky=\"true\"] thead th { position: sticky; top: 0; z-index: 2; background: var(--color-surface); box-shadow: inset 0 calc(-1 * var(--border-thin)) 0 0 var(--color-border); }\n`;\n\nexport function Table({\n columns,\n rows: rowsProp,\n hover = true,\n striped = false,\n size = \"md\",\n sortable = false,\n sort: sortProp,\n defaultSort,\n onSortChange,\n rowKey,\n selectedKeys,\n stickyHeader = false,\n maxHeight,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-table-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-table-styles\";\n el.textContent = TABLE_CSS;\n document.head.appendChild(el);\n }, []);\n\n // Normalize each column to the canonical Datatable vocabulary (field / headerName / renderCell);\n // `header`/`render` are local shorthands for the render below.\n const cols = React.useMemo(\n () => (columns || []).map((c) => ({ ...c, header: c.headerName, render: c.renderCell })),\n [columns]\n );\n const dataRows = rowsProp || [];\n\n const [internalSort, setInternalSort] = React.useState(defaultSort || { field: null, dir: \"asc\" });\n const sort = (sortProp !== undefined ? sortProp : internalSort) || { field: null, dir: \"asc\" };\n\n const rows = React.useMemo(() => {\n if (!sortable || !sort.field) return dataRows;\n const col = cols.find((c) => c.field === sort.field);\n if (!col) return dataRows;\n const sorted = [...dataRows].sort((a, b) => {\n const av = a[sort.field], bv = b[sort.field];\n if (av == null) return 1; if (bv == null) return -1;\n if (typeof av === \"number\" && typeof bv === \"number\") return av - bv;\n return String(av).localeCompare(String(bv));\n });\n return sort.dir === \"desc\" ? sorted.reverse() : sorted;\n }, [dataRows, cols, sort, sortable]);\n\n function toggleSort(field) {\n const next = sort.field === field ? { field, dir: sort.dir === \"asc\" ? \"desc\" : \"asc\" } : { field, dir: \"asc\" };\n if (sortProp === undefined) setInternalSort(next);\n onSortChange?.(next);\n }\n\n const keyFn = rowKey || ((_, i) => i);\n const selected = new Set(selectedKeys || []);\n\n const wrapStyle = maxHeight !== undefined ? { ...rest.style, maxHeight, overflowY: \"auto\" } : rest.style;\n\n return (\n <div className={`twc-table-wrap ${className}`} {...rest} style={wrapStyle}>\n <table className=\"twc-table\" data-hover={hover || undefined} data-striped={striped || undefined} data-size={size} data-sticky={stickyHeader || undefined}>\n <thead>\n <tr>\n {cols.map((c) => {\n const active = sort.field === c.field;\n const canSort = sortable && c.sortable !== false;\n return (\n <th key={c.field} data-align={c.align} data-sortable={canSort || undefined} data-active={active || undefined} data-dir={active ? sort.dir : undefined}\n style={c.width ? { width: c.width } : undefined}\n aria-sort={active ? (sort.dir === \"asc\" ? \"ascending\" : \"descending\") : (canSort ? \"none\" : undefined)}>\n {canSort ? (\n <button type=\"button\" className=\"twc-table__sort\" onClick={() => toggleSort(c.field)}>{c.header}\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\"><path d=\"m18 15-6-6-6 6\"/></svg>\n </button>\n ) : c.header}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, i) => {\n const k = keyFn(row, i);\n return (\n <tr key={k} data-selected={selected.has(k) || undefined}>\n {cols.map((c) => (\n <td key={c.field} data-align={c.align}>\n {c.render ? c.render(row[c.field], row, i) : row[c.field]}\n </td>\n ))}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n );\n}\n","import React from \"react\";\n\nconst TABS_CSS = `\n.twc-tabs { font-family: var(--font-sans); }\n/* tone → accent set (default primary). Mirrors Button's --_accent model; Badge's tone vocabulary. */\n.twc-tabs { --_accent: var(--color-primary); --_accent-fg: var(--color-primary-fg); --_accent-subtle: var(--color-primary-subtle); --_accent-subtle-fg: var(--color-primary-subtle-fg); --_accent-border: var(--color-primary-border); }\n.twc-tabs[data-tone=\"success\"] { --_accent: var(--color-success); --_accent-fg: var(--color-success-fg); --_accent-subtle: var(--color-success-subtle); --_accent-subtle-fg: var(--color-success-subtle-fg); --_accent-border: var(--color-success); }\n.twc-tabs[data-tone=\"warning\"] { --_accent: var(--color-warning); --_accent-fg: var(--color-warning-fg); --_accent-subtle: var(--color-warning-subtle); --_accent-subtle-fg: var(--color-warning-subtle-fg); --_accent-border: var(--color-warning); }\n.twc-tabs[data-tone=\"danger\"] { --_accent: var(--color-danger); --_accent-fg: var(--color-danger-fg); --_accent-subtle: var(--color-danger-subtle); --_accent-subtle-fg: var(--color-danger-subtle-fg); --_accent-border: var(--color-danger); }\n.twc-tabs[data-tone=\"info\"] { --_accent: var(--color-info); --_accent-fg: var(--color-info-fg); --_accent-subtle: var(--color-info-subtle); --_accent-subtle-fg: var(--color-info-subtle-fg); --_accent-border: var(--color-info); }\n.twc-tabs[data-tone=\"neutral\"] { --_accent: var(--color-text); --_accent-fg: var(--color-surface); --_accent-subtle: var(--color-surface-sunken); --_accent-subtle-fg: var(--color-text-muted); --_accent-border: var(--color-border-strong); }\n.twc-tabs__list {\n position: relative; display: flex; gap: 2px;\n border-bottom: var(--border-thin) solid var(--color-border);\n}\n.twc-tabs[data-variant=\"pill\"] .twc-tabs__list {\n gap: 4px; border-bottom: none; padding: 4px;\n background: var(--color-surface-sunken); border-radius: var(--radius-lg);\n display: inline-flex;\n}\n.twc-tab {\n position: relative; z-index: 1; display: inline-flex; align-items: center; gap: 7px;\n padding: var(--space-2-5) var(--space-4); border: none; background: transparent;\n font-family: inherit; font-size: var(--text-sm); font-weight: var(--font-semibold);\n color: var(--color-text-muted); cursor: pointer; white-space: nowrap;\n transition: color var(--duration-fast) var(--ease-standard);\n}\n.twc-tab:hover:not([data-active=\"true\"]) { color: var(--color-text); }\n.twc-tab[data-active=\"true\"] { color: var(--_accent); }\n.twc-tabs[data-variant=\"pill\"] .twc-tab { border-radius: var(--radius-md); }\n.twc-tabs[data-variant=\"pill\"] .twc-tab[data-active=\"true\"] { color: var(--_accent); }\n.twc-tab:focus-visible { outline: none; box-shadow: var(--ring); border-radius: var(--radius-sm); }\n.twc-tab svg { width: 16px; height: 16px; }\n.twc-tab__count { font-size: 11px; padding: 1px 6px; border-radius: var(--radius-full); background: var(--color-surface-sunken); color: var(--color-text-muted); }\n.twc-tab[data-active=\"true\"] .twc-tab__count { background: var(--_accent-subtle); color: var(--_accent-subtle-fg); }\n.twc-tabs__indicator {\n position: absolute; bottom: -1px; height: 2.5px; border-radius: var(--radius-full);\n background: var(--_accent);\n transition: left var(--duration-base) var(--ease-spring), width var(--duration-base) var(--ease-spring);\n}\n.twc-tabs[data-variant=\"pill\"] .twc-tabs__indicator {\n top: 4px; bottom: 4px; height: auto; background: var(--color-surface); box-shadow: var(--shadow-sm); border-radius: var(--radius-md);\n}\n.twc-tabs__panel { padding-top: var(--space-4); }\n\n/* Vertical orientation */\n.twc-tabs[data-orientation=\"vertical\"] { display: flex; gap: var(--space-4); align-items: flex-start; }\n.twc-tabs[data-orientation=\"vertical\"] .twc-tabs__list {\n flex-direction: column; gap: 2px;\n border-bottom: none; border-inline-end: var(--border-thin) solid var(--color-border);\n}\n.twc-tabs[data-orientation=\"vertical\"] .twc-tab { justify-content: flex-start; }\n.twc-tabs[data-orientation=\"vertical\"][data-variant=\"pill\"] .twc-tabs__list {\n display: inline-flex; flex-direction: column; border-inline-end: none;\n}\n.twc-tabs[data-orientation=\"vertical\"] .twc-tabs__indicator {\n bottom: auto; inset-inline-start: auto; inset-inline-end: -1px; width: 2.5px; height: auto;\n transition: top var(--duration-base) var(--ease-spring), height var(--duration-base) var(--ease-spring);\n}\n.twc-tabs[data-orientation=\"vertical\"][data-variant=\"pill\"] .twc-tabs__indicator {\n top: auto; inset-inline-end: 4px; inset-inline-start: 4px; width: auto;\n}\n.twc-tabs[data-orientation=\"vertical\"] .twc-tabs__panel { padding-top: 0; flex: 1; min-width: 0; }\n`;\n\nexport function Tabs({\n items,\n value,\n defaultValue,\n onChange,\n variant = \"line\",\n tone = \"primary\",\n orientation = \"horizontal\",\n className = \"\",\n ...rest\n}) {\n const vertical = orientation === \"vertical\";\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-tabs-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-tabs-styles\";\n el.textContent = TABS_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [internal, setInternal] = React.useState(defaultValue ?? items[0]?.value);\n const active = value ?? internal;\n const listRef = React.useRef(null);\n const [ind, setInd] = React.useState({ left: 0, width: 0, top: 0, height: 0 });\n const baseId = React.useId();\n const tabIdAt = (i) => `${baseId}-tab-${i}`;\n const panelId = `${baseId}-panel`;\n const activeIndex = items.findIndex((it) => it.value === active);\n\n const updateIndicator = React.useCallback(() => {\n const list = listRef.current;\n if (!list) return;\n const el = list.querySelector('[data-active=\"true\"]');\n if (el) setInd({ left: el.offsetLeft, width: el.offsetWidth, top: el.offsetTop, height: el.offsetHeight });\n }, []);\n\n React.useEffect(() => { updateIndicator(); }, [active, updateIndicator, items, orientation]);\n React.useEffect(() => {\n const r = () => updateIndicator();\n window.addEventListener(\"resize\", r);\n // Re-measure once webfonts finish loading: tab widths change after a late font\n // swap, otherwise the indicator stays sized to the fallback font until a resize.\n if (typeof document !== \"undefined\" && document.fonts && document.fonts.ready) {\n document.fonts.ready.then(r).catch(() => {});\n }\n return () => window.removeEventListener(\"resize\", r);\n }, [updateIndicator]);\n\n function select(v) {\n if (value === undefined) setInternal(v);\n onChange?.(v);\n }\n\n const activeItem = items.find((i) => i.value === active);\n const panelRendered = activeItem != null && activeItem.content !== undefined;\n\n // WAI-ARIA tabs keyboard pattern: arrows/Home/End move selection + focus\n // between tabs (roving tabindex keeps only the active tab in the tab order).\n function onListKeyDown(e) {\n // In each orientation only the matching arrow axis navigates; Home/End\n // jump to the ends regardless. Keeps the orthogonal arrows free for the page.\n const prevKey = vertical ? \"ArrowUp\" : \"ArrowLeft\";\n const nextKey = vertical ? \"ArrowDown\" : \"ArrowRight\";\n const keys = [prevKey, nextKey, \"Home\", \"End\"];\n if (!keys.includes(e.key)) return;\n const n = items.length;\n if (!n) return;\n e.preventDefault();\n let i = activeIndex < 0 ? 0 : activeIndex;\n if (e.key === \"Home\") i = 0;\n else if (e.key === \"End\") i = n - 1;\n else { const dir = e.key === nextKey ? 1 : -1; i = (i + dir + n) % n; }\n const it = items[i];\n if (!it) return;\n select(it.value);\n const btns = listRef.current?.querySelectorAll('[role=\"tab\"]');\n if (btns && btns[i]) btns[i].focus();\n }\n\n return (\n <div className={`twc-tabs ${className}`} data-variant={variant} data-tone={tone} data-orientation={orientation} {...rest}>\n <div className=\"twc-tabs__list\" ref={listRef} role=\"tablist\" aria-orientation={orientation} onKeyDown={onListKeyDown}>\n {items.map((it, i) => (\n <button\n type=\"button\"\n key={it.value}\n id={tabIdAt(i)}\n className=\"twc-tab\"\n role=\"tab\"\n aria-selected={it.value === active}\n aria-controls={it.value === active && panelRendered ? panelId : undefined}\n tabIndex={it.value === active ? 0 : -1}\n data-active={it.value === active || undefined}\n onClick={() => select(it.value)}\n >\n {it.icon}\n {it.label}\n {it.count != null ? <span className=\"twc-tab__count\">{it.count}</span> : null}\n </button>\n ))}\n <span\n className=\"twc-tabs__indicator\"\n style={vertical ? { top: ind.top, height: ind.height } : { left: ind.left, width: ind.width }}\n />\n </div>\n {panelRendered ? (\n <div className=\"twc-tabs__panel\" role=\"tabpanel\" id={panelId} aria-labelledby={activeIndex >= 0 ? tabIdAt(activeIndex) : undefined} tabIndex={0} key={active}>{activeItem.content}</div>\n ) : null}\n </div>\n );\n}\n","import React from \"react\";\n\nconst TAG_CSS = `\n.twc-tag {\n display: inline-flex; align-items: center; gap: 6px;\n padding-block: 4px; padding-inline: 11px 6px; height: 28px;\n font-family: var(--font-sans); font-size: var(--text-xs); font-weight: var(--font-medium);\n border: var(--border-thin) solid transparent;\n border-radius: var(--radius-full); white-space: nowrap;\n transition: background-color var(--duration-fast) var(--ease-standard);\n}\n.twc-tag[data-no-remove=\"true\"] { padding-inline-end: 11px; }\n\n/* tone → accent set (default neutral; mirrors Badge's tone vocabulary). neutral's\n subtle-fg is full --color-text and its border is --color-border so the default\n soft+neutral tag reproduces the original bordered chip exactly. */\n.twc-tag { --_accent: var(--color-text); --_accent-fg: var(--color-surface); --_accent-subtle: var(--color-surface-sunken); --_accent-subtle-fg: var(--color-text); --_accent-border: var(--color-border); }\n.twc-tag[data-tone=\"primary\"] { --_accent: var(--color-primary); --_accent-fg: var(--color-primary-fg); --_accent-subtle: var(--color-primary-subtle); --_accent-subtle-fg: var(--color-primary-subtle-fg); --_accent-border: var(--color-primary-border); }\n.twc-tag[data-tone=\"success\"] { --_accent: var(--color-success); --_accent-fg: var(--color-success-fg); --_accent-subtle: var(--color-success-subtle); --_accent-subtle-fg: var(--color-success-subtle-fg); --_accent-border: var(--color-success); }\n.twc-tag[data-tone=\"warning\"] { --_accent: var(--color-warning); --_accent-fg: var(--color-warning-fg); --_accent-subtle: var(--color-warning-subtle); --_accent-subtle-fg: var(--color-warning-subtle-fg); --_accent-border: var(--color-warning); }\n.twc-tag[data-tone=\"danger\"] { --_accent: var(--color-danger); --_accent-fg: var(--color-danger-fg); --_accent-subtle: var(--color-danger-subtle); --_accent-subtle-fg: var(--color-danger-subtle-fg); --_accent-border: var(--color-danger); }\n.twc-tag[data-tone=\"info\"] { --_accent: var(--color-info); --_accent-fg: var(--color-info-fg); --_accent-subtle: var(--color-info-subtle); --_accent-subtle-fg: var(--color-info-subtle-fg); --_accent-border: var(--color-info); }\n\n.twc-tag[data-variant=\"soft\"] { background: var(--_accent-subtle); color: var(--_accent-subtle-fg); border-color: var(--_accent-border); }\n.twc-tag[data-variant=\"solid\"] { background: var(--_accent); color: var(--_accent-fg); border-color: transparent; }\n.twc-tag[data-variant=\"outline\"] { background: transparent; color: var(--_accent-subtle-fg); border-color: var(--_accent-border); }\n.twc-tag__remove {\n display: inline-grid; place-items: center;\n width: 18px; height: 18px; border: none; padding: 0; margin: 0;\n border-radius: var(--radius-full); background: transparent;\n color: var(--color-text-subtle); cursor: pointer;\n transition: background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-spring);\n}\n/* Intentionally danger-tinted regardless of tone: this signals the destructive REMOVE\n action, not the tag's color (matches the per-item destructive-affordance convention). */\n.twc-tag__remove:hover { background: var(--color-danger-subtle); color: var(--color-danger-subtle-fg); }\n.twc-tag__remove:active { transform: scale(0.85); }\n.twc-tag__remove svg { width: 13px; height: 13px; }\n`;\n\nexport function Tag({\n children,\n onRemove,\n leftIcon,\n tone = \"neutral\",\n variant = \"soft\",\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-tag-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-tag-styles\";\n el.textContent = TAG_CSS;\n document.head.appendChild(el);\n }, []);\n\n return (\n <span className={`twc-tag ${className}`} data-tone={tone} data-variant={variant} data-no-remove={!onRemove || undefined} {...rest}>\n {leftIcon}\n {children}\n {onRemove ? (\n <button className=\"twc-tag__remove\" onClick={(e) => { e.stopPropagation(); onRemove(e); }} aria-label=\"Remove\" type=\"button\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\n </button>\n ) : null}\n </span>\n );\n}\n","import React from \"react\";\n\nexport function Textarea({\n label,\n hint,\n error,\n required = false,\n size = \"md\",\n tone = \"primary\",\n rows = 4,\n disabled = false,\n id,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-textarea-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-textarea-styles\";\n el.textContent = `\n.twc-field { display: flex; flex-direction: column; gap: var(--space-1-5); font-family: var(--font-sans); }\n.twc-field__label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); display: flex; gap: 4px; align-items: center; }\n.twc-field__req { color: var(--color-danger); }\n.twc-field__hint { font-size: var(--text-xs); color: var(--color-text-muted); }\n.twc-field__error { font-size: var(--text-xs); color: var(--color-danger-subtle-fg); font-weight: var(--font-medium); }\n.twc-textarea__el {\n width: 100%; resize: vertical; min-height: 80px;\n padding: var(--space-2-5) var(--space-3);\n font-family: var(--font-sans); font-size: var(--text-sm); line-height: var(--leading-normal);\n color: var(--color-text); background: var(--color-surface);\n border: var(--border-thin) solid var(--color-border); border-radius: var(--radius-md);\n outline: none;\n transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);\n}\n.twc-textarea__el[data-size=\"sm\"] { padding: var(--space-2) var(--space-2-5); }\n.twc-textarea__el[data-size=\"lg\"] { padding: var(--space-3) var(--space-4); }\n.twc-textarea__el::placeholder { color: var(--color-text-subtle); }\n.twc-textarea__el:hover:not(:focus):not(:disabled) { border-color: var(--color-border-strong); }\n/* tone → focus/open accent (default primary; reproduces current look). */\n.twc-textarea__el { --_accent: var(--color-primary); --_ring: var(--ring); }\n.twc-textarea__el[data-tone=\"success\"] { --_accent: var(--color-success); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-success) 32%, transparent); }\n.twc-textarea__el[data-tone=\"warning\"] { --_accent: var(--color-warning); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-warning) 32%, transparent); }\n.twc-textarea__el[data-tone=\"danger\"] { --_accent: var(--color-danger); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-danger) 32%, transparent); }\n.twc-textarea__el[data-tone=\"info\"] { --_accent: var(--color-info); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-info) 32%, transparent); }\n.twc-textarea__el[data-tone=\"neutral\"] { --_accent: var(--color-border-strong); --_ring: 0 0 0 var(--ring-width) color-mix(in srgb, var(--color-text) 14%, transparent); }\n.twc-textarea__el:focus { border-color: var(--_accent); box-shadow: var(--_ring); }\n.twc-textarea__el[aria-invalid=\"true\"] { border-color: var(--color-danger); }\n.twc-textarea__el:disabled { background: var(--color-surface-sunken); opacity: 0.7; cursor: not-allowed; }\n`;\n document.head.appendChild(el);\n }, []);\n\n const autoId = React.useId();\n const fieldId = id || autoId;\n const descId = `${fieldId}-desc`;\n const invalid = Boolean(error);\n\n return (\n <div className={`twc-field ${className}`}>\n {label ? (\n <label className=\"twc-field__label\" htmlFor={fieldId}>\n {label}{required ? <span className=\"twc-field__req\">*</span> : null}\n </label>\n ) : null}\n <textarea\n id={fieldId}\n className=\"twc-textarea__el\"\n data-size={size}\n data-tone={tone}\n rows={rows}\n disabled={disabled}\n required={required || undefined}\n aria-required={required || undefined}\n aria-invalid={invalid || undefined}\n aria-describedby={error || hint ? descId : undefined}\n {...rest}\n />\n {error ? <span id={descId} className=\"twc-field__error\">{error}</span> : hint ? <span id={descId} className=\"twc-field__hint\">{hint}</span> : null}\n </div>\n );\n}\n","import React from \"react\";\n\nconst TIMELINE_CSS = `\n.twc-timeline { display: flex; flex-direction: column; font-family: var(--font-sans); margin: 0; padding: 0; list-style: none; }\n.twc-timeline__item { position: relative; display: flex; gap: var(--space-4); padding-bottom: var(--space-6); }\n.twc-timeline__item:last-child { padding-bottom: 0; }\n.twc-timeline__rail { position: relative; flex: none; width: 32px; display: flex; justify-content: center; }\n.twc-timeline__dot { z-index: 1; flex: none; width: 32px; height: 32px; border-radius: var(--radius-full); display: grid; place-items: center;\n background: var(--color-surface); border: var(--border-medium) solid var(--color-border-strong); color: var(--color-text-subtle); box-shadow: 0 0 0 4px var(--color-surface); }\n.twc-timeline__dot svg { width: 15px; height: 15px; }\n.twc-timeline__item[data-tone=\"primary\"] .twc-timeline__dot { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-primary-fg); }\n.twc-timeline__item[data-tone=\"info\"] .twc-timeline__dot { background: var(--color-info); border-color: var(--color-info); color: var(--color-info-fg); }\n.twc-timeline__item[data-tone=\"success\"] .twc-timeline__dot { background: var(--color-success); border-color: var(--color-success); color: var(--color-success-fg); }\n.twc-timeline__item[data-tone=\"danger\"] .twc-timeline__dot { background: var(--color-danger); border-color: var(--color-danger); color: var(--color-danger-fg); }\n.twc-timeline__item[data-tone=\"warning\"] .twc-timeline__dot { background: var(--color-warning); border-color: var(--color-warning); color: var(--color-warning-fg); }\n/* Extend the rail through the item's bottom padding (--space-6) and slightly into\n the next dot so the line actually connects the dots instead of stopping short. */\n.twc-timeline__line { position: absolute; top: 32px; bottom: calc(-1 * var(--space-6) - 8px); left: 50%; width: 2px; transform: translateX(-50%); background: var(--color-border); border-radius: var(--radius-full); }\n.twc-timeline__item:last-child .twc-timeline__line { display: none; }\n.twc-timeline__body { flex: 1; min-width: 0; padding-top: 5px; }\n.twc-timeline__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3); }\n.twc-timeline__title { font-size: var(--text-sm); font-weight: var(--font-bold); color: var(--color-text); }\n.twc-timeline__time { font-size: var(--text-xs); color: var(--color-text-subtle); white-space: nowrap; }\n.twc-timeline__desc { font-size: var(--text-sm); color: var(--color-text-muted); margin-top: 2px; line-height: var(--leading-snug); }\n`;\n\nexport function Timeline({ items, className = \"\", ...rest }) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-timeline-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-timeline-styles\";\n el.textContent = TIMELINE_CSS;\n document.head.appendChild(el);\n }, []);\n\n return (\n <ul className={`twc-timeline ${className}`} {...rest}>\n {items.map((it, i) => (\n <li className=\"twc-timeline__item\" key={i} data-tone={it.tone || undefined}>\n <div className=\"twc-timeline__rail\">\n <span className=\"twc-timeline__dot\" aria-hidden=\"true\">{it.icon || null}</span>\n <span className=\"twc-timeline__line\" />\n </div>\n <div className=\"twc-timeline__body\">\n <div className=\"twc-timeline__head\">\n <span className=\"twc-timeline__title\">{it.title}</span>\n {it.time ? <span className=\"twc-timeline__time\">{it.time}</span> : null}\n </div>\n {it.description ? <div className=\"twc-timeline__desc\">{it.description}</div> : null}\n </div>\n </li>\n ))}\n </ul>\n );\n}\n","import React from \"react\";\n\nconst TOAST_CSS = `\n.twc-toast {\n position: relative; display: flex; gap: var(--space-3); align-items: flex-start;\n width: 360px; max-width: calc(100vw - 32px);\n padding: var(--space-3) var(--space-4);\n background: var(--color-surface-raised); color: var(--color-text);\n border: var(--border-thin) solid var(--color-border);\n border-radius: var(--radius-lg); box-shadow: var(--shadow-lg);\n font-family: var(--font-sans); overflow: hidden;\n animation: twc-toast-slide-in var(--duration-base) var(--ease-spring);\n}\n/* Slides in from the inline-end edge. LTR behaviour matches the previous translateX(24px); */\n/* the [dir=\"rtl\"] override flips the offset so RTL toasts enter from the left as expected. */\n@keyframes twc-toast-slide-in {\n from { opacity: 0; transform: translateX(24px); }\n to { opacity: 1; transform: translateX(0); }\n}\n[dir=\"rtl\"] .twc-toast { animation-name: twc-toast-slide-in-rtl; }\n@keyframes twc-toast-slide-in-rtl {\n from { opacity: 0; transform: translateX(-24px); }\n to { opacity: 1; transform: translateX(0); }\n}\n.twc-toast::before { content: \"\"; position: absolute; inset-inline-start: 0; top: 0; bottom: 0; width: 4px; background: var(--_accent, var(--color-primary)); }\n.twc-toast[data-tone=\"success\"] { --_accent: var(--color-success); }\n.twc-toast[data-tone=\"warning\"] { --_accent: var(--color-warning); }\n.twc-toast[data-tone=\"danger\"] { --_accent: var(--color-danger); }\n.twc-toast[data-tone=\"info\"] { --_accent: var(--color-info); }\n.twc-toast__icon { flex: none; margin-top: 1px; color: var(--_accent, var(--color-primary)); }\n.twc-toast__icon svg { width: 20px; height: 20px; }\n.twc-toast__body { flex: 1; min-width: 0; }\n.twc-toast__title { font-weight: var(--font-bold); font-size: var(--text-sm); }\n.twc-toast__desc { font-size: var(--text-sm); color: var(--color-text-muted); margin-top: 2px; line-height: var(--leading-snug); }\n.twc-toast__close {\n flex: none; display: inline-grid; place-items: center; width: 24px; height: 24px;\n border: none; background: transparent; color: var(--color-text-subtle); cursor: pointer;\n border-radius: var(--radius-sm); transition: background-color var(--duration-fast), color var(--duration-fast);\n}\n.twc-toast__close:hover { background: var(--color-surface-sunken); color: var(--color-text); }\n.twc-toast__close svg { width: 15px; height: 15px; }\n.twc-toast-viewport {\n position: fixed; z-index: var(--z-toast); display: flex; flex-direction: column; gap: 12px;\n bottom: 20px; inset-inline-end: 20px;\n}\n`;\n\nconst TOAST_ICONS = {\n default: \"M12 8v4m0 4h.01\",\n success: \"m9 12 2 2 4-4\",\n warning: \"M12 9v4M12 17h.01\",\n danger: \"M15 9l-6 6M9 9l6 6\",\n info: \"M12 16v-4M12 8h.01\",\n};\n\nexport function Toast({\n tone = \"default\",\n title,\n children,\n icon,\n onClose,\n duration = 4500,\n className = \"\",\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n ...rest\n}) {\n // \"neutral\" is accepted as an alias for \"default\" (matches Badge's tone vocabulary).\n const resolvedTone = tone === \"neutral\" ? \"default\" : tone;\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-toast-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-toast-styles\";\n el.textContent = TOAST_CSS;\n document.head.appendChild(el);\n }, []);\n\n // Auto-dismiss after `duration` ms (paused while hovered/focused). 0/Infinity keeps it open.\n // onClose is read through a ref so an inline handler doesn't reset the timer every render.\n const onCloseRef = React.useRef(onClose);\n React.useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n const timer = React.useRef();\n const stop = React.useCallback(() => clearTimeout(timer.current), []);\n const start = React.useCallback(() => {\n stop();\n if (duration && duration !== Infinity && onCloseRef.current) {\n timer.current = setTimeout(() => onCloseRef.current && onCloseRef.current(), duration);\n }\n }, [duration, stop]);\n React.useEffect(() => {\n start();\n return stop;\n }, [start, stop]);\n\n return (\n <div\n className={`twc-toast ${className}`}\n data-tone={resolvedTone}\n role=\"status\"\n {...rest}\n onMouseEnter={(e) => { onMouseEnter?.(e); stop(); }}\n onMouseLeave={(e) => { onMouseLeave?.(e); start(); }}\n onFocus={(e) => { onFocus?.(e); stop(); }}\n onBlur={(e) => { onBlur?.(e); start(); }}\n >\n <span className=\"twc-toast__icon\" aria-hidden=\"true\">\n {icon || (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><path d={TOAST_ICONS[resolvedTone] || TOAST_ICONS.default} />\n </svg>\n )}\n </span>\n <div className=\"twc-toast__body\">\n {title ? <div className=\"twc-toast__title\">{title}</div> : null}\n {children ? <div className=\"twc-toast__desc\">{children}</div> : null}\n </div>\n {onClose ? (\n <button className=\"twc-toast__close\" onClick={onClose} aria-label=\"Dismiss\" type=\"button\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>\n </button>\n ) : null}\n </div>\n );\n}\n\n/** Fixed-position stack container for toasts. Pass `limit` to cap how many show at once. */\nexport function ToastViewport({ children, limit, className = \"\", ...rest }) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-toast-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-toast-styles\";\n el.textContent = TOAST_CSS;\n document.head.appendChild(el);\n }, []);\n const shown = limit && limit > 0 ? React.Children.toArray(children).slice(-limit) : children;\n return <div className={`twc-toast-viewport ${className}`} {...rest}>{shown}</div>;\n}\n","import React from \"react\";\nimport { Toast, ToastViewport } from \"./Toast.jsx\";\n\nconst ToastContext = React.createContext(null);\n\n/**\n * Imperative toast API. Must be called under a <ToastProvider>.\n * Returns { toast, dismiss, clear, toasts } where `toast` is callable\n * (toast({ title, ... })) and has tone helpers: toast.success/warning/\n * danger/error/info(title, options?).\n */\nexport function useToast() {\n const ctx = React.useContext(ToastContext);\n if (!ctx) throw new Error(\"useToast must be used within a <ToastProvider>.\");\n return ctx;\n}\n\n/**\n * Drops a ready-to-use toast manager into the tree: holds the toast list,\n * renders a single <ToastViewport> (with limit + default duration), and\n * exposes the imperative API via useToast(). No more hand-managed arrays.\n */\nexport function ToastProvider({ children, limit = 4, duration = 4500, ...viewportProps }) {\n const [toasts, setToasts] = React.useState([]);\n const idRef = React.useRef(0);\n const limitRef = React.useRef(limit);\n React.useEffect(() => { limitRef.current = limit; }, [limit]);\n\n const dismiss = React.useCallback((id) => {\n setToasts((s) => s.filter((t) => t.id !== id));\n }, []);\n const clear = React.useCallback(() => setToasts([]), []);\n\n const api = React.useMemo(() => {\n const push = (opts) => {\n const id = (idRef.current += 1);\n const next =\n typeof opts === \"string\" ? { title: opts } : opts && typeof opts === \"object\" ? opts : {};\n setToasts((s) => { const arr = [...s, { id, ...next }]; const n = limitRef.current; return n && n > 0 ? arr.slice(-n) : arr; });\n return id;\n };\n const withTone = (tone) => (title, options) =>\n push(typeof title === \"object\" && title !== null ? { tone, ...title } : { tone, title, ...options });\n\n const toast = (opts) => push(opts);\n toast.success = withTone(\"success\");\n toast.warning = withTone(\"warning\");\n toast.danger = withTone(\"danger\");\n toast.error = withTone(\"danger\");\n toast.info = withTone(\"info\");\n toast.show = withTone(\"default\");\n return { toast, dismiss, clear };\n }, [dismiss, clear]);\n\n const value = React.useMemo(() => ({ ...api, toasts }), [api, toasts]);\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n <ToastViewport limit={limit} {...viewportProps}>\n {toasts.map((t) => (\n <Toast\n key={t.id}\n tone={t.tone}\n title={t.title}\n icon={t.icon}\n duration={t.duration != null ? t.duration : duration}\n onClose={() => dismiss(t.id)}\n >\n {t.description != null ? t.description : t.children}\n </Toast>\n ))}\n </ToastViewport>\n </ToastContext.Provider>\n );\n}\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nconst TOOLTIP_CSS = `\n.twc-tooltip-wrap { display: inline-flex; }\n.twc-tooltip {\n position: fixed; z-index: var(--z-tooltip); pointer-events: none;\n padding: 6px 10px; border-radius: var(--radius-md);\n background: var(--color-text); color: var(--color-surface);\n font-family: var(--font-sans); font-size: var(--text-xs); font-weight: var(--font-medium);\n line-height: 1.3; white-space: nowrap; box-shadow: var(--shadow-md);\n opacity: 0; transform: scale(0.9); transition: opacity var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-spring);\n}\n.twc-tooltip[data-show=\"true\"] { opacity: 1; transform: scale(1); }\n.twc-tooltip[data-place=\"top\"] { transform-origin: bottom center; translate: -50% 0; }\n.twc-tooltip[data-place=\"bottom\"] { transform-origin: top center; translate: -50% 0; }\n.twc-tooltip[data-place=\"left\"] { transform-origin: right center; translate: 0 -50%; }\n.twc-tooltip[data-place=\"right\"] { transform-origin: left center; translate: 0 -50%; }\n.twc-tooltip[data-show=\"true\"][data-place=\"top\"], .twc-tooltip[data-show=\"true\"][data-place=\"bottom\"] { transform: scale(1); }\n.twc-tooltip__arrow { position: absolute; width: 7px; height: 7px; background: var(--color-text); transform: rotate(45deg); }\n.twc-tooltip[data-place=\"top\"] .twc-tooltip__arrow { bottom: -3px; left: 50%; margin-left: -3.5px; }\n.twc-tooltip[data-place=\"bottom\"] .twc-tooltip__arrow { top: -3px; left: 50%; margin-left: -3.5px; }\n.twc-tooltip[data-place=\"left\"] .twc-tooltip__arrow { right: -3px; top: 50%; margin-top: -3.5px; }\n.twc-tooltip[data-place=\"right\"] .twc-tooltip__arrow { left: -3px; top: 50%; margin-top: -3.5px; }\n@media (prefers-reduced-motion: reduce) { .twc-tooltip { transition: opacity var(--duration-fast) linear; transform: none; } }\n`;\n\nexport function Tooltip({\n children,\n label,\n placement = \"top\",\n delay = 120,\n className = \"\",\n ...rest\n}) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-tooltip-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-tooltip-styles\";\n el.textContent = TOOLTIP_CSS;\n document.head.appendChild(el);\n }, []);\n\n const id = React.useId();\n const [show, setShow] = React.useState(false);\n const [coords, setCoords] = React.useState(null);\n const timer = React.useRef(null);\n const wrapRef = React.useRef(null);\n const tipRef = React.useRef(null);\n const open = () => { clearTimeout(timer.current); timer.current = setTimeout(() => setShow(true), delay); };\n const close = () => { clearTimeout(timer.current); setShow(false); };\n // Clear any pending open-delay timer if the component unmounts before it fires.\n React.useEffect(() => () => clearTimeout(timer.current), []);\n\n // Portaled to <body> with fixed positioning so it is never clipped by an overflow/\n // scroll ancestor. Coords are measured from the trigger; CSS data-place supplies the\n // centering translate + arrow, so only the anchor edges are set here. The centered\n // axis is clamped to the viewport (minus a small margin) so long labels near an edge\n // don't overflow off-screen.\n const place = React.useCallback(() => {\n const el = wrapRef.current; if (!el) return;\n const r = el.getBoundingClientRect();\n const cx = Math.round(r.left + r.width / 2), cy = Math.round(r.top + r.height / 2);\n const vw = window.innerWidth, vh = window.innerHeight, gap = 8, margin = 8;\n const tip = tipRef.current;\n const tw = tip ? tip.offsetWidth : 0, th = tip ? tip.offsetHeight : 0;\n // For top/bottom the box is centered on `left` (translate -50%), so clamp its\n // center so [center - tw/2, center + tw/2] stays within the viewport margins.\n const clampX = (c) => tw ? Math.round(Math.min(Math.max(c, margin + tw / 2), vw - margin - tw / 2)) : c;\n // For left/right the box is centered on `top` (translate -50%); clamp vertically.\n const clampY = (c) => th ? Math.round(Math.min(Math.max(c, margin + th / 2), vh - margin - th / 2)) : c;\n const base = { left: \"auto\", right: \"auto\", top: \"auto\", bottom: \"auto\" };\n if (placement === \"bottom\") setCoords({ ...base, left: clampX(cx), top: Math.round(r.bottom + gap) });\n else if (placement === \"left\") setCoords({ ...base, top: clampY(cy), right: Math.round(vw - r.left + gap) });\n else if (placement === \"right\") setCoords({ ...base, top: clampY(cy), left: Math.round(r.right + gap) });\n else setCoords({ ...base, left: clampX(cx), bottom: Math.round(vh - r.top + gap) }); // top (default)\n }, [placement]);\n // Measure once on mount (client-only, so SSR renders no portal — no hydration diff)\n // and keep the closed tooltip positioned so the first open animates in smoothly.\n React.useEffect(() => { place(); }, [place]);\n React.useEffect(() => {\n if (!show) return undefined;\n place();\n const onMove = () => place();\n window.addEventListener(\"scroll\", onMove, true);\n window.addEventListener(\"resize\", onMove);\n return () => { window.removeEventListener(\"scroll\", onMove, true); window.removeEventListener(\"resize\", onMove); };\n }, [show, place]);\n\n // WCAG 1.4.13: Escape dismisses the tooltip; listener attached only while shown.\n React.useEffect(() => {\n if (!show) return;\n const onKeyDown = (e) => {\n if (e.key === \"Escape\") { clearTimeout(timer.current); setShow(false); }\n };\n document.addEventListener(\"keydown\", onKeyDown);\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, [show]);\n\n // Associate the trigger with the tooltip text for assistive technology.\n const describedBy = show ? id : undefined;\n const trigger =\n React.isValidElement(children) && children.type !== React.Fragment ? (\n React.cloneElement(children, {\n \"aria-describedby\":\n [children.props[\"aria-describedby\"], describedBy].filter(Boolean).join(\" \") || undefined,\n })\n ) : (\n <span aria-describedby={describedBy}>{children}</span>\n );\n\n return (\n <span\n ref={wrapRef}\n className={`twc-tooltip-wrap ${className}`}\n onMouseEnter={open} onMouseLeave={close} onFocus={open} onBlur={close}\n {...rest}\n >\n {trigger}\n {coords ? createPortal(\n <span\n ref={tipRef}\n id={id}\n className=\"twc-tooltip\"\n data-place={placement}\n data-show={show || undefined}\n role=\"tooltip\"\n aria-hidden={show ? undefined : \"true\"}\n style={{ position: \"fixed\", left: coords.left, right: coords.right, top: coords.top, bottom: coords.bottom }}\n >\n {label}\n <span className=\"twc-tooltip__arrow\" aria-hidden=\"true\" />\n </span>, document.body) : null}\n </span>\n );\n}\n","import React from \"react\";\n\nconst TREE_CSS = `\n.twc-tree { font-family: var(--font-sans); font-size: var(--text-sm); user-select: none; }\n.twc-tree__group { list-style: none; margin: 0; padding: 0; }\n.twc-tree__group--child { margin-inline-start: 0; overflow: hidden; }\n.twc-tree__row { display: flex; align-items: center; gap: 6px; width: 100%; border: none; background: none; font: inherit; cursor: pointer;\n color: var(--color-text); text-align: start; padding: 6px 8px; border-radius: var(--radius-md);\n transition: background-color var(--duration-fast) var(--ease-standard); }\n.twc-tree__row:hover { background: var(--color-surface-sunken); }\n.twc-tree__row:focus-visible { outline: none; box-shadow: var(--ring); }\n.twc-tree__row[data-selected=\"true\"] { background: var(--color-primary-subtle); color: var(--color-primary-subtle-fg); font-weight: var(--font-semibold); }\n.twc-tree__caret { flex: none; width: 18px; height: 18px; display: grid; place-items: center; color: var(--color-text-subtle);\n transition: transform var(--duration-base) var(--ease-spring); }\n.twc-tree__caret[data-open=\"true\"] { transform: rotate(90deg); }\n[dir=\"rtl\"] .twc-tree__caret { transform: scaleX(-1); }\n[dir=\"rtl\"] .twc-tree__caret[data-open=\"true\"] { transform: scaleX(-1) rotate(90deg); }\n.twc-tree__caret[data-leaf=\"true\"] { visibility: hidden; }\n.twc-tree__caret svg { width: 14px; height: 14px; }\n.twc-tree__ic { flex: none; display: inline-flex; color: var(--color-text-muted); }\n.twc-tree__ic svg { width: 16px; height: 16px; }\n.twc-tree__row[data-selected=\"true\"] .twc-tree__ic { color: var(--color-primary); }\n.twc-tree__label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.twc-tree__badge { flex: none; font-size: 11px; color: var(--color-text-subtle); }\n`;\n\nfunction Node({ node, depth, expanded, selectedId, tabbableId, rowRefs, onToggle, onSelect, onRowFocus }) {\n const hasChildren = Array.isArray(node.children) && node.children.length > 0;\n const open = expanded.has(node.id);\n return (\n <li role=\"none\">\n <button\n type=\"button\"\n className=\"twc-tree__row\"\n role=\"treeitem\"\n aria-level={depth + 1}\n aria-selected={selectedId === node.id}\n data-selected={selectedId === node.id || undefined}\n data-tree-id={node.id}\n tabIndex={node.id === tabbableId ? 0 : -1}\n ref={(el) => { if (el) rowRefs.current.set(node.id, el); else rowRefs.current.delete(node.id); }}\n style={{ paddingInlineStart: 8 + depth * 18 }}\n aria-expanded={hasChildren ? open : undefined}\n onFocus={() => onRowFocus(node.id)}\n onClick={() => { if (hasChildren) onToggle(node.id); onSelect?.(node); }}\n >\n <span className=\"twc-tree__caret\" data-open={open || undefined} data-leaf={!hasChildren || undefined} aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg>\n </span>\n {node.icon ? <span className=\"twc-tree__ic\" aria-hidden=\"true\">{node.icon}</span> : null}\n <span className=\"twc-tree__label\">{node.label}</span>\n {node.badge != null ? <span className=\"twc-tree__badge\">{node.badge}</span> : null}\n </button>\n {hasChildren && open ? (\n <ul className=\"twc-tree__group twc-tree__group--child\" role=\"group\">\n {node.children.map((c) => (\n <Node key={c.id} node={c} depth={depth + 1} expanded={expanded} selectedId={selectedId} tabbableId={tabbableId}\n rowRefs={rowRefs} onToggle={onToggle} onSelect={onSelect} onRowFocus={onRowFocus} />\n ))}\n </ul>\n ) : null}\n </li>\n );\n}\n\nexport function TreeView({\n items = [],\n defaultExpanded = [],\n expanded: expandedProp,\n onExpandedChange,\n selectedId: selectedProp,\n defaultSelectedId = null,\n onSelect,\n className = \"\",\n ...rest\n}) {\n const nodes = items;\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-tree-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-tree-styles\";\n el.textContent = TREE_CSS;\n document.head.appendChild(el);\n }, []);\n\n const [expInternal, setExpInternal] = React.useState(() => new Set(defaultExpanded));\n const expanded = expandedProp !== undefined ? new Set(expandedProp) : expInternal;\n const [selInternal, setSelInternal] = React.useState(defaultSelectedId);\n const selectedId = selectedProp !== undefined ? selectedProp : selInternal;\n const [focusId, setFocusId] = React.useState(null);\n const rowRefs = React.useRef(new Map());\n\n const toggle = (id) => {\n const n = new Set(expanded);\n n.has(id) ? n.delete(id) : n.add(id);\n if (expandedProp === undefined) setExpInternal(n);\n onExpandedChange?.([...n]);\n };\n // onSelect is id-first (the id you usually need), with the full node as a second arg.\n const select = (node) => { if (selectedProp === undefined) setSelInternal(node.id); onSelect?.(node.id, node); };\n\n // Visible rows in render order + parent/children lookups, for roving-tabindex keyboard nav.\n const visible = [];\n const parentOf = new Map();\n const hasKids = new Map();\n const walk = (nodes, parentId) => {\n for (const n of nodes) {\n visible.push(n.id);\n parentOf.set(n.id, parentId);\n const kids = Array.isArray(n.children) && n.children.length > 0;\n hasKids.set(n.id, kids);\n if (kids && expanded.has(n.id)) walk(n.children, n.id);\n }\n };\n walk(nodes, null);\n\n // One Tab stop: the last-focused row, else the selected row, else the first row.\n const tabbableId = visible.includes(focusId) ? focusId : visible.includes(selectedId) ? selectedId : visible[0];\n\n const focusRow = (id) => { setFocusId(id); rowRefs.current.get(id)?.focus(); };\n\n // WAI-ARIA tree pattern: ArrowUp/Down move, ArrowRight expands/descends, ArrowLeft collapses/ascends, Home/End jump.\n const onKeyDown = (e) => {\n const row = e.target.closest?.(\"[data-tree-id]\");\n if (!row) return;\n const id = row.getAttribute(\"data-tree-id\");\n const i = visible.indexOf(id);\n if (i === -1) return;\n const open = expanded.has(id);\n let next = null;\n if (e.key === \"ArrowDown\") next = visible[i + 1];\n else if (e.key === \"ArrowUp\") next = visible[i - 1];\n else if (e.key === \"Home\") next = visible[0];\n else if (e.key === \"End\") next = visible[visible.length - 1];\n else if (e.key === \"ArrowRight\") {\n if (hasKids.get(id) && !open) { e.preventDefault(); toggle(id); return; }\n if (hasKids.get(id) && open) next = visible[i + 1];\n } else if (e.key === \"ArrowLeft\") {\n if (hasKids.get(id) && open) { e.preventDefault(); toggle(id); return; }\n next = parentOf.get(id);\n } else return;\n e.preventDefault();\n if (next != null) focusRow(next);\n };\n\n return (\n <div className={`twc-tree ${className}`} role=\"tree\" onKeyDown={onKeyDown} {...rest}>\n <ul className=\"twc-tree__group\" role=\"none\">\n {nodes.map((n) => (\n <Node key={n.id} node={n} depth={0} expanded={expanded} selectedId={selectedId} tabbableId={tabbableId}\n rowRefs={rowRefs} onToggle={toggle} onSelect={select} onRowFocus={setFocusId} />\n ))}\n </ul>\n </div>\n );\n}\n","import React from \"react\";\n\nfunction sp(v) {\n if (v == null) return undefined;\n return typeof v === \"number\" ? `var(--space-${String(v).replace(\".\", \"-\")})` : v;\n}\n\nconst BG = {\n surface: \"--color-surface\",\n \"surface-raised\": \"--color-surface-raised\",\n \"surface-sunken\": \"--color-surface-sunken\",\n bg: \"--color-bg\",\n};\n\n// Token name -> var(token); bare custom property (\"--x\") -> var(--x); anything else\n// is treated as a plain CSS background value and used as-is.\nfunction bgValue(bg) {\n if (!bg) return undefined;\n if (BG[bg]) return `var(${BG[bg]})`;\n return String(bg).startsWith(\"--\") ? `var(${bg})` : bg;\n}\n\n// Block javascript:/data:/vbscript: URLs (incl. whitespace/control-char obfuscation\n// that browsers strip) from reaching a DOM href. Consumer hrefs are a trust boundary.\nfunction safeHref(url) {\n if (url == null) return undefined;\n const s = String(url).replace(/[\\x00-\\x20]+/g, \"\").toLowerCase();\n return s.startsWith(\"javascript:\") || s.startsWith(\"data:\") || s.startsWith(\"vbscript:\") ? undefined : url;\n}\n\n/** Generic, token-styled element — the building block for non-flex layout. */\nexport function Box({\n as: Tag = \"div\",\n p, px, py, pt, pr, pb, pl,\n m, mx, my, mt, mr, mb, ml,\n bg,\n border = false,\n radius,\n shadow,\n className = \"\",\n style,\n children,\n ...rest\n}) {\n // Resolve longhands from most-specific to least (pt > py > p). We never emit\n // the `padding`/`margin` shorthand alongside undefined longhands — React would\n // clear the shorthand and zero the value (e.g. p={4} would apply no padding).\n const s = {\n paddingTop: sp(pt ?? py ?? p),\n paddingRight: sp(pr ?? px ?? p),\n paddingBottom: sp(pb ?? py ?? p),\n paddingLeft: sp(pl ?? px ?? p),\n marginTop: sp(mt ?? my ?? m),\n marginRight: sp(mr ?? mx ?? m),\n marginBottom: sp(mb ?? my ?? m),\n marginLeft: sp(ml ?? mx ?? m),\n background: bgValue(bg),\n border: border ? \"var(--border-thin, 1px) solid var(--color-border)\" : undefined,\n borderRadius: radius ? `var(--radius-${radius})` : undefined,\n boxShadow: shadow ? `var(--shadow-${shadow})` : undefined,\n ...style,\n };\n if (Tag === \"a\" && rest.href != null) rest.href = safeHref(rest.href);\n return (\n <Tag className={`twc-box ${className}`.trim()} style={s} {...rest}>\n {children}\n </Tag>\n );\n}\n","import React from \"react\";\n\nconst SIZES = { sm: 640, md: 768, lg: 1024, xl: 1280, full: \"100%\" };\n\n// Block javascript:/data:/vbscript: URLs (incl. whitespace/control-char obfuscation\n// that browsers strip) from reaching a DOM href. Consumer hrefs are a trust boundary.\nfunction safeHref(url) {\n if (url == null) return undefined;\n const s = String(url).replace(/[\\x00-\\x20]+/g, \"\").toLowerCase();\n return s.startsWith(\"javascript:\") || s.startsWith(\"data:\") || s.startsWith(\"vbscript:\") ? undefined : url;\n}\n\n/** Centered, max-width content wrapper with responsive horizontal padding. */\nexport function Container({\n as: Tag = \"div\",\n size = \"lg\",\n padded = true,\n className = \"\",\n style,\n children,\n ...rest\n}) {\n const max = SIZES[size] ?? size;\n if (Tag === \"a\" && rest.href != null) rest.href = safeHref(rest.href);\n return (\n <Tag\n className={`twc-container ${className}`.trim()}\n style={{\n width: \"100%\",\n maxWidth: typeof max === \"number\" ? `${max}px` : max,\n marginInline: \"auto\",\n paddingInline: padded ? \"var(--space-5)\" : undefined,\n ...style,\n }}\n {...rest}\n >\n {children}\n </Tag>\n );\n}\n","import React from \"react\";\n\nfunction space(v) {\n if (v == null) return undefined;\n if (typeof v === \"number\") return `var(--space-${String(v).replace(\".\", \"-\")})`;\n return v;\n}\nfunction len(v) {\n return typeof v === \"number\" ? `${v}px` : v;\n}\n\n// Block javascript:/data:/vbscript: URLs (incl. whitespace/control-char obfuscation\n// that browsers strip) from reaching a DOM href. Consumer hrefs are a trust boundary.\nfunction safeHref(url) {\n if (url == null) return undefined;\n const s = String(url).replace(/[\\x00-\\x20]+/g, \"\").toLowerCase();\n return s.startsWith(\"javascript:\") || s.startsWith(\"data:\") || s.startsWith(\"vbscript:\") ? undefined : url;\n}\n\n/**\n * CSS grid primitive. Pass `minChildWidth` for a responsive auto-fill grid, or\n * `columns` for a fixed column count.\n */\nexport function Grid({\n as: Tag = \"div\",\n columns,\n minChildWidth,\n gap = 4,\n align,\n justify,\n className = \"\",\n style,\n children,\n ...rest\n}) {\n const templateColumns = minChildWidth\n ? `repeat(auto-fill, minmax(min(${len(minChildWidth)}, 100%), 1fr))`\n : `repeat(${columns || 1}, minmax(0, 1fr))`;\n if (Tag === \"a\" && rest.href != null) rest.href = safeHref(rest.href);\n return (\n <Tag\n className={`twc-grid ${className}`.trim()}\n style={{\n display: \"grid\",\n gridTemplateColumns: templateColumns,\n gap: space(gap),\n alignItems: align,\n justifyItems: justify,\n ...style,\n }}\n {...rest}\n >\n {children}\n </Tag>\n );\n}\n","import React from \"react\";\n\n// Maps a numeric gap/space step to the spacing token; a string passes through.\nfunction space(v) {\n if (v == null) return undefined;\n if (typeof v === \"number\") return `var(--space-${String(v).replace(\".\", \"-\")})`;\n return v;\n}\n\n// Block javascript:/data:/vbscript: URLs (incl. whitespace/control-char obfuscation\n// that browsers strip) from reaching a DOM href. Consumer hrefs are a trust boundary.\nfunction safeHref(url) {\n if (url == null) return undefined;\n const s = String(url).replace(/[\\x00-\\x20]+/g, \"\").toLowerCase();\n return s.startsWith(\"javascript:\") || s.startsWith(\"data:\") || s.startsWith(\"vbscript:\") ? undefined : url;\n}\n\n/** Flex layout primitive — rows or columns with token-based gaps. */\nexport function Stack({\n as: Tag = \"div\",\n direction = \"column\",\n gap = 4,\n align,\n justify,\n wrap = false,\n inline = false,\n className = \"\",\n style,\n children,\n ...rest\n}) {\n if (Tag === \"a\" && rest.href != null) rest.href = safeHref(rest.href);\n return (\n <Tag\n className={`twc-stack ${className}`.trim()}\n style={{\n display: inline ? \"inline-flex\" : \"flex\",\n flexDirection: direction,\n gap: space(gap),\n alignItems: align,\n justifyContent: justify,\n flexWrap: wrap ? \"wrap\" : undefined,\n minWidth: 0,\n ...style,\n }}\n {...rest}\n >\n {children}\n </Tag>\n );\n}\n","import React from \"react\";\n\nconst CODE_CSS = `\n.twc-code {\n font-family: var(--font-mono); font-size: 0.875em;\n background: var(--color-surface-sunken); color: var(--color-text);\n padding: 1px 6px; border-radius: var(--radius-sm);\n border: var(--border-thin) solid var(--color-border);\n white-space: normal; overflow-wrap: anywhere; word-break: break-word;\n}\n`;\n\n// Block javascript:/data:/vbscript: URLs (incl. whitespace/control-char obfuscation\n// that browsers strip) from reaching a DOM href. Consumer hrefs are a trust boundary.\nfunction safeHref(url) {\n if (url == null) return undefined;\n const s = String(url).replace(/[\\x00-\\x20]+/g, \"\").toLowerCase();\n return s.startsWith(\"javascript:\") || s.startsWith(\"data:\") || s.startsWith(\"vbscript:\") ? undefined : url;\n}\n\n/** Inline code with mono font and a subtle token-styled surface. */\nexport function Code({ as: Tag = \"code\", className = \"\", children, ...rest }) {\n React.useInsertionEffect(() => {\n if (document.getElementById(\"twc-code-styles\")) return;\n const el = document.createElement(\"style\");\n el.id = \"twc-code-styles\";\n el.textContent = CODE_CSS;\n document.head.appendChild(el);\n }, []);\n if (Tag === \"a\" && rest.href != null) rest.href = safeHref(rest.href);\n return (\n <Tag className={`twc-code ${className}`.trim()} {...rest}>\n {children}\n </Tag>\n );\n}\n","import React from \"react\";\n\nconst LEVEL_SIZE = { 1: \"4xl\", 2: \"2xl\", 3: \"xl\", 4: \"lg\", 5: \"base\", 6: \"sm\" };\n\n// Block javascript:/data:/vbscript: URLs (incl. whitespace/control-char obfuscation\n// that browsers strip) from reaching a DOM href. Consumer hrefs are a trust boundary.\nfunction safeHref(url) {\n if (url == null) return undefined;\n const s = String(url).replace(/[\\x00-\\x20]+/g, \"\").toLowerCase();\n return s.startsWith(\"javascript:\") || s.startsWith(\"data:\") || s.startsWith(\"vbscript:\") ? undefined : url;\n}\n\n/** Heading (h1–h6) with token typography. `level` sets the tag + default size. */\nexport function Heading({\n as,\n level = 2,\n size,\n align,\n className = \"\",\n style,\n children,\n ...rest\n}) {\n const Tag = as || `h${level}`;\n const sz = size || LEVEL_SIZE[level] || \"2xl\";\n if (Tag === \"a\" && rest.href != null) rest.href = safeHref(rest.href);\n return (\n <Tag\n className={`twc-heading ${className}`.trim()}\n style={{\n margin: 0,\n fontFamily: \"var(--font-sans)\",\n fontWeight: \"var(--font-bold)\",\n color: \"var(--color-text)\",\n lineHeight: 1.2,\n letterSpacing: \"-0.02em\",\n fontSize: `var(--text-${sz})`,\n textAlign: align,\n ...style,\n }}\n {...rest}\n >\n {children}\n </Tag>\n );\n}\n","import React from \"react\";\n\nconst TONE = {\n default: \"--color-text\",\n muted: \"--color-text-muted\",\n subtle: \"--color-text-subtle\",\n primary: \"--color-primary\",\n danger: \"--color-danger\",\n // New intents use the readable \"-subtle-fg\" (text-grade) tokens where the base hue\n // would be too light for text contrast (warning/info especially).\n success: \"--color-success\",\n warning: \"--color-warning-subtle-fg\",\n info: \"--color-info-subtle-fg\",\n neutral: \"--color-text-muted\",\n};\n\n// Block javascript:/data:/vbscript: URLs (incl. whitespace/control-char obfuscation\n// that browsers strip) from reaching a DOM href. Consumer hrefs are a trust boundary.\nfunction safeHref(url) {\n if (url == null) return undefined;\n const s = String(url).replace(/[\\x00-\\x20]+/g, \"\").toLowerCase();\n return s.startsWith(\"javascript:\") || s.startsWith(\"data:\") || s.startsWith(\"vbscript:\") ? undefined : url;\n}\n\n/** Body text with token sizes and semantic color tones. Renders <p> by default. */\nexport function Text({\n as: Tag = \"p\",\n size = \"base\",\n tone = \"default\",\n weight,\n align,\n className = \"\",\n style,\n children,\n ...rest\n}) {\n if (Tag === \"a\" && rest.href != null) rest.href = safeHref(rest.href);\n return (\n <Tag\n className={`twc-text ${className}`.trim()}\n style={{\n margin: 0,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.6,\n fontSize: `var(--text-${size})`,\n color: `var(${TONE[tone] || TONE.default})`,\n fontWeight: weight ? `var(--font-${weight})` : undefined,\n textAlign: align,\n ...style,\n }}\n {...rest}\n >\n {children}\n </Tag>\n );\n}\n","import React from \"react\";\n\nconst canUseDOM = typeof window !== \"undefined\" && typeof document !== \"undefined\";\n\n/** SSR-safe `useLayoutEffect` (falls back to `useEffect` on the server). */\nexport const useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;\n\n/** `true` once the component has mounted on the client — for SSR-safe rendering. */\nexport function useMounted() {\n const [mounted, setMounted] = React.useState(false);\n React.useEffect(() => {\n setMounted(true);\n }, []);\n return mounted;\n}\n\n/** The value from the previous render. */\nexport function usePrevious(value) {\n const ref = React.useRef(undefined);\n React.useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\n/** Boolean state with a stable toggle. `toggle()` flips; `toggle(true)` sets. */\nexport function useToggle(initial = false) {\n const [on, setOn] = React.useState(initial);\n const toggle = React.useCallback((next) => {\n setOn((prev) => (typeof next === \"boolean\" ? next : !prev));\n }, []);\n return [on, toggle, setOn];\n}\n\n/** Open/close state for dialogs, drawers, menus, popovers. */\nexport function useDisclosure(initial = false) {\n const [open, setOpen] = React.useState(initial);\n const onOpen = React.useCallback(() => setOpen(true), []);\n const onClose = React.useCallback(() => setOpen(false), []);\n const onToggle = React.useCallback(() => setOpen((p) => !p), []);\n return { open, onOpen, onClose, onToggle, setOpen };\n}\n\n/** Controlled/uncontrolled state — the pattern every form component needs. */\nexport function useControllableState({ value, defaultValue, onChange } = {}) {\n const isControlled = value !== undefined;\n const [uncontrolled, setUncontrolled] = React.useState(defaultValue);\n const current = isControlled ? value : uncontrolled;\n const ref = React.useRef({ current, isControlled, onChange });\n useIsomorphicLayoutEffect(() => {\n ref.current = { current, isControlled, onChange };\n });\n const setValue = React.useCallback((next) => {\n const { current: cur, isControlled: ctrl, onChange: cb } = ref.current;\n const resolved = typeof next === \"function\" ? next(cur) : next;\n if (resolved === cur) return;\n if (!ctrl) setUncontrolled(resolved);\n if (cb) cb(resolved);\n }, []);\n return [current, setValue];\n}\n\n/** Reactively match a media query (SSR-safe). */\nexport function useMediaQuery(query) {\n const get = () => (canUseDOM ? window.matchMedia(query).matches : false);\n const [matches, setMatches] = React.useState(get);\n React.useEffect(() => {\n if (!canUseDOM) return undefined;\n const mql = window.matchMedia(query);\n const onChange = () => setMatches(mql.matches);\n onChange();\n mql.addEventListener(\"change\", onChange);\n return () => mql.removeEventListener(\"change\", onChange);\n }, [query]);\n return matches;\n}\n\n/** `true` when the user requests reduced motion. */\nexport function usePrefersReducedMotion() {\n return useMediaQuery(\"(prefers-reduced-motion: reduce)\");\n}\n\n/**\n * Light/dark theme state synced to a class (default `.dark`) on `<html>` and\n * persisted to localStorage — the contract Twico UI's tokens key off.\n */\nexport function useColorScheme({ storageKey = \"twico-theme\", attribute = \"class\", element, disableTransitionsOnChange = true } = {}) {\n const getTarget = () => element || (canUseDOM ? document.documentElement : null);\n const firstApply = React.useRef(true);\n const read = () => {\n if (!canUseDOM) return \"light\";\n try {\n const stored = window.localStorage.getItem(storageKey);\n if (stored === \"light\" || stored === \"dark\") return stored;\n } catch (e) {}\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n };\n const [theme, setThemeState] = React.useState(read);\n const apply = React.useCallback(\n (t) => {\n const target = getTarget();\n if (!target) return;\n // Re-theme the whole UI at once. Without this, every element animates its\n // color transition on its own duration, so the switch looks like it ripples\n // component-by-component. Disable transitions for the flip, force a reflow,\n // then restore — but never on the first (mount) apply, so we don't suppress\n // initial entrance animations.\n const skip = firstApply.current || !disableTransitionsOnChange || !canUseDOM;\n firstApply.current = false;\n let css;\n if (!skip) {\n css = document.createElement(\"style\");\n css.appendChild(document.createTextNode(\"*,*::before,*::after{transition:none!important}\"));\n document.head.appendChild(css);\n }\n if (attribute === \"class\") target.classList.toggle(\"dark\", t === \"dark\");\n else target.setAttribute(attribute, t);\n if (css) {\n // Force the browser to apply the change without transitions, then restore.\n window.getComputedStyle(document.body);\n setTimeout(() => { if (css.parentNode) css.parentNode.removeChild(css); }, 1);\n }\n },\n [attribute, element, disableTransitionsOnChange]\n );\n useIsomorphicLayoutEffect(() => {\n apply(theme);\n }, [theme, apply]);\n const themeRef = React.useRef(theme);\n useIsomorphicLayoutEffect(() => {\n themeRef.current = theme;\n }, [theme]);\n\n const setTheme = React.useCallback(\n (t) => {\n setThemeState(t);\n try {\n if (canUseDOM) window.localStorage.setItem(storageKey, t);\n } catch (e) {}\n // Notify every other useColorScheme instance (e.g. a page toggle + the navbar).\n if (canUseDOM) window.dispatchEvent(new Event(\"twico:colorscheme\"));\n },\n [storageKey]\n );\n const toggle = React.useCallback(() => {\n setTheme(themeRef.current === \"dark\" ? \"light\" : \"dark\");\n }, [setTheme]);\n\n // Keep every instance — and other tabs — in sync with the active theme.\n React.useEffect(() => {\n if (!canUseDOM) return undefined;\n const sync = () => setThemeState(read());\n const onStorage = (e) => {\n if (e.key === storageKey) sync();\n };\n window.addEventListener(\"twico:colorscheme\", sync);\n window.addEventListener(\"storage\", onStorage);\n return () => {\n window.removeEventListener(\"twico:colorscheme\", sync);\n window.removeEventListener(\"storage\", onStorage);\n };\n }, [storageKey]);\n\n return { theme, setTheme, toggle, isDark: theme === \"dark\" };\n}\n\n/** Attach an event listener (window by default, or a ref/element) with cleanup. */\nexport function useEventListener(eventName, handler, element, options) {\n const saved = React.useRef(handler);\n useIsomorphicLayoutEffect(() => {\n saved.current = handler;\n }, [handler]);\n // Destructure to primitives so an inline `options` object/boolean doesn't re-bind every render.\n const capture = typeof options === \"boolean\" ? options : (options && options.capture);\n const passive = typeof options === \"object\" && options ? options.passive : undefined;\n const once = typeof options === \"object\" && options ? options.once : undefined;\n React.useEffect(() => {\n const target = (element && element.current) || element || (canUseDOM ? window : null);\n if (!target || !target.addEventListener) return undefined;\n const opts = typeof options === \"boolean\" ? options : { capture, passive, once };\n const listener = (e) => saved.current(e);\n target.addEventListener(eventName, listener, opts);\n return () => target.removeEventListener(eventName, listener, opts);\n }, [eventName, element, capture, passive, once]);\n}\n\n/** Call `handler` when a pointer/touch event lands outside `ref`. */\nexport function useClickOutside(ref, handler, events = [\"mousedown\", \"touchstart\"]) {\n const saved = React.useRef(handler);\n useIsomorphicLayoutEffect(() => {\n saved.current = handler;\n }, [handler]);\n React.useEffect(() => {\n if (!canUseDOM) return undefined;\n const listener = (e) => {\n const el = ref && ref.current;\n if (!el || el.contains(e.target)) return;\n saved.current(e);\n };\n events.forEach((ev) => document.addEventListener(ev, listener, true));\n return () => events.forEach((ev) => document.removeEventListener(ev, listener, true));\n }, [ref, events.join(\",\")]);\n}\n\n/** Run `handler` on a keydown matching `key`, with optional modifier requirements. */\nexport function useKeyPress(key, handler, options = {}) {\n const { ctrl, meta, shift, alt, preventDefault } = options;\n useEventListener(\"keydown\", (e) => {\n const keys = Array.isArray(key) ? key : [key];\n const match = keys.some((k) => k.toLowerCase() === String(e.key).toLowerCase());\n if (!match) return;\n if (ctrl && !e.ctrlKey) return;\n if (meta && !e.metaKey) return;\n if (shift && !e.shiftKey) return;\n if (alt && !e.altKey) return;\n if (preventDefault) e.preventDefault();\n handler(e);\n });\n}\n\n/** State persisted to localStorage (JSON-serialized), SSR-safe. */\nexport function useLocalStorage(key, initialValue) {\n const read = () => {\n if (!canUseDOM) return initialValue;\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialValue;\n } catch (e) {\n return initialValue;\n }\n };\n const [stored, setStored] = React.useState(read);\n const setValue = React.useCallback(\n (value) => {\n setStored((prev) => {\n const next = typeof value === \"function\" ? value(prev) : value;\n try {\n if (canUseDOM) window.localStorage.setItem(key, JSON.stringify(next));\n } catch (e) {}\n return next;\n });\n },\n [key]\n );\n return [stored, setValue];\n}\n\n/** Copy text to the clipboard with a `copied` flag that auto-resets. */\nexport function useCopyToClipboard(timeout = 1500) {\n const [copied, setCopied] = React.useState(false);\n const copy = React.useCallback(async (text) => {\n // No Clipboard API (SSR, insecure HTTP context, older browser) → report failure\n // rather than a false success, so `copied`/the return value reflect reality.\n if (!canUseDOM || !navigator.clipboard) {\n setCopied(false);\n return false;\n }\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n return true;\n } catch (e) {\n setCopied(false);\n return false;\n }\n }, []);\n React.useEffect(() => {\n if (!copied) return undefined;\n const t = setTimeout(() => setCopied(false), timeout);\n return () => clearTimeout(t);\n }, [copied, timeout]);\n return { copied, copy };\n}\n\n/** Debounce a value — updates only after `delay` ms of no change. */\nexport function useDebouncedValue(value, delay = 200) {\n const [debounced, setDebounced] = React.useState(value);\n React.useEffect(() => {\n const t = setTimeout(() => setDebounced(value), delay);\n return () => clearTimeout(t);\n }, [value, delay]);\n return debounced;\n}\n\n/** A debounced version of a callback. */\nexport function useDebouncedCallback(callback, delay = 200) {\n const saved = React.useRef(callback);\n const timer = React.useRef(null);\n useIsomorphicLayoutEffect(() => {\n saved.current = callback;\n }, [callback]);\n React.useEffect(() => () => {\n if (timer.current) clearTimeout(timer.current);\n }, []);\n return React.useCallback(\n (...args) => {\n if (timer.current) clearTimeout(timer.current);\n timer.current = setTimeout(() => saved.current(...args), delay);\n },\n [delay]\n );\n}\n\n/** Run `callback` every `delay` ms; pass `delay = null` to pause. */\nexport function useInterval(callback, delay) {\n const saved = React.useRef(callback);\n useIsomorphicLayoutEffect(() => {\n saved.current = callback;\n }, [callback]);\n React.useEffect(() => {\n if (delay == null) return undefined;\n const id = setInterval(() => saved.current(), delay);\n return () => clearInterval(id);\n }, [delay]);\n}\n\n/** Run `callback` once after `delay` ms; pass `delay = null` to cancel. */\nexport function useTimeout(callback, delay) {\n const saved = React.useRef(callback);\n useIsomorphicLayoutEffect(() => {\n saved.current = callback;\n }, [callback]);\n React.useEffect(() => {\n if (delay == null) return undefined;\n const id = setTimeout(() => saved.current(), delay);\n return () => clearTimeout(id);\n }, [delay]);\n}\n\n/** The current window dimensions (0×0 on the server). */\nexport function useWindowSize() {\n const [size, setSize] = React.useState(() => ({\n width: canUseDOM ? window.innerWidth : 0,\n height: canUseDOM ? window.innerHeight : 0,\n }));\n React.useEffect(() => {\n if (!canUseDOM) return undefined;\n const onResize = () => setSize({ width: window.innerWidth, height: window.innerHeight });\n onResize();\n window.addEventListener(\"resize\", onResize);\n return () => window.removeEventListener(\"resize\", onResize);\n }, []);\n return size;\n}\n\n/** `true` while the pointer is over the element referenced by `ref`. */\nexport function useHover(ref) {\n const [hovered, setHovered] = React.useState(false);\n React.useEffect(() => {\n const el = ref && ref.current;\n if (!el) return undefined;\n const on = () => setHovered(true);\n const off = () => setHovered(false);\n el.addEventListener(\"mouseenter\", on);\n el.addEventListener(\"mouseleave\", off);\n return () => {\n el.removeEventListener(\"mouseenter\", on);\n el.removeEventListener(\"mouseleave\", off);\n };\n }, [ref]);\n return hovered;\n}\n\n/** The latest IntersectionObserver entry for the element referenced by `ref`. */\nexport function useIntersectionObserver(ref, options = {}) {\n const { root = null, rootMargin = \"0px\", threshold = 0 } = options;\n const [entry, setEntry] = React.useState(null);\n React.useEffect(() => {\n const el = ref && ref.current;\n if (!canUseDOM || !el || typeof IntersectionObserver === \"undefined\") return undefined;\n const obs = new IntersectionObserver(([e]) => setEntry(e), { root, rootMargin, threshold });\n obs.observe(el);\n return () => obs.disconnect();\n }, [ref, root, rootMargin, JSON.stringify(threshold)]);\n return entry;\n}\n\n// Shared ref-count so nested locks (e.g. a Dialog over a Drawer) don't clobber each\n// other's saved overflow: only the first lock saves+sets, only the last restores.\nlet __scrollLockCount = 0;\nlet __scrollLockSaved = \"\";\n\n/** Lock body scroll while `locked` is true — for modals/drawers. */\nexport function useScrollLock(locked = true) {\n useIsomorphicLayoutEffect(() => {\n if (!canUseDOM || !locked) return undefined;\n if (__scrollLockCount === 0) {\n __scrollLockSaved = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n }\n __scrollLockCount += 1;\n return () => {\n __scrollLockCount -= 1;\n if (__scrollLockCount === 0) {\n document.body.style.overflow = __scrollLockSaved;\n }\n };\n }, [locked]);\n}\n\n/** A stable, SSR-safe unique id (optionally prefixed). */\nexport function useId(prefix = \"twc\") {\n const raw = React.useId();\n return prefix ? `${prefix}-${raw.replace(/:/g, \"\")}` : raw;\n}\n"]}