twico-ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +182 -0
- package/dist/index.cjs +7675 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1501 -0
- package/dist/index.d.ts +1501 -0
- package/dist/index.mjs +7617 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +71 -0
- package/styles/fonts/JetBrainsMono-Variable.ttf +0 -0
- package/styles/fonts/OFL-PlusJakartaSans.txt +93 -0
- package/styles/fonts/PlusJakartaSans-Italic-Variable.ttf +0 -0
- package/styles/fonts/PlusJakartaSans-Variable.ttf +0 -0
- package/styles/twico-ui.css +546 -0
|
@@ -0,0 +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","jsxs","jsx","Tag","size","Fragment","toOpt","normalizeGroups","ensureVisible","createPortal","matches","text","aggOf","MONTHS","DOW"],"mappings":"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B,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AChHA,IAAM,MAAA,GAAS;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;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","file":"index.mjs","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, \"&\").replace(/</g, \"<\").replace(/>/g, \">\");\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"]}
|