@mshuja288/aksuicore 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +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/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"],"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 { 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\nexport function Topbar({\r\n title,\r\n logoSrc,\r\n logoAlt = \"Logo\",\r\n username = \"\",\r\n onLogout,\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 children?: ReactNode;\r\n}) {\r\n const [menuOpen, setMenuOpen] = 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 (!menuOpen) {\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 setMenuOpen(false);\r\n }\r\n }\r\n\r\n document.addEventListener(\"mousedown\", onPointerDown);\r\n return () => document.removeEventListener(\"mousedown\", onPointerDown);\r\n }, [menuOpen]);\r\n\r\n return (\r\n <header className=\"topbar\">\r\n <div className=\"topbar-brand\">\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={menuOpen}\r\n onClick={() => setMenuOpen((open) => !open)}\r\n title={username || \"Account\"}\r\n >\r\n <span className=\"avatar\">{initial}</span>\r\n </button>\r\n {menuOpen ? (\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 setMenuOpen(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}: {\r\n items: SideNavItem[];\r\n activeId: string;\r\n onSelect: (id: string) => void;\r\n label?: string;\r\n}) {\r\n return (\r\n <nav className=\"side-nav\" 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 type { ReactNode } from \"react\";\r\nimport { SideNav, type SideNavItem } from \"../primitives/SideNav\";\r\nimport { Topbar } from \"../primitives/Topbar\";\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 /** When true (default), renders a mobile bottom nav from `navItems`. */\r\n showBottomNav?: boolean;\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 * Matches aksconfigurator_ui shell layout.\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 showBottomNav = true,\r\n topbarActions,\r\n children,\r\n screenClassName = \"\",\r\n}: AppShellProps) {\r\n return (\r\n <div className=\"aksui-root app-shell\">\r\n <Topbar title={title} logoSrc={logoSrc} logoAlt={logoAlt} username={username} onLogout={onLogout}>\r\n {topbarActions}\r\n </Topbar>\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 {showBottomNav ? (\r\n <nav className=\"bottom-nav\" aria-label={navLabel}>\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 </nav>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useMemo, useState, useSyncExternalStore, type MouseEvent, type ReactNode } 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\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};\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 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 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 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 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 toolbar?: ReactNode;\r\n /** Slot for Add/Update/View dialogs owned by the host app. */\r\n form?: ReactNode;\r\n}) {\r\n const filterableColumns = columns.filter((column) => column.filterable !== false);\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 [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 isClient = useIsClient();\r\n\r\n const filtered = useMemo(() => {\r\n const activeFilters = columns.filter((column) => column.filterable !== false);\r\n return items.filter((item) =>\r\n activeFilters.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, columns]);\r\n\r\n const sorted = useMemo(() => {\r\n if (!sort) {\r\n return filtered;\r\n }\r\n const column = columns.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, columns]);\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 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 showFilters = filterableColumns.length > 0;\r\n const previewItem = previewKey === null ? null : sorted.find((item) => rowKey(item) === previewKey) ?? null;\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 columns.map((column) => ({\r\n label: column.header,\r\n value: cellText(column, item),\r\n }));\r\n }\r\n\r\n const previewTitle = previewItem && columns[0] ? cellText(columns[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 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 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 return (\r\n <div className=\"list-workspace\" aria-label={title}>\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 {columns.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={columns.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 updateAllowed = canUpdate ? canUpdate(item) : Boolean(onUpdate);\r\n const deleteAllowed = canDelete ? canDelete(item) : Boolean(onDelete);\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 if (!previewEnabled) {\r\n showTooltip(item, event);\r\n }\r\n focusRecord(item);\r\n }}\r\n onMouseMove={(event) => {\r\n if (!previewEnabled) {\r\n showTooltip(item, event);\r\n }\r\n }}\r\n onMouseLeave={() => setTooltip(null)}\r\n onClick={() => focusRecord(item)}\r\n >\r\n {columns.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 <div className=\"row-actions\">\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 </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\">Hover or click 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\r\n {sideOpen ? (\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 type=\"button\" className=\"side-rail-add\" onClick={onAdd}>\r\n <PlusIcon />\r\n <span>{addLabel}</span>\r\n </button>\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 <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 {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 </aside>\r\n </div>\r\n\r\n {form}\r\n\r\n {isClient && tooltip && !previewEnabled\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"]}
@@ -0,0 +1,182 @@
1
+ import * as react from 'react';
2
+ import { ButtonHTMLAttributes, ReactNode } from 'react';
3
+
4
+ /** Canonical theme token names mirrored from aksui.css */
5
+ declare const aksuiTokens: {
6
+ readonly brand: "#1E2735";
7
+ readonly accent: "#E67E22";
8
+ readonly ink: "#1E2735";
9
+ readonly muted: "#667085";
10
+ readonly line: "#e6e4df";
11
+ readonly field: "#f6f5f3";
12
+ readonly card: "#ffffff";
13
+ readonly danger: "#b42318";
14
+ readonly dangerBg: "#fff1f0";
15
+ readonly ok: "#067647";
16
+ readonly okBg: "#ecfdf3";
17
+ readonly radius: "8px";
18
+ readonly rowHeight: "34px";
19
+ readonly tableHeaderHeight: "36px";
20
+ readonly sideRailCollapsed: "52px";
21
+ readonly sideRailExpanded: "280px";
22
+ readonly previewPanelWidth: "300px";
23
+ };
24
+ type AksuiTokenName = keyof typeof aksuiTokens;
25
+
26
+ /** Theme tokens live in aksui.css. Import `@mshuja288/aksuicore/styles.css` in the host app. */
27
+ declare const aksuiThemeVersion = "0.2.0";
28
+
29
+ type ButtonVariant = "primary" | "secondary" | "ghost" | "danger";
30
+ declare function Button({ variant, className, children, ...props }: ButtonHTMLAttributes<HTMLButtonElement> & {
31
+ variant?: ButtonVariant;
32
+ children: ReactNode;
33
+ }): react.JSX.Element;
34
+
35
+ type SelectOption = {
36
+ value: string;
37
+ label: string;
38
+ tone?: "neutral" | "ok" | "warn" | "danger" | "accent";
39
+ };
40
+ declare function Select({ value, options, onChange, placeholder, disabled, required, className, }: {
41
+ value: string;
42
+ options: SelectOption[];
43
+ onChange: (value: string) => void;
44
+ placeholder?: string;
45
+ disabled?: boolean;
46
+ required?: boolean;
47
+ className?: string;
48
+ }): react.JSX.Element;
49
+ /** @deprecated Prefer Select — alias kept for configurator migration */
50
+ declare const AppSelect: typeof Select;
51
+ type AppSelectOption = SelectOption;
52
+
53
+ declare function DateField({ value, onChange, placeholder, disabled, readOnly, }: {
54
+ value: string;
55
+ onChange?: (value: string) => void;
56
+ placeholder?: string;
57
+ disabled?: boolean;
58
+ readOnly?: boolean;
59
+ }): react.JSX.Element;
60
+
61
+ declare function Dialog({ title, open, onClose, children, wide, }: {
62
+ title: string;
63
+ open: boolean;
64
+ onClose: () => void;
65
+ children: ReactNode;
66
+ wide?: boolean;
67
+ }): react.JSX.Element | null;
68
+ /** @deprecated Prefer Dialog — alias kept for configurator migration */
69
+ declare const FormDialog: typeof Dialog;
70
+
71
+ declare function Snackbar({ message, success, onDismiss, }: {
72
+ message: string;
73
+ success: boolean;
74
+ onDismiss?: () => void;
75
+ }): react.ReactPortal | null;
76
+ /** @deprecated Prefer Snackbar — alias kept for configurator migration */
77
+ declare const StatusMessage: typeof Snackbar;
78
+
79
+ declare function Topbar({ title, logoSrc, logoAlt, username, onLogout, children, }: {
80
+ title: string;
81
+ logoSrc?: string;
82
+ logoAlt?: string;
83
+ username?: string;
84
+ onLogout?: () => void;
85
+ children?: ReactNode;
86
+ }): react.JSX.Element;
87
+
88
+ type SideNavItem = {
89
+ id: string;
90
+ label: string;
91
+ /** Compact label for the mobile bottom nav (falls back to `label`). */
92
+ short?: string;
93
+ };
94
+ declare function SideNav({ items, activeId, onSelect, label, }: {
95
+ items: SideNavItem[];
96
+ activeId: string;
97
+ onSelect: (id: string) => void;
98
+ label?: string;
99
+ }): react.JSX.Element;
100
+
101
+ type PageSizeOption = {
102
+ value: string;
103
+ label: string;
104
+ };
105
+ declare function Pagination({ page, pageCount, pageSize, onPageChange, onPageSizeChange, summary, pageSizeOptions, disabled, }: {
106
+ page: number;
107
+ pageCount: number;
108
+ pageSize: string;
109
+ onPageChange: (page: number) => void;
110
+ onPageSizeChange: (pageSize: string) => void;
111
+ summary: string;
112
+ pageSizeOptions?: PageSizeOption[];
113
+ disabled?: boolean;
114
+ }): react.JSX.Element;
115
+
116
+ declare function FormActions({ pending, editing, saveLabel, updateLabel, newLabel, onNew, saveDisabled, replaceSaveWhenEditing, }: {
117
+ pending: boolean;
118
+ editing: boolean;
119
+ saveLabel: string;
120
+ updateLabel?: string;
121
+ newLabel: string;
122
+ onNew: () => void;
123
+ saveDisabled?: boolean;
124
+ replaceSaveWhenEditing?: boolean;
125
+ }): react.JSX.Element | null;
126
+
127
+ type AppShellProps = {
128
+ title: string;
129
+ logoSrc?: string;
130
+ logoAlt?: string;
131
+ username?: string;
132
+ onLogout?: () => void;
133
+ navItems: SideNavItem[];
134
+ activeNavId: string;
135
+ onNavSelect: (id: string) => void;
136
+ navLabel?: string;
137
+ /** When true (default), renders a mobile bottom nav from `navItems`. */
138
+ showBottomNav?: boolean;
139
+ topbarActions?: ReactNode;
140
+ children: ReactNode;
141
+ /** Extra class on the content/screen region */
142
+ screenClassName?: string;
143
+ };
144
+ /**
145
+ * Application chrome: topbar + left side nav + content screen.
146
+ * Matches aksconfigurator_ui shell layout.
147
+ */
148
+ declare function AppShell({ title, logoSrc, logoAlt, username, onLogout, navItems, activeNavId, onNavSelect, navLabel, showBottomNav, topbarActions, children, screenClassName, }: AppShellProps): react.JSX.Element;
149
+
150
+ type TableColumn<T> = {
151
+ key: string;
152
+ header: string;
153
+ value: (item: T) => string | number | null | undefined;
154
+ display?: (item: T) => string | number | null | undefined;
155
+ filterable?: boolean;
156
+ sortable?: boolean;
157
+ /** When set, filter uses an exact-match Select instead of text contains. */
158
+ filterOptions?: SelectOption[];
159
+ filterPlaceholder?: string;
160
+ };
161
+ declare function RecordWorkspace<T>({ title, columns, items, rowKey, empty, onAdd, addLabel, canAdd, onView, onUpdate, onDelete, canUpdate, canDelete, toolbar, form, }: {
162
+ title: string;
163
+ columns: TableColumn<T>[];
164
+ items: T[];
165
+ rowKey: (item: T) => string | number;
166
+ empty: string;
167
+ onAdd?: () => void;
168
+ addLabel?: string;
169
+ canAdd?: boolean;
170
+ onView?: (item: T) => void;
171
+ onUpdate?: (item: T) => void;
172
+ onDelete?: (item: T) => void;
173
+ canUpdate?: (item: T) => boolean;
174
+ canDelete?: (item: T) => boolean;
175
+ toolbar?: ReactNode;
176
+ /** Slot for Add/Update/View dialogs owned by the host app. */
177
+ form?: ReactNode;
178
+ }): react.JSX.Element;
179
+ /** @deprecated Prefer RecordWorkspace — alias kept for configurator migration */
180
+ declare const RecordTable: typeof RecordWorkspace;
181
+
182
+ export { type AksuiTokenName, AppSelect, type AppSelectOption, AppShell, type AppShellProps, Button, type ButtonVariant, DateField, Dialog, FormActions, FormDialog, type PageSizeOption, Pagination, RecordTable, RecordWorkspace, Select, type SelectOption, SideNav, type SideNavItem, Snackbar, StatusMessage, type TableColumn, Topbar, aksuiThemeVersion, aksuiTokens };
@@ -0,0 +1,182 @@
1
+ import * as react from 'react';
2
+ import { ButtonHTMLAttributes, ReactNode } from 'react';
3
+
4
+ /** Canonical theme token names mirrored from aksui.css */
5
+ declare const aksuiTokens: {
6
+ readonly brand: "#1E2735";
7
+ readonly accent: "#E67E22";
8
+ readonly ink: "#1E2735";
9
+ readonly muted: "#667085";
10
+ readonly line: "#e6e4df";
11
+ readonly field: "#f6f5f3";
12
+ readonly card: "#ffffff";
13
+ readonly danger: "#b42318";
14
+ readonly dangerBg: "#fff1f0";
15
+ readonly ok: "#067647";
16
+ readonly okBg: "#ecfdf3";
17
+ readonly radius: "8px";
18
+ readonly rowHeight: "34px";
19
+ readonly tableHeaderHeight: "36px";
20
+ readonly sideRailCollapsed: "52px";
21
+ readonly sideRailExpanded: "280px";
22
+ readonly previewPanelWidth: "300px";
23
+ };
24
+ type AksuiTokenName = keyof typeof aksuiTokens;
25
+
26
+ /** Theme tokens live in aksui.css. Import `@mshuja288/aksuicore/styles.css` in the host app. */
27
+ declare const aksuiThemeVersion = "0.2.0";
28
+
29
+ type ButtonVariant = "primary" | "secondary" | "ghost" | "danger";
30
+ declare function Button({ variant, className, children, ...props }: ButtonHTMLAttributes<HTMLButtonElement> & {
31
+ variant?: ButtonVariant;
32
+ children: ReactNode;
33
+ }): react.JSX.Element;
34
+
35
+ type SelectOption = {
36
+ value: string;
37
+ label: string;
38
+ tone?: "neutral" | "ok" | "warn" | "danger" | "accent";
39
+ };
40
+ declare function Select({ value, options, onChange, placeholder, disabled, required, className, }: {
41
+ value: string;
42
+ options: SelectOption[];
43
+ onChange: (value: string) => void;
44
+ placeholder?: string;
45
+ disabled?: boolean;
46
+ required?: boolean;
47
+ className?: string;
48
+ }): react.JSX.Element;
49
+ /** @deprecated Prefer Select — alias kept for configurator migration */
50
+ declare const AppSelect: typeof Select;
51
+ type AppSelectOption = SelectOption;
52
+
53
+ declare function DateField({ value, onChange, placeholder, disabled, readOnly, }: {
54
+ value: string;
55
+ onChange?: (value: string) => void;
56
+ placeholder?: string;
57
+ disabled?: boolean;
58
+ readOnly?: boolean;
59
+ }): react.JSX.Element;
60
+
61
+ declare function Dialog({ title, open, onClose, children, wide, }: {
62
+ title: string;
63
+ open: boolean;
64
+ onClose: () => void;
65
+ children: ReactNode;
66
+ wide?: boolean;
67
+ }): react.JSX.Element | null;
68
+ /** @deprecated Prefer Dialog — alias kept for configurator migration */
69
+ declare const FormDialog: typeof Dialog;
70
+
71
+ declare function Snackbar({ message, success, onDismiss, }: {
72
+ message: string;
73
+ success: boolean;
74
+ onDismiss?: () => void;
75
+ }): react.ReactPortal | null;
76
+ /** @deprecated Prefer Snackbar — alias kept for configurator migration */
77
+ declare const StatusMessage: typeof Snackbar;
78
+
79
+ declare function Topbar({ title, logoSrc, logoAlt, username, onLogout, children, }: {
80
+ title: string;
81
+ logoSrc?: string;
82
+ logoAlt?: string;
83
+ username?: string;
84
+ onLogout?: () => void;
85
+ children?: ReactNode;
86
+ }): react.JSX.Element;
87
+
88
+ type SideNavItem = {
89
+ id: string;
90
+ label: string;
91
+ /** Compact label for the mobile bottom nav (falls back to `label`). */
92
+ short?: string;
93
+ };
94
+ declare function SideNav({ items, activeId, onSelect, label, }: {
95
+ items: SideNavItem[];
96
+ activeId: string;
97
+ onSelect: (id: string) => void;
98
+ label?: string;
99
+ }): react.JSX.Element;
100
+
101
+ type PageSizeOption = {
102
+ value: string;
103
+ label: string;
104
+ };
105
+ declare function Pagination({ page, pageCount, pageSize, onPageChange, onPageSizeChange, summary, pageSizeOptions, disabled, }: {
106
+ page: number;
107
+ pageCount: number;
108
+ pageSize: string;
109
+ onPageChange: (page: number) => void;
110
+ onPageSizeChange: (pageSize: string) => void;
111
+ summary: string;
112
+ pageSizeOptions?: PageSizeOption[];
113
+ disabled?: boolean;
114
+ }): react.JSX.Element;
115
+
116
+ declare function FormActions({ pending, editing, saveLabel, updateLabel, newLabel, onNew, saveDisabled, replaceSaveWhenEditing, }: {
117
+ pending: boolean;
118
+ editing: boolean;
119
+ saveLabel: string;
120
+ updateLabel?: string;
121
+ newLabel: string;
122
+ onNew: () => void;
123
+ saveDisabled?: boolean;
124
+ replaceSaveWhenEditing?: boolean;
125
+ }): react.JSX.Element | null;
126
+
127
+ type AppShellProps = {
128
+ title: string;
129
+ logoSrc?: string;
130
+ logoAlt?: string;
131
+ username?: string;
132
+ onLogout?: () => void;
133
+ navItems: SideNavItem[];
134
+ activeNavId: string;
135
+ onNavSelect: (id: string) => void;
136
+ navLabel?: string;
137
+ /** When true (default), renders a mobile bottom nav from `navItems`. */
138
+ showBottomNav?: boolean;
139
+ topbarActions?: ReactNode;
140
+ children: ReactNode;
141
+ /** Extra class on the content/screen region */
142
+ screenClassName?: string;
143
+ };
144
+ /**
145
+ * Application chrome: topbar + left side nav + content screen.
146
+ * Matches aksconfigurator_ui shell layout.
147
+ */
148
+ declare function AppShell({ title, logoSrc, logoAlt, username, onLogout, navItems, activeNavId, onNavSelect, navLabel, showBottomNav, topbarActions, children, screenClassName, }: AppShellProps): react.JSX.Element;
149
+
150
+ type TableColumn<T> = {
151
+ key: string;
152
+ header: string;
153
+ value: (item: T) => string | number | null | undefined;
154
+ display?: (item: T) => string | number | null | undefined;
155
+ filterable?: boolean;
156
+ sortable?: boolean;
157
+ /** When set, filter uses an exact-match Select instead of text contains. */
158
+ filterOptions?: SelectOption[];
159
+ filterPlaceholder?: string;
160
+ };
161
+ declare function RecordWorkspace<T>({ title, columns, items, rowKey, empty, onAdd, addLabel, canAdd, onView, onUpdate, onDelete, canUpdate, canDelete, toolbar, form, }: {
162
+ title: string;
163
+ columns: TableColumn<T>[];
164
+ items: T[];
165
+ rowKey: (item: T) => string | number;
166
+ empty: string;
167
+ onAdd?: () => void;
168
+ addLabel?: string;
169
+ canAdd?: boolean;
170
+ onView?: (item: T) => void;
171
+ onUpdate?: (item: T) => void;
172
+ onDelete?: (item: T) => void;
173
+ canUpdate?: (item: T) => boolean;
174
+ canDelete?: (item: T) => boolean;
175
+ toolbar?: ReactNode;
176
+ /** Slot for Add/Update/View dialogs owned by the host app. */
177
+ form?: ReactNode;
178
+ }): react.JSX.Element;
179
+ /** @deprecated Prefer RecordWorkspace — alias kept for configurator migration */
180
+ declare const RecordTable: typeof RecordWorkspace;
181
+
182
+ export { type AksuiTokenName, AppSelect, type AppSelectOption, AppShell, type AppShellProps, Button, type ButtonVariant, DateField, Dialog, FormActions, FormDialog, type PageSizeOption, Pagination, RecordTable, RecordWorkspace, Select, type SelectOption, SideNav, type SideNavItem, Snackbar, StatusMessage, type TableColumn, Topbar, aksuiThemeVersion, aksuiTokens };