@mshuja288/aksuicore 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/tokens.ts","../src/theme/index.ts","../src/primitives/Button.tsx","../src/primitives/Select.tsx","../src/primitives/DateField.tsx","../src/primitives/Dialog.tsx","../src/primitives/ConfirmDeleteDialog.tsx","../src/primitives/Snackbar.tsx","../src/primitives/Topbar.tsx","../src/primitives/SideNav.tsx","../src/primitives/Pagination.tsx","../src/primitives/FormActions.tsx","../src/patterns/AppShell.tsx","../src/patterns/RecordWorkspace.tsx"],"names":["jsx","useId","useRef","useState","useLayoutEffect","useEffect","jsxs","Fragment","createPortal","useMemo","useSyncExternalStore","useIsClient","filtered"],"mappings":"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","file":"index.cjs","sourcesContent":["/** Canonical theme token names mirrored from aksui.css */\r\nexport const aksuiTokens = {\r\n brand: \"#1E2735\",\r\n accent: \"#E67E22\",\r\n ink: \"#1E2735\",\r\n muted: \"#667085\",\r\n line: \"#e6e4df\",\r\n field: \"#f6f5f3\",\r\n card: \"#ffffff\",\r\n danger: \"#b42318\",\r\n dangerBg: \"#fff1f0\",\r\n ok: \"#067647\",\r\n okBg: \"#ecfdf3\",\r\n radius: \"8px\",\r\n rowHeight: \"34px\",\r\n tableHeaderHeight: \"36px\",\r\n sideRailCollapsed: \"52px\",\r\n sideRailExpanded: \"280px\",\r\n previewPanelWidth: \"300px\",\r\n} as const;\r\n\r\nexport type AksuiTokenName = keyof typeof aksuiTokens;\r\n","/** Theme tokens live in aksui.css. Import `@mshuja288/aksuicore/styles.css` in the host app. */\r\nexport const aksuiThemeVersion = \"0.2.0\";\r\nexport { aksuiTokens, type AksuiTokenName } from \"./tokens\";\r\n","\"use client\";\r\n\r\nimport type { ButtonHTMLAttributes, ReactNode } from \"react\";\r\n\r\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"danger\";\r\n\r\nconst variantClass: Record<ButtonVariant, string> = {\r\n primary: \"\",\r\n secondary: \"secondary\",\r\n ghost: \"ghost\",\r\n danger: \"danger\",\r\n};\r\n\r\nexport function Button({\r\n variant = \"primary\",\r\n className = \"\",\r\n children,\r\n ...props\r\n}: ButtonHTMLAttributes<HTMLButtonElement> & {\r\n variant?: ButtonVariant;\r\n children: ReactNode;\r\n}) {\r\n const classes = [\"aks-button\", variantClass[variant], className].filter(Boolean).join(\" \");\r\n return (\r\n <button type=\"button\" className={classes} {...props}>\r\n {children}\r\n </button>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useId, useLayoutEffect, useRef, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nexport type SelectOption = {\r\n value: string;\r\n label: string;\r\n tone?: \"neutral\" | \"ok\" | \"warn\" | \"danger\" | \"accent\";\r\n};\r\n\r\ntype MenuPosition = {\r\n top: number;\r\n left: number;\r\n width: number;\r\n maxHeight: number;\r\n openUp: boolean;\r\n};\r\n\r\nexport function Select({\r\n value,\r\n options,\r\n onChange,\r\n placeholder = \"Select\",\r\n disabled = false,\r\n required = false,\r\n className = \"\",\r\n}: {\r\n value: string;\r\n options: SelectOption[];\r\n onChange: (value: string) => void;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n className?: string;\r\n}) {\r\n const listId = useId();\r\n const rootRef = useRef<HTMLDivElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const [open, setOpen] = useState(false);\r\n const [menuPos, setMenuPos] = useState<MenuPosition | null>(null);\r\n const selected = options.find((option) => option.value === value) ?? null;\r\n\r\n function updatePosition() {\r\n const root = rootRef.current;\r\n if (!root) {\r\n return;\r\n }\r\n const rect = root.getBoundingClientRect();\r\n const spaceBelow = window.innerHeight - rect.bottom - 12;\r\n const spaceAbove = rect.top - 12;\r\n const openUp = spaceBelow < 220 && spaceAbove > spaceBelow;\r\n const maxHeight = Math.max(160, Math.min(280, openUp ? spaceAbove : spaceBelow));\r\n setMenuPos({\r\n top: openUp ? rect.top - 8 : rect.bottom + 6,\r\n left: rect.left,\r\n width: rect.width,\r\n maxHeight,\r\n openUp,\r\n });\r\n }\r\n\r\n useLayoutEffect(() => {\r\n if (!open) {\r\n return;\r\n }\r\n updatePosition();\r\n function onReposition() {\r\n updatePosition();\r\n }\r\n window.addEventListener(\"resize\", onReposition);\r\n window.addEventListener(\"scroll\", onReposition, true);\r\n return () => {\r\n window.removeEventListener(\"resize\", onReposition);\r\n window.removeEventListener(\"scroll\", onReposition, true);\r\n };\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (!open) {\r\n return;\r\n }\r\n function onPointerDown(event: MouseEvent) {\r\n const target = event.target as Node;\r\n if (rootRef.current?.contains(target) || menuRef.current?.contains(target)) {\r\n return;\r\n }\r\n setOpen(false);\r\n }\r\n function onKeyDown(event: KeyboardEvent) {\r\n if (event.key === \"Escape\") {\r\n setOpen(false);\r\n }\r\n }\r\n document.addEventListener(\"mousedown\", onPointerDown);\r\n document.addEventListener(\"keydown\", onKeyDown);\r\n return () => {\r\n document.removeEventListener(\"mousedown\", onPointerDown);\r\n document.removeEventListener(\"keydown\", onKeyDown);\r\n };\r\n }, [open]);\r\n\r\n function choose(next: string) {\r\n onChange(next);\r\n setOpen(false);\r\n }\r\n\r\n return (\r\n <div className={`app-select ${className}`.trim()} ref={rootRef}>\r\n <input\r\n className=\"app-select-mirror\"\r\n tabIndex={-1}\r\n value={value}\r\n required={required}\r\n onChange={() => undefined}\r\n aria-hidden=\"true\"\r\n />\r\n <button\r\n type=\"button\"\r\n className={open ? \"app-select-trigger open\" : \"app-select-trigger\"}\r\n disabled={disabled}\r\n aria-haspopup=\"listbox\"\r\n aria-expanded={open}\r\n aria-controls={listId}\r\n onClick={() => {\r\n if (!disabled) {\r\n setOpen((current) => !current);\r\n }\r\n }}\r\n >\r\n <span className={selected ? \"app-select-value\" : \"app-select-placeholder\"}>\r\n {selected ? (\r\n <>\r\n {selected.tone ? <span className={`app-select-dot ${selected.tone}`} aria-hidden=\"true\" /> : null}\r\n {selected.label}\r\n </>\r\n ) : (\r\n placeholder\r\n )}\r\n </span>\r\n <svg className=\"app-select-chevron\" viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M5 7.5 10 12.5 15 7.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n </button>\r\n {open && menuPos\r\n ? createPortal(\r\n <div\r\n ref={menuRef}\r\n id={listId}\r\n className={menuPos.openUp ? \"app-select-menu open-up\" : \"app-select-menu\"}\r\n role=\"listbox\"\r\n style={{\r\n top: menuPos.openUp ? undefined : menuPos.top,\r\n bottom: menuPos.openUp ? window.innerHeight - menuPos.top : undefined,\r\n left: menuPos.left,\r\n width: menuPos.width,\r\n maxHeight: menuPos.maxHeight,\r\n }}\r\n >\r\n {options.length === 0 ? (\r\n <div className=\"app-select-empty\">No options</div>\r\n ) : (\r\n options.map((option) => {\r\n const active = option.value === value;\r\n return (\r\n <button\r\n key={option.value || \"__empty\"}\r\n type=\"button\"\r\n role=\"option\"\r\n aria-selected={active}\r\n className={active ? \"app-select-option active\" : \"app-select-option\"}\r\n onClick={() => choose(option.value)}\r\n >\r\n {option.tone ? <span className={`app-select-dot ${option.tone}`} aria-hidden=\"true\" /> : null}\r\n <span>{option.label}</span>\r\n {active ? (\r\n <svg className=\"app-select-check\" viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M4.5 10.5 8.2 14.2 15.5 6\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n ) : null}\r\n </button>\r\n );\r\n })\r\n )}\r\n </div>,\r\n document.body,\r\n )\r\n : null}\r\n </div>\r\n );\r\n}\r\n\r\n/** @deprecated Prefer Select — alias kept for configurator migration */\r\nexport const AppSelect = Select;\r\nexport type AppSelectOption = SelectOption;\r\n","\"use client\";\r\n\r\nimport { useEffect, useLayoutEffect, useMemo, useRef, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nconst weekdayLabels = [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"];\r\n\r\nfunction pad(value: number) {\r\n return String(value).padStart(2, \"0\");\r\n}\r\n\r\nfunction toIso(date: Date) {\r\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\r\n}\r\n\r\nfunction parseIso(value: string) {\r\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\r\n return null;\r\n }\r\n const [year, month, day] = value.split(\"-\").map(Number);\r\n const date = new Date(year, month - 1, day);\r\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\r\n return null;\r\n }\r\n return date;\r\n}\r\n\r\nfunction formatDisplay(value: string) {\r\n const date = parseIso(value);\r\n if (!date) {\r\n return \"\";\r\n }\r\n return `${pad(date.getDate())}/${pad(date.getMonth() + 1)}/${date.getFullYear()}`;\r\n}\r\n\r\nfunction startOfMonth(date: Date) {\r\n return new Date(date.getFullYear(), date.getMonth(), 1);\r\n}\r\n\r\nfunction buildCells(month: Date) {\r\n const first = startOfMonth(month);\r\n const mondayBased = (first.getDay() + 6) % 7;\r\n const start = new Date(first);\r\n start.setDate(first.getDate() - mondayBased);\r\n return Array.from({ length: 42 }, (_, index) => {\r\n const day = new Date(start);\r\n day.setDate(start.getDate() + index);\r\n return day;\r\n });\r\n}\r\n\r\ntype MenuPosition = {\r\n top: number;\r\n left: number;\r\n width: number;\r\n openUp: boolean;\r\n};\r\n\r\nexport function DateField({\r\n value,\r\n onChange,\r\n placeholder = \"dd/mm/yyyy\",\r\n disabled = false,\r\n readOnly = false,\r\n}: {\r\n value: string;\r\n onChange?: (value: string) => void;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n readOnly?: boolean;\r\n}) {\r\n const rootRef = useRef<HTMLDivElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const selected = parseIso(value);\r\n const [open, setOpen] = useState(false);\r\n const [menuPos, setMenuPos] = useState<MenuPosition | null>(null);\r\n const [viewMonth, setViewMonth] = useState(() => startOfMonth(selected ?? new Date()));\r\n const cells = useMemo(() => buildCells(viewMonth), [viewMonth]);\r\n const today = toIso(new Date());\r\n const locked = disabled || readOnly;\r\n\r\n function updatePosition() {\r\n const root = rootRef.current;\r\n if (!root) {\r\n return;\r\n }\r\n const rect = root.getBoundingClientRect();\r\n const openUp = window.innerHeight - rect.bottom < 340 && rect.top > 340;\r\n setMenuPos({\r\n top: openUp ? rect.top - 8 : rect.bottom + 6,\r\n left: rect.left,\r\n width: Math.max(rect.width, 280),\r\n openUp,\r\n });\r\n }\r\n\r\n useLayoutEffect(() => {\r\n if (!open) {\r\n return;\r\n }\r\n updatePosition();\r\n function onReposition() {\r\n updatePosition();\r\n }\r\n window.addEventListener(\"resize\", onReposition);\r\n window.addEventListener(\"scroll\", onReposition, true);\r\n return () => {\r\n window.removeEventListener(\"resize\", onReposition);\r\n window.removeEventListener(\"scroll\", onReposition, true);\r\n };\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (!open) {\r\n return;\r\n }\r\n function onPointerDown(event: MouseEvent) {\r\n const target = event.target as Node;\r\n if (rootRef.current?.contains(target) || menuRef.current?.contains(target)) {\r\n return;\r\n }\r\n setOpen(false);\r\n }\r\n function onKeyDown(event: KeyboardEvent) {\r\n if (event.key === \"Escape\") {\r\n setOpen(false);\r\n }\r\n }\r\n document.addEventListener(\"mousedown\", onPointerDown);\r\n document.addEventListener(\"keydown\", onKeyDown);\r\n return () => {\r\n document.removeEventListener(\"mousedown\", onPointerDown);\r\n document.removeEventListener(\"keydown\", onKeyDown);\r\n };\r\n }, [open]);\r\n\r\n function openPicker() {\r\n if (locked) {\r\n return;\r\n }\r\n setViewMonth(startOfMonth(selected ?? new Date()));\r\n setOpen(true);\r\n }\r\n\r\n function choose(date: Date) {\r\n onChange?.(toIso(date));\r\n setOpen(false);\r\n }\r\n\r\n const monthLabel = viewMonth.toLocaleString(undefined, { month: \"long\", year: \"numeric\" });\r\n\r\n return (\r\n <div className={readOnly ? \"date-field read-only\" : \"date-field\"} ref={rootRef}>\r\n <button\r\n type=\"button\"\r\n className={open ? \"date-field-trigger open\" : \"date-field-trigger\"}\r\n disabled={disabled}\r\n onClick={() => {\r\n if (locked) {\r\n return;\r\n }\r\n if (open) {\r\n setOpen(false);\r\n } else {\r\n openPicker();\r\n }\r\n }}\r\n >\r\n <span className={value ? \"date-field-value\" : \"date-field-placeholder\"}>\r\n {value ? formatDisplay(value) : placeholder}\r\n </span>\r\n <svg className=\"date-field-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n <rect x=\"3.5\" y=\"5\" width=\"17\" height=\"15.5\" rx=\"2\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" />\r\n <path d=\"M3.5 9.5h17M8 3.5v3M16 3.5v3\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" />\r\n </svg>\r\n </button>\r\n {open && menuPos\r\n ? createPortal(\r\n <div\r\n ref={menuRef}\r\n className=\"date-picker\"\r\n style={{\r\n top: menuPos.openUp ? undefined : menuPos.top,\r\n bottom: menuPos.openUp ? window.innerHeight - menuPos.top : undefined,\r\n left: menuPos.left,\r\n width: menuPos.width,\r\n }}\r\n >\r\n <div className=\"date-picker-head\">\r\n <strong>{monthLabel}</strong>\r\n <div className=\"date-picker-nav\">\r\n <button type=\"button\" className=\"ghost\" aria-label=\"Previous month\" onClick={() => setViewMonth(new Date(viewMonth.getFullYear(), viewMonth.getMonth() - 1, 1))}>\r\n ‹\r\n </button>\r\n <button type=\"button\" className=\"ghost\" aria-label=\"Next month\" onClick={() => setViewMonth(new Date(viewMonth.getFullYear(), viewMonth.getMonth() + 1, 1))}>\r\n ›\r\n </button>\r\n </div>\r\n </div>\r\n <div className=\"date-picker-weekdays\">\r\n {weekdayLabels.map((label) => (\r\n <span key={label}>{label}</span>\r\n ))}\r\n </div>\r\n <div className=\"date-picker-grid\">\r\n {cells.map((day) => {\r\n const iso = toIso(day);\r\n const outside = day.getMonth() !== viewMonth.getMonth();\r\n const isSelected = value === iso;\r\n const isToday = today === iso;\r\n const className = [\r\n \"date-picker-day\",\r\n outside ? \"outside\" : \"\",\r\n isSelected ? \"selected\" : \"\",\r\n isToday ? \"today\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n return (\r\n <button key={iso + String(outside)} type=\"button\" className={className} onClick={() => choose(day)}>\r\n {day.getDate()}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n <div className=\"date-picker-footer\">\r\n <button\r\n type=\"button\"\r\n className=\"ghost\"\r\n onClick={() => {\r\n onChange?.(\"\");\r\n setOpen(false);\r\n }}\r\n >\r\n Clear\r\n </button>\r\n <button\r\n type=\"button\"\r\n className=\"ghost\"\r\n onClick={() => {\r\n const now = new Date();\r\n setViewMonth(startOfMonth(now));\r\n choose(now);\r\n }}\r\n >\r\n Today\r\n </button>\r\n </div>\r\n </div>,\r\n document.body,\r\n )\r\n : null}\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport type { ReactNode } from \"react\";\r\nimport { Button } from \"./Button\";\r\n\r\nexport function Dialog({\r\n title,\r\n open,\r\n onClose,\r\n children,\r\n wide = true,\r\n}: {\r\n title: string;\r\n open: boolean;\r\n onClose: () => void;\r\n children: ReactNode;\r\n wide?: boolean;\r\n}) {\r\n if (!open) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div className=\"dialog-backdrop\" onClick={onClose}>\r\n <div\r\n className={wide ? \"dialog form-dialog\" : \"dialog\"}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-label={title}\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <div className=\"dialog-head\">\r\n <h2>{title}</h2>\r\n <Button variant=\"ghost\" onClick={onClose}>\r\n Close\r\n </Button>\r\n </div>\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\n/** @deprecated Prefer Dialog — alias kept for configurator migration */\r\nexport const FormDialog = Dialog;\r\n","\"use client\";\r\n\r\nimport { Button } from \"./Button\";\r\nimport { Dialog } from \"./Dialog\";\r\n\r\nexport function ConfirmDeleteDialog({\r\n open,\r\n message,\r\n pending = false,\r\n onCancel,\r\n onConfirm,\r\n}: {\r\n open: boolean;\r\n message: string;\r\n pending?: boolean;\r\n onCancel: () => void;\r\n onConfirm: () => void;\r\n}) {\r\n return (\r\n <Dialog title=\"Confirm delete\" open={open} onClose={pending ? () => undefined : onCancel} wide={false}>\r\n <div className=\"card-form\">\r\n <p className=\"hint\">{message}</p>\r\n <div className=\"actions\">\r\n <Button variant=\"ghost\" onClick={onCancel} disabled={pending}>\r\n Cancel\r\n </Button>\r\n <Button variant=\"danger\" onClick={onConfirm} disabled={pending}>\r\n {pending ? \"Deleting…\" : \"Delete\"}\r\n </Button>\r\n </div>\r\n </div>\r\n </Dialog>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useSyncExternalStore } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nfunction useIsClient() {\r\n return useSyncExternalStore(\r\n () => () => {},\r\n () => true,\r\n () => false,\r\n );\r\n}\r\n\r\nfunction SuccessIcon() {\r\n return (\r\n <svg className=\"snackbar-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n <circle cx=\"12\" cy=\"12\" r=\"9\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" />\r\n <path\r\n d=\"M8.2 12.2 10.8 14.8 15.8 9.6\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.8\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction AlertIcon() {\r\n return (\r\n <svg className=\"snackbar-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n <path\r\n d=\"M12 3.8 3.8 19.2h16.4L12 3.8Z\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.8\"\r\n strokeLinejoin=\"round\"\r\n />\r\n <path d=\"M12 10v4.2\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n <circle cx=\"12\" cy=\"16.8\" r=\"1\" fill=\"currentColor\" />\r\n </svg>\r\n );\r\n}\r\n\r\nexport function Snackbar({\r\n message,\r\n success,\r\n onDismiss,\r\n}: {\r\n message: string;\r\n success: boolean;\r\n onDismiss?: () => void;\r\n}) {\r\n const isClient = useIsClient();\r\n\r\n useEffect(() => {\r\n if (!message || !onDismiss) {\r\n return;\r\n }\r\n\r\n const timeout = window.setTimeout(onDismiss, success ? 3200 : 4800);\r\n return () => window.clearTimeout(timeout);\r\n }, [message, success, onDismiss]);\r\n\r\n if (!isClient || !message) {\r\n return null;\r\n }\r\n\r\n return createPortal(\r\n <div className=\"snackbar-host\" aria-live=\"polite\">\r\n <div className={success ? \"snackbar success\" : \"snackbar\"} role=\"status\">\r\n {success ? <SuccessIcon /> : <AlertIcon />}\r\n <p>{message}</p>\r\n {onDismiss ? (\r\n <button type=\"button\" className=\"snackbar-close\" aria-label=\"Dismiss\" onClick={onDismiss}>\r\n ×\r\n </button>\r\n ) : null}\r\n </div>\r\n </div>,\r\n document.body,\r\n );\r\n}\r\n\r\n/** @deprecated Prefer Snackbar — alias kept for configurator migration */\r\nexport const StatusMessage = Snackbar;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState, type ReactNode } from \"react\";\r\nimport { Button } from \"./Button\";\r\n\r\nfunction MenuIcon({ open }: { open: boolean }) {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n {open ? (\r\n <path d=\"M5 5l10 10M15 5 5 15\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n ) : (\r\n <path d=\"M3.5 5.5h13M3.5 10h13M3.5 14.5h13\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n )}\r\n </svg>\r\n );\r\n}\r\n\r\nexport function Topbar({\r\n title,\r\n logoSrc,\r\n logoAlt = \"Logo\",\r\n username = \"\",\r\n onLogout,\r\n showMenuButton = false,\r\n menuOpen = false,\r\n onMenuClick,\r\n children,\r\n}: {\r\n title: string;\r\n logoSrc?: string;\r\n logoAlt?: string;\r\n username?: string;\r\n onLogout?: () => void;\r\n /** Shows a hamburger control (used by AppShell drawer on small screens). */\r\n showMenuButton?: boolean;\r\n menuOpen?: boolean;\r\n onMenuClick?: () => void;\r\n children?: ReactNode;\r\n}) {\r\n const [accountOpen, setAccountOpen] = useState(false);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const initial = (username || \"U\").slice(0, 1).toUpperCase();\r\n\r\n useEffect(() => {\r\n if (!accountOpen) {\r\n return;\r\n }\r\n\r\n function onPointerDown(event: MouseEvent) {\r\n if (menuRef.current && !menuRef.current.contains(event.target as Node)) {\r\n setAccountOpen(false);\r\n }\r\n }\r\n\r\n document.addEventListener(\"mousedown\", onPointerDown);\r\n return () => document.removeEventListener(\"mousedown\", onPointerDown);\r\n }, [accountOpen]);\r\n\r\n return (\r\n <header className=\"topbar\">\r\n <div className=\"topbar-brand\">\r\n {showMenuButton && onMenuClick ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost topbar-menu-button\"\r\n aria-label={menuOpen ? \"Close navigation menu\" : \"Open navigation menu\"}\r\n aria-expanded={menuOpen}\r\n onClick={onMenuClick}\r\n >\r\n <MenuIcon open={menuOpen} />\r\n </button>\r\n ) : null}\r\n {logoSrc ? (\r\n <img\r\n className=\"topbar-logo\"\r\n src={logoSrc}\r\n alt={logoAlt}\r\n onError={(event) => {\r\n event.currentTarget.hidden = true;\r\n }}\r\n />\r\n ) : null}\r\n <h1>{title}</h1>\r\n </div>\r\n <div className=\"topbar-actions\" ref={menuRef}>\r\n {children}\r\n {onLogout ? (\r\n <>\r\n <button\r\n type=\"button\"\r\n className=\"avatar-button\"\r\n aria-haspopup=\"menu\"\r\n aria-expanded={accountOpen}\r\n onClick={() => setAccountOpen((open) => !open)}\r\n title={username || \"Account\"}\r\n >\r\n <span className=\"avatar\">{initial}</span>\r\n </button>\r\n {accountOpen ? (\r\n <div className=\"avatar-menu\" role=\"menu\">\r\n {username ? <p className=\"avatar-name\">{username}</p> : null}\r\n <Button\r\n variant=\"ghost\"\r\n role=\"menuitem\"\r\n onClick={() => {\r\n setAccountOpen(false);\r\n onLogout();\r\n }}\r\n >\r\n Logout\r\n </Button>\r\n </div>\r\n ) : null}\r\n </>\r\n ) : null}\r\n </div>\r\n </header>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nexport type SideNavItem = {\r\n id: string;\r\n label: string;\r\n /** Compact label for the mobile bottom nav (falls back to `label`). */\r\n short?: string;\r\n};\r\n\r\nexport function SideNav({\r\n items,\r\n activeId,\r\n onSelect,\r\n label = \"Sections\",\r\n className = \"\",\r\n}: {\r\n items: SideNavItem[];\r\n activeId: string;\r\n onSelect: (id: string) => void;\r\n label?: string;\r\n className?: string;\r\n}) {\r\n return (\r\n <nav className={[\"side-nav\", className].filter(Boolean).join(\" \")} aria-label={label}>\r\n {items.map((item) => (\r\n <button\r\n key={item.id}\r\n type=\"button\"\r\n className={activeId === item.id ? \"active\" : \"\"}\r\n onClick={() => onSelect(item.id)}\r\n >\r\n {item.label}\r\n </button>\r\n ))}\r\n </nav>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { Select } from \"./Select\";\r\n\r\nexport type PageSizeOption = {\r\n value: string;\r\n label: string;\r\n};\r\n\r\nconst defaultPageSizes: PageSizeOption[] = [\r\n { value: \"15\", label: \"15\" },\r\n { value: \"20\", label: \"20\" },\r\n { value: \"50\", label: \"50\" },\r\n { value: \"100\", label: \"100\" },\r\n { value: \"all\", label: \"All\" },\r\n];\r\n\r\nexport function Pagination({\r\n page,\r\n pageCount,\r\n pageSize,\r\n onPageChange,\r\n onPageSizeChange,\r\n summary,\r\n pageSizeOptions = defaultPageSizes,\r\n disabled = false,\r\n}: {\r\n page: number;\r\n pageCount: number;\r\n pageSize: string;\r\n onPageChange: (page: number) => void;\r\n onPageSizeChange: (pageSize: string) => void;\r\n summary: string;\r\n pageSizeOptions?: PageSizeOption[];\r\n disabled?: boolean;\r\n}) {\r\n const showAll = pageSize === \"all\";\r\n\r\n return (\r\n <div className=\"table-pagination\">\r\n <label className=\"page-size\">\r\n Rows\r\n <Select\r\n className=\"page-size-select\"\r\n value={pageSize}\r\n options={pageSizeOptions}\r\n onChange={onPageSizeChange}\r\n disabled={disabled}\r\n />\r\n </label>\r\n <p className=\"page-summary\">{summary}</p>\r\n <div className=\"page-buttons\">\r\n <button\r\n type=\"button\"\r\n className=\"ghost\"\r\n disabled={disabled || showAll || page <= 1}\r\n onClick={() => onPageChange(page - 1)}\r\n >\r\n Previous\r\n </button>\r\n <span className=\"page-indicator\">\r\n Page {showAll ? 1 : page} of {pageCount}\r\n </span>\r\n <button\r\n type=\"button\"\r\n className=\"ghost\"\r\n disabled={disabled || showAll || page >= pageCount}\r\n onClick={() => onPageChange(page + 1)}\r\n >\r\n Next\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nexport function FormActions({\r\n pending,\r\n editing,\r\n saveLabel,\r\n updateLabel,\r\n newLabel,\r\n onNew,\r\n saveDisabled = false,\r\n replaceSaveWhenEditing = false,\r\n}: {\r\n pending: boolean;\r\n editing: boolean;\r\n saveLabel: string;\r\n updateLabel?: string;\r\n newLabel: string;\r\n onNew: () => void;\r\n saveDisabled?: boolean;\r\n replaceSaveWhenEditing?: boolean;\r\n}) {\r\n if (editing && replaceSaveWhenEditing) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div className=\"actions\">\r\n <button type=\"submit\" disabled={pending || saveDisabled}>\r\n {editing && updateLabel ? updateLabel : saveLabel}\r\n </button>\r\n <button type=\"button\" className=\"ghost\" onClick={onNew}>\r\n {newLabel}\r\n </button>\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useState, type ReactNode } from \"react\";\r\nimport { SideNav, type SideNavItem } from \"../primitives/SideNav\";\r\nimport { Topbar } from \"../primitives/Topbar\";\r\n\r\nexport type MobileNavMode = \"drawer\" | \"bottom\" | \"hybrid\";\r\n\r\nexport type AppShellProps = {\r\n title: string;\r\n logoSrc?: string;\r\n logoAlt?: string;\r\n username?: string;\r\n onLogout?: () => void;\r\n navItems: SideNavItem[];\r\n activeNavId: string;\r\n onNavSelect: (id: string) => void;\r\n navLabel?: string;\r\n /**\r\n * Small-screen navigation strategy.\r\n * - `drawer` (default): hamburger opens a collapsible side menu; no crowded bottom bar\r\n * - `bottom`: classic bottom nav from all `navItems` (fine for a few sections)\r\n * - `hybrid`: compact bottom bar with current section + Menu that opens the drawer\r\n */\r\n mobileNav?: MobileNavMode;\r\n /**\r\n * When true, renders the mobile bottom nav.\r\n * Defaults to true for `bottom` / `hybrid`, false for `drawer`.\r\n */\r\n showBottomNav?: boolean;\r\n /** Controlled drawer open state (optional). */\r\n navDrawerOpen?: boolean;\r\n onNavDrawerOpenChange?: (open: boolean) => void;\r\n topbarActions?: ReactNode;\r\n children: ReactNode;\r\n /** Extra class on the content/screen region */\r\n screenClassName?: string;\r\n};\r\n\r\n/**\r\n * Application chrome: topbar + left side nav + content screen.\r\n * On small screens, prefers a collapsible drawer over a crowded bottom nav.\r\n */\r\nexport function AppShell({\r\n title,\r\n logoSrc,\r\n logoAlt,\r\n username,\r\n onLogout,\r\n navItems,\r\n activeNavId,\r\n onNavSelect,\r\n navLabel = \"Sections\",\r\n mobileNav = \"drawer\",\r\n showBottomNav,\r\n navDrawerOpen,\r\n onNavDrawerOpenChange,\r\n topbarActions,\r\n children,\r\n screenClassName = \"\",\r\n}: AppShellProps) {\r\n const [internalDrawerOpen, setInternalDrawerOpen] = useState(false);\r\n const drawerControlled = navDrawerOpen !== undefined;\r\n const drawerOpen = drawerControlled ? navDrawerOpen : internalDrawerOpen;\r\n const useBottomNav = showBottomNav ?? (mobileNav === \"bottom\" || mobileNav === \"hybrid\");\r\n const useDrawer = mobileNav === \"drawer\" || mobileNav === \"hybrid\";\r\n const activeItem = navItems.find((item) => item.id === activeNavId);\r\n\r\n function setDrawerOpen(open: boolean) {\r\n if (!drawerControlled) {\r\n setInternalDrawerOpen(open);\r\n }\r\n onNavDrawerOpenChange?.(open);\r\n }\r\n\r\n useEffect(() => {\r\n if (!drawerOpen) {\r\n return;\r\n }\r\n\r\n function onKeyDown(event: KeyboardEvent) {\r\n if (event.key === \"Escape\") {\r\n if (!drawerControlled) {\r\n setInternalDrawerOpen(false);\r\n }\r\n onNavDrawerOpenChange?.(false);\r\n }\r\n }\r\n\r\n document.addEventListener(\"keydown\", onKeyDown);\r\n const previousOverflow = document.body.style.overflow;\r\n document.body.style.overflow = \"hidden\";\r\n return () => {\r\n document.removeEventListener(\"keydown\", onKeyDown);\r\n document.body.style.overflow = previousOverflow;\r\n };\r\n }, [drawerControlled, drawerOpen, onNavDrawerOpenChange]);\r\n\r\n function selectNav(id: string) {\r\n onNavSelect(id);\r\n setDrawerOpen(false);\r\n }\r\n\r\n return (\r\n <div\r\n className={[\r\n \"aksui-root\",\r\n \"app-shell\",\r\n `mobile-nav-${mobileNav}`,\r\n useBottomNav ? \"has-bottom-nav\" : \"\",\r\n drawerOpen ? \"nav-drawer-open\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <Topbar\r\n title={title}\r\n logoSrc={logoSrc}\r\n logoAlt={logoAlt}\r\n username={username}\r\n onLogout={onLogout}\r\n showMenuButton={useDrawer}\r\n menuOpen={drawerOpen}\r\n onMenuClick={() => setDrawerOpen(!drawerOpen)}\r\n >\r\n {topbarActions}\r\n </Topbar>\r\n\r\n <div className=\"app-body\">\r\n <SideNav items={navItems} activeId={activeNavId} onSelect={onNavSelect} label={navLabel} />\r\n <div className={[\"screen\", screenClassName].filter(Boolean).join(\" \")}>{children}</div>\r\n </div>\r\n\r\n {useDrawer ? (\r\n <>\r\n <button\r\n type=\"button\"\r\n className={drawerOpen ? \"nav-drawer-backdrop open\" : \"nav-drawer-backdrop\"}\r\n aria-label=\"Close navigation menu\"\r\n tabIndex={drawerOpen ? 0 : -1}\r\n onClick={() => setDrawerOpen(false)}\r\n />\r\n <aside\r\n className={drawerOpen ? \"nav-drawer open\" : \"nav-drawer\"}\r\n aria-label={navLabel}\r\n aria-hidden={!drawerOpen}\r\n >\r\n <div className=\"nav-drawer-head\">\r\n <p className=\"nav-drawer-title\">{navLabel}</p>\r\n <button type=\"button\" className=\"ghost nav-drawer-close\" onClick={() => setDrawerOpen(false)}>\r\n Close\r\n </button>\r\n </div>\r\n <SideNav\r\n className=\"nav-drawer-nav\"\r\n items={navItems}\r\n activeId={activeNavId}\r\n onSelect={selectNav}\r\n label={navLabel}\r\n />\r\n </aside>\r\n </>\r\n ) : null}\r\n\r\n {useBottomNav ? (\r\n <nav className=\"bottom-nav\" aria-label={navLabel}>\r\n {mobileNav === \"hybrid\" ? (\r\n <>\r\n <button type=\"button\" className=\"active bottom-nav-current\" disabled>\r\n {activeItem?.short ?? activeItem?.label ?? \"Section\"}\r\n </button>\r\n <button type=\"button\" className=\"bottom-nav-menu\" onClick={() => setDrawerOpen(true)}>\r\n Menu\r\n </button>\r\n </>\r\n ) : (\r\n navItems.map((item) => (\r\n <button\r\n key={item.id}\r\n type=\"button\"\r\n className={activeNavId === item.id ? \"active\" : \"\"}\r\n onClick={() => onNavSelect(item.id)}\r\n >\r\n {item.short ?? item.label}\r\n </button>\r\n ))\r\n )}\r\n </nav>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport {\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n useSyncExternalStore,\r\n type MouseEvent,\r\n type ReactNode,\r\n} from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { Pagination } from \"../primitives/Pagination\";\r\nimport { Select, type SelectOption } from \"../primitives/Select\";\r\n\r\nfunction useIsClient() {\r\n return useSyncExternalStore(\r\n () => () => {},\r\n () => true,\r\n () => false,\r\n );\r\n}\r\n\r\n/** Hover tooltips only on fine pointers (desktop). Touch / narrow layouts never get them. */\r\nfunction useHoverTooltipsEnabled() {\r\n return useSyncExternalStore(\r\n (onStoreChange) => {\r\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") {\r\n return () => {};\r\n }\r\n const media = window.matchMedia(\"(hover: hover) and (pointer: fine)\");\r\n media.addEventListener(\"change\", onStoreChange);\r\n return () => media.removeEventListener(\"change\", onStoreChange);\r\n },\r\n () =>\r\n typeof window !== \"undefined\" &&\r\n typeof window.matchMedia === \"function\" &&\r\n window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches,\r\n () => false,\r\n );\r\n}\r\n\r\nexport type TableColumn<T> = {\r\n key: string;\r\n header: string;\r\n value: (item: T) => string | number | null | undefined;\r\n display?: (item: T) => string | number | null | undefined;\r\n filterable?: boolean;\r\n sortable?: boolean;\r\n /** When set, filter uses an exact-match Select instead of text contains. */\r\n filterOptions?: SelectOption[];\r\n filterPlaceholder?: string;\r\n /** When false, column starts hidden. Default true. */\r\n defaultVisible?: boolean;\r\n /** Key sent to export APIs when different from `key` (e.g. PascalCase property name). */\r\n exportKey?: string;\r\n};\r\n\r\n/** Formats supported by the shared table download control (matches akscore TableExport). */\r\nexport type ExportDownloadFormat = \"csv\" | \"xlsx\" | \"json\";\r\n\r\n/** Column descriptors passed to `onDownload` (visible columns only). */\r\nexport type ExportColumnRef = {\r\n key: string;\r\n header: string;\r\n};\r\n\r\nexport type BulkImportMode = \"insert\" | \"update\" | \"upsert\";\r\n\r\nexport type BulkImportError = {\r\n row: number;\r\n field?: string | null;\r\n code: string;\r\n message: string;\r\n};\r\n\r\nexport type BulkImportResult = {\r\n totalRows: number;\r\n failed: number;\r\n applied: boolean;\r\n errors: BulkImportError[];\r\n};\r\n\r\nconst EXPORT_FORMAT_OPTIONS: { format: ExportDownloadFormat; label: string }[] = [\r\n { format: \"csv\", label: \"CSV\" },\r\n { format: \"xlsx\", label: \"Excel\" },\r\n { format: \"json\", label: \"JSON\" },\r\n];\r\n\r\nconst BULK_IMPORT_MODE_OPTIONS: { mode: BulkImportMode; label: string }[] = [\r\n { mode: \"insert\", label: \"Insert\" },\r\n { mode: \"update\", label: \"Update\" },\r\n { mode: \"upsert\", label: \"Upsert\" },\r\n];\r\n\r\ntype SortDirection = \"asc\" | \"desc\";\r\ntype SortState = { key: string; direction: SortDirection };\r\ntype DetailLine = { label: string; value: string };\r\ntype TooltipState = { x: number; y: number; lines: DetailLine[] };\r\n\r\nfunction defaultVisibleKeys<T>(columns: TableColumn<T>[]) {\r\n return columns.filter((column) => column.defaultVisible !== false).map((column) => column.key);\r\n}\r\n\r\nfunction readStoredColumnKeys(prefsKey: string | undefined, fallback: string[], allowed: Set<string>) {\r\n if (!prefsKey || typeof window === \"undefined\") {\r\n return fallback;\r\n }\r\n try {\r\n const raw = window.localStorage.getItem(prefsKey);\r\n if (!raw) {\r\n return fallback;\r\n }\r\n const parsed = JSON.parse(raw) as unknown;\r\n if (!Array.isArray(parsed)) {\r\n return fallback;\r\n }\r\n const keys = parsed.filter((entry): entry is string => typeof entry === \"string\" && allowed.has(entry));\r\n return keys.length > 0 ? keys : fallback;\r\n } catch {\r\n return fallback;\r\n }\r\n}\r\n\r\nfunction writeStoredColumnKeys(prefsKey: string | undefined, keys: string[]) {\r\n if (!prefsKey || typeof window === \"undefined\") {\r\n return;\r\n }\r\n try {\r\n window.localStorage.setItem(prefsKey, JSON.stringify(keys));\r\n } catch {\r\n /* ignore quota / private mode */\r\n }\r\n}\r\n\r\nfunction compareColumnValues<T>(column: TableColumn<T>, left: T, right: T) {\r\n const leftRaw = column.display ? column.display(left) : column.value(left);\r\n const rightRaw = column.display ? column.display(right) : column.value(right);\r\n\r\n if (leftRaw === null || leftRaw === undefined || leftRaw === \"\") {\r\n return rightRaw === null || rightRaw === undefined || rightRaw === \"\" ? 0 : 1;\r\n }\r\n if (rightRaw === null || rightRaw === undefined || rightRaw === \"\") {\r\n return -1;\r\n }\r\n\r\n if (typeof leftRaw === \"number\" && typeof rightRaw === \"number\") {\r\n return leftRaw - rightRaw;\r\n }\r\n\r\n const leftText = String(leftRaw);\r\n const rightText = String(rightRaw);\r\n const leftNumber = Number(leftText);\r\n const rightNumber = Number(rightText);\r\n if (\r\n leftText.trim() !== \"\" &&\r\n rightText.trim() !== \"\" &&\r\n Number.isFinite(leftNumber) &&\r\n Number.isFinite(rightNumber) &&\r\n /^-?\\d+(\\.\\d+)?$/.test(leftText.trim()) &&\r\n /^-?\\d+(\\.\\d+)?$/.test(rightText.trim())\r\n ) {\r\n return leftNumber - rightNumber;\r\n }\r\n\r\n return leftText.localeCompare(rightText, undefined, { sensitivity: \"base\", numeric: true });\r\n}\r\n\r\nfunction PlusIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M10 4v12M4 10h12\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction FilterIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M3 5h14M5.5 10h9M8 15h4\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction ResetIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M4.5 8.2A6 6 0 1 1 4.8 13\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n <path d=\"M4.5 4.2v4h4\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction ColumnsIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M4 4.5h3.5v11H4zM8.25 4.5h3.5v11h-3.5zM12.5 4.5H16v11h-3.5z\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction ChevronIcon({ open }: { open: boolean }) {\r\n return (\r\n <svg className={open ? \"side-rail-chevron open\" : \"side-rail-chevron\"} viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M8 4.5 13.5 10 8 15.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction PreviewIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M2.8 10S5.5 4.8 10 4.8 17.2 10 17.2 10 14.5 15.2 10 15.2 2.8 10 2.8 10Z\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" />\r\n <circle cx=\"10\" cy=\"10\" r=\"2.4\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction UploadIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M10 16.5V7.3\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n <path d=\"M6.5 10.8 10 7.2l3.5 3.6\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n <path d=\"M4 4.5h12\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction DownloadIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M10 3.5v8.2\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n <path d=\"M6.5 9.2 10 12.8l3.5-3.6\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n <path d=\"M4 15.5h12\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction MoreIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <circle cx=\"4.5\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" />\r\n <circle cx=\"10\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" />\r\n <circle cx=\"15.5\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction ToolsIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path\r\n d=\"M11.5 3.5h5v5M16.2 3.8 10 10M8.2 5.2H3.8v11h11V12\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.6\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction DetailList({ lines }: { lines: DetailLine[] }) {\r\n return (\r\n <dl className=\"record-detail-list\">\r\n {lines.map((line) => (\r\n <div key={line.label} className=\"record-detail-row\">\r\n <dt>{line.label}</dt>\r\n <dd>{line.value}</dd>\r\n </div>\r\n ))}\r\n </dl>\r\n );\r\n}\r\n\r\nexport function RecordWorkspace<T>({\r\n title,\r\n columns,\r\n items,\r\n rowKey,\r\n empty,\r\n onAdd,\r\n addLabel = \"Add\",\r\n canAdd = true,\r\n onView,\r\n onUpdate,\r\n onDelete,\r\n canUpdate,\r\n canDelete,\r\n onDownload,\r\n canDownload = true,\r\n canExport,\r\n downloadBusy = false,\r\n onBulkImport,\r\n canImport = true,\r\n importBusy = false,\r\n showColumnPicker = true,\r\n columnPrefsKey,\r\n visibleColumnKeys,\r\n defaultVisibleColumnKeys,\r\n onVisibleColumnKeysChange,\r\n toolbar,\r\n form,\r\n}: {\r\n title: string;\r\n columns: TableColumn<T>[];\r\n items: T[];\r\n rowKey: (item: T) => string | number;\r\n empty: string;\r\n onAdd?: () => void;\r\n addLabel?: string;\r\n canAdd?: boolean;\r\n onView?: (item: T) => void;\r\n onUpdate?: (item: T) => void;\r\n onDelete?: (item: T) => void;\r\n canUpdate?: (item: T) => boolean;\r\n canDelete?: (item: T) => boolean;\r\n /**\r\n * When set, shows CSV / Excel / JSON download controls.\r\n * Second argument lists currently visible columns (exportKey ?? key).\r\n */\r\n onDownload?: (format: ExportDownloadFormat, columns: ExportColumnRef[]) => void;\r\n /** Alias for `canDownload` (RBAC). When set, export requires this and `canDownload` to be true. */\r\n canExport?: boolean;\r\n canDownload?: boolean;\r\n downloadBusy?: boolean;\r\n onBulkImport?: (mode: BulkImportMode, file: File) => Promise<BulkImportResult>;\r\n canImport?: boolean;\r\n importBusy?: boolean;\r\n /** Column checklist in the side rail. Default true. */\r\n showColumnPicker?: boolean;\r\n /** Persist visible column keys in localStorage under this key. */\r\n columnPrefsKey?: string;\r\n /** Controlled visible column keys. */\r\n visibleColumnKeys?: string[];\r\n /** Uncontrolled initial visible keys (defaults to columns with defaultVisible !== false). */\r\n defaultVisibleColumnKeys?: string[];\r\n onVisibleColumnKeysChange?: (keys: string[]) => void;\r\n toolbar?: ReactNode;\r\n /** Slot for Add/Update/View dialogs owned by the host app. */\r\n form?: ReactNode;\r\n}) {\r\n const allowedKeys = useMemo(() => new Set(columns.map((column) => column.key)), [columns]);\r\n const fallbackKeys = useMemo(\r\n () => defaultVisibleColumnKeys ?? defaultVisibleKeys(columns),\r\n [columns, defaultVisibleColumnKeys],\r\n );\r\n const isControlled = visibleColumnKeys !== undefined;\r\n const [internalVisibleKeys, setInternalVisibleKeys] = useState<string[]>(() =>\r\n readStoredColumnKeys(columnPrefsKey, fallbackKeys, allowedKeys),\r\n );\r\n const [filters, setFilters] = useState<Record<string, string>>({});\r\n const [sort, setSort] = useState<SortState | null>(null);\r\n const [sideOpen, setSideOpen] = useState(false);\r\n const [toolsDrawerOpen, setToolsDrawerOpen] = useState(false);\r\n const [downloadOpen, setDownloadOpen] = useState(false);\r\n const [bulkOpen, setBulkOpen] = useState(false);\r\n const [bulkMode, setBulkMode] = useState<BulkImportMode>(\"upsert\");\r\n const [bulkFile, setBulkFile] = useState<File | null>(null);\r\n const [bulkReport, setBulkReport] = useState<BulkImportResult | null>(null);\r\n const bulkFileInputRef = useRef<HTMLInputElement | null>(null);\r\n const [columnsOpen, setColumnsOpen] = useState(false);\r\n const [previewEnabled, setPreviewEnabled] = useState(false);\r\n const [previewKey, setPreviewKey] = useState<string | number | null>(null);\r\n const [tooltip, setTooltip] = useState<TooltipState | null>(null);\r\n const [pageSize, setPageSize] = useState(\"15\");\r\n const [page, setPage] = useState(1);\r\n const [actionsMenu, setActionsMenu] = useState<{\r\n key: string | number;\r\n item: T;\r\n x: number;\r\n y: number;\r\n } | null>(null);\r\n const actionsMenuRef = useRef<HTMLDivElement | null>(null);\r\n const isClient = useIsClient();\r\n const hoverTooltipsEnabled = useHoverTooltipsEnabled();\r\n\r\n useEffect(() => {\r\n if (isControlled) {\r\n return;\r\n }\r\n setInternalVisibleKeys(readStoredColumnKeys(columnPrefsKey, fallbackKeys, allowedKeys));\r\n }, [allowedKeys, columnPrefsKey, fallbackKeys, isControlled]);\r\n\r\n const resolvedVisibleKeys = useMemo(() => {\r\n const source = isControlled ? visibleColumnKeys! : internalVisibleKeys;\r\n const filtered = source.filter((key) => allowedKeys.has(key));\r\n return filtered.length > 0 ? filtered : fallbackKeys.filter((key) => allowedKeys.has(key));\r\n }, [allowedKeys, fallbackKeys, internalVisibleKeys, isControlled, visibleColumnKeys]);\r\n\r\n const visibleColumns = useMemo(() => {\r\n const byKey = new Map(columns.map((column) => [column.key, column]));\r\n return resolvedVisibleKeys.map((key) => byKey.get(key)).filter((column): column is TableColumn<T> => Boolean(column));\r\n }, [columns, resolvedVisibleKeys]);\r\n\r\n function setVisibleKeys(next: string[]) {\r\n const unique = Array.from(new Set(next.filter((key) => allowedKeys.has(key))));\r\n const safe = unique.length > 0 ? unique : fallbackKeys.filter((key) => allowedKeys.has(key));\r\n if (!isControlled) {\r\n setInternalVisibleKeys(safe);\r\n writeStoredColumnKeys(columnPrefsKey, safe);\r\n }\r\n onVisibleColumnKeysChange?.(safe);\r\n }\r\n\r\n function toggleColumnVisible(key: string, checked: boolean) {\r\n if (checked) {\r\n if (resolvedVisibleKeys.includes(key)) {\r\n return;\r\n }\r\n setVisibleKeys([...resolvedVisibleKeys, key]);\r\n return;\r\n }\r\n if (resolvedVisibleKeys.length <= 1) {\r\n return;\r\n }\r\n setVisibleKeys(resolvedVisibleKeys.filter((entry) => entry !== key));\r\n }\r\n\r\n function selectAllColumns() {\r\n setVisibleKeys(columns.map((column) => column.key));\r\n }\r\n\r\n function resetColumns() {\r\n setVisibleKeys(fallbackKeys);\r\n }\r\n\r\n const filterableColumns = visibleColumns.filter((column) => column.filterable !== false);\r\n\r\n const filtered = useMemo(() => {\r\n return items.filter((item) =>\r\n filterableColumns.every((column) => {\r\n const query = (filters[column.key] ?? \"\").trim();\r\n if (!query) {\r\n return true;\r\n }\r\n const raw = column.value(item);\r\n const text = raw === null || raw === undefined ? \"\" : String(raw);\r\n if (column.filterOptions) {\r\n return text === query;\r\n }\r\n return text.toLowerCase().includes(query.toLowerCase());\r\n }),\r\n );\r\n }, [items, filters, filterableColumns]);\r\n\r\n const sorted = useMemo(() => {\r\n if (!sort) {\r\n return filtered;\r\n }\r\n const column = visibleColumns.find((entry) => entry.key === sort.key);\r\n if (!column || column.sortable === false) {\r\n return filtered;\r\n }\r\n const direction = sort.direction === \"asc\" ? 1 : -1;\r\n return [...filtered].sort((left, right) => compareColumnValues(column, left, right) * direction);\r\n }, [filtered, sort, visibleColumns]);\r\n\r\n const activeFilterCount = useMemo(\r\n () => filterableColumns.reduce((count, column) => count + ((filters[column.key] ?? \"\").trim() ? 1 : 0), 0),\r\n [filterableColumns, filters],\r\n );\r\n\r\n const hiddenColumnCount = columns.length - visibleColumns.length;\r\n const toolsBadgeCount = activeFilterCount + (hiddenColumnCount > 0 ? 1 : 0) + (previewEnabled ? 1 : 0);\r\n const showAll = pageSize === \"all\";\r\n const numericPageSize = showAll ? Math.max(sorted.length, 1) : Number(pageSize);\r\n const pageCount = showAll ? 1 : Math.max(1, Math.ceil(sorted.length / numericPageSize));\r\n const currentPage = Math.min(page, pageCount);\r\n const start = showAll ? 0 : (currentPage - 1) * numericPageSize;\r\n const pageItems = showAll ? sorted : sorted.slice(start, start + numericPageSize);\r\n const showAdd = canAdd && Boolean(onAdd);\r\n const exportAllowed = (canExport ?? true) && canDownload;\r\n const showDownload = Boolean(onDownload) && exportAllowed;\r\n const showBulkImport = Boolean(onBulkImport) && canImport;\r\n const showFilters = filterableColumns.length > 0;\r\n const showColumns = showColumnPicker && columns.length > 0;\r\n const previewItem = previewKey === null ? null : sorted.find((item) => rowKey(item) === previewKey) ?? null;\r\n const exportColumns: ExportColumnRef[] = visibleColumns.map((column) => ({\r\n key: column.exportKey ?? column.key,\r\n header: column.header,\r\n }));\r\n const canShowTooltip = hoverTooltipsEnabled && !previewEnabled && actionsMenu === null;\r\n\r\n useEffect(() => {\r\n if (actionsMenu === null) {\r\n return;\r\n }\r\n\r\n function onPointerDown(event: globalThis.MouseEvent) {\r\n if (actionsMenuRef.current && !actionsMenuRef.current.contains(event.target as Node)) {\r\n setActionsMenu(null);\r\n }\r\n }\r\n\r\n document.addEventListener(\"mousedown\", onPointerDown);\r\n return () => document.removeEventListener(\"mousedown\", onPointerDown);\r\n }, [actionsMenu]);\r\n\r\n useEffect(() => {\r\n if (!toolsDrawerOpen) {\r\n return;\r\n }\r\n\r\n function onKeyDown(event: KeyboardEvent) {\r\n if (event.key === \"Escape\") {\r\n setToolsDrawerOpen(false);\r\n }\r\n }\r\n\r\n document.addEventListener(\"keydown\", onKeyDown);\r\n const previousOverflow = document.body.style.overflow;\r\n document.body.style.overflow = \"hidden\";\r\n return () => {\r\n document.removeEventListener(\"keydown\", onKeyDown);\r\n document.body.style.overflow = previousOverflow;\r\n };\r\n }, [toolsDrawerOpen]);\r\n\r\n function requestDownload(format: ExportDownloadFormat) {\r\n if (!onDownload || downloadBusy) {\r\n return;\r\n }\r\n onDownload(format, exportColumns);\r\n setDownloadOpen(false);\r\n }\r\n\r\n async function submitBulkImport() {\r\n if (!onBulkImport || importBusy || !bulkFile) {\r\n return;\r\n }\r\n setBulkReport(null);\r\n try {\r\n const report = await onBulkImport(bulkMode, bulkFile);\r\n setBulkReport(report);\r\n if (report.applied) {\r\n setBulkFile(null);\r\n if (bulkFileInputRef.current) {\r\n bulkFileInputRef.current.value = \"\";\r\n }\r\n }\r\n } catch {\r\n setBulkReport({\r\n totalRows: 0,\r\n failed: 1,\r\n applied: false,\r\n errors: [{ row: 0, code: \"ImportFailed\", message: \"Import request failed.\" }],\r\n });\r\n }\r\n }\r\n\r\n function cellText(column: TableColumn<T>, item: T) {\r\n const raw = column.display ? column.display(item) : column.value(item);\r\n return raw === null || raw === undefined || raw === \"\" ? \"—\" : String(raw);\r\n }\r\n\r\n function detailLines(item: T): DetailLine[] {\r\n return visibleColumns.map((column) => ({\r\n label: column.header,\r\n value: cellText(column, item),\r\n }));\r\n }\r\n\r\n const previewTitle = previewItem && visibleColumns[0] ? cellText(visibleColumns[0], previewItem) : null;\r\n\r\n function changeFilter(key: string, value: string) {\r\n setFilters((current) => ({ ...current, [key]: value }));\r\n setPage(1);\r\n }\r\n\r\n function clearFilters() {\r\n setFilters({});\r\n setPage(1);\r\n }\r\n\r\n function toggleSort(column: TableColumn<T>) {\r\n if (column.sortable === false) {\r\n return;\r\n }\r\n setSort((current) => {\r\n if (!current || current.key !== column.key) {\r\n return { key: column.key, direction: \"asc\" };\r\n }\r\n if (current.direction === \"asc\") {\r\n return { key: column.key, direction: \"desc\" };\r\n }\r\n return null;\r\n });\r\n setPage(1);\r\n }\r\n\r\n function setPreviewEnabledValue(enabled: boolean) {\r\n setPreviewEnabled(enabled);\r\n setTooltip(null);\r\n if (!enabled) {\r\n setPreviewKey(null);\r\n }\r\n }\r\n\r\n function focusRecord(item: T) {\r\n if (previewEnabled) {\r\n setPreviewKey(rowKey(item));\r\n }\r\n }\r\n\r\n function showTooltip(item: T, event: MouseEvent) {\r\n if (!canShowTooltip) {\r\n return;\r\n }\r\n const padding = 16;\r\n const width = 280;\r\n const x = Math.min(event.clientX + 14, window.innerWidth - width - padding);\r\n const y = Math.min(event.clientY + 14, window.innerHeight - padding - 24);\r\n setTooltip({ x, y, lines: detailLines(item) });\r\n }\r\n\r\n function openRowActions(item: T, event: MouseEvent<HTMLButtonElement>) {\r\n event.stopPropagation();\r\n setTooltip(null);\r\n const key = rowKey(item);\r\n if (actionsMenu?.key === key) {\r\n setActionsMenu(null);\r\n return;\r\n }\r\n const rect = event.currentTarget.getBoundingClientRect();\r\n const menuWidth = 168;\r\n const menuHeight = 148;\r\n const x = Math.min(Math.max(8, rect.right - menuWidth), window.innerWidth - menuWidth - 8);\r\n const y = Math.min(rect.bottom + 6, window.innerHeight - menuHeight - 8);\r\n setActionsMenu({ key, item, x, y });\r\n }\r\n\r\n const summary =\r\n sorted.length === 0\r\n ? \"0 records\"\r\n : showAll\r\n ? `1–${sorted.length} of ${sorted.length}`\r\n : `${start + 1}–${Math.min(start + numericPageSize, sorted.length)} of ${sorted.length}`;\r\n\r\n function renderToolsBody({ compactIcons }: { compactIcons: boolean }) {\r\n if (compactIcons) {\r\n return (\r\n <div className=\"side-rail-icons\">\r\n <label className=\"side-rail-icon preview-check-icon\" title=\"Preview\">\r\n <input\r\n type=\"checkbox\"\r\n checked={previewEnabled}\r\n onChange={(event) => setPreviewEnabledValue(event.target.checked)}\r\n aria-label=\"Preview\"\r\n />\r\n <PreviewIcon />\r\n </label>\r\n {showAdd ? (\r\n <button type=\"button\" className=\"ghost side-rail-icon\" title={addLabel} aria-label={addLabel} onClick={onAdd}>\r\n <PlusIcon />\r\n </button>\r\n ) : null}\r\n {showColumns ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-icon\"\r\n title=\"Columns\"\r\n aria-label=\"Columns\"\r\n onClick={() => {\r\n setSideOpen(true);\r\n setColumnsOpen(true);\r\n }}\r\n >\r\n <ColumnsIcon />\r\n {hiddenColumnCount > 0 ? <span className=\"filter-badge\">{hiddenColumnCount}</span> : null}\r\n </button>\r\n ) : null}\r\n {showDownload ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-icon\"\r\n title=\"Download\"\r\n aria-label=\"Download\"\r\n disabled={downloadBusy}\r\n onClick={() => {\r\n setSideOpen(true);\r\n setDownloadOpen(true);\r\n }}\r\n >\r\n <DownloadIcon />\r\n </button>\r\n ) : null}\r\n {showBulkImport ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-icon\"\r\n title=\"Bulk entry\"\r\n aria-label=\"Bulk entry\"\r\n disabled={importBusy}\r\n onClick={() => {\r\n setSideOpen(true);\r\n setBulkOpen(true);\r\n }}\r\n >\r\n <UploadIcon />\r\n </button>\r\n ) : null}\r\n {showFilters ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-icon\"\r\n title=\"Show filters\"\r\n aria-label=\"Show filters\"\r\n onClick={() => setSideOpen(true)}\r\n >\r\n <FilterIcon />\r\n {activeFilterCount > 0 ? <span className=\"filter-badge\">{activeFilterCount}</span> : null}\r\n </button>\r\n ) : null}\r\n {showFilters ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-icon\"\r\n title=\"Reset filters\"\r\n aria-label=\"Reset filters\"\r\n disabled={activeFilterCount === 0}\r\n onClick={clearFilters}\r\n >\r\n <ResetIcon />\r\n </button>\r\n ) : null}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"side-rail-body\">\r\n <div className=\"preview-check\">\r\n <input\r\n type=\"checkbox\"\r\n checked={previewEnabled}\r\n onChange={(event) => setPreviewEnabledValue(event.target.checked)}\r\n aria-label=\"Preview\"\r\n />\r\n <PreviewIcon />\r\n <span aria-hidden=\"true\">Preview</span>\r\n </div>\r\n\r\n {showAdd ? (\r\n <button\r\n type=\"button\"\r\n className=\"side-rail-add\"\r\n onClick={() => {\r\n setToolsDrawerOpen(false);\r\n onAdd?.();\r\n }}\r\n >\r\n <PlusIcon />\r\n <span>{addLabel}</span>\r\n </button>\r\n ) : null}\r\n\r\n {showColumns ? (\r\n <div className=\"side-rail-columns\">\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-columns-toggle\"\r\n aria-expanded={columnsOpen}\r\n onClick={() => setColumnsOpen((open) => !open)}\r\n >\r\n <ColumnsIcon />\r\n <span>Columns{hiddenColumnCount > 0 ? ` (${visibleColumns.length}/${columns.length})` : \"\"}</span>\r\n </button>\r\n {columnsOpen ? (\r\n <div className=\"side-rail-columns-panel\" role=\"group\" aria-label=\"Visible columns\">\r\n <div className=\"side-rail-columns-actions\">\r\n <button type=\"button\" className=\"ghost\" onClick={selectAllColumns}>\r\n Select all\r\n </button>\r\n <button type=\"button\" className=\"ghost\" onClick={resetColumns}>\r\n Reset\r\n </button>\r\n </div>\r\n <div className=\"side-rail-columns-list\">\r\n {columns.map((column) => {\r\n const checked = resolvedVisibleKeys.includes(column.key);\r\n const disableUncheck = checked && resolvedVisibleKeys.length <= 1;\r\n return (\r\n <label key={column.key} className=\"side-rail-column-option\">\r\n <input\r\n type=\"checkbox\"\r\n checked={checked}\r\n disabled={disableUncheck}\r\n onChange={(event) => toggleColumnVisible(column.key, event.target.checked)}\r\n />\r\n <span>{column.header}</span>\r\n </label>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n\r\n {showDownload ? (\r\n <div className=\"side-rail-download\">\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-download-toggle\"\r\n aria-expanded={downloadOpen}\r\n disabled={downloadBusy}\r\n onClick={() => setDownloadOpen((open) => !open)}\r\n >\r\n <DownloadIcon />\r\n <span>{downloadBusy ? \"Downloading…\" : \"Download\"}</span>\r\n </button>\r\n {downloadOpen ? (\r\n <div className=\"side-rail-download-formats\" role=\"group\" aria-label=\"Download format\">\r\n {EXPORT_FORMAT_OPTIONS.map((option) => (\r\n <button\r\n key={option.format}\r\n type=\"button\"\r\n className=\"ghost side-rail-download-format\"\r\n disabled={downloadBusy}\r\n onClick={() => requestDownload(option.format)}\r\n >\r\n {option.label}\r\n </button>\r\n ))}\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n\r\n {showBulkImport ? (\r\n <div className=\"side-rail-bulk\">\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-bulk-toggle\"\r\n aria-expanded={bulkOpen}\r\n disabled={importBusy}\r\n onClick={() => setBulkOpen((open) => !open)}\r\n >\r\n <UploadIcon />\r\n <span>{importBusy ? \"Importing…\" : \"Bulk entry\"}</span>\r\n </button>\r\n {bulkOpen ? (\r\n <div className=\"side-rail-bulk-panel\" role=\"group\" aria-label=\"Bulk entry\">\r\n <label className=\"side-rail-bulk-mode\">\r\n Mode\r\n <Select\r\n value={bulkMode}\r\n options={BULK_IMPORT_MODE_OPTIONS.map((option) => ({ value: option.mode, label: option.label }))}\r\n onChange={(value) => setBulkMode(value as BulkImportMode)}\r\n />\r\n </label>\r\n <label className=\"side-rail-bulk-file\">\r\n File\r\n <input\r\n ref={bulkFileInputRef}\r\n type=\"file\"\r\n accept=\".csv,.xlsx,.json\"\r\n disabled={importBusy}\r\n onChange={(event) => {\r\n setBulkFile(event.target.files?.[0] ?? null);\r\n setBulkReport(null);\r\n }}\r\n />\r\n </label>\r\n <button\r\n type=\"button\"\r\n className=\"side-rail-bulk-submit\"\r\n disabled={importBusy || !bulkFile}\r\n onClick={() => void submitBulkImport()}\r\n >\r\n {importBusy ? \"Importing…\" : \"Import\"}\r\n </button>\r\n {bulkReport ? (\r\n <div className=\"side-rail-bulk-report\" role=\"status\">\r\n <p>\r\n {bulkReport.applied\r\n ? `Applied ${bulkReport.totalRows} row(s).`\r\n : `${bulkReport.failed} error(s) in ${bulkReport.totalRows} row(s).`}\r\n </p>\r\n {bulkReport.errors.length > 0 ? (\r\n <ul className=\"side-rail-bulk-errors\">\r\n {bulkReport.errors.slice(0, 8).map((error, index) => (\r\n <li key={`${error.row}-${error.code}-${index}`}>\r\n Row {error.row}: {error.message}\r\n </li>\r\n ))}\r\n {bulkReport.errors.length > 8 ? (\r\n <li>…and {bulkReport.errors.length - 8} more</li>\r\n ) : null}\r\n </ul>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n\r\n {showFilters ? (\r\n <div className=\"side-rail-filters\">\r\n <div className=\"filter-panel-head\">\r\n <h3>Filters</h3>\r\n <button\r\n type=\"button\"\r\n className=\"ghost filter-clear\"\r\n title=\"Reset filters\"\r\n aria-label=\"Reset filters\"\r\n disabled={activeFilterCount === 0}\r\n onClick={clearFilters}\r\n >\r\n <ResetIcon />\r\n <span>Reset</span>\r\n </button>\r\n </div>\r\n <div className=\"filter-panel-stack\">\r\n {filterableColumns.map((column) => (\r\n <label key={column.key}>\r\n {column.header}\r\n {column.filterOptions ? (\r\n <Select\r\n value={filters[column.key] ?? \"\"}\r\n options={[{ value: \"\", label: column.filterPlaceholder ?? \"All\" }, ...column.filterOptions]}\r\n onChange={(value) => changeFilter(column.key, value)}\r\n placeholder={column.filterPlaceholder ?? \"All\"}\r\n />\r\n ) : (\r\n <input\r\n value={filters[column.key] ?? \"\"}\r\n onChange={(event) => changeFilter(column.key, event.target.value)}\r\n placeholder={`Filter ${column.header.toLowerCase()}`}\r\n />\r\n )}\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n }\r\n\r\n function renderRowActions(item: T) {\r\n const key = rowKey(item);\r\n const updateAllowed = canUpdate ? canUpdate(item) : Boolean(onUpdate);\r\n const deleteAllowed = canDelete ? canDelete(item) : Boolean(onDelete);\r\n const hasActions = Boolean(onView || onUpdate || onDelete);\r\n if (!hasActions) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n <div className=\"row-actions row-actions-desktop\">\r\n {onView ? (\r\n <button type=\"button\" className=\"ghost row-action\" onClick={() => onView(item)}>\r\n View\r\n </button>\r\n ) : null}\r\n {onUpdate ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost row-action\"\r\n disabled={!updateAllowed}\r\n title={updateAllowed ? \"Update\" : \"Update is not available\"}\r\n onClick={() => onUpdate(item)}\r\n >\r\n Update\r\n </button>\r\n ) : null}\r\n {onDelete ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost row-action danger\"\r\n disabled={!deleteAllowed}\r\n title={deleteAllowed ? \"Delete\" : \"Delete is not available\"}\r\n onClick={() => onDelete(item)}\r\n >\r\n Delete\r\n </button>\r\n ) : null}\r\n </div>\r\n\r\n <div className=\"row-actions row-actions-mobile\">\r\n <button\r\n type=\"button\"\r\n className={actionsMenu?.key === key ? \"ghost row-action-menu-trigger open\" : \"ghost row-action-menu-trigger\"}\r\n aria-haspopup=\"menu\"\r\n aria-expanded={actionsMenu?.key === key}\r\n aria-label=\"Row actions\"\r\n onClick={(event) => openRowActions(item, event)}\r\n >\r\n <MoreIcon />\r\n </button>\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n const actionsMenuItem = actionsMenu?.item;\r\n const actionsUpdateAllowed = actionsMenuItem\r\n ? canUpdate\r\n ? canUpdate(actionsMenuItem)\r\n : Boolean(onUpdate)\r\n : false;\r\n const actionsDeleteAllowed = actionsMenuItem\r\n ? canDelete\r\n ? canDelete(actionsMenuItem)\r\n : Boolean(onDelete)\r\n : false;\r\n\r\n return (\r\n <div className={toolsDrawerOpen ? \"list-workspace tools-drawer-open\" : \"list-workspace\"} aria-label={title}>\r\n <div className=\"tools-mobile-bar\">\r\n <div className=\"tools-mobile-bar-start\">\r\n {showAdd ? (\r\n <button type=\"button\" className=\"tools-mobile-add\" onClick={onAdd}>\r\n <PlusIcon />\r\n <span>{addLabel}</span>\r\n </button>\r\n ) : (\r\n <p className=\"tools-mobile-title\">{title}</p>\r\n )}\r\n </div>\r\n <button\r\n type=\"button\"\r\n className=\"ghost tools-mobile-toggle\"\r\n aria-expanded={toolsDrawerOpen}\r\n aria-controls=\"aksui-tools-drawer\"\r\n onClick={() => setToolsDrawerOpen(true)}\r\n >\r\n <ToolsIcon />\r\n <span>Tools</span>\r\n {toolsBadgeCount > 0 ? <span className=\"filter-badge\">{toolsBadgeCount}</span> : null}\r\n </button>\r\n </div>\r\n\r\n <div\r\n className={[\"list-body\", sideOpen ? \"side-open\" : \"\", previewEnabled ? \"preview-open\" : \"\"]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <div className=\"list-main\">\r\n <section className=\"table-card\">\r\n {toolbar ? (\r\n <div className=\"table-card-bar\">\r\n <div className=\"table-card-context\">{toolbar}</div>\r\n </div>\r\n ) : null}\r\n\r\n <div className=\"table-wrap\">\r\n <table className=\"data-table\">\r\n <thead>\r\n <tr>\r\n {visibleColumns.map((column) => {\r\n const sortable = column.sortable !== false;\r\n const active = sort?.key === column.key ? sort.direction : null;\r\n return (\r\n <th\r\n key={column.key}\r\n aria-sort={active === \"asc\" ? \"ascending\" : active === \"desc\" ? \"descending\" : \"none\"}\r\n >\r\n {sortable ? (\r\n <button\r\n type=\"button\"\r\n className={active ? `sort-header active ${active}` : \"sort-header\"}\r\n onClick={() => toggleSort(column)}\r\n >\r\n <span>{column.header}</span>\r\n <span className=\"sort-indicator\" aria-hidden=\"true\">\r\n {active === \"asc\" ? \"▲\" : active === \"desc\" ? \"▼\" : \"↕\"}\r\n </span>\r\n </button>\r\n ) : (\r\n column.header\r\n )}\r\n </th>\r\n );\r\n })}\r\n <th className=\"actions-col\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {pageItems.length === 0 ? (\r\n <tr>\r\n <td colSpan={visibleColumns.length + 1}>\r\n <p className=\"hint table-empty\">\r\n {items.length === 0 ? empty : \"No records match the current filters.\"}\r\n </p>\r\n </td>\r\n </tr>\r\n ) : (\r\n pageItems.map((item) => {\r\n const key = rowKey(item);\r\n const selected = previewEnabled && previewKey === key;\r\n return (\r\n <tr\r\n key={key}\r\n className={selected ? \"data-row selected\" : \"data-row\"}\r\n onMouseEnter={(event) => {\r\n showTooltip(item, event);\r\n focusRecord(item);\r\n }}\r\n onMouseMove={(event) => showTooltip(item, event)}\r\n onMouseLeave={() => setTooltip(null)}\r\n onClick={() => focusRecord(item)}\r\n >\r\n {visibleColumns.map((column) => (\r\n <td key={column.key}>{cellText(column, item)}</td>\r\n ))}\r\n <td className=\"actions-col\" onClick={(event) => event.stopPropagation()}>\r\n {renderRowActions(item)}\r\n </td>\r\n </tr>\r\n );\r\n })\r\n )}\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <Pagination\r\n page={currentPage}\r\n pageCount={pageCount}\r\n pageSize={pageSize}\r\n onPageChange={setPage}\r\n onPageSizeChange={(value) => {\r\n setPageSize(value);\r\n setPage(1);\r\n }}\r\n summary={summary}\r\n />\r\n </section>\r\n </div>\r\n\r\n {previewEnabled ? (\r\n <aside className=\"preview-panel\" aria-label=\"Record preview\">\r\n <div className=\"preview-panel-head\">\r\n <div>\r\n <p className=\"preview-kicker\">Preview</p>\r\n <h3>{previewTitle ?? \"No record selected\"}</h3>\r\n </div>\r\n </div>\r\n <div className=\"preview-panel-body\">\r\n {previewItem ? (\r\n <DetailList lines={detailLines(previewItem)} />\r\n ) : (\r\n <p className=\"preview-empty\">Select a row to preview its details here.</p>\r\n )}\r\n </div>\r\n </aside>\r\n ) : null}\r\n\r\n <aside className={sideOpen ? \"side-rail open\" : \"side-rail\"} aria-label=\"Actions and filters\">\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-toggle\"\r\n aria-expanded={sideOpen}\r\n title={sideOpen ? \"Collapse\" : \"Expand\"}\r\n onClick={() => setSideOpen((open) => !open)}\r\n >\r\n <ChevronIcon open={sideOpen} />\r\n {sideOpen ? <span>Collapse</span> : null}\r\n </button>\r\n {sideOpen ? renderToolsBody({ compactIcons: false }) : renderToolsBody({ compactIcons: true })}\r\n </aside>\r\n </div>\r\n\r\n {isClient\r\n ? createPortal(\r\n <>\r\n <button\r\n type=\"button\"\r\n className={toolsDrawerOpen ? \"tools-drawer-backdrop open\" : \"tools-drawer-backdrop\"}\r\n aria-label=\"Close tools\"\r\n tabIndex={toolsDrawerOpen ? 0 : -1}\r\n onClick={() => setToolsDrawerOpen(false)}\r\n />\r\n <aside\r\n id=\"aksui-tools-drawer\"\r\n className={toolsDrawerOpen ? \"tools-drawer open\" : \"tools-drawer\"}\r\n aria-label=\"Workspace tools\"\r\n aria-hidden={!toolsDrawerOpen}\r\n >\r\n <div className=\"tools-drawer-head\">\r\n <div>\r\n <p className=\"tools-drawer-kicker\">Workspace</p>\r\n <h3>Tools</h3>\r\n </div>\r\n <button type=\"button\" className=\"ghost tools-drawer-close\" onClick={() => setToolsDrawerOpen(false)}>\r\n Close\r\n </button>\r\n </div>\r\n <div className=\"tools-drawer-body\">{renderToolsBody({ compactIcons: false })}</div>\r\n </aside>\r\n </>,\r\n document.body,\r\n )\r\n : null}\r\n\r\n {form}\r\n\r\n {isClient && actionsMenu && actionsMenuItem\r\n ? createPortal(\r\n <div\r\n ref={actionsMenuRef}\r\n className=\"row-action-menu row-action-menu-portal\"\r\n role=\"menu\"\r\n style={{ left: actionsMenu.x, top: actionsMenu.y }}\r\n >\r\n {onView ? (\r\n <button\r\n type=\"button\"\r\n role=\"menuitem\"\r\n className=\"ghost\"\r\n onClick={() => {\r\n setActionsMenu(null);\r\n onView(actionsMenuItem);\r\n }}\r\n >\r\n View\r\n </button>\r\n ) : null}\r\n {onUpdate ? (\r\n <button\r\n type=\"button\"\r\n role=\"menuitem\"\r\n className=\"ghost\"\r\n disabled={!actionsUpdateAllowed}\r\n onClick={() => {\r\n setActionsMenu(null);\r\n onUpdate(actionsMenuItem);\r\n }}\r\n >\r\n Update\r\n </button>\r\n ) : null}\r\n {onDelete ? (\r\n <button\r\n type=\"button\"\r\n role=\"menuitem\"\r\n className=\"ghost danger\"\r\n disabled={!actionsDeleteAllowed}\r\n onClick={() => {\r\n setActionsMenu(null);\r\n onDelete(actionsMenuItem);\r\n }}\r\n >\r\n Delete\r\n </button>\r\n ) : null}\r\n </div>,\r\n document.body,\r\n )\r\n : null}\r\n\r\n {isClient && tooltip && canShowTooltip\r\n ? createPortal(\r\n <div className=\"record-tooltip\" style={{ left: tooltip.x, top: tooltip.y }} role=\"tooltip\">\r\n <p className=\"record-tooltip-title\">{title}</p>\r\n <DetailList lines={tooltip.lines} />\r\n </div>,\r\n document.body,\r\n )\r\n : null}\r\n </div>\r\n );\r\n}\r\n\r\n/** @deprecated Prefer RecordWorkspace — alias kept for configurator migration */\r\nexport const RecordTable = RecordWorkspace;\r\n"]}
1
+ {"version":3,"sources":["../src/theme/tokens.ts","../src/theme/index.ts","../src/primitives/Button.tsx","../src/primitives/Select.tsx","../src/primitives/DateField.tsx","../src/primitives/Dialog.tsx","../src/primitives/ConfirmDeleteDialog.tsx","../src/primitives/Snackbar.tsx","../src/primitives/Topbar.tsx","../src/primitives/SideNav.tsx","../src/primitives/Pagination.tsx","../src/primitives/FormActions.tsx","../src/patterns/AppShell.tsx","../src/patterns/RecordWorkspace.tsx"],"names":["jsx","useId","useRef","useState","useLayoutEffect","useEffect","jsxs","Fragment","createPortal","useMemo","useSyncExternalStore","useIsClient","filtered"],"mappings":"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","file":"index.cjs","sourcesContent":["/** Canonical theme token names mirrored from aksui.css */\r\nexport const aksuiTokens = {\r\n brand: \"#1E2735\",\r\n accent: \"#E67E22\",\r\n ink: \"#1E2735\",\r\n muted: \"#667085\",\r\n line: \"#e6e4df\",\r\n field: \"#f6f5f3\",\r\n card: \"#ffffff\",\r\n danger: \"#b42318\",\r\n dangerBg: \"#fff1f0\",\r\n ok: \"#067647\",\r\n okBg: \"#ecfdf3\",\r\n radius: \"8px\",\r\n rowHeight: \"34px\",\r\n tableHeaderHeight: \"36px\",\r\n sideRailCollapsed: \"52px\",\r\n sideRailExpanded: \"280px\",\r\n previewPanelWidth: \"300px\",\r\n} as const;\r\n\r\nexport type AksuiTokenName = keyof typeof aksuiTokens;\r\n","/** Theme tokens live in aksui.css. Import `@mshuja288/aksuicore/styles.css` in the host app. */\r\nexport const aksuiThemeVersion = \"0.2.0\";\r\nexport { aksuiTokens, type AksuiTokenName } from \"./tokens\";\r\n","\"use client\";\r\n\r\nimport type { ButtonHTMLAttributes, ReactNode } from \"react\";\r\n\r\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"danger\";\r\n\r\nconst variantClass: Record<ButtonVariant, string> = {\r\n primary: \"\",\r\n secondary: \"secondary\",\r\n ghost: \"ghost\",\r\n danger: \"danger\",\r\n};\r\n\r\nexport function Button({\r\n variant = \"primary\",\r\n className = \"\",\r\n children,\r\n ...props\r\n}: ButtonHTMLAttributes<HTMLButtonElement> & {\r\n variant?: ButtonVariant;\r\n children: ReactNode;\r\n}) {\r\n const classes = [\"aks-button\", variantClass[variant], className].filter(Boolean).join(\" \");\r\n return (\r\n <button type=\"button\" className={classes} {...props}>\r\n {children}\r\n </button>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useId, useLayoutEffect, useRef, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nexport type SelectOption = {\r\n value: string;\r\n label: string;\r\n tone?: \"neutral\" | \"ok\" | \"warn\" | \"danger\" | \"accent\";\r\n};\r\n\r\ntype MenuPosition = {\r\n top: number;\r\n left: number;\r\n width: number;\r\n maxHeight: number;\r\n openUp: boolean;\r\n};\r\n\r\nexport function Select({\r\n value,\r\n options,\r\n onChange,\r\n placeholder = \"Select\",\r\n disabled = false,\r\n required = false,\r\n className = \"\",\r\n}: {\r\n value: string;\r\n options: SelectOption[];\r\n onChange: (value: string) => void;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n className?: string;\r\n}) {\r\n const listId = useId();\r\n const rootRef = useRef<HTMLDivElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const [open, setOpen] = useState(false);\r\n const [menuPos, setMenuPos] = useState<MenuPosition | null>(null);\r\n const selected = options.find((option) => option.value === value) ?? null;\r\n\r\n function updatePosition() {\r\n const root = rootRef.current;\r\n if (!root) {\r\n return;\r\n }\r\n const rect = root.getBoundingClientRect();\r\n const spaceBelow = window.innerHeight - rect.bottom - 12;\r\n const spaceAbove = rect.top - 12;\r\n const openUp = spaceBelow < 220 && spaceAbove > spaceBelow;\r\n const maxHeight = Math.max(160, Math.min(280, openUp ? spaceAbove : spaceBelow));\r\n setMenuPos({\r\n top: openUp ? rect.top - 8 : rect.bottom + 6,\r\n left: rect.left,\r\n width: rect.width,\r\n maxHeight,\r\n openUp,\r\n });\r\n }\r\n\r\n useLayoutEffect(() => {\r\n if (!open) {\r\n return;\r\n }\r\n updatePosition();\r\n function onReposition() {\r\n updatePosition();\r\n }\r\n window.addEventListener(\"resize\", onReposition);\r\n window.addEventListener(\"scroll\", onReposition, true);\r\n return () => {\r\n window.removeEventListener(\"resize\", onReposition);\r\n window.removeEventListener(\"scroll\", onReposition, true);\r\n };\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (!open) {\r\n return;\r\n }\r\n function onPointerDown(event: MouseEvent) {\r\n const target = event.target as Node;\r\n if (rootRef.current?.contains(target) || menuRef.current?.contains(target)) {\r\n return;\r\n }\r\n setOpen(false);\r\n }\r\n function onKeyDown(event: KeyboardEvent) {\r\n if (event.key === \"Escape\") {\r\n setOpen(false);\r\n }\r\n }\r\n document.addEventListener(\"mousedown\", onPointerDown);\r\n document.addEventListener(\"keydown\", onKeyDown);\r\n return () => {\r\n document.removeEventListener(\"mousedown\", onPointerDown);\r\n document.removeEventListener(\"keydown\", onKeyDown);\r\n };\r\n }, [open]);\r\n\r\n function choose(next: string) {\r\n onChange(next);\r\n setOpen(false);\r\n }\r\n\r\n return (\r\n <div className={`app-select ${className}`.trim()} ref={rootRef}>\r\n <input\r\n className=\"app-select-mirror\"\r\n tabIndex={-1}\r\n value={value}\r\n required={required}\r\n onChange={() => undefined}\r\n aria-hidden=\"true\"\r\n />\r\n <button\r\n type=\"button\"\r\n className={open ? \"app-select-trigger open\" : \"app-select-trigger\"}\r\n disabled={disabled}\r\n aria-haspopup=\"listbox\"\r\n aria-expanded={open}\r\n aria-controls={listId}\r\n onClick={() => {\r\n if (!disabled) {\r\n setOpen((current) => !current);\r\n }\r\n }}\r\n >\r\n <span className={selected ? \"app-select-value\" : \"app-select-placeholder\"}>\r\n {selected ? (\r\n <>\r\n {selected.tone ? <span className={`app-select-dot ${selected.tone}`} aria-hidden=\"true\" /> : null}\r\n {selected.label}\r\n </>\r\n ) : (\r\n placeholder\r\n )}\r\n </span>\r\n <svg className=\"app-select-chevron\" viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M5 7.5 10 12.5 15 7.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n </button>\r\n {open && menuPos\r\n ? createPortal(\r\n <div\r\n ref={menuRef}\r\n id={listId}\r\n className={menuPos.openUp ? \"app-select-menu open-up\" : \"app-select-menu\"}\r\n role=\"listbox\"\r\n style={{\r\n top: menuPos.openUp ? undefined : menuPos.top,\r\n bottom: menuPos.openUp ? window.innerHeight - menuPos.top : undefined,\r\n left: menuPos.left,\r\n width: menuPos.width,\r\n maxHeight: menuPos.maxHeight,\r\n }}\r\n >\r\n {options.length === 0 ? (\r\n <div className=\"app-select-empty\">No options</div>\r\n ) : (\r\n options.map((option) => {\r\n const active = option.value === value;\r\n return (\r\n <button\r\n key={option.value || \"__empty\"}\r\n type=\"button\"\r\n role=\"option\"\r\n aria-selected={active}\r\n className={active ? \"app-select-option active\" : \"app-select-option\"}\r\n onClick={() => choose(option.value)}\r\n >\r\n {option.tone ? <span className={`app-select-dot ${option.tone}`} aria-hidden=\"true\" /> : null}\r\n <span>{option.label}</span>\r\n {active ? (\r\n <svg className=\"app-select-check\" viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M4.5 10.5 8.2 14.2 15.5 6\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n ) : null}\r\n </button>\r\n );\r\n })\r\n )}\r\n </div>,\r\n document.body,\r\n )\r\n : null}\r\n </div>\r\n );\r\n}\r\n\r\n/** @deprecated Prefer Select — alias kept for configurator migration */\r\nexport const AppSelect = Select;\r\nexport type AppSelectOption = SelectOption;\r\n","\"use client\";\r\n\r\nimport { useEffect, useLayoutEffect, useMemo, useRef, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nconst weekdayLabels = [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"];\r\n\r\nfunction pad(value: number) {\r\n return String(value).padStart(2, \"0\");\r\n}\r\n\r\nfunction toIso(date: Date) {\r\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\r\n}\r\n\r\nfunction parseIso(value: string) {\r\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\r\n return null;\r\n }\r\n const [year, month, day] = value.split(\"-\").map(Number);\r\n const date = new Date(year, month - 1, day);\r\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\r\n return null;\r\n }\r\n return date;\r\n}\r\n\r\nfunction formatDisplay(value: string) {\r\n const date = parseIso(value);\r\n if (!date) {\r\n return \"\";\r\n }\r\n return `${pad(date.getDate())}/${pad(date.getMonth() + 1)}/${date.getFullYear()}`;\r\n}\r\n\r\nfunction startOfMonth(date: Date) {\r\n return new Date(date.getFullYear(), date.getMonth(), 1);\r\n}\r\n\r\nfunction buildCells(month: Date) {\r\n const first = startOfMonth(month);\r\n const mondayBased = (first.getDay() + 6) % 7;\r\n const start = new Date(first);\r\n start.setDate(first.getDate() - mondayBased);\r\n return Array.from({ length: 42 }, (_, index) => {\r\n const day = new Date(start);\r\n day.setDate(start.getDate() + index);\r\n return day;\r\n });\r\n}\r\n\r\ntype MenuPosition = {\r\n top: number;\r\n left: number;\r\n width: number;\r\n openUp: boolean;\r\n};\r\n\r\nexport function DateField({\r\n value,\r\n onChange,\r\n placeholder = \"dd/mm/yyyy\",\r\n disabled = false,\r\n readOnly = false,\r\n}: {\r\n value: string;\r\n onChange?: (value: string) => void;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n readOnly?: boolean;\r\n}) {\r\n const rootRef = useRef<HTMLDivElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const selected = parseIso(value);\r\n const [open, setOpen] = useState(false);\r\n const [menuPos, setMenuPos] = useState<MenuPosition | null>(null);\r\n const [viewMonth, setViewMonth] = useState(() => startOfMonth(selected ?? new Date()));\r\n const cells = useMemo(() => buildCells(viewMonth), [viewMonth]);\r\n const today = toIso(new Date());\r\n const locked = disabled || readOnly;\r\n\r\n function updatePosition() {\r\n const root = rootRef.current;\r\n if (!root) {\r\n return;\r\n }\r\n const rect = root.getBoundingClientRect();\r\n const openUp = window.innerHeight - rect.bottom < 340 && rect.top > 340;\r\n setMenuPos({\r\n top: openUp ? rect.top - 8 : rect.bottom + 6,\r\n left: rect.left,\r\n width: Math.max(rect.width, 280),\r\n openUp,\r\n });\r\n }\r\n\r\n useLayoutEffect(() => {\r\n if (!open) {\r\n return;\r\n }\r\n updatePosition();\r\n function onReposition() {\r\n updatePosition();\r\n }\r\n window.addEventListener(\"resize\", onReposition);\r\n window.addEventListener(\"scroll\", onReposition, true);\r\n return () => {\r\n window.removeEventListener(\"resize\", onReposition);\r\n window.removeEventListener(\"scroll\", onReposition, true);\r\n };\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (!open) {\r\n return;\r\n }\r\n function onPointerDown(event: MouseEvent) {\r\n const target = event.target as Node;\r\n if (rootRef.current?.contains(target) || menuRef.current?.contains(target)) {\r\n return;\r\n }\r\n setOpen(false);\r\n }\r\n function onKeyDown(event: KeyboardEvent) {\r\n if (event.key === \"Escape\") {\r\n setOpen(false);\r\n }\r\n }\r\n document.addEventListener(\"mousedown\", onPointerDown);\r\n document.addEventListener(\"keydown\", onKeyDown);\r\n return () => {\r\n document.removeEventListener(\"mousedown\", onPointerDown);\r\n document.removeEventListener(\"keydown\", onKeyDown);\r\n };\r\n }, [open]);\r\n\r\n function openPicker() {\r\n if (locked) {\r\n return;\r\n }\r\n setViewMonth(startOfMonth(selected ?? new Date()));\r\n setOpen(true);\r\n }\r\n\r\n function choose(date: Date) {\r\n onChange?.(toIso(date));\r\n setOpen(false);\r\n }\r\n\r\n const monthLabel = viewMonth.toLocaleString(undefined, { month: \"long\", year: \"numeric\" });\r\n\r\n return (\r\n <div className={readOnly ? \"date-field read-only\" : \"date-field\"} ref={rootRef}>\r\n <button\r\n type=\"button\"\r\n className={open ? \"date-field-trigger open\" : \"date-field-trigger\"}\r\n disabled={disabled}\r\n onClick={() => {\r\n if (locked) {\r\n return;\r\n }\r\n if (open) {\r\n setOpen(false);\r\n } else {\r\n openPicker();\r\n }\r\n }}\r\n >\r\n <span className={value ? \"date-field-value\" : \"date-field-placeholder\"}>\r\n {value ? formatDisplay(value) : placeholder}\r\n </span>\r\n <svg className=\"date-field-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n <rect x=\"3.5\" y=\"5\" width=\"17\" height=\"15.5\" rx=\"2\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" />\r\n <path d=\"M3.5 9.5h17M8 3.5v3M16 3.5v3\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" />\r\n </svg>\r\n </button>\r\n {open && menuPos\r\n ? createPortal(\r\n <div\r\n ref={menuRef}\r\n className=\"date-picker\"\r\n style={{\r\n top: menuPos.openUp ? undefined : menuPos.top,\r\n bottom: menuPos.openUp ? window.innerHeight - menuPos.top : undefined,\r\n left: menuPos.left,\r\n width: menuPos.width,\r\n }}\r\n >\r\n <div className=\"date-picker-head\">\r\n <strong>{monthLabel}</strong>\r\n <div className=\"date-picker-nav\">\r\n <button type=\"button\" className=\"ghost\" aria-label=\"Previous month\" onClick={() => setViewMonth(new Date(viewMonth.getFullYear(), viewMonth.getMonth() - 1, 1))}>\r\n ‹\r\n </button>\r\n <button type=\"button\" className=\"ghost\" aria-label=\"Next month\" onClick={() => setViewMonth(new Date(viewMonth.getFullYear(), viewMonth.getMonth() + 1, 1))}>\r\n ›\r\n </button>\r\n </div>\r\n </div>\r\n <div className=\"date-picker-weekdays\">\r\n {weekdayLabels.map((label) => (\r\n <span key={label}>{label}</span>\r\n ))}\r\n </div>\r\n <div className=\"date-picker-grid\">\r\n {cells.map((day) => {\r\n const iso = toIso(day);\r\n const outside = day.getMonth() !== viewMonth.getMonth();\r\n const isSelected = value === iso;\r\n const isToday = today === iso;\r\n const className = [\r\n \"date-picker-day\",\r\n outside ? \"outside\" : \"\",\r\n isSelected ? \"selected\" : \"\",\r\n isToday ? \"today\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n return (\r\n <button key={iso + String(outside)} type=\"button\" className={className} onClick={() => choose(day)}>\r\n {day.getDate()}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n <div className=\"date-picker-footer\">\r\n <button\r\n type=\"button\"\r\n className=\"ghost\"\r\n onClick={() => {\r\n onChange?.(\"\");\r\n setOpen(false);\r\n }}\r\n >\r\n Clear\r\n </button>\r\n <button\r\n type=\"button\"\r\n className=\"ghost\"\r\n onClick={() => {\r\n const now = new Date();\r\n setViewMonth(startOfMonth(now));\r\n choose(now);\r\n }}\r\n >\r\n Today\r\n </button>\r\n </div>\r\n </div>,\r\n document.body,\r\n )\r\n : null}\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport type { ReactNode } from \"react\";\r\nimport { Button } from \"./Button\";\r\n\r\nexport function Dialog({\r\n title,\r\n open,\r\n onClose,\r\n children,\r\n wide = true,\r\n}: {\r\n title: string;\r\n open: boolean;\r\n onClose: () => void;\r\n children: ReactNode;\r\n wide?: boolean;\r\n}) {\r\n if (!open) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div className=\"dialog-backdrop\" onClick={onClose}>\r\n <div\r\n className={wide ? \"dialog form-dialog\" : \"dialog\"}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-label={title}\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <div className=\"dialog-head\">\r\n <h2>{title}</h2>\r\n <Button variant=\"ghost\" onClick={onClose}>\r\n Close\r\n </Button>\r\n </div>\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\n/** @deprecated Prefer Dialog — alias kept for configurator migration */\r\nexport const FormDialog = Dialog;\r\n","\"use client\";\r\n\r\nimport { Button } from \"./Button\";\r\nimport { Dialog } from \"./Dialog\";\r\n\r\nexport function ConfirmDeleteDialog({\r\n open,\r\n message,\r\n pending = false,\r\n onCancel,\r\n onConfirm,\r\n}: {\r\n open: boolean;\r\n message: string;\r\n pending?: boolean;\r\n onCancel: () => void;\r\n onConfirm: () => void;\r\n}) {\r\n return (\r\n <Dialog title=\"Confirm delete\" open={open} onClose={pending ? () => undefined : onCancel} wide={false}>\r\n <div className=\"card-form\">\r\n <p className=\"hint\">{message}</p>\r\n <div className=\"actions\">\r\n <Button variant=\"ghost\" onClick={onCancel} disabled={pending}>\r\n Cancel\r\n </Button>\r\n <Button variant=\"danger\" onClick={onConfirm} disabled={pending}>\r\n {pending ? \"Deleting…\" : \"Delete\"}\r\n </Button>\r\n </div>\r\n </div>\r\n </Dialog>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useSyncExternalStore } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nfunction useIsClient() {\r\n return useSyncExternalStore(\r\n () => () => {},\r\n () => true,\r\n () => false,\r\n );\r\n}\r\n\r\nfunction SuccessIcon() {\r\n return (\r\n <svg className=\"snackbar-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n <circle cx=\"12\" cy=\"12\" r=\"9\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" />\r\n <path\r\n d=\"M8.2 12.2 10.8 14.8 15.8 9.6\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.8\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction AlertIcon() {\r\n return (\r\n <svg className=\"snackbar-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n <path\r\n d=\"M12 3.8 3.8 19.2h16.4L12 3.8Z\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.8\"\r\n strokeLinejoin=\"round\"\r\n />\r\n <path d=\"M12 10v4.2\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n <circle cx=\"12\" cy=\"16.8\" r=\"1\" fill=\"currentColor\" />\r\n </svg>\r\n );\r\n}\r\n\r\nexport function Snackbar({\r\n message,\r\n success,\r\n onDismiss,\r\n}: {\r\n message: string;\r\n success: boolean;\r\n onDismiss?: () => void;\r\n}) {\r\n const isClient = useIsClient();\r\n\r\n useEffect(() => {\r\n if (!message || !onDismiss) {\r\n return;\r\n }\r\n\r\n const timeout = window.setTimeout(onDismiss, success ? 3200 : 4800);\r\n return () => window.clearTimeout(timeout);\r\n }, [message, success, onDismiss]);\r\n\r\n if (!isClient || !message) {\r\n return null;\r\n }\r\n\r\n return createPortal(\r\n <div className=\"snackbar-host\" aria-live=\"polite\">\r\n <div className={success ? \"snackbar success\" : \"snackbar\"} role=\"status\">\r\n {success ? <SuccessIcon /> : <AlertIcon />}\r\n <p>{message}</p>\r\n {onDismiss ? (\r\n <button type=\"button\" className=\"snackbar-close\" aria-label=\"Dismiss\" onClick={onDismiss}>\r\n ×\r\n </button>\r\n ) : null}\r\n </div>\r\n </div>,\r\n document.body,\r\n );\r\n}\r\n\r\n/** @deprecated Prefer Snackbar — alias kept for configurator migration */\r\nexport const StatusMessage = Snackbar;\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState, type ReactNode } from \"react\";\r\nimport { Button } from \"./Button\";\r\n\r\nfunction MenuIcon({ open }: { open: boolean }) {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n {open ? (\r\n <path d=\"M5 5l10 10M15 5 5 15\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n ) : (\r\n <path d=\"M3.5 5.5h13M3.5 10h13M3.5 14.5h13\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n )}\r\n </svg>\r\n );\r\n}\r\n\r\nexport function Topbar({\r\n title,\r\n logoSrc,\r\n logoAlt = \"Logo\",\r\n username = \"\",\r\n onLogout,\r\n showMenuButton = false,\r\n menuOpen = false,\r\n onMenuClick,\r\n children,\r\n}: {\r\n title: string;\r\n logoSrc?: string;\r\n logoAlt?: string;\r\n username?: string;\r\n onLogout?: () => void;\r\n /** Shows a hamburger control (used by AppShell drawer on small screens). */\r\n showMenuButton?: boolean;\r\n menuOpen?: boolean;\r\n onMenuClick?: () => void;\r\n children?: ReactNode;\r\n}) {\r\n const [accountOpen, setAccountOpen] = useState(false);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const initial = (username || \"U\").slice(0, 1).toUpperCase();\r\n\r\n useEffect(() => {\r\n if (!accountOpen) {\r\n return;\r\n }\r\n\r\n function onPointerDown(event: MouseEvent) {\r\n if (menuRef.current && !menuRef.current.contains(event.target as Node)) {\r\n setAccountOpen(false);\r\n }\r\n }\r\n\r\n document.addEventListener(\"mousedown\", onPointerDown);\r\n return () => document.removeEventListener(\"mousedown\", onPointerDown);\r\n }, [accountOpen]);\r\n\r\n return (\r\n <header className=\"topbar\">\r\n <div className=\"topbar-brand\">\r\n {showMenuButton && onMenuClick ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost topbar-menu-button\"\r\n aria-label={menuOpen ? \"Close navigation menu\" : \"Open navigation menu\"}\r\n aria-expanded={menuOpen}\r\n onClick={onMenuClick}\r\n >\r\n <MenuIcon open={menuOpen} />\r\n </button>\r\n ) : null}\r\n {logoSrc ? (\r\n <img\r\n className=\"topbar-logo\"\r\n src={logoSrc}\r\n alt={logoAlt}\r\n onError={(event) => {\r\n event.currentTarget.hidden = true;\r\n }}\r\n />\r\n ) : null}\r\n <h1>{title}</h1>\r\n </div>\r\n <div className=\"topbar-actions\" ref={menuRef}>\r\n {children}\r\n {onLogout ? (\r\n <>\r\n <button\r\n type=\"button\"\r\n className=\"avatar-button\"\r\n aria-haspopup=\"menu\"\r\n aria-expanded={accountOpen}\r\n onClick={() => setAccountOpen((open) => !open)}\r\n title={username || \"Account\"}\r\n >\r\n <span className=\"avatar\">{initial}</span>\r\n </button>\r\n {accountOpen ? (\r\n <div className=\"avatar-menu\" role=\"menu\">\r\n {username ? <p className=\"avatar-name\">{username}</p> : null}\r\n <Button\r\n variant=\"ghost\"\r\n role=\"menuitem\"\r\n onClick={() => {\r\n setAccountOpen(false);\r\n onLogout();\r\n }}\r\n >\r\n Logout\r\n </Button>\r\n </div>\r\n ) : null}\r\n </>\r\n ) : null}\r\n </div>\r\n </header>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nexport type SideNavItem = {\r\n id: string;\r\n label: string;\r\n /** Compact label for the mobile bottom nav (falls back to `label`). */\r\n short?: string;\r\n};\r\n\r\nexport function SideNav({\r\n items,\r\n activeId,\r\n onSelect,\r\n label = \"Sections\",\r\n className = \"\",\r\n}: {\r\n items: SideNavItem[];\r\n activeId: string;\r\n onSelect: (id: string) => void;\r\n label?: string;\r\n className?: string;\r\n}) {\r\n return (\r\n <nav className={[\"side-nav\", className].filter(Boolean).join(\" \")} aria-label={label}>\r\n {items.map((item) => (\r\n <button\r\n key={item.id}\r\n type=\"button\"\r\n className={activeId === item.id ? \"active\" : \"\"}\r\n onClick={() => onSelect(item.id)}\r\n >\r\n {item.label}\r\n </button>\r\n ))}\r\n </nav>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { Select } from \"./Select\";\r\n\r\nexport type PageSizeOption = {\r\n value: string;\r\n label: string;\r\n};\r\n\r\nconst defaultPageSizes: PageSizeOption[] = [\r\n { value: \"15\", label: \"15\" },\r\n { value: \"20\", label: \"20\" },\r\n { value: \"50\", label: \"50\" },\r\n { value: \"100\", label: \"100\" },\r\n { value: \"all\", label: \"All\" },\r\n];\r\n\r\nexport function Pagination({\r\n page,\r\n pageCount,\r\n pageSize,\r\n onPageChange,\r\n onPageSizeChange,\r\n summary,\r\n pageSizeOptions = defaultPageSizes,\r\n disabled = false,\r\n}: {\r\n page: number;\r\n pageCount: number;\r\n pageSize: string;\r\n onPageChange: (page: number) => void;\r\n onPageSizeChange: (pageSize: string) => void;\r\n summary: string;\r\n pageSizeOptions?: PageSizeOption[];\r\n disabled?: boolean;\r\n}) {\r\n const showAll = pageSize === \"all\";\r\n\r\n return (\r\n <div className=\"table-pagination\">\r\n <label className=\"page-size\">\r\n Rows\r\n <Select\r\n className=\"page-size-select\"\r\n value={pageSize}\r\n options={pageSizeOptions}\r\n onChange={onPageSizeChange}\r\n disabled={disabled}\r\n />\r\n </label>\r\n <p className=\"page-summary\">{summary}</p>\r\n <div className=\"page-buttons\">\r\n <button\r\n type=\"button\"\r\n className=\"ghost\"\r\n disabled={disabled || showAll || page <= 1}\r\n onClick={() => onPageChange(page - 1)}\r\n >\r\n Previous\r\n </button>\r\n <span className=\"page-indicator\">\r\n Page {showAll ? 1 : page} of {pageCount}\r\n </span>\r\n <button\r\n type=\"button\"\r\n className=\"ghost\"\r\n disabled={disabled || showAll || page >= pageCount}\r\n onClick={() => onPageChange(page + 1)}\r\n >\r\n Next\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nexport function FormActions({\r\n pending,\r\n editing,\r\n saveLabel,\r\n updateLabel,\r\n newLabel,\r\n onNew,\r\n saveDisabled = false,\r\n replaceSaveWhenEditing = false,\r\n}: {\r\n pending: boolean;\r\n editing: boolean;\r\n saveLabel: string;\r\n updateLabel?: string;\r\n newLabel: string;\r\n onNew: () => void;\r\n saveDisabled?: boolean;\r\n replaceSaveWhenEditing?: boolean;\r\n}) {\r\n if (editing && replaceSaveWhenEditing) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div className=\"actions\">\r\n <button type=\"submit\" disabled={pending || saveDisabled}>\r\n {editing && updateLabel ? updateLabel : saveLabel}\r\n </button>\r\n <button type=\"button\" className=\"ghost\" onClick={onNew}>\r\n {newLabel}\r\n </button>\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useState, type ReactNode } from \"react\";\r\nimport { SideNav, type SideNavItem } from \"../primitives/SideNav\";\r\nimport { Topbar } from \"../primitives/Topbar\";\r\n\r\nexport type MobileNavMode = \"drawer\" | \"bottom\" | \"hybrid\";\r\n\r\nexport type AppShellProps = {\r\n title: string;\r\n logoSrc?: string;\r\n logoAlt?: string;\r\n username?: string;\r\n onLogout?: () => void;\r\n navItems: SideNavItem[];\r\n activeNavId: string;\r\n onNavSelect: (id: string) => void;\r\n navLabel?: string;\r\n /**\r\n * Small-screen navigation strategy.\r\n * - `drawer` (default): hamburger opens a collapsible side menu; no crowded bottom bar\r\n * - `bottom`: classic bottom nav from all `navItems` (fine for a few sections)\r\n * - `hybrid`: compact bottom bar with current section + Menu that opens the drawer\r\n */\r\n mobileNav?: MobileNavMode;\r\n /**\r\n * When true, renders the mobile bottom nav.\r\n * Defaults to true for `bottom` / `hybrid`, false for `drawer`.\r\n */\r\n showBottomNav?: boolean;\r\n /** Controlled drawer open state (optional). */\r\n navDrawerOpen?: boolean;\r\n onNavDrawerOpenChange?: (open: boolean) => void;\r\n topbarActions?: ReactNode;\r\n children: ReactNode;\r\n /** Extra class on the content/screen region */\r\n screenClassName?: string;\r\n};\r\n\r\n/**\r\n * Application chrome: topbar + left side nav + content screen.\r\n * On small screens, prefers a collapsible drawer over a crowded bottom nav.\r\n */\r\nexport function AppShell({\r\n title,\r\n logoSrc,\r\n logoAlt,\r\n username,\r\n onLogout,\r\n navItems,\r\n activeNavId,\r\n onNavSelect,\r\n navLabel = \"Sections\",\r\n mobileNav = \"drawer\",\r\n showBottomNav,\r\n navDrawerOpen,\r\n onNavDrawerOpenChange,\r\n topbarActions,\r\n children,\r\n screenClassName = \"\",\r\n}: AppShellProps) {\r\n const [internalDrawerOpen, setInternalDrawerOpen] = useState(false);\r\n const drawerControlled = navDrawerOpen !== undefined;\r\n const drawerOpen = drawerControlled ? navDrawerOpen : internalDrawerOpen;\r\n const useBottomNav = showBottomNav ?? (mobileNav === \"bottom\" || mobileNav === \"hybrid\");\r\n const useDrawer = mobileNav === \"drawer\" || mobileNav === \"hybrid\";\r\n const activeItem = navItems.find((item) => item.id === activeNavId);\r\n\r\n function setDrawerOpen(open: boolean) {\r\n if (!drawerControlled) {\r\n setInternalDrawerOpen(open);\r\n }\r\n onNavDrawerOpenChange?.(open);\r\n }\r\n\r\n useEffect(() => {\r\n if (!drawerOpen) {\r\n return;\r\n }\r\n\r\n function onKeyDown(event: KeyboardEvent) {\r\n if (event.key === \"Escape\") {\r\n if (!drawerControlled) {\r\n setInternalDrawerOpen(false);\r\n }\r\n onNavDrawerOpenChange?.(false);\r\n }\r\n }\r\n\r\n document.addEventListener(\"keydown\", onKeyDown);\r\n const previousOverflow = document.body.style.overflow;\r\n document.body.style.overflow = \"hidden\";\r\n return () => {\r\n document.removeEventListener(\"keydown\", onKeyDown);\r\n document.body.style.overflow = previousOverflow;\r\n };\r\n }, [drawerControlled, drawerOpen, onNavDrawerOpenChange]);\r\n\r\n function selectNav(id: string) {\r\n onNavSelect(id);\r\n setDrawerOpen(false);\r\n }\r\n\r\n return (\r\n <div\r\n className={[\r\n \"aksui-root\",\r\n \"app-shell\",\r\n `mobile-nav-${mobileNav}`,\r\n useBottomNav ? \"has-bottom-nav\" : \"\",\r\n drawerOpen ? \"nav-drawer-open\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <Topbar\r\n title={title}\r\n logoSrc={logoSrc}\r\n logoAlt={logoAlt}\r\n username={username}\r\n onLogout={onLogout}\r\n showMenuButton={useDrawer}\r\n menuOpen={drawerOpen}\r\n onMenuClick={() => setDrawerOpen(!drawerOpen)}\r\n >\r\n {topbarActions}\r\n </Topbar>\r\n\r\n <div className=\"app-body\">\r\n <SideNav items={navItems} activeId={activeNavId} onSelect={onNavSelect} label={navLabel} />\r\n <div className={[\"screen\", screenClassName].filter(Boolean).join(\" \")}>{children}</div>\r\n </div>\r\n\r\n {useDrawer ? (\r\n <>\r\n <button\r\n type=\"button\"\r\n className={drawerOpen ? \"nav-drawer-backdrop open\" : \"nav-drawer-backdrop\"}\r\n aria-label=\"Close navigation menu\"\r\n tabIndex={drawerOpen ? 0 : -1}\r\n onClick={() => setDrawerOpen(false)}\r\n />\r\n <aside\r\n className={drawerOpen ? \"nav-drawer open\" : \"nav-drawer\"}\r\n aria-label={navLabel}\r\n aria-hidden={!drawerOpen}\r\n >\r\n <div className=\"nav-drawer-head\">\r\n <p className=\"nav-drawer-title\">{navLabel}</p>\r\n <button type=\"button\" className=\"ghost nav-drawer-close\" onClick={() => setDrawerOpen(false)}>\r\n Close\r\n </button>\r\n </div>\r\n <SideNav\r\n className=\"nav-drawer-nav\"\r\n items={navItems}\r\n activeId={activeNavId}\r\n onSelect={selectNav}\r\n label={navLabel}\r\n />\r\n </aside>\r\n </>\r\n ) : null}\r\n\r\n {useBottomNav ? (\r\n <nav className=\"bottom-nav\" aria-label={navLabel}>\r\n {mobileNav === \"hybrid\" ? (\r\n <>\r\n <button type=\"button\" className=\"active bottom-nav-current\" disabled>\r\n {activeItem?.short ?? activeItem?.label ?? \"Section\"}\r\n </button>\r\n <button type=\"button\" className=\"bottom-nav-menu\" onClick={() => setDrawerOpen(true)}>\r\n Menu\r\n </button>\r\n </>\r\n ) : (\r\n navItems.map((item) => (\r\n <button\r\n key={item.id}\r\n type=\"button\"\r\n className={activeNavId === item.id ? \"active\" : \"\"}\r\n onClick={() => onNavSelect(item.id)}\r\n >\r\n {item.short ?? item.label}\r\n </button>\r\n ))\r\n )}\r\n </nav>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport {\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n useSyncExternalStore,\r\n type MouseEvent,\r\n type ReactNode,\r\n} from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { Pagination } from \"../primitives/Pagination\";\r\nimport { Select, type SelectOption } from \"../primitives/Select\";\r\n\r\nfunction useIsClient() {\r\n return useSyncExternalStore(\r\n () => () => {},\r\n () => true,\r\n () => false,\r\n );\r\n}\r\n\r\n/** Hover tooltips only on fine pointers (desktop). Touch / narrow layouts never get them. */\r\nfunction useHoverTooltipsEnabled() {\r\n return useSyncExternalStore(\r\n (onStoreChange) => {\r\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") {\r\n return () => {};\r\n }\r\n const media = window.matchMedia(\"(hover: hover) and (pointer: fine)\");\r\n media.addEventListener(\"change\", onStoreChange);\r\n return () => media.removeEventListener(\"change\", onStoreChange);\r\n },\r\n () =>\r\n typeof window !== \"undefined\" &&\r\n typeof window.matchMedia === \"function\" &&\r\n window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches,\r\n () => false,\r\n );\r\n}\r\n\r\nexport type TableColumn<T> = {\r\n key: string;\r\n header: string;\r\n value: (item: T) => string | number | null | undefined;\r\n display?: (item: T) => string | number | null | undefined;\r\n filterable?: boolean;\r\n sortable?: boolean;\r\n /** When set, filter uses an exact-match Select instead of text contains. */\r\n filterOptions?: SelectOption[];\r\n filterPlaceholder?: string;\r\n /** When false, column starts hidden. Default true. */\r\n defaultVisible?: boolean;\r\n /** Key sent to export APIs when different from `key` (e.g. PascalCase property name). */\r\n exportKey?: string;\r\n};\r\n\r\n/** Formats supported by the shared table download control (matches akscore TableExport). */\r\nexport type ExportDownloadFormat = \"csv\" | \"xlsx\" | \"json\";\r\n\r\n/** Column descriptors passed to `onDownload` (visible columns only). */\r\nexport type ExportColumnRef = {\r\n key: string;\r\n header: string;\r\n};\r\n\r\nexport type BulkImportMode = \"insert\" | \"update\" | \"upsert\";\r\n\r\nexport type BulkImportError = {\r\n row: number;\r\n field?: string | null;\r\n code: string;\r\n message: string;\r\n};\r\n\r\nexport type BulkImportResult = {\r\n totalRows: number;\r\n failed: number;\r\n applied: boolean;\r\n errors: BulkImportError[];\r\n};\r\n\r\nconst EXPORT_FORMAT_OPTIONS: { format: ExportDownloadFormat; label: string }[] = [\r\n { format: \"csv\", label: \"CSV\" },\r\n { format: \"xlsx\", label: \"Excel\" },\r\n { format: \"json\", label: \"JSON\" },\r\n];\r\n\r\nconst BULK_IMPORT_MODE_OPTIONS: { mode: BulkImportMode; label: string }[] = [\r\n { mode: \"insert\", label: \"Insert\" },\r\n { mode: \"update\", label: \"Update\" },\r\n { mode: \"upsert\", label: \"Upsert\" },\r\n];\r\n\r\ntype SortDirection = \"asc\" | \"desc\";\r\ntype SortState = { key: string; direction: SortDirection };\r\ntype DetailLine = { label: string; value: string };\r\ntype TooltipState = { x: number; y: number; lines: DetailLine[] };\r\n\r\nfunction defaultVisibleKeys<T>(columns: TableColumn<T>[]) {\r\n return columns.filter((column) => column.defaultVisible !== false).map((column) => column.key);\r\n}\r\n\r\n/** Shared across all RecordWorkspace tables (preview + side rail). */\r\nconst WORKSPACE_CHROME_KEY = \"aksui.workspace.chrome\";\r\n\r\ntype WorkspaceChrome = {\r\n previewEnabled: boolean;\r\n sideOpen: boolean;\r\n};\r\n\r\nfunction readWorkspaceChrome(): WorkspaceChrome {\r\n if (typeof window === \"undefined\") {\r\n return { previewEnabled: false, sideOpen: false };\r\n }\r\n try {\r\n const raw = window.localStorage.getItem(WORKSPACE_CHROME_KEY);\r\n if (!raw) {\r\n return { previewEnabled: false, sideOpen: false };\r\n }\r\n const parsed = JSON.parse(raw) as Partial<WorkspaceChrome>;\r\n return {\r\n previewEnabled: Boolean(parsed.previewEnabled),\r\n sideOpen: Boolean(parsed.sideOpen),\r\n };\r\n } catch {\r\n return { previewEnabled: false, sideOpen: false };\r\n }\r\n}\r\n\r\nfunction writeWorkspaceChrome(chrome: WorkspaceChrome) {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n try {\r\n window.localStorage.setItem(WORKSPACE_CHROME_KEY, JSON.stringify(chrome));\r\n } catch {\r\n /* ignore quota / private mode */\r\n }\r\n}\r\n\r\nfunction filtersPrefsKey(columnPrefsKey: string | undefined) {\r\n return columnPrefsKey ? `${columnPrefsKey}.filters` : undefined;\r\n}\r\n\r\nfunction readStoredColumnKeys(prefsKey: string | undefined, fallback: string[], allowed: Set<string>) {\r\n if (!prefsKey || typeof window === \"undefined\") {\r\n return fallback;\r\n }\r\n try {\r\n const raw = window.localStorage.getItem(prefsKey);\r\n if (!raw) {\r\n return fallback;\r\n }\r\n const parsed = JSON.parse(raw) as unknown;\r\n if (!Array.isArray(parsed)) {\r\n return fallback;\r\n }\r\n const keys = parsed.filter((entry): entry is string => typeof entry === \"string\" && allowed.has(entry));\r\n return keys.length > 0 ? keys : fallback;\r\n } catch {\r\n return fallback;\r\n }\r\n}\r\n\r\nfunction writeStoredColumnKeys(prefsKey: string | undefined, keys: string[]) {\r\n if (!prefsKey || typeof window === \"undefined\") {\r\n return;\r\n }\r\n try {\r\n window.localStorage.setItem(prefsKey, JSON.stringify(keys));\r\n } catch {\r\n /* ignore quota / private mode */\r\n }\r\n}\r\n\r\nfunction readStoredFilters(prefsKey: string | undefined, allowed: Set<string>): Record<string, string> {\r\n if (!prefsKey || typeof window === \"undefined\") {\r\n return {};\r\n }\r\n try {\r\n const raw = window.localStorage.getItem(prefsKey);\r\n if (!raw) {\r\n return {};\r\n }\r\n const parsed = JSON.parse(raw) as unknown;\r\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\r\n return {};\r\n }\r\n const next: Record<string, string> = {};\r\n for (const [key, value] of Object.entries(parsed as Record<string, unknown>)) {\r\n if (allowed.has(key) && typeof value === \"string\" && value.trim()) {\r\n next[key] = value;\r\n }\r\n }\r\n return next;\r\n } catch {\r\n return {};\r\n }\r\n}\r\n\r\nfunction writeStoredFilters(prefsKey: string | undefined, filters: Record<string, string>) {\r\n if (!prefsKey || typeof window === \"undefined\") {\r\n return;\r\n }\r\n try {\r\n const trimmed: Record<string, string> = {};\r\n for (const [key, value] of Object.entries(filters)) {\r\n if (value.trim()) {\r\n trimmed[key] = value;\r\n }\r\n }\r\n window.localStorage.setItem(prefsKey, JSON.stringify(trimmed));\r\n } catch {\r\n /* ignore quota / private mode */\r\n }\r\n}\r\n\r\nfunction compareColumnValues<T>(column: TableColumn<T>, left: T, right: T) {\r\n const leftRaw = column.display ? column.display(left) : column.value(left);\r\n const rightRaw = column.display ? column.display(right) : column.value(right);\r\n\r\n if (leftRaw === null || leftRaw === undefined || leftRaw === \"\") {\r\n return rightRaw === null || rightRaw === undefined || rightRaw === \"\" ? 0 : 1;\r\n }\r\n if (rightRaw === null || rightRaw === undefined || rightRaw === \"\") {\r\n return -1;\r\n }\r\n\r\n if (typeof leftRaw === \"number\" && typeof rightRaw === \"number\") {\r\n return leftRaw - rightRaw;\r\n }\r\n\r\n const leftText = String(leftRaw);\r\n const rightText = String(rightRaw);\r\n const leftNumber = Number(leftText);\r\n const rightNumber = Number(rightText);\r\n if (\r\n leftText.trim() !== \"\" &&\r\n rightText.trim() !== \"\" &&\r\n Number.isFinite(leftNumber) &&\r\n Number.isFinite(rightNumber) &&\r\n /^-?\\d+(\\.\\d+)?$/.test(leftText.trim()) &&\r\n /^-?\\d+(\\.\\d+)?$/.test(rightText.trim())\r\n ) {\r\n return leftNumber - rightNumber;\r\n }\r\n\r\n return leftText.localeCompare(rightText, undefined, { sensitivity: \"base\", numeric: true });\r\n}\r\n\r\nfunction PlusIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M10 4v12M4 10h12\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction FilterIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M3 5h14M5.5 10h9M8 15h4\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction ResetIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M4.5 8.2A6 6 0 1 1 4.8 13\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n <path d=\"M4.5 4.2v4h4\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction ColumnsIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M4 4.5h3.5v11H4zM8.25 4.5h3.5v11h-3.5zM12.5 4.5H16v11h-3.5z\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction ChevronIcon({ open }: { open: boolean }) {\r\n return (\r\n <svg className={open ? \"side-rail-chevron open\" : \"side-rail-chevron\"} viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M8 4.5 13.5 10 8 15.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction PreviewIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M2.8 10S5.5 4.8 10 4.8 17.2 10 17.2 10 14.5 15.2 10 15.2 2.8 10 2.8 10Z\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" />\r\n <circle cx=\"10\" cy=\"10\" r=\"2.4\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction UploadIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M10 16.5V7.3\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n <path d=\"M6.5 10.8 10 7.2l3.5 3.6\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n <path d=\"M4 4.5h12\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction DownloadIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path d=\"M10 3.5v8.2\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n <path d=\"M6.5 9.2 10 12.8l3.5-3.6\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n <path d=\"M4 15.5h12\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction MoreIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <circle cx=\"4.5\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" />\r\n <circle cx=\"10\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" />\r\n <circle cx=\"15.5\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction ToolsIcon() {\r\n return (\r\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\r\n <path\r\n d=\"M11.5 3.5h5v5M16.2 3.8 10 10M8.2 5.2H3.8v11h11V12\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.6\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction DetailList({ lines }: { lines: DetailLine[] }) {\r\n return (\r\n <dl className=\"record-detail-list\">\r\n {lines.map((line) => (\r\n <div key={line.label} className=\"record-detail-row\">\r\n <dt>{line.label}</dt>\r\n <dd>{line.value}</dd>\r\n </div>\r\n ))}\r\n </dl>\r\n );\r\n}\r\n\r\nexport function RecordWorkspace<T>({\r\n title,\r\n columns,\r\n items,\r\n rowKey,\r\n empty,\r\n onAdd,\r\n addLabel = \"Add\",\r\n canAdd = true,\r\n onView,\r\n onUpdate,\r\n onDelete,\r\n canUpdate,\r\n canDelete,\r\n onDownload,\r\n canDownload = true,\r\n canExport,\r\n downloadBusy = false,\r\n onBulkImport,\r\n canImport = true,\r\n importBusy = false,\r\n showColumnPicker = true,\r\n columnPrefsKey,\r\n visibleColumnKeys,\r\n defaultVisibleColumnKeys,\r\n onVisibleColumnKeysChange,\r\n toolbar,\r\n form,\r\n}: {\r\n title: string;\r\n columns: TableColumn<T>[];\r\n items: T[];\r\n rowKey: (item: T) => string | number;\r\n empty: string;\r\n onAdd?: () => void;\r\n addLabel?: string;\r\n canAdd?: boolean;\r\n onView?: (item: T) => void;\r\n onUpdate?: (item: T) => void;\r\n onDelete?: (item: T) => void;\r\n canUpdate?: (item: T) => boolean;\r\n canDelete?: (item: T) => boolean;\r\n /**\r\n * When set, shows CSV / Excel / JSON download controls.\r\n * Second argument lists currently visible columns (exportKey ?? key).\r\n */\r\n onDownload?: (format: ExportDownloadFormat, columns: ExportColumnRef[]) => void;\r\n /** Alias for `canDownload` (RBAC). When set, export requires this and `canDownload` to be true. */\r\n canExport?: boolean;\r\n canDownload?: boolean;\r\n downloadBusy?: boolean;\r\n onBulkImport?: (mode: BulkImportMode, file: File) => Promise<BulkImportResult>;\r\n canImport?: boolean;\r\n importBusy?: boolean;\r\n /** Column checklist in the side rail. Default true. */\r\n showColumnPicker?: boolean;\r\n /**\r\n * Persist visible column keys in localStorage under this key.\r\n * Also persists filter values at `${columnPrefsKey}.filters`.\r\n * Preview + side-rail open/collapsed use a shared key across all tables (`aksui.workspace.chrome`).\r\n */\r\n columnPrefsKey?: string;\r\n /** Controlled visible column keys. */\r\n visibleColumnKeys?: string[];\r\n /** Uncontrolled initial visible keys (defaults to columns with defaultVisible !== false). */\r\n defaultVisibleColumnKeys?: string[];\r\n onVisibleColumnKeysChange?: (keys: string[]) => void;\r\n toolbar?: ReactNode;\r\n /** Slot for Add/Update/View dialogs owned by the host app. */\r\n form?: ReactNode;\r\n}) {\r\n const allowedKeys = useMemo(() => new Set(columns.map((column) => column.key)), [columns]);\r\n const fallbackKeys = useMemo(\r\n () => defaultVisibleColumnKeys ?? defaultVisibleKeys(columns),\r\n [columns, defaultVisibleColumnKeys],\r\n );\r\n const isControlled = visibleColumnKeys !== undefined;\r\n const [internalVisibleKeys, setInternalVisibleKeys] = useState<string[]>(() =>\r\n readStoredColumnKeys(columnPrefsKey, fallbackKeys, allowedKeys),\r\n );\r\n const filterStorageKey = filtersPrefsKey(columnPrefsKey);\r\n const [filters, setFilters] = useState<Record<string, string>>(() =>\r\n readStoredFilters(filterStorageKey, allowedKeys),\r\n );\r\n const [sort, setSort] = useState<SortState | null>(null);\r\n const [sideOpen, setSideOpen] = useState(() => readWorkspaceChrome().sideOpen);\r\n const [toolsDrawerOpen, setToolsDrawerOpen] = useState(false);\r\n const [downloadOpen, setDownloadOpen] = useState(false);\r\n const [bulkOpen, setBulkOpen] = useState(false);\r\n const [bulkMode, setBulkMode] = useState<BulkImportMode>(\"upsert\");\r\n const [bulkFile, setBulkFile] = useState<File | null>(null);\r\n const [bulkReport, setBulkReport] = useState<BulkImportResult | null>(null);\r\n const bulkFileInputRef = useRef<HTMLInputElement | null>(null);\r\n const [columnsOpen, setColumnsOpen] = useState(false);\r\n const [previewEnabled, setPreviewEnabled] = useState(() => readWorkspaceChrome().previewEnabled);\r\n const [previewKey, setPreviewKey] = useState<string | number | null>(null);\r\n const [tooltip, setTooltip] = useState<TooltipState | null>(null);\r\n const [pageSize, setPageSize] = useState(\"15\");\r\n const [page, setPage] = useState(1);\r\n const [actionsMenu, setActionsMenu] = useState<{\r\n key: string | number;\r\n item: T;\r\n x: number;\r\n y: number;\r\n } | null>(null);\r\n const actionsMenuRef = useRef<HTMLDivElement | null>(null);\r\n const isClient = useIsClient();\r\n const hoverTooltipsEnabled = useHoverTooltipsEnabled();\r\n\r\n useEffect(() => {\r\n if (isControlled) {\r\n return;\r\n }\r\n setInternalVisibleKeys(readStoredColumnKeys(columnPrefsKey, fallbackKeys, allowedKeys));\r\n }, [allowedKeys, columnPrefsKey, fallbackKeys, isControlled]);\r\n\r\n useEffect(() => {\r\n setFilters(readStoredFilters(filtersPrefsKey(columnPrefsKey), allowedKeys));\r\n }, [allowedKeys, columnPrefsKey]);\r\n\r\n const resolvedVisibleKeys = useMemo(() => {\r\n const source = isControlled ? visibleColumnKeys! : internalVisibleKeys;\r\n const filtered = source.filter((key) => allowedKeys.has(key));\r\n return filtered.length > 0 ? filtered : fallbackKeys.filter((key) => allowedKeys.has(key));\r\n }, [allowedKeys, fallbackKeys, internalVisibleKeys, isControlled, visibleColumnKeys]);\r\n\r\n const visibleColumns = useMemo(() => {\r\n const byKey = new Map(columns.map((column) => [column.key, column]));\r\n return resolvedVisibleKeys.map((key) => byKey.get(key)).filter((column): column is TableColumn<T> => Boolean(column));\r\n }, [columns, resolvedVisibleKeys]);\r\n\r\n function setVisibleKeys(next: string[]) {\r\n const unique = Array.from(new Set(next.filter((key) => allowedKeys.has(key))));\r\n const safe = unique.length > 0 ? unique : fallbackKeys.filter((key) => allowedKeys.has(key));\r\n if (!isControlled) {\r\n setInternalVisibleKeys(safe);\r\n writeStoredColumnKeys(columnPrefsKey, safe);\r\n }\r\n onVisibleColumnKeysChange?.(safe);\r\n }\r\n\r\n function toggleColumnVisible(key: string, checked: boolean) {\r\n if (checked) {\r\n if (resolvedVisibleKeys.includes(key)) {\r\n return;\r\n }\r\n setVisibleKeys([...resolvedVisibleKeys, key]);\r\n return;\r\n }\r\n if (resolvedVisibleKeys.length <= 1) {\r\n return;\r\n }\r\n setVisibleKeys(resolvedVisibleKeys.filter((entry) => entry !== key));\r\n }\r\n\r\n function selectAllColumns() {\r\n setVisibleKeys(columns.map((column) => column.key));\r\n }\r\n\r\n function resetColumns() {\r\n setVisibleKeys(fallbackKeys);\r\n }\r\n\r\n const filterableColumns = visibleColumns.filter((column) => column.filterable !== false);\r\n\r\n const filtered = useMemo(() => {\r\n return items.filter((item) =>\r\n filterableColumns.every((column) => {\r\n const query = (filters[column.key] ?? \"\").trim();\r\n if (!query) {\r\n return true;\r\n }\r\n const raw = column.value(item);\r\n const text = raw === null || raw === undefined ? \"\" : String(raw);\r\n if (column.filterOptions) {\r\n return text === query;\r\n }\r\n return text.toLowerCase().includes(query.toLowerCase());\r\n }),\r\n );\r\n }, [items, filters, filterableColumns]);\r\n\r\n const sorted = useMemo(() => {\r\n if (!sort) {\r\n return filtered;\r\n }\r\n const column = visibleColumns.find((entry) => entry.key === sort.key);\r\n if (!column || column.sortable === false) {\r\n return filtered;\r\n }\r\n const direction = sort.direction === \"asc\" ? 1 : -1;\r\n return [...filtered].sort((left, right) => compareColumnValues(column, left, right) * direction);\r\n }, [filtered, sort, visibleColumns]);\r\n\r\n const activeFilterCount = useMemo(\r\n () => filterableColumns.reduce((count, column) => count + ((filters[column.key] ?? \"\").trim() ? 1 : 0), 0),\r\n [filterableColumns, filters],\r\n );\r\n\r\n const hiddenColumnCount = columns.length - visibleColumns.length;\r\n const toolsBadgeCount = activeFilterCount + (hiddenColumnCount > 0 ? 1 : 0) + (previewEnabled ? 1 : 0);\r\n const showAll = pageSize === \"all\";\r\n const numericPageSize = showAll ? Math.max(sorted.length, 1) : Number(pageSize);\r\n const pageCount = showAll ? 1 : Math.max(1, Math.ceil(sorted.length / numericPageSize));\r\n const currentPage = Math.min(page, pageCount);\r\n const start = showAll ? 0 : (currentPage - 1) * numericPageSize;\r\n const pageItems = showAll ? sorted : sorted.slice(start, start + numericPageSize);\r\n const showAdd = canAdd && Boolean(onAdd);\r\n const exportAllowed = (canExport ?? true) && canDownload;\r\n const showDownload = Boolean(onDownload) && exportAllowed;\r\n const showBulkImport = Boolean(onBulkImport) && canImport;\r\n const showFilters = filterableColumns.length > 0;\r\n const showColumns = showColumnPicker && columns.length > 0;\r\n const previewItem = previewKey === null ? null : sorted.find((item) => rowKey(item) === previewKey) ?? null;\r\n const exportColumns: ExportColumnRef[] = visibleColumns.map((column) => ({\r\n key: column.exportKey ?? column.key,\r\n header: column.header,\r\n }));\r\n const canShowTooltip = hoverTooltipsEnabled && !previewEnabled && actionsMenu === null;\r\n\r\n useEffect(() => {\r\n if (actionsMenu === null) {\r\n return;\r\n }\r\n\r\n function onPointerDown(event: globalThis.MouseEvent) {\r\n if (actionsMenuRef.current && !actionsMenuRef.current.contains(event.target as Node)) {\r\n setActionsMenu(null);\r\n }\r\n }\r\n\r\n document.addEventListener(\"mousedown\", onPointerDown);\r\n return () => document.removeEventListener(\"mousedown\", onPointerDown);\r\n }, [actionsMenu]);\r\n\r\n useEffect(() => {\r\n if (!toolsDrawerOpen) {\r\n return;\r\n }\r\n\r\n function onKeyDown(event: KeyboardEvent) {\r\n if (event.key === \"Escape\") {\r\n setToolsDrawerOpen(false);\r\n }\r\n }\r\n\r\n document.addEventListener(\"keydown\", onKeyDown);\r\n const previousOverflow = document.body.style.overflow;\r\n document.body.style.overflow = \"hidden\";\r\n return () => {\r\n document.removeEventListener(\"keydown\", onKeyDown);\r\n document.body.style.overflow = previousOverflow;\r\n };\r\n }, [toolsDrawerOpen]);\r\n\r\n function requestDownload(format: ExportDownloadFormat) {\r\n if (!onDownload || downloadBusy) {\r\n return;\r\n }\r\n onDownload(format, exportColumns);\r\n setDownloadOpen(false);\r\n }\r\n\r\n async function submitBulkImport() {\r\n if (!onBulkImport || importBusy || !bulkFile) {\r\n return;\r\n }\r\n setBulkReport(null);\r\n try {\r\n const report = await onBulkImport(bulkMode, bulkFile);\r\n setBulkReport(report);\r\n if (report.applied) {\r\n setBulkFile(null);\r\n if (bulkFileInputRef.current) {\r\n bulkFileInputRef.current.value = \"\";\r\n }\r\n }\r\n } catch {\r\n setBulkReport({\r\n totalRows: 0,\r\n failed: 1,\r\n applied: false,\r\n errors: [{ row: 0, code: \"ImportFailed\", message: \"Import request failed.\" }],\r\n });\r\n }\r\n }\r\n\r\n function cellText(column: TableColumn<T>, item: T) {\r\n const raw = column.display ? column.display(item) : column.value(item);\r\n return raw === null || raw === undefined || raw === \"\" ? \"—\" : String(raw);\r\n }\r\n\r\n function detailLines(item: T): DetailLine[] {\r\n return visibleColumns.map((column) => ({\r\n label: column.header,\r\n value: cellText(column, item),\r\n }));\r\n }\r\n\r\n const previewTitle = previewItem && visibleColumns[0] ? cellText(visibleColumns[0], previewItem) : null;\r\n\r\n function changeFilter(key: string, value: string) {\r\n setFilters((current) => {\r\n const next = { ...current, [key]: value };\r\n writeStoredFilters(filterStorageKey, next);\r\n return next;\r\n });\r\n setPage(1);\r\n }\r\n\r\n function clearFilters() {\r\n setFilters({});\r\n writeStoredFilters(filterStorageKey, {});\r\n setPage(1);\r\n }\r\n\r\n function setSideOpenValue(open: boolean) {\r\n setSideOpen(open);\r\n writeWorkspaceChrome({ previewEnabled, sideOpen: open });\r\n }\r\n\r\n function toggleSort(column: TableColumn<T>) {\r\n if (column.sortable === false) {\r\n return;\r\n }\r\n setSort((current) => {\r\n if (!current || current.key !== column.key) {\r\n return { key: column.key, direction: \"asc\" };\r\n }\r\n if (current.direction === \"asc\") {\r\n return { key: column.key, direction: \"desc\" };\r\n }\r\n return null;\r\n });\r\n setPage(1);\r\n }\r\n\r\n function setPreviewEnabledValue(enabled: boolean) {\r\n setPreviewEnabled(enabled);\r\n writeWorkspaceChrome({ previewEnabled: enabled, sideOpen });\r\n setTooltip(null);\r\n if (!enabled) {\r\n setPreviewKey(null);\r\n }\r\n }\r\n\r\n function focusRecord(item: T) {\r\n if (previewEnabled) {\r\n setPreviewKey(rowKey(item));\r\n }\r\n }\r\n\r\n function showTooltip(item: T, event: MouseEvent) {\r\n if (!canShowTooltip) {\r\n return;\r\n }\r\n const padding = 16;\r\n const width = 280;\r\n const x = Math.min(event.clientX + 14, window.innerWidth - width - padding);\r\n const y = Math.min(event.clientY + 14, window.innerHeight - padding - 24);\r\n setTooltip({ x, y, lines: detailLines(item) });\r\n }\r\n\r\n function openRowActions(item: T, event: MouseEvent<HTMLButtonElement>) {\r\n event.stopPropagation();\r\n setTooltip(null);\r\n const key = rowKey(item);\r\n if (actionsMenu?.key === key) {\r\n setActionsMenu(null);\r\n return;\r\n }\r\n const rect = event.currentTarget.getBoundingClientRect();\r\n const menuWidth = 168;\r\n const menuHeight = 148;\r\n const x = Math.min(Math.max(8, rect.right - menuWidth), window.innerWidth - menuWidth - 8);\r\n const y = Math.min(rect.bottom + 6, window.innerHeight - menuHeight - 8);\r\n setActionsMenu({ key, item, x, y });\r\n }\r\n\r\n const summary =\r\n sorted.length === 0\r\n ? \"0 records\"\r\n : showAll\r\n ? `1–${sorted.length} of ${sorted.length}`\r\n : `${start + 1}–${Math.min(start + numericPageSize, sorted.length)} of ${sorted.length}`;\r\n\r\n function renderToolsBody({ compactIcons }: { compactIcons: boolean }) {\r\n if (compactIcons) {\r\n return (\r\n <div className=\"side-rail-icons\">\r\n <label className=\"side-rail-icon preview-check-icon\" title=\"Preview\">\r\n <input\r\n type=\"checkbox\"\r\n checked={previewEnabled}\r\n onChange={(event) => setPreviewEnabledValue(event.target.checked)}\r\n aria-label=\"Preview\"\r\n />\r\n <PreviewIcon />\r\n </label>\r\n {showAdd ? (\r\n <button type=\"button\" className=\"ghost side-rail-icon\" title={addLabel} aria-label={addLabel} onClick={onAdd}>\r\n <PlusIcon />\r\n </button>\r\n ) : null}\r\n {showColumns ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-icon\"\r\n title=\"Columns\"\r\n aria-label=\"Columns\"\r\n onClick={() => {\r\n setSideOpenValue(true);\r\n setColumnsOpen(true);\r\n }}\r\n >\r\n <ColumnsIcon />\r\n {hiddenColumnCount > 0 ? <span className=\"filter-badge\">{hiddenColumnCount}</span> : null}\r\n </button>\r\n ) : null}\r\n {showDownload ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-icon\"\r\n title=\"Download\"\r\n aria-label=\"Download\"\r\n disabled={downloadBusy}\r\n onClick={() => {\r\n setSideOpenValue(true);\r\n setDownloadOpen(true);\r\n }}\r\n >\r\n <DownloadIcon />\r\n </button>\r\n ) : null}\r\n {showBulkImport ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-icon\"\r\n title=\"Bulk entry\"\r\n aria-label=\"Bulk entry\"\r\n disabled={importBusy}\r\n onClick={() => {\r\n setSideOpenValue(true);\r\n setBulkOpen(true);\r\n }}\r\n >\r\n <UploadIcon />\r\n </button>\r\n ) : null}\r\n {showFilters ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-icon\"\r\n title=\"Show filters\"\r\n aria-label=\"Show filters\"\r\n onClick={() => setSideOpen(true)}\r\n >\r\n <FilterIcon />\r\n {activeFilterCount > 0 ? <span className=\"filter-badge\">{activeFilterCount}</span> : null}\r\n </button>\r\n ) : null}\r\n {showFilters ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-icon\"\r\n title=\"Reset filters\"\r\n aria-label=\"Reset filters\"\r\n disabled={activeFilterCount === 0}\r\n onClick={clearFilters}\r\n >\r\n <ResetIcon />\r\n </button>\r\n ) : null}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"side-rail-body\">\r\n <div className=\"preview-check\">\r\n <input\r\n type=\"checkbox\"\r\n checked={previewEnabled}\r\n onChange={(event) => setPreviewEnabledValue(event.target.checked)}\r\n aria-label=\"Preview\"\r\n />\r\n <PreviewIcon />\r\n <span aria-hidden=\"true\">Preview</span>\r\n </div>\r\n\r\n {showAdd ? (\r\n <button\r\n type=\"button\"\r\n className=\"side-rail-add\"\r\n onClick={() => {\r\n setToolsDrawerOpen(false);\r\n onAdd?.();\r\n }}\r\n >\r\n <PlusIcon />\r\n <span>{addLabel}</span>\r\n </button>\r\n ) : null}\r\n\r\n {showColumns ? (\r\n <div className=\"side-rail-columns\">\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-columns-toggle\"\r\n aria-expanded={columnsOpen}\r\n onClick={() => setColumnsOpen((open) => !open)}\r\n >\r\n <ColumnsIcon />\r\n <span>Columns{hiddenColumnCount > 0 ? ` (${visibleColumns.length}/${columns.length})` : \"\"}</span>\r\n </button>\r\n {columnsOpen ? (\r\n <div className=\"side-rail-columns-panel\" role=\"group\" aria-label=\"Visible columns\">\r\n <div className=\"side-rail-columns-actions\">\r\n <button type=\"button\" className=\"ghost\" onClick={selectAllColumns}>\r\n Select all\r\n </button>\r\n <button type=\"button\" className=\"ghost\" onClick={resetColumns}>\r\n Reset\r\n </button>\r\n </div>\r\n <div className=\"side-rail-columns-list\">\r\n {columns.map((column) => {\r\n const checked = resolvedVisibleKeys.includes(column.key);\r\n const disableUncheck = checked && resolvedVisibleKeys.length <= 1;\r\n return (\r\n <label key={column.key} className=\"side-rail-column-option\">\r\n <input\r\n type=\"checkbox\"\r\n checked={checked}\r\n disabled={disableUncheck}\r\n onChange={(event) => toggleColumnVisible(column.key, event.target.checked)}\r\n />\r\n <span>{column.header}</span>\r\n </label>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n\r\n {showDownload ? (\r\n <div className=\"side-rail-download\">\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-download-toggle\"\r\n aria-expanded={downloadOpen}\r\n disabled={downloadBusy}\r\n onClick={() => setDownloadOpen((open) => !open)}\r\n >\r\n <DownloadIcon />\r\n <span>{downloadBusy ? \"Downloading…\" : \"Download\"}</span>\r\n </button>\r\n {downloadOpen ? (\r\n <div className=\"side-rail-download-formats\" role=\"group\" aria-label=\"Download format\">\r\n {EXPORT_FORMAT_OPTIONS.map((option) => (\r\n <button\r\n key={option.format}\r\n type=\"button\"\r\n className=\"ghost side-rail-download-format\"\r\n disabled={downloadBusy}\r\n onClick={() => requestDownload(option.format)}\r\n >\r\n {option.label}\r\n </button>\r\n ))}\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n\r\n {showBulkImport ? (\r\n <div className=\"side-rail-bulk\">\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-bulk-toggle\"\r\n aria-expanded={bulkOpen}\r\n disabled={importBusy}\r\n onClick={() => setBulkOpen((open) => !open)}\r\n >\r\n <UploadIcon />\r\n <span>{importBusy ? \"Importing…\" : \"Bulk entry\"}</span>\r\n </button>\r\n {bulkOpen ? (\r\n <div className=\"side-rail-bulk-panel\" role=\"group\" aria-label=\"Bulk entry\">\r\n <label className=\"side-rail-bulk-mode\">\r\n Mode\r\n <Select\r\n value={bulkMode}\r\n options={BULK_IMPORT_MODE_OPTIONS.map((option) => ({ value: option.mode, label: option.label }))}\r\n onChange={(value) => setBulkMode(value as BulkImportMode)}\r\n />\r\n </label>\r\n <label className=\"side-rail-bulk-file\">\r\n File\r\n <input\r\n ref={bulkFileInputRef}\r\n type=\"file\"\r\n accept=\".csv,.xlsx,.json\"\r\n disabled={importBusy}\r\n onChange={(event) => {\r\n setBulkFile(event.target.files?.[0] ?? null);\r\n setBulkReport(null);\r\n }}\r\n />\r\n </label>\r\n <button\r\n type=\"button\"\r\n className=\"side-rail-bulk-submit\"\r\n disabled={importBusy || !bulkFile}\r\n onClick={() => void submitBulkImport()}\r\n >\r\n {importBusy ? \"Importing…\" : \"Import\"}\r\n </button>\r\n {bulkReport ? (\r\n <div className=\"side-rail-bulk-report\" role=\"status\">\r\n <p>\r\n {bulkReport.applied\r\n ? `Applied ${bulkReport.totalRows} row(s).`\r\n : `${bulkReport.failed} error(s) in ${bulkReport.totalRows} row(s).`}\r\n </p>\r\n {bulkReport.errors.length > 0 ? (\r\n <ul className=\"side-rail-bulk-errors\">\r\n {bulkReport.errors.slice(0, 8).map((error, index) => (\r\n <li key={`${error.row}-${error.code}-${index}`}>\r\n Row {error.row}: {error.message}\r\n </li>\r\n ))}\r\n {bulkReport.errors.length > 8 ? (\r\n <li>…and {bulkReport.errors.length - 8} more</li>\r\n ) : null}\r\n </ul>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n\r\n {showFilters ? (\r\n <div className=\"side-rail-filters\">\r\n <div className=\"filter-panel-head\">\r\n <h3>Filters</h3>\r\n <button\r\n type=\"button\"\r\n className=\"ghost filter-clear\"\r\n title=\"Reset filters\"\r\n aria-label=\"Reset filters\"\r\n disabled={activeFilterCount === 0}\r\n onClick={clearFilters}\r\n >\r\n <ResetIcon />\r\n <span>Reset</span>\r\n </button>\r\n </div>\r\n <div className=\"filter-panel-stack\">\r\n {filterableColumns.map((column) => (\r\n <label key={column.key}>\r\n {column.header}\r\n {column.filterOptions ? (\r\n <Select\r\n value={filters[column.key] ?? \"\"}\r\n options={[{ value: \"\", label: column.filterPlaceholder ?? \"All\" }, ...column.filterOptions]}\r\n onChange={(value) => changeFilter(column.key, value)}\r\n placeholder={column.filterPlaceholder ?? \"All\"}\r\n />\r\n ) : (\r\n <input\r\n value={filters[column.key] ?? \"\"}\r\n onChange={(event) => changeFilter(column.key, event.target.value)}\r\n placeholder={`Filter ${column.header.toLowerCase()}`}\r\n />\r\n )}\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n }\r\n\r\n function renderRowActions(item: T) {\r\n const key = rowKey(item);\r\n const updateAllowed = canUpdate ? canUpdate(item) : Boolean(onUpdate);\r\n const deleteAllowed = canDelete ? canDelete(item) : Boolean(onDelete);\r\n const hasActions = Boolean(onView || onUpdate || onDelete);\r\n if (!hasActions) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n <div className=\"row-actions row-actions-desktop\">\r\n {onView ? (\r\n <button type=\"button\" className=\"ghost row-action\" onClick={() => onView(item)}>\r\n View\r\n </button>\r\n ) : null}\r\n {onUpdate ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost row-action\"\r\n disabled={!updateAllowed}\r\n title={updateAllowed ? \"Update\" : \"Update is not available\"}\r\n onClick={() => onUpdate(item)}\r\n >\r\n Update\r\n </button>\r\n ) : null}\r\n {onDelete ? (\r\n <button\r\n type=\"button\"\r\n className=\"ghost row-action danger\"\r\n disabled={!deleteAllowed}\r\n title={deleteAllowed ? \"Delete\" : \"Delete is not available\"}\r\n onClick={() => onDelete(item)}\r\n >\r\n Delete\r\n </button>\r\n ) : null}\r\n </div>\r\n\r\n <div className=\"row-actions row-actions-mobile\">\r\n <button\r\n type=\"button\"\r\n className={actionsMenu?.key === key ? \"ghost row-action-menu-trigger open\" : \"ghost row-action-menu-trigger\"}\r\n aria-haspopup=\"menu\"\r\n aria-expanded={actionsMenu?.key === key}\r\n aria-label=\"Row actions\"\r\n onClick={(event) => openRowActions(item, event)}\r\n >\r\n <MoreIcon />\r\n </button>\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n const actionsMenuItem = actionsMenu?.item;\r\n const actionsUpdateAllowed = actionsMenuItem\r\n ? canUpdate\r\n ? canUpdate(actionsMenuItem)\r\n : Boolean(onUpdate)\r\n : false;\r\n const actionsDeleteAllowed = actionsMenuItem\r\n ? canDelete\r\n ? canDelete(actionsMenuItem)\r\n : Boolean(onDelete)\r\n : false;\r\n\r\n return (\r\n <div className={toolsDrawerOpen ? \"list-workspace tools-drawer-open\" : \"list-workspace\"} aria-label={title}>\r\n <div className=\"tools-mobile-bar\">\r\n <div className=\"tools-mobile-bar-start\">\r\n {showAdd ? (\r\n <button type=\"button\" className=\"tools-mobile-add\" onClick={onAdd}>\r\n <PlusIcon />\r\n <span>{addLabel}</span>\r\n </button>\r\n ) : (\r\n <p className=\"tools-mobile-title\">{title}</p>\r\n )}\r\n </div>\r\n <button\r\n type=\"button\"\r\n className=\"ghost tools-mobile-toggle\"\r\n aria-expanded={toolsDrawerOpen}\r\n aria-controls=\"aksui-tools-drawer\"\r\n onClick={() => setToolsDrawerOpen(true)}\r\n >\r\n <ToolsIcon />\r\n <span>Tools</span>\r\n {toolsBadgeCount > 0 ? <span className=\"filter-badge\">{toolsBadgeCount}</span> : null}\r\n </button>\r\n </div>\r\n\r\n <div\r\n className={[\"list-body\", sideOpen ? \"side-open\" : \"\", previewEnabled ? \"preview-open\" : \"\"]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <div className=\"list-main\">\r\n <section className=\"table-card\">\r\n {toolbar ? (\r\n <div className=\"table-card-bar\">\r\n <div className=\"table-card-context\">{toolbar}</div>\r\n </div>\r\n ) : null}\r\n\r\n <div className=\"table-wrap\">\r\n <table className=\"data-table\">\r\n <thead>\r\n <tr>\r\n {visibleColumns.map((column) => {\r\n const sortable = column.sortable !== false;\r\n const active = sort?.key === column.key ? sort.direction : null;\r\n return (\r\n <th\r\n key={column.key}\r\n aria-sort={active === \"asc\" ? \"ascending\" : active === \"desc\" ? \"descending\" : \"none\"}\r\n >\r\n {sortable ? (\r\n <button\r\n type=\"button\"\r\n className={active ? `sort-header active ${active}` : \"sort-header\"}\r\n onClick={() => toggleSort(column)}\r\n >\r\n <span>{column.header}</span>\r\n <span className=\"sort-indicator\" aria-hidden=\"true\">\r\n {active === \"asc\" ? \"▲\" : active === \"desc\" ? \"▼\" : \"↕\"}\r\n </span>\r\n </button>\r\n ) : (\r\n column.header\r\n )}\r\n </th>\r\n );\r\n })}\r\n <th className=\"actions-col\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {pageItems.length === 0 ? (\r\n <tr>\r\n <td colSpan={visibleColumns.length + 1}>\r\n <p className=\"hint table-empty\">\r\n {items.length === 0 ? empty : \"No records match the current filters.\"}\r\n </p>\r\n </td>\r\n </tr>\r\n ) : (\r\n pageItems.map((item) => {\r\n const key = rowKey(item);\r\n const selected = previewEnabled && previewKey === key;\r\n return (\r\n <tr\r\n key={key}\r\n className={selected ? \"data-row selected\" : \"data-row\"}\r\n onMouseEnter={(event) => {\r\n showTooltip(item, event);\r\n focusRecord(item);\r\n }}\r\n onMouseMove={(event) => showTooltip(item, event)}\r\n onMouseLeave={() => setTooltip(null)}\r\n onClick={() => focusRecord(item)}\r\n >\r\n {visibleColumns.map((column) => (\r\n <td key={column.key}>{cellText(column, item)}</td>\r\n ))}\r\n <td className=\"actions-col\" onClick={(event) => event.stopPropagation()}>\r\n {renderRowActions(item)}\r\n </td>\r\n </tr>\r\n );\r\n })\r\n )}\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <Pagination\r\n page={currentPage}\r\n pageCount={pageCount}\r\n pageSize={pageSize}\r\n onPageChange={setPage}\r\n onPageSizeChange={(value) => {\r\n setPageSize(value);\r\n setPage(1);\r\n }}\r\n summary={summary}\r\n />\r\n </section>\r\n </div>\r\n\r\n {previewEnabled ? (\r\n <aside className=\"preview-panel\" aria-label=\"Record preview\">\r\n <div className=\"preview-panel-head\">\r\n <div>\r\n <p className=\"preview-kicker\">Preview</p>\r\n <h3>{previewTitle ?? \"No record selected\"}</h3>\r\n </div>\r\n </div>\r\n <div className=\"preview-panel-body\">\r\n {previewItem ? (\r\n <DetailList lines={detailLines(previewItem)} />\r\n ) : (\r\n <p className=\"preview-empty\">Select a row to preview its details here.</p>\r\n )}\r\n </div>\r\n </aside>\r\n ) : null}\r\n\r\n <aside className={sideOpen ? \"side-rail open\" : \"side-rail\"} aria-label=\"Actions and filters\">\r\n <button\r\n type=\"button\"\r\n className=\"ghost side-rail-toggle\"\r\n aria-expanded={sideOpen}\r\n title={sideOpen ? \"Collapse\" : \"Expand\"}\r\n onClick={() => setSideOpenValue(!sideOpen)}\r\n >\r\n <ChevronIcon open={sideOpen} />\r\n {sideOpen ? <span>Collapse</span> : null}\r\n </button>\r\n {sideOpen ? renderToolsBody({ compactIcons: false }) : renderToolsBody({ compactIcons: true })}\r\n </aside>\r\n </div>\r\n\r\n {isClient\r\n ? createPortal(\r\n <>\r\n <button\r\n type=\"button\"\r\n className={toolsDrawerOpen ? \"tools-drawer-backdrop open\" : \"tools-drawer-backdrop\"}\r\n aria-label=\"Close tools\"\r\n tabIndex={toolsDrawerOpen ? 0 : -1}\r\n onClick={() => setToolsDrawerOpen(false)}\r\n />\r\n <aside\r\n id=\"aksui-tools-drawer\"\r\n className={toolsDrawerOpen ? \"tools-drawer open\" : \"tools-drawer\"}\r\n aria-label=\"Workspace tools\"\r\n aria-hidden={!toolsDrawerOpen}\r\n >\r\n <div className=\"tools-drawer-head\">\r\n <div>\r\n <p className=\"tools-drawer-kicker\">Workspace</p>\r\n <h3>Tools</h3>\r\n </div>\r\n <button type=\"button\" className=\"ghost tools-drawer-close\" onClick={() => setToolsDrawerOpen(false)}>\r\n Close\r\n </button>\r\n </div>\r\n <div className=\"tools-drawer-body\">{renderToolsBody({ compactIcons: false })}</div>\r\n </aside>\r\n </>,\r\n document.body,\r\n )\r\n : null}\r\n\r\n {form}\r\n\r\n {isClient && actionsMenu && actionsMenuItem\r\n ? createPortal(\r\n <div\r\n ref={actionsMenuRef}\r\n className=\"row-action-menu row-action-menu-portal\"\r\n role=\"menu\"\r\n style={{ left: actionsMenu.x, top: actionsMenu.y }}\r\n >\r\n {onView ? (\r\n <button\r\n type=\"button\"\r\n role=\"menuitem\"\r\n className=\"ghost\"\r\n onClick={() => {\r\n setActionsMenu(null);\r\n onView(actionsMenuItem);\r\n }}\r\n >\r\n View\r\n </button>\r\n ) : null}\r\n {onUpdate ? (\r\n <button\r\n type=\"button\"\r\n role=\"menuitem\"\r\n className=\"ghost\"\r\n disabled={!actionsUpdateAllowed}\r\n onClick={() => {\r\n setActionsMenu(null);\r\n onUpdate(actionsMenuItem);\r\n }}\r\n >\r\n Update\r\n </button>\r\n ) : null}\r\n {onDelete ? (\r\n <button\r\n type=\"button\"\r\n role=\"menuitem\"\r\n className=\"ghost danger\"\r\n disabled={!actionsDeleteAllowed}\r\n onClick={() => {\r\n setActionsMenu(null);\r\n onDelete(actionsMenuItem);\r\n }}\r\n >\r\n Delete\r\n </button>\r\n ) : null}\r\n </div>,\r\n document.body,\r\n )\r\n : null}\r\n\r\n {isClient && tooltip && canShowTooltip\r\n ? createPortal(\r\n <div className=\"record-tooltip\" style={{ left: tooltip.x, top: tooltip.y }} role=\"tooltip\">\r\n <p className=\"record-tooltip-title\">{title}</p>\r\n <DetailList lines={tooltip.lines} />\r\n </div>,\r\n document.body,\r\n )\r\n : null}\r\n </div>\r\n );\r\n}\r\n\r\n/** @deprecated Prefer RecordWorkspace — alias kept for configurator migration */\r\nexport const RecordTable = RecordWorkspace;\r\n"]}