tri-ui-library 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +125 -0
- package/dist/styles.css +1 -0
- package/dist/tri-ui-library.js +868 -0
- package/dist/tri-ui-library.js.map +1 -0
- package/dist/tri-ui-library.umd.cjs +2 -0
- package/dist/tri-ui-library.umd.cjs.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tri-ui-library.js","sources":["../src/components/Accordion/Accordion.jsx","../src/components/Alert/Alert.jsx","../src/components/AlertDialog/AlertDialog.jsx","../src/components/AspectRatio/AspectRatio.jsx","../src/components/Avatar/Avatar.jsx","../src/components/Badge/Badge.jsx","../src/components/Breadcrumb/Breadcrumb.jsx","../src/components/Button/Button.jsx","../src/components/ButtonGroup/ButtonGroup.jsx","../src/components/Calendar/Calendar.jsx","../src/components/Card/Card.jsx","../src/components/Carousel/Carousel.jsx","../src/components/Chart/Chart.jsx","../src/components/Checkbox/Checkbox.jsx","../src/components/Collapsible/Collapsible.jsx","../src/components/Combobox/Combobox.jsx","../src/components/Command/Command.jsx","../src/components/ContextMenu/ContextMenu.jsx","../src/components/DashboardPage/DashboardPage.jsx","../src/components/DataTable/DataTable.jsx","../src/components/Input/Input.jsx","../src/components/DatePicker/DatePicker.jsx","../src/components/Dialog/Dialog.jsx","../src/components/Drawer/Drawer.jsx","../src/components/DropdownMenu/DropdownMenu.jsx","../src/components/Empty/Empty.jsx","../src/components/Field/Field.jsx","../src/components/HoverCard/HoverCard.jsx","../src/components/InputGroup/InputGroup.jsx","../src/components/InputOTP/InputOTP.jsx","../src/components/NavLink/NavLink.jsx","../src/components/Navbar/Navbar.jsx","../src/components/Sidebar/Sidebar.jsx"],"sourcesContent":["import React from \"react\";\r\nimport \"./Accordion.css\";\r\n\r\n/**\r\n * Accordion - vertically stacked headings that reveal content.\r\n * @param {Array<{ title: React.ReactNode, content: React.ReactNode, disabled?: boolean }>} items\r\n * @param {boolean} multiple - If true, multiple panels can be open at once\r\n * @param {boolean} disabled - If true, all items are disabled\r\n * @param {string} variant - 'default' | 'borders' | 'card'\r\n * @param {string} className\r\n */\r\nfunction Accordion({ items = [], multiple = false, disabled = false, variant = \"default\", className = \"\" }) {\r\n const [openState, setOpenState] = React.useState(multiple ? [] : null);\r\n\r\n const isOpen = (i) =>\r\n multiple ? Array.isArray(openState) && openState.includes(i) : openState === i;\r\n\r\n const toggle = (i) => {\r\n if (disabled) return;\r\n const item = items[i];\r\n if (item?.disabled) return;\r\n if (multiple) {\r\n setOpenState((prev) =>\r\n prev.includes(i) ? prev.filter((x) => x !== i) : [...prev, i]\r\n );\r\n } else {\r\n setOpenState((prev) => (prev === i ? null : i));\r\n }\r\n };\r\n\r\n const classNames = [\r\n \"ui-accordion\",\r\n `ui-accordion--${variant}`,\r\n disabled && \"ui-accordion--disabled\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div className={classNames} role=\"region\" aria-label=\"Accordion\">\r\n {items.map((item, i) => {\r\n const itemDisabled = disabled || item.disabled;\r\n return (\r\n <div key={i} className=\"ui-accordion-item\">\r\n <button\r\n type=\"button\"\r\n className=\"ui-accordion-trigger\"\r\n onClick={() => toggle(i)}\r\n aria-expanded={isOpen(i)}\r\n aria-controls={`ui-accordion-panel-${i}`}\r\n aria-disabled={itemDisabled}\r\n id={`ui-accordion-trigger-${i}`}\r\n disabled={itemDisabled}\r\n >\r\n <span className=\"ui-accordion-trigger-text\">{item.title}</span>\r\n <span className=\"ui-accordion-trigger-icon\" aria-hidden=\"true\" />\r\n </button>\r\n <div\r\n id={`ui-accordion-panel-${i}`}\r\n role=\"region\"\r\n aria-labelledby={`ui-accordion-trigger-${i}`}\r\n className=\"ui-accordion-panel\"\r\n hidden={!isOpen(i)}\r\n >\r\n {item.content}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Accordion;\r\n","import React from \"react\";\r\nimport \"./Alert.css\";\r\n\r\n/**\r\n * Alert component for feedback messages.\r\n * @param {string} type - 'success' | 'warning' | 'error' | 'info'\r\n * @param {React.ReactNode} children\r\n * @param {string} title - Optional title\r\n * @param {string} className\r\n * @param {boolean} dismissible - Show close button\r\n * @param {function} onDismiss - Called when dismissed\r\n */\r\nfunction Alert({\r\n type = \"info\",\r\n children,\r\n title,\r\n className = \"\",\r\n dismissible = false,\r\n onDismiss,\r\n ...rest\r\n}) {\r\n const [dismissed, setDismissed] = React.useState(false);\r\n\r\n const handleDismiss = () => {\r\n setDismissed(true);\r\n onDismiss?.();\r\n };\r\n\r\n const classNames = [\r\n \"ui-alert\",\r\n `ui-alert--${type}`,\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n if (dismissed) return null;\r\n\r\n return (\r\n <div\r\n className={classNames}\r\n role=\"alert\"\r\n aria-live=\"polite\"\r\n {...rest}\r\n >\r\n <div className=\"ui-alert-content\">\r\n {title && <div className=\"ui-alert-title\">{title}</div>}\r\n <div className=\"ui-alert-message\">{children}</div>\r\n </div>\r\n {dismissible && (\r\n <button\r\n type=\"button\"\r\n className=\"ui-alert-dismiss\"\r\n onClick={handleDismiss}\r\n aria-label=\"Dismiss alert\"\r\n >\r\n ×\r\n </button>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Alert;\r\n","import React from \"react\";\r\nimport \"./AlertDialog.css\";\r\n\r\nfunction AlertDialog({\r\n open,\r\n onClose,\r\n title,\r\n description,\r\n confirmLabel = \"OK\",\r\n cancelLabel = \"Cancel\",\r\n onConfirm,\r\n showCancel = true,\r\n}) {\r\n if (!open) return null;\r\n return (\r\n <div className=\"ui-alertdialog-overlay\" role=\"alertdialog\" aria-modal=\"true\" aria-labelledby=\"ui-alertdialog-title\">\r\n <div className=\"ui-alertdialog\">\r\n <h2 id=\"ui-alertdialog-title\" className=\"ui-alertdialog-title\">{title}</h2>\r\n {description && <p className=\"ui-alertdialog-desc\">{description}</p>}\r\n <div className=\"ui-alertdialog-actions\">\r\n {showCancel && (\r\n <button type=\"button\" className=\"ui-alertdialog-btn ui-alertdialog-btn--secondary\" onClick={onClose}>\r\n {cancelLabel}\r\n </button>\r\n )}\r\n <button type=\"button\" className=\"ui-alertdialog-btn ui-alertdialog-btn--primary\" onClick={() => { onConfirm?.(); onClose?.(); }}>\r\n {confirmLabel}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default AlertDialog;\r\n","import React from \"react\";\r\nimport \"./AspectRatio.css\";\r\n\r\nfunction AspectRatio({ ratio = 16 / 9, children, className = \"\" }) {\r\n const classNames = [\"ui-aspectratio\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames} style={{ aspectRatio: ratio }}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default AspectRatio;\r\n","import React from \"react\";\r\nimport \"./Avatar.css\";\r\n\r\nfunction Avatar({ src, alt = \"\", fallback, size = \"md\", className = \"\" }) {\r\n const [loaded, setLoaded] = React.useState(false);\r\n const classNames = [\"ui-avatar\", `ui-avatar--${size}`, className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames} role=\"img\" aria-label={alt || undefined}>\r\n {src && (\r\n <img\r\n src={src}\r\n alt={alt}\r\n className=\"ui-avatar-img\"\r\n onLoad={() => setLoaded(true)}\r\n onError={() => setLoaded(false)}\r\n />\r\n )}\r\n {(!src || !loaded) && <span className=\"ui-avatar-fallback\">{fallback || (alt ? alt[0] : \"?\")}</span>}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Avatar;\r\n","import React from \"react\";\r\nimport \"./Badge.css\";\r\n\r\nfunction Badge({ children, variant = \"default\", className = \"\" }) {\r\n const classNames = [\"ui-badge\", `ui-badge--${variant}`, className].filter(Boolean).join(\" \");\r\n return <span className={classNames}>{children}</span>;\r\n}\r\n\r\nexport default Badge;\r\n","import React from \"react\";\r\nimport \"./Breadcrumb.css\";\r\n\r\nfunction Breadcrumb({ items = [], separator = \"/\", className = \"\" }) {\r\n const classNames = [\"ui-breadcrumb\", className].filter(Boolean).join(\" \");\r\n return (\r\n <nav className={classNames} aria-label=\"Breadcrumb\">\r\n <ol className=\"ui-breadcrumb-list\">\r\n {items.map((item, i) => (\r\n <li key={i} className=\"ui-breadcrumb-item\">\r\n {i > 0 && <span className=\"ui-breadcrumb-sep\" aria-hidden=\"true\">{separator}</span>}\r\n {item.href ? (\r\n <a href={item.href} className=\"ui-breadcrumb-link\">{item.label}</a>\r\n ) : (\r\n <span className=\"ui-breadcrumb-current\" aria-current=\"page\">{item.label}</span>\r\n )}\r\n </li>\r\n ))}\r\n </ol>\r\n </nav>\r\n );\r\n}\r\n\r\nexport default Breadcrumb;\r\n","import React from \"react\";\r\nimport \"./Button.css\";\r\n\r\n/**\r\n * Button component with variant, size, and icon support.\r\n * @param {string} variant - 'primary' | 'secondary' | 'danger' | 'ghost'\r\n * @param {string} size - 'sm' | 'md' | 'lg'\r\n * @param {boolean} disabled\r\n * @param {function} onClick\r\n * @param {React.ReactNode} children - Button label\r\n * @param {React.ReactNode} leftIcon - Icon shown before the label\r\n * @param {React.ReactNode} rightIcon - Icon shown after the label\r\n * @param {string} type - 'button' | 'submit' | 'reset'\r\n * @param {string} className - Additional CSS classes\r\n * @param {string} ariaLabel - Accessible label when no visible text\r\n */\r\nfunction Button({\r\n variant = \"primary\",\r\n size = \"md\",\r\n disabled = false,\r\n onClick,\r\n children,\r\n leftIcon,\r\n rightIcon,\r\n type = \"button\",\r\n className = \"\",\r\n ariaLabel,\r\n ...rest\r\n}) {\r\n const hasLabel = children != null && children !== \"\";\r\n const classNames = [\r\n \"ui-btn\",\r\n `ui-btn--${variant}`,\r\n `ui-btn--${size}`,\r\n disabled && \"ui-btn--disabled\",\r\n leftIcon && \"ui-btn--has-left-icon\",\r\n rightIcon && \"ui-btn--has-right-icon\",\r\n (leftIcon || rightIcon) && !hasLabel && \"ui-btn--icon-only\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <button\r\n type={type}\r\n className={classNames}\r\n disabled={disabled}\r\n onClick={onClick}\r\n aria-label={ariaLabel}\r\n aria-disabled={disabled}\r\n {...rest}\r\n >\r\n {leftIcon && <span className=\"ui-btn-icon ui-btn-icon--left\" aria-hidden=\"true\">{leftIcon}</span>}\r\n {hasLabel && <span className=\"ui-btn-label\">{children}</span>}\r\n {rightIcon && <span className=\"ui-btn-icon ui-btn-icon--right\" aria-hidden=\"true\">{rightIcon}</span>}\r\n </button>\r\n );\r\n}\r\n\r\nexport default Button;\r\n","import React from \"react\";\r\nimport \"./ButtonGroup.css\";\r\n\r\nfunction ButtonGroup({ children, className = \"\" }) {\r\n const classNames = [\"ui-buttongroup\", className].filter(Boolean).join(\" \");\r\n return <div className={classNames} role=\"group\">{children}</div>;\r\n}\r\n\r\nexport default ButtonGroup;\r\n","import React from \"react\";\r\nimport \"./Calendar.css\";\r\n\r\nfunction Calendar({ value, onChange, className = \"\" }) {\r\n const classNames = [\"ui-calendar\", className].filter(Boolean).join(\" \");\r\n const d = value ? new Date(value) : new Date();\r\n const [view, setView] = React.useState({ year: d.getFullYear(), month: d.getMonth() });\r\n const daysInMonth = new Date(view.year, view.month + 1, 0).getDate();\r\n const firstDay = new Date(view.year, view.month, 1).getDay();\r\n const days = Array.from({ length: daysInMonth }, (_, i) => i + 1);\r\n const blanks = Array.from({ length: firstDay }, () => null);\r\n const all = [...blanks, ...days];\r\n\r\n return (\r\n <div className={classNames} role=\"application\" aria-label=\"Calendar\">\r\n <div className=\"ui-calendar-header\">\r\n <button type=\"button\" onClick={() => setView((v) => ({ ...v, month: v.month - 1 }))}>←</button>\r\n <span>{new Date(view.year, view.month).toLocaleString(\"default\", { month: \"long\", year: \"numeric\" })}</span>\r\n <button type=\"button\" onClick={() => setView((v) => ({ ...v, month: v.month + 1 }))}>→</button>\r\n </div>\r\n <div className=\"ui-calendar-grid\">\r\n {[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"].map((d) => <div key={d} className=\"ui-calendar-weekday\">{d}</div>)}\r\n {all.map((day, i) => (\r\n day ? (\r\n <button\r\n key={i}\r\n type=\"button\"\r\n className=\"ui-calendar-day\"\r\n onClick={() => onChange?.(new Date(view.year, view.month, day))}\r\n >\r\n {day}\r\n </button>\r\n ) : (\r\n <div key={i} className=\"ui-calendar-day ui-calendar-day--empty\" />\r\n )\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Calendar;\r\n","import React from \"react\";\r\nimport \"./Card.css\";\r\n\r\n/**\r\n * Card container with optional header and footer.\r\n * @param {React.ReactNode} children\r\n * @param {string} title - Optional card title\r\n * @param {React.ReactNode} footer - Optional footer content\r\n * @param {string} className\r\n * @param {string} variant - 'elevated' | 'outlined' (default)\r\n */\r\nfunction Card({ children, title, footer, className = \"\", variant = \"outlined\", ...rest }) {\r\n const classNames = [\"ui-card\", `ui-card--${variant}`, className].filter(Boolean).join(\" \");\r\n\r\n return (\r\n <div className={classNames} {...rest}>\r\n {title && (\r\n <div className=\"ui-card-header\">\r\n <h3 className=\"ui-card-title\">{title}</h3>\r\n </div>\r\n )}\r\n <div className=\"ui-card-body\">{children}</div>\r\n {footer && <div className=\"ui-card-footer\">{footer}</div>}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Card;\r\n","import React from \"react\";\r\nimport \"./Carousel.css\";\r\n\r\nfunction Carousel({ children, className = \"\" }) {\r\n const [index, setIndex] = React.useState(0);\r\n const items = React.Children.toArray(children);\r\n const len = items.length;\r\n\r\n return (\r\n <div className={`ui-carousel ${className}`} role=\"region\" aria-label=\"Carousel\">\r\n <div className=\"ui-carousel-track\" style={{ transform: `translateX(-${index * 100}%)` }}>\r\n {items.map((child, i) => (\r\n <div key={i} className=\"ui-carousel-slide\">\r\n {child}\r\n </div>\r\n ))}\r\n </div>\r\n {len > 1 && (\r\n <div className=\"ui-carousel-dots\">\r\n {items.map((_, i) => (\r\n <button\r\n key={i}\r\n type=\"button\"\r\n aria-label={`Go to slide ${i + 1}`}\r\n className={`ui-carousel-dot ${i === index ? \"ui-carousel-dot--active\" : \"\"}`}\r\n onClick={() => setIndex(i)}\r\n />\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Carousel;\r\n","import React from \"react\";\r\nimport \"./Chart.css\";\r\n\r\nfunction Chart({ data = [], type = \"bar\", className = \"\" }) {\r\n const classNames = [\"ui-chart\", `ui-chart--${type}`, className].filter(Boolean).join(\" \");\r\n const max = Math.max(...data.map((d) => d.value), 1);\r\n return (\r\n <div className={classNames} role=\"img\" aria-label=\"Chart\">\r\n <div className=\"ui-chart-bars\">\r\n {data.map((item, i) => (\r\n <div key={i} className=\"ui-chart-bar-wrap\">\r\n <div\r\n className=\"ui-chart-bar\"\r\n style={{ height: `${(item.value / max) * 100}%` }}\r\n title={item.label}\r\n />\r\n <span className=\"ui-chart-label\">{item.label}</span>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Chart;\r\n","import React from \"react\";\r\nimport \"./Checkbox.css\";\r\n\r\n/**\r\n * Checkbox with label and optional description.\r\n * @param {boolean} checked - Controlled checked state\r\n * @param {function} onChange - (e) => void\r\n * @param {boolean} disabled\r\n * @param {string} label\r\n * @param {string} id - For linking label\r\n * @param {string} className\r\n */\r\nfunction Checkbox({\r\n checked = false,\r\n onChange,\r\n disabled = false,\r\n label,\r\n id: idProp,\r\n className = \"\",\r\n indeterminate,\r\n ...rest\r\n}) {\r\n const id = idProp || `ui-checkbox-${React.useId().replace(/:/g, \"\")}`;\r\n const inputRef = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n if (inputRef.current) {\r\n inputRef.current.indeterminate = !!indeterminate;\r\n }\r\n }, [indeterminate]);\r\n\r\n const classNames = [\r\n \"ui-checkbox-wrapper\",\r\n disabled && \"ui-checkbox-wrapper--disabled\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div className={classNames}>\r\n <label className=\"ui-checkbox-label\" htmlFor={id}>\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n type=\"checkbox\"\r\n className=\"ui-checkbox\"\r\n checked={checked}\r\n onChange={onChange}\r\n disabled={disabled}\r\n aria-checked={indeterminate ? \"mixed\" : checked}\r\n aria-disabled={disabled}\r\n {...rest}\r\n />\r\n <span className=\"ui-checkbox-box\" aria-hidden=\"true\" />\r\n {label && <span className=\"ui-checkbox-text\">{label}</span>}\r\n </label>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Checkbox;\r\n","import React from \"react\";\r\nimport \"./Collapsible.css\";\r\n\r\nfunction Collapsible({ open: controlledOpen, defaultOpen = false, onOpenChange, trigger, children, className = \"\" }) {\r\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\r\n const isControlled = controlledOpen !== undefined;\r\n const open = isControlled ? controlledOpen : internalOpen;\r\n\r\n const setOpen = (v) => {\r\n if (!isControlled) setInternalOpen(v);\r\n onOpenChange?.(v);\r\n };\r\n\r\n const classNames = [\"ui-collapsible\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames}>\r\n <button\r\n type=\"button\"\r\n className=\"ui-collapsible-trigger\"\r\n onClick={() => setOpen(!open)}\r\n aria-expanded={open}\r\n >\r\n {trigger}\r\n </button>\r\n <div className=\"ui-collapsible-content\" hidden={!open}>\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Collapsible;\r\n","import React, { useState } from \"react\";\r\nimport \"./Combobox.css\";\r\n\r\nfunction Combobox({ options = [], value, onChange, placeholder = \"Select...\", className = \"\" }) {\r\n const [open, setOpen] = useState(false);\r\n const [filter, setFilter] = useState(\"\");\r\n const filtered = options.filter((o) => o.label.toLowerCase().includes(filter.toLowerCase()));\r\n const selected = options.find((o) => o.value === value);\r\n const classNames = [\"ui-combobox\", className].filter(Boolean).join(\" \");\r\n\r\n return (\r\n <div className={classNames}>\r\n <div className=\"ui-combobox-input-wrap\">\r\n <input\r\n type=\"text\"\r\n className=\"ui-combobox-input\"\r\n value={open ? filter : (selected?.label ?? \"\")}\r\n onChange={(e) => { setFilter(e.target.value); setOpen(true); }}\r\n onFocus={() => setOpen(true)}\r\n onBlur={() => setTimeout(() => setOpen(false), 150)}\r\n placeholder={placeholder}\r\n role=\"combobox\"\r\n aria-expanded={open}\r\n aria-autocomplete=\"list\"\r\n />\r\n </div>\r\n {open && (\r\n <ul className=\"ui-combobox-list\" role=\"listbox\">\r\n {filtered.map((opt) => (\r\n <li\r\n key={opt.value}\r\n role=\"option\"\r\n aria-selected={value === opt.value}\r\n className=\"ui-combobox-option\"\r\n onMouseDown={() => { onChange?.(opt.value); setOpen(false); setFilter(\"\"); }}\r\n >\r\n {opt.label}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Combobox;\r\n","import React from \"react\";\r\nimport \"./Command.css\";\r\n\r\nfunction Command({ children, placeholder = \"Search...\", className = \"\" }) {\r\n const classNames = [\"ui-command\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames} role=\"command\">\r\n <input type=\"text\" className=\"ui-command-input\" placeholder={placeholder} />\r\n <div className=\"ui-command-list\">{children}</div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Command;\r\n","import React from \"react\";\r\nimport \"./ContextMenu.css\";\r\n\r\nfunction ContextMenu({ children, items = [], onOpenChange }) {\r\n const [open, setOpen] = React.useState(false);\r\n const [pos, setPos] = React.useState({ x: 0, y: 0 });\r\n const ref = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n const handle = (e) => {\r\n if (e.button === 2) {\r\n e.preventDefault();\r\n setPos({ x: e.clientX, y: e.clientY });\r\n setOpen(true);\r\n onOpenChange?.(true);\r\n }\r\n };\r\n const el = ref.current;\r\n el?.addEventListener(\"contextmenu\", handle);\r\n return () => el?.removeEventListener(\"contextmenu\", handle);\r\n }, [onOpenChange]);\r\n\r\n React.useEffect(() => {\r\n if (!open) return;\r\n const handle = () => {\r\n setOpen(false);\r\n onOpenChange?.(false);\r\n };\r\n document.addEventListener(\"click\", handle);\r\n return () => document.removeEventListener(\"click\", handle);\r\n }, [open, onOpenChange]);\r\n\r\n return (\r\n <div ref={ref} className=\"ui-contextmenu-wrapper\">\r\n {children}\r\n {open && (\r\n <ul\r\n className=\"ui-contextmenu\"\r\n style={{ left: pos.x, top: pos.y }}\r\n role=\"menu\"\r\n >\r\n {items.map((item, i) => (\r\n <li key={i} role=\"none\">\r\n <button type=\"button\" className=\"ui-contextmenu-item\" role=\"menuitem\" onClick={item.onClick}>\r\n {item.label}\r\n </button>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ContextMenu;\r\n","import React from \"react\";\r\nimport \"./DashboardPage.css\";\r\n\r\n/**\r\n * Dashboard shell: optional navbar + sidebar + scrollable main content.\r\n * Pass composed Navbar and Sidebar as nodes, or leave null for partial layouts.\r\n * @param {React.ReactNode} navbar - Top bar (e.g. Navbar component)\r\n * @param {React.ReactNode} sidebar - Side rail (e.g. Sidebar component)\r\n * @param {React.ReactNode} children - Main area content\r\n * @param {boolean} sidebarCollapsed - When true, main area uses collapsed spacing (optional visual)\r\n * @param {'fluid'|'contained'} mainWidth - Main content max-width\r\n * @param {boolean} fullHeight - Fill viewport height (min-height 100vh)\r\n * @param {string} className\r\n */\r\nfunction DashboardPage({\r\n navbar,\r\n sidebar,\r\n children,\r\n sidebarCollapsed = false,\r\n mainWidth = \"fluid\",\r\n fullHeight = true,\r\n className = \"\",\r\n}) {\r\n const classNames = [\r\n \"ui-dashboard\",\r\n fullHeight && \"ui-dashboard--full-height\",\r\n sidebarCollapsed && \"ui-dashboard--sidebar-collapsed\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const mainClass = [\r\n \"ui-dashboard-main\",\r\n mainWidth === \"contained\" && \"ui-dashboard-main--contained\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div className={classNames}>\r\n {navbar && <div className=\"ui-dashboard-navbar\">{navbar}</div>}\r\n <div className=\"ui-dashboard-body\">\r\n {sidebar && <div className=\"ui-dashboard-sidebar-wrap\">{sidebar}</div>}\r\n <main className={mainClass} role=\"main\">\r\n <div className=\"ui-dashboard-main-inner\">{children}</div>\r\n </main>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DashboardPage;\r\n","import React from \"react\";\r\nimport \"./DataTable.css\";\r\n\r\n/**\r\n * Data table with columns and rows.\r\n * @param {Array<{ key: string, header: string }>} columns - Column definitions\r\n * @param {Array<object>} data - Array of row objects (keys match column.key)\r\n * @param {string} className\r\n * @param {string} emptyMessage - Message when no data\r\n */\r\nfunction DataTable({\r\n columns = [],\r\n data = [],\r\n className = \"\",\r\n emptyMessage = \"No data\",\r\n}) {\r\n const classNames = [\"ui-datatable\", className].filter(Boolean).join(\" \");\r\n\r\n if (!columns.length) {\r\n return (\r\n <div className={classNames} role=\"region\" aria-label=\"Data table\">\r\n <p className=\"ui-datatable-empty\">{emptyMessage}</p>\r\n </div>\r\n );\r\n }\r\n\r\n if (!data.length) {\r\n return (\r\n <div className={classNames} role=\"region\" aria-label=\"Data table\">\r\n <table className=\"ui-datatable-table\">\r\n <thead>\r\n <tr>\r\n {columns.map((col) => (\r\n <th key={col.key} scope=\"col\" className=\"ui-datatable-th\">\r\n {col.header}\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td colSpan={columns.length} className=\"ui-datatable-empty-cell\">\r\n {emptyMessage}\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className={classNames} role=\"region\" aria-label=\"Data table\">\r\n <table className=\"ui-datatable-table\">\r\n <thead>\r\n <tr>\r\n {columns.map((col) => (\r\n <th key={col.key} scope=\"col\" className=\"ui-datatable-th\">\r\n {col.header}\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {data.map((row, rowIndex) => (\r\n <tr key={rowIndex} className=\"ui-datatable-tr\">\r\n {columns.map((col) => (\r\n <td key={col.key} className=\"ui-datatable-td\">\r\n {row[col.key] ?? \"\"}\r\n </td>\r\n ))}\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DataTable;\r\n","import React from \"react\";\r\nimport \"./Input.css\";\r\n\r\n/**\r\n * Input component with label and error support.\r\n * @param {string} label - Optional label text\r\n * @param {string} error - Error message to display\r\n * @param {string} type - input type (text, email, password, etc.)\r\n * @param {string} placeholder\r\n * @param {boolean} disabled\r\n * @param {string} id - For linking label; auto-generated if not provided\r\n * @param {string} className\r\n * @param {object} ...rest - Passed to native input\r\n */\r\nfunction Input({\r\n label,\r\n error,\r\n type = \"text\",\r\n placeholder,\r\n disabled = false,\r\n id: idProp,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n const id = idProp || `ui-input-${React.useId().replace(/:/g, \"\")}`;\r\n const errorId = error ? `${id}-error` : undefined;\r\n\r\n const classNames = [\r\n \"ui-input\",\r\n error && \"ui-input--error\",\r\n disabled && \"ui-input--disabled\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div className=\"ui-input-wrapper\">\r\n {label && (\r\n <label htmlFor={id} className=\"ui-input-label\">\r\n {label}\r\n </label>\r\n )}\r\n <input\r\n id={id}\r\n type={type}\r\n className={classNames}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n aria-invalid={!!error}\r\n aria-describedby={errorId}\r\n {...rest}\r\n />\r\n {error && (\r\n <span id={errorId} className=\"ui-input-error\" role=\"alert\">\r\n {error}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Input;\r\n","import React from \"react\";\r\nimport Calendar from \"../Calendar\";\r\nimport Input from \"../Input\";\r\nimport \"./DatePicker.css\";\r\n\r\nfunction DatePicker({ value, onChange, placeholder = \"Select date\", className = \"\" }) {\r\n const [open, setOpen] = React.useState(false);\r\n const str = value ? new Date(value).toLocaleDateString() : \"\";\r\n const classNames = [\"ui-datepicker\", className].filter(Boolean).join(\" \");\r\n\r\n return (\r\n <div className={classNames}>\r\n <Input\r\n readOnly\r\n value={str}\r\n placeholder={placeholder}\r\n onFocus={() => setOpen(true)}\r\n onClick={() => setOpen((v) => !v)}\r\n />\r\n {open && (\r\n <>\r\n <div className=\"ui-datepicker-overlay\" onClick={() => setOpen(false)} aria-hidden=\"true\" />\r\n <div className=\"ui-datepicker-dropdown\">\r\n <Calendar value={value} onChange={(d) => { onChange?.(d); setOpen(false); }} />\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default DatePicker;\r\n","import React, { useEffect } from \"react\";\r\nimport \"./Dialog.css\";\r\n\r\n/**\r\n * Modal dialog with overlay, title, and optional actions.\r\n * @param {boolean} open - Controlled open state\r\n * @param {function} onClose - Called when overlay/close is clicked or Escape\r\n * @param {string} title - Dialog title\r\n * @param {React.ReactNode} children - Body content\r\n * @param {React.ReactNode} footer - Optional footer (e.g. buttons)\r\n * @param {string} className\r\n */\r\nfunction Dialog({ open, onClose, title, children, footer, className = \"\" }) {\r\n const dialogRef = React.useRef(null);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const handleEscape = (e) => {\r\n if (e.key === \"Escape\") onClose?.();\r\n };\r\n document.addEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"hidden\";\r\n return () => {\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"\";\r\n };\r\n }, [open, onClose]);\r\n\r\n const handleOverlayClick = (e) => {\r\n if (e.target === e.currentTarget) onClose?.();\r\n };\r\n\r\n if (!open) return null;\r\n\r\n return (\r\n <div\r\n className=\"ui-dialog-overlay\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={title ? \"ui-dialog-title\" : undefined}\r\n onClick={handleOverlayClick}\r\n >\r\n <div\r\n ref={dialogRef}\r\n className={`ui-dialog ${className}`}\r\n role=\"document\"\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n <div className=\"ui-dialog-content\">\r\n {title && (\r\n <h2 id=\"ui-dialog-title\" className=\"ui-dialog-title\">\r\n {title}\r\n </h2>\r\n )}\r\n <div className=\"ui-dialog-body\">{children}</div>\r\n {footer && <div className=\"ui-dialog-footer\">{footer}</div>}\r\n </div>\r\n <button\r\n type=\"button\"\r\n className=\"ui-dialog-close\"\r\n onClick={onClose}\r\n aria-label=\"Close dialog\"\r\n >\r\n ×\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Dialog;\r\n","import React, { useEffect } from \"react\";\r\nimport \"./Drawer.css\";\r\n\r\nfunction Drawer({ open, onClose, title, children, side = \"right\", className = \"\" }) {\r\n useEffect(() => {\r\n if (open) document.body.style.overflow = \"hidden\";\r\n return () => { document.body.style.overflow = \"\"; };\r\n }, [open]);\r\n\r\n if (!open) return null;\r\n\r\n return (\r\n <>\r\n <div className=\"ui-drawer-overlay\" onClick={onClose} aria-hidden=\"true\" />\r\n <div className={`ui-drawer ui-drawer--${side} ${className}`} role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"ui-drawer-title\">\r\n {title && <h2 id=\"ui-drawer-title\" className=\"ui-drawer-title\">{title}</h2>}\r\n <div className=\"ui-drawer-body\">{children}</div>\r\n <button type=\"button\" className=\"ui-drawer-close\" onClick={onClose} aria-label=\"Close\">×</button>\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\nexport default Drawer;\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport \"./DropdownMenu.css\";\r\n\r\n/**\r\n * Dropdown menu triggered by a button, with keyboard navigation.\r\n * @param {React.ReactNode} trigger - Button or element that opens the menu\r\n * @param {Array<{ label: string, onClick?: function, disabled?: boolean }>} items - Menu items\r\n * @param {string} align - 'start' | 'end'\r\n */\r\nfunction DropdownMenu({ trigger, items = [], align = \"end\" }) {\r\n const [open, setOpen] = useState(false);\r\n const containerRef = useRef(null);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const handleClickOutside = (e) => {\r\n if (containerRef.current && !containerRef.current.contains(e.target)) {\r\n setOpen(false);\r\n }\r\n };\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const handleEscape = (e) => {\r\n if (e.key === \"Escape\") setOpen(false);\r\n };\r\n document.addEventListener(\"keydown\", handleEscape);\r\n return () => document.removeEventListener(\"keydown\", handleEscape);\r\n }, [open]);\r\n\r\n const handleItemClick = (item) => {\r\n if (item.disabled) return;\r\n item.onClick?.();\r\n setOpen(false);\r\n };\r\n\r\n const handleKeyDown = (e) => {\r\n if (!open) return;\r\n const focusable = containerRef.current?.querySelectorAll(\".ui-dropdown-item\");\r\n const list = focusable ? Array.from(focusable) : [];\r\n const current = document.activeElement;\r\n const idx = list.indexOf(current);\r\n if (e.key === \"ArrowDown\" && idx < list.length - 1) {\r\n e.preventDefault();\r\n list[idx + 1]?.focus();\r\n } else if (e.key === \"ArrowUp\" && idx > 0) {\r\n e.preventDefault();\r\n list[idx - 1]?.focus();\r\n } else if (e.key === \"Home\") {\r\n e.preventDefault();\r\n list[0]?.focus();\r\n } else if (e.key === \"End\") {\r\n e.preventDefault();\r\n list[list.length - 1]?.focus();\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className=\"ui-dropdown\"\r\n ref={containerRef}\r\n onKeyDown={handleKeyDown}\r\n >\r\n <div\r\n className=\"ui-dropdown-trigger\"\r\n onClick={() => setOpen((v) => !v)}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n setOpen((v) => !v);\r\n }\r\n }}\r\n role=\"button\"\r\n aria-haspopup=\"menu\"\r\n aria-expanded={open}\r\n aria-controls=\"ui-dropdown-menu\"\r\n tabIndex={0}\r\n >\r\n {trigger}\r\n </div>\r\n {open && (\r\n <ul\r\n id=\"ui-dropdown-menu\"\r\n className={`ui-dropdown-menu ui-dropdown-menu--${align}`}\r\n role=\"menu\"\r\n >\r\n {items.map((item, i) => (\r\n <li key={i} role=\"none\">\r\n <button\r\n type=\"button\"\r\n className=\"ui-dropdown-item\"\r\n role=\"menuitem\"\r\n disabled={item.disabled}\r\n onClick={() => handleItemClick(item)}\r\n tabIndex={0}\r\n >\r\n {item.label}\r\n </button>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default DropdownMenu;\r\n","import React from \"react\";\r\nimport \"./Empty.css\";\r\n\r\nfunction Empty({ title = \"No data\", description, icon, children, className = \"\" }) {\r\n const classNames = [\"ui-empty\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames} role=\"status\">\r\n {icon && <div className=\"ui-empty-icon\">{icon}</div>}\r\n <h3 className=\"ui-empty-title\">{title}</h3>\r\n {description && <p className=\"ui-empty-desc\">{description}</p>}\r\n {children && <div className=\"ui-empty-actions\">{children}</div>}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Empty;\r\n","import React from \"react\";\r\nimport \"./Field.css\";\r\n\r\nfunction Field({ label, error, hint, id, children, className = \"\" }) {\r\n const classNames = [\"ui-field\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames}>\r\n {label && <label htmlFor={id} className=\"ui-field-label\">{label}</label>}\r\n {children}\r\n {hint && <span className=\"ui-field-hint\">{hint}</span>}\r\n {error && <span className=\"ui-field-error\" role=\"alert\">{error}</span>}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Field;\r\n","import React, { useState } from \"react\";\r\nimport \"./HoverCard.css\";\r\n\r\nfunction HoverCard({ trigger, content, className = \"\" }) {\r\n const [open, setOpen] = useState(false);\r\n const classNames = [\"ui-hovercard\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div\r\n className={classNames}\r\n onMouseEnter={() => setOpen(true)}\r\n onMouseLeave={() => setOpen(false)}\r\n >\r\n <div className=\"ui-hovercard-trigger\">{trigger}</div>\r\n {open && <div className=\"ui-hovercard-content\">{content}</div>}\r\n </div>\r\n );\r\n}\r\n\r\nexport default HoverCard;\r\n","import React from \"react\";\r\nimport \"./InputGroup.css\";\r\n\r\nfunction InputGroup({ left, right, children, className = \"\" }) {\r\n const classNames = [\"ui-inputgroup\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames}>\r\n {left && <span className=\"ui-inputgroup-addon ui-inputgroup-addon--left\">{left}</span>}\r\n <span className=\"ui-inputgroup-input\">{children}</span>\r\n {right && <span className=\"ui-inputgroup-addon ui-inputgroup-addon--right\">{right}</span>}\r\n </div>\r\n );\r\n}\r\n\r\nexport default InputGroup;\r\n","import React, { useRef } from \"react\";\r\nimport \"./InputOTP.css\";\r\n\r\nfunction InputOTP({ length = 6, value = \"\", onChange, className = \"\" }) {\r\n const refs = useRef([]);\r\n const arr = value.split(\"\").concat(Array(length).fill(\"\")).slice(0, length);\r\n\r\n const handleChange = (i, v) => {\r\n const next = arr.slice();\r\n next[i] = v.replace(/\\D/g, \"\").slice(-1);\r\n onChange?.(next.join(\"\"));\r\n if (v && i < length - 1) refs.current[i + 1]?.focus();\r\n };\r\n\r\n const handleKeyDown = (i, e) => {\r\n if (e.key === \"Backspace\" && !arr[i] && i > 0) refs.current[i - 1]?.focus();\r\n };\r\n\r\n const classNames = [\"ui-inputotp\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames} role=\"group\" aria-label=\"One-time code\">\r\n {arr.map((ch, i) => (\r\n <input\r\n key={i}\r\n ref={(el) => (refs.current[i] = el)}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n maxLength={1}\r\n className=\"ui-inputotp-digit\"\r\n value={ch}\r\n onChange={(e) => handleChange(i, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(i, e)}\r\n aria-label={`Digit ${i + 1}`}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default InputOTP;\r\n","import React from \"react\";\r\nimport \"./NavLink.css\";\r\n\r\n/**\r\n * Navigation link for Navbar / Sidebar. Renders <a> when href is set, else <button>.\r\n * @param {string} href - If set, renders anchor\r\n * @param {function} onClick\r\n * @param {boolean} active\r\n * @param {boolean} disabled\r\n * @param {React.ReactNode} icon - Optional leading icon\r\n * @param {React.ReactNode} children\r\n * @param {string} className\r\n */\r\nfunction NavLink({\r\n href,\r\n onClick,\r\n active = false,\r\n disabled = false,\r\n icon,\r\n children,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n const classNames = [\r\n \"ui-navlink\",\r\n active && \"ui-navlink--active\",\r\n disabled && \"ui-navlink--disabled\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const content = (\r\n <>\r\n {icon && <span className=\"ui-navlink-icon\" aria-hidden=\"true\">{icon}</span>}\r\n <span className=\"ui-navlink-text\">{children}</span>\r\n </>\r\n );\r\n\r\n if (href && !disabled) {\r\n return (\r\n <a\r\n href={href}\r\n className={classNames}\r\n onClick={onClick}\r\n aria-current={active ? \"page\" : undefined}\r\n {...rest}\r\n >\r\n {content}\r\n </a>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n className={classNames}\r\n onClick={disabled ? undefined : onClick}\r\n disabled={disabled}\r\n aria-current={active ? \"page\" : undefined}\r\n {...rest}\r\n >\r\n {content}\r\n </button>\r\n );\r\n}\r\n\r\nexport default NavLink;\r\n","import React, { useState, useId } from \"react\";\r\nimport \"./Navbar.css\";\r\n\r\nfunction Navbar({\r\n brand,\r\n nav,\r\n actions,\r\n variant = \"default\",\r\n sticky = false,\r\n dense = false,\r\n /** When true, shows a gradient mark before brand (text logos). Set false for custom image logos. */\r\n brandMark = false,\r\n mobileMenuOpen: controlledMobileOpen,\r\n onMobileMenuChange,\r\n className = \"\",\r\n}) {\r\n const mobilePanelId = useId().replace(/:/g, \"\");\r\n const [internalMobileOpen, setInternalMobileOpen] = useState(false);\r\n const isControlled = controlledMobileOpen !== undefined;\r\n const mobileOpen = isControlled ? controlledMobileOpen : internalMobileOpen;\r\n\r\n const setMobileOpen = (open) => {\r\n if (!isControlled) setInternalMobileOpen(open);\r\n onMobileMenuChange?.(open);\r\n };\r\n\r\n const classNames = [\r\n \"ui-navbar\",\r\n `ui-navbar--${variant}`,\r\n sticky && \"ui-navbar--sticky\",\r\n dense && \"ui-navbar--dense\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <header className={classNames} role=\"banner\">\r\n <div className=\"ui-navbar-inner\">\r\n <div\r\n className={[\"ui-navbar-brand\", brandMark && \"ui-navbar-brand--with-mark\"].filter(Boolean).join(\" \")}\r\n >\r\n {brand}\r\n </div>\r\n <nav className=\"ui-navbar-nav\" aria-label=\"Main\">\r\n {nav}\r\n </nav>\r\n <div className=\"ui-navbar-actions\">{actions}</div>\r\n <button\r\n type=\"button\"\r\n className=\"ui-navbar-menu-toggle\"\r\n aria-expanded={mobileOpen}\r\n aria-controls={`ui-navbar-mobile-${mobilePanelId}`}\r\n aria-label=\"Toggle menu\"\r\n onClick={() => setMobileOpen(!mobileOpen)}\r\n >\r\n <span className=\"ui-navbar-menu-icon\" aria-hidden=\"true\" />\r\n </button>\r\n </div>\r\n <div\r\n id={`ui-navbar-mobile-${mobilePanelId}`}\r\n className=\"ui-navbar-mobile\"\r\n hidden={!mobileOpen}\r\n role=\"navigation\"\r\n aria-label=\"Mobile\"\r\n >\r\n <div className=\"ui-navbar-mobile-inner\">\r\n {nav}\r\n {actions && <div className=\"ui-navbar-mobile-actions\">{actions}</div>}\r\n </div>\r\n </div>\r\n </header>\r\n );\r\n}\r\n\r\nexport default Navbar;\r\n","import React from \"react\";\r\nimport NavLink from \"../NavLink\";\r\nimport \"./Sidebar.css\";\r\n\r\n/**\r\n * Vertical navigation rail for dashboards.\r\n * @param {Array<{ id?: string, label: React.ReactNode, icon?: React.ReactNode, href?: string, active?: boolean, disabled?: boolean, onClick?: function }>} items\r\n * @param {React.ReactNode} header - Top slot (app name / logo); shown on the same row as the collapse control when both are set\r\n * @param {React.ReactNode} footer - Bottom slot\r\n * @param {boolean} collapsed - Narrow rail (icons only if you hide labels in CSS)\r\n * @param {function} onToggleCollapse - Called when collapse button clicked\r\n * @param {boolean} showCollapseButton - Show built-in toggle (aligned to the right of the header row)\r\n * @param {'left'|'right'} position\r\n * @param {'default'|'accent'|'minimal'} variant\r\n * @param {'normal'|'wide'} width - Expanded width\r\n * @param {string} className\r\n */\r\nfunction Sidebar({\r\n items = [],\r\n header,\r\n footer,\r\n collapsed = false,\r\n onToggleCollapse,\r\n showCollapseButton = true,\r\n position = \"left\",\r\n variant = \"default\",\r\n width = \"normal\",\r\n className = \"\",\r\n}) {\r\n const classNames = [\r\n \"ui-sidebar\",\r\n `ui-sidebar--${variant}`,\r\n `ui-sidebar--${position}`,\r\n `ui-sidebar--width-${width}`,\r\n collapsed && \"ui-sidebar--collapsed\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const showCollapse = Boolean(showCollapseButton && onToggleCollapse);\r\n const hasTopBar = Boolean(header || showCollapse);\r\n\r\n return (\r\n <aside className={classNames} aria-label=\"Sidebar navigation\">\r\n {hasTopBar && (\r\n <div\r\n className={[\r\n \"ui-sidebar-top\",\r\n !header && showCollapse && \"ui-sidebar-top--collapse-only\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {header ? <div className=\"ui-sidebar-header\">{header}</div> : null}\r\n {showCollapse ? (\r\n <button\r\n type=\"button\"\r\n className=\"ui-sidebar-collapse-btn\"\r\n onClick={() => onToggleCollapse(!collapsed)}\r\n aria-expanded={!collapsed}\r\n aria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\r\n >\r\n <span className=\"ui-sidebar-collapse-icon\" aria-hidden=\"true\" />\r\n </button>\r\n ) : null}\r\n </div>\r\n )}\r\n <nav className=\"ui-sidebar-nav\" aria-label=\"Sidebar\">\r\n <ul className=\"ui-sidebar-list\">\r\n {items.map((item, i) => (\r\n <li key={item.id ?? i} className=\"ui-sidebar-item\">\r\n <NavLink\r\n href={item.href}\r\n onClick={item.onClick}\r\n active={item.active}\r\n disabled={item.disabled}\r\n icon={item.icon}\r\n >\r\n {item.label}\r\n </NavLink>\r\n </li>\r\n ))}\r\n </ul>\r\n </nav>\r\n {footer && <div className=\"ui-sidebar-footer\">{footer}</div>}\r\n </aside>\r\n );\r\n}\r\n\r\nexport default Sidebar;\r\n"],"names":["Accordion","items","multiple","disabled","variant","className","openState","setOpenState","React","isOpen","i","toggle","item","prev","x","classNames","jsx","itemDisabled","jsxs","Alert","type","children","title","dismissible","onDismiss","rest","dismissed","setDismissed","handleDismiss","AlertDialog","open","onClose","description","confirmLabel","cancelLabel","onConfirm","showCancel","AspectRatio","ratio","Avatar","src","alt","fallback","size","loaded","setLoaded","Badge","Breadcrumb","separator","Button","onClick","leftIcon","rightIcon","ariaLabel","hasLabel","ButtonGroup","Calendar","value","onChange","d","view","setView","daysInMonth","firstDay","days","_","all","v","day","Card","footer","Carousel","index","setIndex","len","child","Chart","data","max","Checkbox","checked","label","idProp","indeterminate","id","inputRef","Collapsible","controlledOpen","defaultOpen","onOpenChange","trigger","internalOpen","setInternalOpen","isControlled","setOpen","Combobox","options","placeholder","useState","filter","setFilter","filtered","o","selected","e","opt","Command","ContextMenu","pos","setPos","ref","handle","el","DashboardPage","navbar","sidebar","sidebarCollapsed","mainWidth","fullHeight","mainClass","DataTable","columns","emptyMessage","col","row","rowIndex","Input","error","errorId","DatePicker","str","Fragment","Dialog","dialogRef","useEffect","handleEscape","handleOverlayClick","Drawer","side","DropdownMenu","align","containerRef","useRef","handleClickOutside","handleItemClick","_a","focusable","list","current","idx","_b","_c","_d","_e","Empty","icon","Field","hint","HoverCard","content","InputGroup","left","right","InputOTP","length","refs","arr","handleChange","next","handleKeyDown","ch","NavLink","href","active","Navbar","brand","nav","actions","sticky","dense","brandMark","controlledMobileOpen","onMobileMenuChange","mobilePanelId","useId","internalMobileOpen","setInternalMobileOpen","mobileOpen","setMobileOpen","Sidebar","header","collapsed","onToggleCollapse","showCollapseButton","position","width","showCollapse"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(function(f,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("react/jsx-runtime"),require("react")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react"],a):(f=typeof globalThis<"u"?globalThis:f||self,a(f.TriUILibrary={},f.reactJsxRuntime,f.React))})(this,function(f,a,N){"use strict";function D({items:i=[],multiple:e=!1,disabled:l=!1,variant:c="default",className:n=""}){const[r,d]=N.useState(e?[]:null),u=t=>e?Array.isArray(r)&&r.includes(t):r===t,s=t=>{if(l)return;const h=i[t];h!=null&&h.disabled||d(e?b=>b.includes(t)?b.filter(p=>p!==t):[...b,t]:b=>b===t?null:t)},o=["ui-accordion",`ui-accordion--${c}`,l&&"ui-accordion--disabled",n].filter(Boolean).join(" ");return a.jsx("div",{className:o,role:"region","aria-label":"Accordion",children:i.map((t,h)=>{const b=l||t.disabled;return a.jsxs("div",{className:"ui-accordion-item",children:[a.jsxs("button",{type:"button",className:"ui-accordion-trigger",onClick:()=>s(h),"aria-expanded":u(h),"aria-controls":`ui-accordion-panel-${h}`,"aria-disabled":b,id:`ui-accordion-trigger-${h}`,disabled:b,children:[a.jsx("span",{className:"ui-accordion-trigger-text",children:t.title}),a.jsx("span",{className:"ui-accordion-trigger-icon","aria-hidden":"true"})]}),a.jsx("div",{id:`ui-accordion-panel-${h}`,role:"region","aria-labelledby":`ui-accordion-trigger-${h}`,className:"ui-accordion-panel",hidden:!u(h),children:t.content})]},h)})})}function j({type:i="info",children:e,title:l,className:c="",dismissible:n=!1,onDismiss:r,...d}){const[u,s]=N.useState(!1),o=()=>{s(!0),r==null||r()},t=["ui-alert",`ui-alert--${i}`,c].filter(Boolean).join(" ");return u?null:a.jsxs("div",{className:t,role:"alert","aria-live":"polite",...d,children:[a.jsxs("div",{className:"ui-alert-content",children:[l&&a.jsx("div",{className:"ui-alert-title",children:l}),a.jsx("div",{className:"ui-alert-message",children:e})]}),n&&a.jsx("button",{type:"button",className:"ui-alert-dismiss",onClick:o,"aria-label":"Dismiss alert",children:"×"})]})}function S({open:i,onClose:e,title:l,description:c,confirmLabel:n="OK",cancelLabel:r="Cancel",onConfirm:d,showCancel:u=!0}){return i?a.jsx("div",{className:"ui-alertdialog-overlay",role:"alertdialog","aria-modal":"true","aria-labelledby":"ui-alertdialog-title",children:a.jsxs("div",{className:"ui-alertdialog",children:[a.jsx("h2",{id:"ui-alertdialog-title",className:"ui-alertdialog-title",children:l}),c&&a.jsx("p",{className:"ui-alertdialog-desc",children:c}),a.jsxs("div",{className:"ui-alertdialog-actions",children:[u&&a.jsx("button",{type:"button",className:"ui-alertdialog-btn ui-alertdialog-btn--secondary",onClick:e,children:r}),a.jsx("button",{type:"button",className:"ui-alertdialog-btn ui-alertdialog-btn--primary",onClick:()=>{d==null||d(),e==null||e()},children:n})]})]})}):null}function $({ratio:i=16/9,children:e,className:l=""}){const c=["ui-aspectratio",l].filter(Boolean).join(" ");return a.jsx("div",{className:c,style:{aspectRatio:i},children:e})}function E({src:i,alt:e="",fallback:l,size:c="md",className:n=""}){const[r,d]=N.useState(!1),u=["ui-avatar",`ui-avatar--${c}`,n].filter(Boolean).join(" ");return a.jsxs("div",{className:u,role:"img","aria-label":e||void 0,children:[i&&a.jsx("img",{src:i,alt:e,className:"ui-avatar-img",onLoad:()=>d(!0),onError:()=>d(!1)}),(!i||!r)&&a.jsx("span",{className:"ui-avatar-fallback",children:l||(e?e[0]:"?")})]})}function x({children:i,variant:e="default",className:l=""}){const c=["ui-badge",`ui-badge--${e}`,l].filter(Boolean).join(" ");return a.jsx("span",{className:c,children:i})}function L({items:i=[],separator:e="/",className:l=""}){const c=["ui-breadcrumb",l].filter(Boolean).join(" ");return a.jsx("nav",{className:c,"aria-label":"Breadcrumb",children:a.jsx("ol",{className:"ui-breadcrumb-list",children:i.map((n,r)=>a.jsxs("li",{className:"ui-breadcrumb-item",children:[r>0&&a.jsx("span",{className:"ui-breadcrumb-sep","aria-hidden":"true",children:e}),n.href?a.jsx("a",{href:n.href,className:"ui-breadcrumb-link",children:n.label}):a.jsx("span",{className:"ui-breadcrumb-current","aria-current":"page",children:n.label})]},r))})})}function A({variant:i="primary",size:e="md",disabled:l=!1,onClick:c,children:n,leftIcon:r,rightIcon:d,type:u="button",className:s="",ariaLabel:o,...t}){const h=n!=null&&n!=="",b=["ui-btn",`ui-btn--${i}`,`ui-btn--${e}`,l&&"ui-btn--disabled",r&&"ui-btn--has-left-icon",d&&"ui-btn--has-right-icon",(r||d)&&!h&&"ui-btn--icon-only",s].filter(Boolean).join(" ");return a.jsxs("button",{type:u,className:b,disabled:l,onClick:c,"aria-label":o,"aria-disabled":l,...t,children:[r&&a.jsx("span",{className:"ui-btn-icon ui-btn-icon--left","aria-hidden":"true",children:r}),h&&a.jsx("span",{className:"ui-btn-label",children:n}),d&&a.jsx("span",{className:"ui-btn-icon ui-btn-icon--right","aria-hidden":"true",children:d})]})}function F({children:i,className:e=""}){const l=["ui-buttongroup",e].filter(Boolean).join(" ");return a.jsx("div",{className:l,role:"group",children:i})}function k({value:i,onChange:e,className:l=""}){const c=["ui-calendar",l].filter(Boolean).join(" "),n=i?new Date(i):new Date,[r,d]=N.useState({year:n.getFullYear(),month:n.getMonth()}),u=new Date(r.year,r.month+1,0).getDate(),s=new Date(r.year,r.month,1).getDay(),o=Array.from({length:u},(b,p)=>p+1),h=[...Array.from({length:s},()=>null),...o];return a.jsxs("div",{className:c,role:"application","aria-label":"Calendar",children:[a.jsxs("div",{className:"ui-calendar-header",children:[a.jsx("button",{type:"button",onClick:()=>d(b=>({...b,month:b.month-1})),children:"←"}),a.jsx("span",{children:new Date(r.year,r.month).toLocaleString("default",{month:"long",year:"numeric"})}),a.jsx("button",{type:"button",onClick:()=>d(b=>({...b,month:b.month+1})),children:"→"})]}),a.jsxs("div",{className:"ui-calendar-grid",children:[["Su","Mo","Tu","We","Th","Fr","Sa"].map(b=>a.jsx("div",{className:"ui-calendar-weekday",children:b},b)),h.map((b,p)=>b?a.jsx("button",{type:"button",className:"ui-calendar-day",onClick:()=>e==null?void 0:e(new Date(r.year,r.month,b)),children:b},p):a.jsx("div",{className:"ui-calendar-day ui-calendar-day--empty"},p))]})]})}function I({children:i,title:e,footer:l,className:c="",variant:n="outlined",...r}){const d=["ui-card",`ui-card--${n}`,c].filter(Boolean).join(" ");return a.jsxs("div",{className:d,...r,children:[e&&a.jsx("div",{className:"ui-card-header",children:a.jsx("h3",{className:"ui-card-title",children:e})}),a.jsx("div",{className:"ui-card-body",children:i}),l&&a.jsx("div",{className:"ui-card-footer",children:l})]})}function T({children:i,className:e=""}){const[l,c]=N.useState(0),n=N.Children.toArray(i),r=n.length;return a.jsxs("div",{className:`ui-carousel ${e}`,role:"region","aria-label":"Carousel",children:[a.jsx("div",{className:"ui-carousel-track",style:{transform:`translateX(-${l*100}%)`},children:n.map((d,u)=>a.jsx("div",{className:"ui-carousel-slide",children:d},u))}),r>1&&a.jsx("div",{className:"ui-carousel-dots",children:n.map((d,u)=>a.jsx("button",{type:"button","aria-label":`Go to slide ${u+1}`,className:`ui-carousel-dot ${u===l?"ui-carousel-dot--active":""}`,onClick:()=>c(u)},u))})]})}function P({data:i=[],type:e="bar",className:l=""}){const c=["ui-chart",`ui-chart--${e}`,l].filter(Boolean).join(" "),n=Math.max(...i.map(r=>r.value),1);return a.jsx("div",{className:c,role:"img","aria-label":"Chart",children:a.jsx("div",{className:"ui-chart-bars",children:i.map((r,d)=>a.jsxs("div",{className:"ui-chart-bar-wrap",children:[a.jsx("div",{className:"ui-chart-bar",style:{height:`${r.value/n*100}%`},title:r.label}),a.jsx("span",{className:"ui-chart-label",children:r.label})]},d))})})}function C({checked:i=!1,onChange:e,disabled:l=!1,label:c,id:n,className:r="",indeterminate:d,...u}){const s=n||`ui-checkbox-${N.useId().replace(/:/g,"")}`,o=N.useRef(null);N.useEffect(()=>{o.current&&(o.current.indeterminate=!!d)},[d]);const t=["ui-checkbox-wrapper",l&&"ui-checkbox-wrapper--disabled",r].filter(Boolean).join(" ");return a.jsx("div",{className:t,children:a.jsxs("label",{className:"ui-checkbox-label",htmlFor:s,children:[a.jsx("input",{ref:o,id:s,type:"checkbox",className:"ui-checkbox",checked:i,onChange:e,disabled:l,"aria-checked":d?"mixed":i,"aria-disabled":l,...u}),a.jsx("span",{className:"ui-checkbox-box","aria-hidden":"true"}),c&&a.jsx("span",{className:"ui-checkbox-text",children:c})]})})}function M({open:i,defaultOpen:e=!1,onOpenChange:l,trigger:c,children:n,className:r=""}){const[d,u]=N.useState(e),s=i!==void 0,o=s?i:d,t=b=>{s||u(b),l==null||l(b)},h=["ui-collapsible",r].filter(Boolean).join(" ");return a.jsxs("div",{className:h,children:[a.jsx("button",{type:"button",className:"ui-collapsible-trigger",onClick:()=>t(!o),"aria-expanded":o,children:c}),a.jsx("div",{className:"ui-collapsible-content",hidden:!o,children:n})]})}function O({options:i=[],value:e,onChange:l,placeholder:c="Select...",className:n=""}){const[r,d]=N.useState(!1),[u,s]=N.useState(""),o=i.filter(b=>b.label.toLowerCase().includes(u.toLowerCase())),t=i.find(b=>b.value===e),h=["ui-combobox",n].filter(Boolean).join(" ");return a.jsxs("div",{className:h,children:[a.jsx("div",{className:"ui-combobox-input-wrap",children:a.jsx("input",{type:"text",className:"ui-combobox-input",value:r?u:(t==null?void 0:t.label)??"",onChange:b=>{s(b.target.value),d(!0)},onFocus:()=>d(!0),onBlur:()=>setTimeout(()=>d(!1),150),placeholder:c,role:"combobox","aria-expanded":r,"aria-autocomplete":"list"})}),r&&a.jsx("ul",{className:"ui-combobox-list",role:"listbox",children:o.map(b=>a.jsx("li",{role:"option","aria-selected":e===b.value,className:"ui-combobox-option",onMouseDown:()=>{l==null||l(b.value),d(!1),s("")},children:b.label},b.value))})]})}function K({children:i,placeholder:e="Search...",className:l=""}){const c=["ui-command",l].filter(Boolean).join(" ");return a.jsxs("div",{className:c,role:"command",children:[a.jsx("input",{type:"text",className:"ui-command-input",placeholder:e}),a.jsx("div",{className:"ui-command-list",children:i})]})}function G({children:i,items:e=[],onOpenChange:l}){const[c,n]=N.useState(!1),[r,d]=N.useState({x:0,y:0}),u=N.useRef(null);return N.useEffect(()=>{const s=t=>{t.button===2&&(t.preventDefault(),d({x:t.clientX,y:t.clientY}),n(!0),l==null||l(!0))},o=u.current;return o==null||o.addEventListener("contextmenu",s),()=>o==null?void 0:o.removeEventListener("contextmenu",s)},[l]),N.useEffect(()=>{if(!c)return;const s=()=>{n(!1),l==null||l(!1)};return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[c,l]),a.jsxs("div",{ref:u,className:"ui-contextmenu-wrapper",children:[i,c&&a.jsx("ul",{className:"ui-contextmenu",style:{left:r.x,top:r.y},role:"menu",children:e.map((s,o)=>a.jsx("li",{role:"none",children:a.jsx("button",{type:"button",className:"ui-contextmenu-item",role:"menuitem",onClick:s.onClick,children:s.label})},o))})]})}function q({navbar:i,sidebar:e,children:l,sidebarCollapsed:c=!1,mainWidth:n="fluid",fullHeight:r=!0,className:d=""}){const u=["ui-dashboard",r&&"ui-dashboard--full-height",c&&"ui-dashboard--sidebar-collapsed",d].filter(Boolean).join(" "),s=["ui-dashboard-main",n==="contained"&&"ui-dashboard-main--contained"].filter(Boolean).join(" ");return a.jsxs("div",{className:u,children:[i&&a.jsx("div",{className:"ui-dashboard-navbar",children:i}),a.jsxs("div",{className:"ui-dashboard-body",children:[e&&a.jsx("div",{className:"ui-dashboard-sidebar-wrap",children:e}),a.jsx("main",{className:s,role:"main",children:a.jsx("div",{className:"ui-dashboard-main-inner",children:l})})]})]})}function H({columns:i=[],data:e=[],className:l="",emptyMessage:c="No data"}){const n=["ui-datatable",l].filter(Boolean).join(" ");return i.length?e.length?a.jsx("div",{className:n,role:"region","aria-label":"Data table",children:a.jsxs("table",{className:"ui-datatable-table",children:[a.jsx("thead",{children:a.jsx("tr",{children:i.map(r=>a.jsx("th",{scope:"col",className:"ui-datatable-th",children:r.header},r.key))})}),a.jsx("tbody",{children:e.map((r,d)=>a.jsx("tr",{className:"ui-datatable-tr",children:i.map(u=>a.jsx("td",{className:"ui-datatable-td",children:r[u.key]??""},u.key))},d))})]})}):a.jsx("div",{className:n,role:"region","aria-label":"Data table",children:a.jsxs("table",{className:"ui-datatable-table",children:[a.jsx("thead",{children:a.jsx("tr",{children:i.map(r=>a.jsx("th",{scope:"col",className:"ui-datatable-th",children:r.header},r.key))})}),a.jsx("tbody",{children:a.jsx("tr",{children:a.jsx("td",{colSpan:i.length,className:"ui-datatable-empty-cell",children:c})})})]})}):a.jsx("div",{className:n,role:"region","aria-label":"Data table",children:a.jsx("p",{className:"ui-datatable-empty",children:c})})}function w({label:i,error:e,type:l="text",placeholder:c,disabled:n=!1,id:r,className:d="",...u}){const s=r||`ui-input-${N.useId().replace(/:/g,"")}`,o=e?`${s}-error`:void 0,t=["ui-input",e&&"ui-input--error",n&&"ui-input--disabled",d].filter(Boolean).join(" ");return a.jsxs("div",{className:"ui-input-wrapper",children:[i&&a.jsx("label",{htmlFor:s,className:"ui-input-label",children:i}),a.jsx("input",{id:s,type:l,className:t,placeholder:c,disabled:n,"aria-invalid":!!e,"aria-describedby":o,...u}),e&&a.jsx("span",{id:o,className:"ui-input-error",role:"alert",children:e})]})}function U({value:i,onChange:e,placeholder:l="Select date",className:c=""}){const[n,r]=N.useState(!1),d=i?new Date(i).toLocaleDateString():"",u=["ui-datepicker",c].filter(Boolean).join(" ");return a.jsxs("div",{className:u,children:[a.jsx(w,{readOnly:!0,value:d,placeholder:l,onFocus:()=>r(!0),onClick:()=>r(s=>!s)}),n&&a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"ui-datepicker-overlay",onClick:()=>r(!1),"aria-hidden":"true"}),a.jsx("div",{className:"ui-datepicker-dropdown",children:a.jsx(k,{value:i,onChange:s=>{e==null||e(s),r(!1)}})})]})]})}function X({open:i,onClose:e,title:l,children:c,footer:n,className:r=""}){const d=N.useRef(null);N.useEffect(()=>{if(!i)return;const s=o=>{o.key==="Escape"&&(e==null||e())};return document.addEventListener("keydown",s),document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",s),document.body.style.overflow=""}},[i,e]);const u=s=>{s.target===s.currentTarget&&(e==null||e())};return i?a.jsx("div",{className:"ui-dialog-overlay",role:"dialog","aria-modal":"true","aria-labelledby":l?"ui-dialog-title":void 0,onClick:u,children:a.jsxs("div",{ref:d,className:`ui-dialog ${r}`,role:"document",onClick:s=>s.stopPropagation(),children:[a.jsxs("div",{className:"ui-dialog-content",children:[l&&a.jsx("h2",{id:"ui-dialog-title",className:"ui-dialog-title",children:l}),a.jsx("div",{className:"ui-dialog-body",children:c}),n&&a.jsx("div",{className:"ui-dialog-footer",children:n})]}),a.jsx("button",{type:"button",className:"ui-dialog-close",onClick:e,"aria-label":"Close dialog",children:"×"})]})}):null}function Y({open:i,onClose:e,title:l,children:c,side:n="right",className:r=""}){return N.useEffect(()=>(i&&(document.body.style.overflow="hidden"),()=>{document.body.style.overflow=""}),[i]),i?a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"ui-drawer-overlay",onClick:e,"aria-hidden":"true"}),a.jsxs("div",{className:`ui-drawer ui-drawer--${n} ${r}`,role:"dialog","aria-modal":"true","aria-labelledby":"ui-drawer-title",children:[l&&a.jsx("h2",{id:"ui-drawer-title",className:"ui-drawer-title",children:l}),a.jsx("div",{className:"ui-drawer-body",children:c}),a.jsx("button",{type:"button",className:"ui-drawer-close",onClick:e,"aria-label":"Close",children:"×"})]})]}):null}function _({trigger:i,items:e=[],align:l="end"}){const[c,n]=N.useState(!1),r=N.useRef(null);N.useEffect(()=>{if(!c)return;const s=o=>{r.current&&!r.current.contains(o.target)&&n(!1)};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[c]),N.useEffect(()=>{if(!c)return;const s=o=>{o.key==="Escape"&&n(!1)};return document.addEventListener("keydown",s),()=>document.removeEventListener("keydown",s)},[c]);const d=s=>{var o;s.disabled||((o=s.onClick)==null||o.call(s),n(!1))},u=s=>{var p,v,y,g,m;if(!c)return;const o=(p=r.current)==null?void 0:p.querySelectorAll(".ui-dropdown-item"),t=o?Array.from(o):[],h=document.activeElement,b=t.indexOf(h);s.key==="ArrowDown"&&b<t.length-1?(s.preventDefault(),(v=t[b+1])==null||v.focus()):s.key==="ArrowUp"&&b>0?(s.preventDefault(),(y=t[b-1])==null||y.focus()):s.key==="Home"?(s.preventDefault(),(g=t[0])==null||g.focus()):s.key==="End"&&(s.preventDefault(),(m=t[t.length-1])==null||m.focus())};return a.jsxs("div",{className:"ui-dropdown",ref:r,onKeyDown:u,children:[a.jsx("div",{className:"ui-dropdown-trigger",onClick:()=>n(s=>!s),onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),n(o=>!o))},role:"button","aria-haspopup":"menu","aria-expanded":c,"aria-controls":"ui-dropdown-menu",tabIndex:0,children:i}),c&&a.jsx("ul",{id:"ui-dropdown-menu",className:`ui-dropdown-menu ui-dropdown-menu--${l}`,role:"menu",children:e.map((s,o)=>a.jsx("li",{role:"none",children:a.jsx("button",{type:"button",className:"ui-dropdown-item",role:"menuitem",disabled:s.disabled,onClick:()=>d(s),tabIndex:0,children:s.label})},o))})]})}function J({title:i="No data",description:e,icon:l,children:c,className:n=""}){const r=["ui-empty",n].filter(Boolean).join(" ");return a.jsxs("div",{className:r,role:"status",children:[l&&a.jsx("div",{className:"ui-empty-icon",children:l}),a.jsx("h3",{className:"ui-empty-title",children:i}),e&&a.jsx("p",{className:"ui-empty-desc",children:e}),c&&a.jsx("div",{className:"ui-empty-actions",children:c})]})}function V({label:i,error:e,hint:l,id:c,children:n,className:r=""}){const d=["ui-field",r].filter(Boolean).join(" ");return a.jsxs("div",{className:d,children:[i&&a.jsx("label",{htmlFor:c,className:"ui-field-label",children:i}),n,l&&a.jsx("span",{className:"ui-field-hint",children:l}),e&&a.jsx("span",{className:"ui-field-error",role:"alert",children:e})]})}function W({trigger:i,content:e,className:l=""}){const[c,n]=N.useState(!1),r=["ui-hovercard",l].filter(Boolean).join(" ");return a.jsxs("div",{className:r,onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),children:[a.jsx("div",{className:"ui-hovercard-trigger",children:i}),c&&a.jsx("div",{className:"ui-hovercard-content",children:e})]})}function z({left:i,right:e,children:l,className:c=""}){const n=["ui-inputgroup",c].filter(Boolean).join(" ");return a.jsxs("div",{className:n,children:[i&&a.jsx("span",{className:"ui-inputgroup-addon ui-inputgroup-addon--left",children:i}),a.jsx("span",{className:"ui-inputgroup-input",children:l}),e&&a.jsx("span",{className:"ui-inputgroup-addon ui-inputgroup-addon--right",children:e})]})}function Q({length:i=6,value:e="",onChange:l,className:c=""}){const n=N.useRef([]),r=e.split("").concat(Array(i).fill("")).slice(0,i),d=(o,t)=>{var b;const h=r.slice();h[o]=t.replace(/\D/g,"").slice(-1),l==null||l(h.join("")),t&&o<i-1&&((b=n.current[o+1])==null||b.focus())},u=(o,t)=>{var h;t.key==="Backspace"&&!r[o]&&o>0&&((h=n.current[o-1])==null||h.focus())},s=["ui-inputotp",c].filter(Boolean).join(" ");return a.jsx("div",{className:s,role:"group","aria-label":"One-time code",children:r.map((o,t)=>a.jsx("input",{ref:h=>n.current[t]=h,type:"text",inputMode:"numeric",maxLength:1,className:"ui-inputotp-digit",value:o,onChange:h=>d(t,h.target.value),onKeyDown:h=>u(t,h),"aria-label":`Digit ${t+1}`},t))})}function B({href:i,onClick:e,active:l=!1,disabled:c=!1,icon:n,children:r,className:d="",...u}){const s=["ui-navlink",l&&"ui-navlink--active",c&&"ui-navlink--disabled",d].filter(Boolean).join(" "),o=a.jsxs(a.Fragment,{children:[n&&a.jsx("span",{className:"ui-navlink-icon","aria-hidden":"true",children:n}),a.jsx("span",{className:"ui-navlink-text",children:r})]});return i&&!c?a.jsx("a",{href:i,className:s,onClick:e,"aria-current":l?"page":void 0,...u,children:o}):a.jsx("button",{type:"button",className:s,onClick:c?void 0:e,disabled:c,"aria-current":l?"page":void 0,...u,children:o})}function Z({brand:i,nav:e,actions:l,variant:c="default",sticky:n=!1,dense:r=!1,brandMark:d=!1,mobileMenuOpen:u,onMobileMenuChange:s,className:o=""}){const t=N.useId().replace(/:/g,""),[h,b]=N.useState(!1),p=u!==void 0,v=p?u:h,y=m=>{p||b(m),s==null||s(m)},g=["ui-navbar",`ui-navbar--${c}`,n&&"ui-navbar--sticky",r&&"ui-navbar--dense",o].filter(Boolean).join(" ");return a.jsxs("header",{className:g,role:"banner",children:[a.jsxs("div",{className:"ui-navbar-inner",children:[a.jsx("div",{className:["ui-navbar-brand",d&&"ui-navbar-brand--with-mark"].filter(Boolean).join(" "),children:i}),a.jsx("nav",{className:"ui-navbar-nav","aria-label":"Main",children:e}),a.jsx("div",{className:"ui-navbar-actions",children:l}),a.jsx("button",{type:"button",className:"ui-navbar-menu-toggle","aria-expanded":v,"aria-controls":`ui-navbar-mobile-${t}`,"aria-label":"Toggle menu",onClick:()=>y(!v),children:a.jsx("span",{className:"ui-navbar-menu-icon","aria-hidden":"true"})})]}),a.jsx("div",{id:`ui-navbar-mobile-${t}`,className:"ui-navbar-mobile",hidden:!v,role:"navigation","aria-label":"Mobile",children:a.jsxs("div",{className:"ui-navbar-mobile-inner",children:[e,l&&a.jsx("div",{className:"ui-navbar-mobile-actions",children:l})]})})]})}function R({items:i=[],header:e,footer:l,collapsed:c=!1,onToggleCollapse:n,showCollapseButton:r=!0,position:d="left",variant:u="default",width:s="normal",className:o=""}){const t=["ui-sidebar",`ui-sidebar--${u}`,`ui-sidebar--${d}`,`ui-sidebar--width-${s}`,c&&"ui-sidebar--collapsed",o].filter(Boolean).join(" "),h=!!(r&&n),b=!!(e||h);return a.jsxs("aside",{className:t,"aria-label":"Sidebar navigation",children:[b&&a.jsxs("div",{className:["ui-sidebar-top",!e&&h&&"ui-sidebar-top--collapse-only"].filter(Boolean).join(" "),children:[e?a.jsx("div",{className:"ui-sidebar-header",children:e}):null,h?a.jsx("button",{type:"button",className:"ui-sidebar-collapse-btn",onClick:()=>n(!c),"aria-expanded":!c,"aria-label":c?"Expand sidebar":"Collapse sidebar",children:a.jsx("span",{className:"ui-sidebar-collapse-icon","aria-hidden":"true"})}):null]}),a.jsx("nav",{className:"ui-sidebar-nav","aria-label":"Sidebar",children:a.jsx("ul",{className:"ui-sidebar-list",children:i.map((p,v)=>a.jsx("li",{className:"ui-sidebar-item",children:a.jsx(B,{href:p.href,onClick:p.onClick,active:p.active,disabled:p.disabled,icon:p.icon,children:p.label})},p.id??v))})}),l&&a.jsx("div",{className:"ui-sidebar-footer",children:l})]})}f.Accordion=D,f.Alert=j,f.AlertDialog=S,f.AspectRatio=$,f.Avatar=E,f.Badge=x,f.Breadcrumb=L,f.Button=A,f.ButtonGroup=F,f.Calendar=k,f.Card=I,f.Carousel=T,f.Chart=P,f.Checkbox=C,f.Collapsible=M,f.Combobox=O,f.Command=K,f.ContextMenu=G,f.DashboardPage=q,f.DataTable=H,f.DatePicker=U,f.Dialog=X,f.Drawer=Y,f.DropdownMenu=_,f.Empty=J,f.Field=V,f.HoverCard=W,f.Input=w,f.InputGroup=z,f.InputOTP=Q,f.NavLink=B,f.Navbar=Z,f.Sidebar=R,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});
|
|
2
|
+
//# sourceMappingURL=tri-ui-library.umd.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tri-ui-library.umd.cjs","sources":["../src/components/Accordion/Accordion.jsx","../src/components/Alert/Alert.jsx","../src/components/AlertDialog/AlertDialog.jsx","../src/components/AspectRatio/AspectRatio.jsx","../src/components/Avatar/Avatar.jsx","../src/components/Badge/Badge.jsx","../src/components/Breadcrumb/Breadcrumb.jsx","../src/components/Button/Button.jsx","../src/components/ButtonGroup/ButtonGroup.jsx","../src/components/Calendar/Calendar.jsx","../src/components/Card/Card.jsx","../src/components/Carousel/Carousel.jsx","../src/components/Chart/Chart.jsx","../src/components/Checkbox/Checkbox.jsx","../src/components/Collapsible/Collapsible.jsx","../src/components/Combobox/Combobox.jsx","../src/components/Command/Command.jsx","../src/components/ContextMenu/ContextMenu.jsx","../src/components/DashboardPage/DashboardPage.jsx","../src/components/DataTable/DataTable.jsx","../src/components/Input/Input.jsx","../src/components/DatePicker/DatePicker.jsx","../src/components/Dialog/Dialog.jsx","../src/components/Drawer/Drawer.jsx","../src/components/DropdownMenu/DropdownMenu.jsx","../src/components/Empty/Empty.jsx","../src/components/Field/Field.jsx","../src/components/HoverCard/HoverCard.jsx","../src/components/InputGroup/InputGroup.jsx","../src/components/InputOTP/InputOTP.jsx","../src/components/NavLink/NavLink.jsx","../src/components/Navbar/Navbar.jsx","../src/components/Sidebar/Sidebar.jsx"],"sourcesContent":["import React from \"react\";\r\nimport \"./Accordion.css\";\r\n\r\n/**\r\n * Accordion - vertically stacked headings that reveal content.\r\n * @param {Array<{ title: React.ReactNode, content: React.ReactNode, disabled?: boolean }>} items\r\n * @param {boolean} multiple - If true, multiple panels can be open at once\r\n * @param {boolean} disabled - If true, all items are disabled\r\n * @param {string} variant - 'default' | 'borders' | 'card'\r\n * @param {string} className\r\n */\r\nfunction Accordion({ items = [], multiple = false, disabled = false, variant = \"default\", className = \"\" }) {\r\n const [openState, setOpenState] = React.useState(multiple ? [] : null);\r\n\r\n const isOpen = (i) =>\r\n multiple ? Array.isArray(openState) && openState.includes(i) : openState === i;\r\n\r\n const toggle = (i) => {\r\n if (disabled) return;\r\n const item = items[i];\r\n if (item?.disabled) return;\r\n if (multiple) {\r\n setOpenState((prev) =>\r\n prev.includes(i) ? prev.filter((x) => x !== i) : [...prev, i]\r\n );\r\n } else {\r\n setOpenState((prev) => (prev === i ? null : i));\r\n }\r\n };\r\n\r\n const classNames = [\r\n \"ui-accordion\",\r\n `ui-accordion--${variant}`,\r\n disabled && \"ui-accordion--disabled\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div className={classNames} role=\"region\" aria-label=\"Accordion\">\r\n {items.map((item, i) => {\r\n const itemDisabled = disabled || item.disabled;\r\n return (\r\n <div key={i} className=\"ui-accordion-item\">\r\n <button\r\n type=\"button\"\r\n className=\"ui-accordion-trigger\"\r\n onClick={() => toggle(i)}\r\n aria-expanded={isOpen(i)}\r\n aria-controls={`ui-accordion-panel-${i}`}\r\n aria-disabled={itemDisabled}\r\n id={`ui-accordion-trigger-${i}`}\r\n disabled={itemDisabled}\r\n >\r\n <span className=\"ui-accordion-trigger-text\">{item.title}</span>\r\n <span className=\"ui-accordion-trigger-icon\" aria-hidden=\"true\" />\r\n </button>\r\n <div\r\n id={`ui-accordion-panel-${i}`}\r\n role=\"region\"\r\n aria-labelledby={`ui-accordion-trigger-${i}`}\r\n className=\"ui-accordion-panel\"\r\n hidden={!isOpen(i)}\r\n >\r\n {item.content}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Accordion;\r\n","import React from \"react\";\r\nimport \"./Alert.css\";\r\n\r\n/**\r\n * Alert component for feedback messages.\r\n * @param {string} type - 'success' | 'warning' | 'error' | 'info'\r\n * @param {React.ReactNode} children\r\n * @param {string} title - Optional title\r\n * @param {string} className\r\n * @param {boolean} dismissible - Show close button\r\n * @param {function} onDismiss - Called when dismissed\r\n */\r\nfunction Alert({\r\n type = \"info\",\r\n children,\r\n title,\r\n className = \"\",\r\n dismissible = false,\r\n onDismiss,\r\n ...rest\r\n}) {\r\n const [dismissed, setDismissed] = React.useState(false);\r\n\r\n const handleDismiss = () => {\r\n setDismissed(true);\r\n onDismiss?.();\r\n };\r\n\r\n const classNames = [\r\n \"ui-alert\",\r\n `ui-alert--${type}`,\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n if (dismissed) return null;\r\n\r\n return (\r\n <div\r\n className={classNames}\r\n role=\"alert\"\r\n aria-live=\"polite\"\r\n {...rest}\r\n >\r\n <div className=\"ui-alert-content\">\r\n {title && <div className=\"ui-alert-title\">{title}</div>}\r\n <div className=\"ui-alert-message\">{children}</div>\r\n </div>\r\n {dismissible && (\r\n <button\r\n type=\"button\"\r\n className=\"ui-alert-dismiss\"\r\n onClick={handleDismiss}\r\n aria-label=\"Dismiss alert\"\r\n >\r\n ×\r\n </button>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Alert;\r\n","import React from \"react\";\r\nimport \"./AlertDialog.css\";\r\n\r\nfunction AlertDialog({\r\n open,\r\n onClose,\r\n title,\r\n description,\r\n confirmLabel = \"OK\",\r\n cancelLabel = \"Cancel\",\r\n onConfirm,\r\n showCancel = true,\r\n}) {\r\n if (!open) return null;\r\n return (\r\n <div className=\"ui-alertdialog-overlay\" role=\"alertdialog\" aria-modal=\"true\" aria-labelledby=\"ui-alertdialog-title\">\r\n <div className=\"ui-alertdialog\">\r\n <h2 id=\"ui-alertdialog-title\" className=\"ui-alertdialog-title\">{title}</h2>\r\n {description && <p className=\"ui-alertdialog-desc\">{description}</p>}\r\n <div className=\"ui-alertdialog-actions\">\r\n {showCancel && (\r\n <button type=\"button\" className=\"ui-alertdialog-btn ui-alertdialog-btn--secondary\" onClick={onClose}>\r\n {cancelLabel}\r\n </button>\r\n )}\r\n <button type=\"button\" className=\"ui-alertdialog-btn ui-alertdialog-btn--primary\" onClick={() => { onConfirm?.(); onClose?.(); }}>\r\n {confirmLabel}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default AlertDialog;\r\n","import React from \"react\";\r\nimport \"./AspectRatio.css\";\r\n\r\nfunction AspectRatio({ ratio = 16 / 9, children, className = \"\" }) {\r\n const classNames = [\"ui-aspectratio\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames} style={{ aspectRatio: ratio }}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default AspectRatio;\r\n","import React from \"react\";\r\nimport \"./Avatar.css\";\r\n\r\nfunction Avatar({ src, alt = \"\", fallback, size = \"md\", className = \"\" }) {\r\n const [loaded, setLoaded] = React.useState(false);\r\n const classNames = [\"ui-avatar\", `ui-avatar--${size}`, className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames} role=\"img\" aria-label={alt || undefined}>\r\n {src && (\r\n <img\r\n src={src}\r\n alt={alt}\r\n className=\"ui-avatar-img\"\r\n onLoad={() => setLoaded(true)}\r\n onError={() => setLoaded(false)}\r\n />\r\n )}\r\n {(!src || !loaded) && <span className=\"ui-avatar-fallback\">{fallback || (alt ? alt[0] : \"?\")}</span>}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Avatar;\r\n","import React from \"react\";\r\nimport \"./Badge.css\";\r\n\r\nfunction Badge({ children, variant = \"default\", className = \"\" }) {\r\n const classNames = [\"ui-badge\", `ui-badge--${variant}`, className].filter(Boolean).join(\" \");\r\n return <span className={classNames}>{children}</span>;\r\n}\r\n\r\nexport default Badge;\r\n","import React from \"react\";\r\nimport \"./Breadcrumb.css\";\r\n\r\nfunction Breadcrumb({ items = [], separator = \"/\", className = \"\" }) {\r\n const classNames = [\"ui-breadcrumb\", className].filter(Boolean).join(\" \");\r\n return (\r\n <nav className={classNames} aria-label=\"Breadcrumb\">\r\n <ol className=\"ui-breadcrumb-list\">\r\n {items.map((item, i) => (\r\n <li key={i} className=\"ui-breadcrumb-item\">\r\n {i > 0 && <span className=\"ui-breadcrumb-sep\" aria-hidden=\"true\">{separator}</span>}\r\n {item.href ? (\r\n <a href={item.href} className=\"ui-breadcrumb-link\">{item.label}</a>\r\n ) : (\r\n <span className=\"ui-breadcrumb-current\" aria-current=\"page\">{item.label}</span>\r\n )}\r\n </li>\r\n ))}\r\n </ol>\r\n </nav>\r\n );\r\n}\r\n\r\nexport default Breadcrumb;\r\n","import React from \"react\";\r\nimport \"./Button.css\";\r\n\r\n/**\r\n * Button component with variant, size, and icon support.\r\n * @param {string} variant - 'primary' | 'secondary' | 'danger' | 'ghost'\r\n * @param {string} size - 'sm' | 'md' | 'lg'\r\n * @param {boolean} disabled\r\n * @param {function} onClick\r\n * @param {React.ReactNode} children - Button label\r\n * @param {React.ReactNode} leftIcon - Icon shown before the label\r\n * @param {React.ReactNode} rightIcon - Icon shown after the label\r\n * @param {string} type - 'button' | 'submit' | 'reset'\r\n * @param {string} className - Additional CSS classes\r\n * @param {string} ariaLabel - Accessible label when no visible text\r\n */\r\nfunction Button({\r\n variant = \"primary\",\r\n size = \"md\",\r\n disabled = false,\r\n onClick,\r\n children,\r\n leftIcon,\r\n rightIcon,\r\n type = \"button\",\r\n className = \"\",\r\n ariaLabel,\r\n ...rest\r\n}) {\r\n const hasLabel = children != null && children !== \"\";\r\n const classNames = [\r\n \"ui-btn\",\r\n `ui-btn--${variant}`,\r\n `ui-btn--${size}`,\r\n disabled && \"ui-btn--disabled\",\r\n leftIcon && \"ui-btn--has-left-icon\",\r\n rightIcon && \"ui-btn--has-right-icon\",\r\n (leftIcon || rightIcon) && !hasLabel && \"ui-btn--icon-only\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <button\r\n type={type}\r\n className={classNames}\r\n disabled={disabled}\r\n onClick={onClick}\r\n aria-label={ariaLabel}\r\n aria-disabled={disabled}\r\n {...rest}\r\n >\r\n {leftIcon && <span className=\"ui-btn-icon ui-btn-icon--left\" aria-hidden=\"true\">{leftIcon}</span>}\r\n {hasLabel && <span className=\"ui-btn-label\">{children}</span>}\r\n {rightIcon && <span className=\"ui-btn-icon ui-btn-icon--right\" aria-hidden=\"true\">{rightIcon}</span>}\r\n </button>\r\n );\r\n}\r\n\r\nexport default Button;\r\n","import React from \"react\";\r\nimport \"./ButtonGroup.css\";\r\n\r\nfunction ButtonGroup({ children, className = \"\" }) {\r\n const classNames = [\"ui-buttongroup\", className].filter(Boolean).join(\" \");\r\n return <div className={classNames} role=\"group\">{children}</div>;\r\n}\r\n\r\nexport default ButtonGroup;\r\n","import React from \"react\";\r\nimport \"./Calendar.css\";\r\n\r\nfunction Calendar({ value, onChange, className = \"\" }) {\r\n const classNames = [\"ui-calendar\", className].filter(Boolean).join(\" \");\r\n const d = value ? new Date(value) : new Date();\r\n const [view, setView] = React.useState({ year: d.getFullYear(), month: d.getMonth() });\r\n const daysInMonth = new Date(view.year, view.month + 1, 0).getDate();\r\n const firstDay = new Date(view.year, view.month, 1).getDay();\r\n const days = Array.from({ length: daysInMonth }, (_, i) => i + 1);\r\n const blanks = Array.from({ length: firstDay }, () => null);\r\n const all = [...blanks, ...days];\r\n\r\n return (\r\n <div className={classNames} role=\"application\" aria-label=\"Calendar\">\r\n <div className=\"ui-calendar-header\">\r\n <button type=\"button\" onClick={() => setView((v) => ({ ...v, month: v.month - 1 }))}>←</button>\r\n <span>{new Date(view.year, view.month).toLocaleString(\"default\", { month: \"long\", year: \"numeric\" })}</span>\r\n <button type=\"button\" onClick={() => setView((v) => ({ ...v, month: v.month + 1 }))}>→</button>\r\n </div>\r\n <div className=\"ui-calendar-grid\">\r\n {[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"].map((d) => <div key={d} className=\"ui-calendar-weekday\">{d}</div>)}\r\n {all.map((day, i) => (\r\n day ? (\r\n <button\r\n key={i}\r\n type=\"button\"\r\n className=\"ui-calendar-day\"\r\n onClick={() => onChange?.(new Date(view.year, view.month, day))}\r\n >\r\n {day}\r\n </button>\r\n ) : (\r\n <div key={i} className=\"ui-calendar-day ui-calendar-day--empty\" />\r\n )\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Calendar;\r\n","import React from \"react\";\r\nimport \"./Card.css\";\r\n\r\n/**\r\n * Card container with optional header and footer.\r\n * @param {React.ReactNode} children\r\n * @param {string} title - Optional card title\r\n * @param {React.ReactNode} footer - Optional footer content\r\n * @param {string} className\r\n * @param {string} variant - 'elevated' | 'outlined' (default)\r\n */\r\nfunction Card({ children, title, footer, className = \"\", variant = \"outlined\", ...rest }) {\r\n const classNames = [\"ui-card\", `ui-card--${variant}`, className].filter(Boolean).join(\" \");\r\n\r\n return (\r\n <div className={classNames} {...rest}>\r\n {title && (\r\n <div className=\"ui-card-header\">\r\n <h3 className=\"ui-card-title\">{title}</h3>\r\n </div>\r\n )}\r\n <div className=\"ui-card-body\">{children}</div>\r\n {footer && <div className=\"ui-card-footer\">{footer}</div>}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Card;\r\n","import React from \"react\";\r\nimport \"./Carousel.css\";\r\n\r\nfunction Carousel({ children, className = \"\" }) {\r\n const [index, setIndex] = React.useState(0);\r\n const items = React.Children.toArray(children);\r\n const len = items.length;\r\n\r\n return (\r\n <div className={`ui-carousel ${className}`} role=\"region\" aria-label=\"Carousel\">\r\n <div className=\"ui-carousel-track\" style={{ transform: `translateX(-${index * 100}%)` }}>\r\n {items.map((child, i) => (\r\n <div key={i} className=\"ui-carousel-slide\">\r\n {child}\r\n </div>\r\n ))}\r\n </div>\r\n {len > 1 && (\r\n <div className=\"ui-carousel-dots\">\r\n {items.map((_, i) => (\r\n <button\r\n key={i}\r\n type=\"button\"\r\n aria-label={`Go to slide ${i + 1}`}\r\n className={`ui-carousel-dot ${i === index ? \"ui-carousel-dot--active\" : \"\"}`}\r\n onClick={() => setIndex(i)}\r\n />\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Carousel;\r\n","import React from \"react\";\r\nimport \"./Chart.css\";\r\n\r\nfunction Chart({ data = [], type = \"bar\", className = \"\" }) {\r\n const classNames = [\"ui-chart\", `ui-chart--${type}`, className].filter(Boolean).join(\" \");\r\n const max = Math.max(...data.map((d) => d.value), 1);\r\n return (\r\n <div className={classNames} role=\"img\" aria-label=\"Chart\">\r\n <div className=\"ui-chart-bars\">\r\n {data.map((item, i) => (\r\n <div key={i} className=\"ui-chart-bar-wrap\">\r\n <div\r\n className=\"ui-chart-bar\"\r\n style={{ height: `${(item.value / max) * 100}%` }}\r\n title={item.label}\r\n />\r\n <span className=\"ui-chart-label\">{item.label}</span>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Chart;\r\n","import React from \"react\";\r\nimport \"./Checkbox.css\";\r\n\r\n/**\r\n * Checkbox with label and optional description.\r\n * @param {boolean} checked - Controlled checked state\r\n * @param {function} onChange - (e) => void\r\n * @param {boolean} disabled\r\n * @param {string} label\r\n * @param {string} id - For linking label\r\n * @param {string} className\r\n */\r\nfunction Checkbox({\r\n checked = false,\r\n onChange,\r\n disabled = false,\r\n label,\r\n id: idProp,\r\n className = \"\",\r\n indeterminate,\r\n ...rest\r\n}) {\r\n const id = idProp || `ui-checkbox-${React.useId().replace(/:/g, \"\")}`;\r\n const inputRef = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n if (inputRef.current) {\r\n inputRef.current.indeterminate = !!indeterminate;\r\n }\r\n }, [indeterminate]);\r\n\r\n const classNames = [\r\n \"ui-checkbox-wrapper\",\r\n disabled && \"ui-checkbox-wrapper--disabled\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div className={classNames}>\r\n <label className=\"ui-checkbox-label\" htmlFor={id}>\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n type=\"checkbox\"\r\n className=\"ui-checkbox\"\r\n checked={checked}\r\n onChange={onChange}\r\n disabled={disabled}\r\n aria-checked={indeterminate ? \"mixed\" : checked}\r\n aria-disabled={disabled}\r\n {...rest}\r\n />\r\n <span className=\"ui-checkbox-box\" aria-hidden=\"true\" />\r\n {label && <span className=\"ui-checkbox-text\">{label}</span>}\r\n </label>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Checkbox;\r\n","import React from \"react\";\r\nimport \"./Collapsible.css\";\r\n\r\nfunction Collapsible({ open: controlledOpen, defaultOpen = false, onOpenChange, trigger, children, className = \"\" }) {\r\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\r\n const isControlled = controlledOpen !== undefined;\r\n const open = isControlled ? controlledOpen : internalOpen;\r\n\r\n const setOpen = (v) => {\r\n if (!isControlled) setInternalOpen(v);\r\n onOpenChange?.(v);\r\n };\r\n\r\n const classNames = [\"ui-collapsible\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames}>\r\n <button\r\n type=\"button\"\r\n className=\"ui-collapsible-trigger\"\r\n onClick={() => setOpen(!open)}\r\n aria-expanded={open}\r\n >\r\n {trigger}\r\n </button>\r\n <div className=\"ui-collapsible-content\" hidden={!open}>\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Collapsible;\r\n","import React, { useState } from \"react\";\r\nimport \"./Combobox.css\";\r\n\r\nfunction Combobox({ options = [], value, onChange, placeholder = \"Select...\", className = \"\" }) {\r\n const [open, setOpen] = useState(false);\r\n const [filter, setFilter] = useState(\"\");\r\n const filtered = options.filter((o) => o.label.toLowerCase().includes(filter.toLowerCase()));\r\n const selected = options.find((o) => o.value === value);\r\n const classNames = [\"ui-combobox\", className].filter(Boolean).join(\" \");\r\n\r\n return (\r\n <div className={classNames}>\r\n <div className=\"ui-combobox-input-wrap\">\r\n <input\r\n type=\"text\"\r\n className=\"ui-combobox-input\"\r\n value={open ? filter : (selected?.label ?? \"\")}\r\n onChange={(e) => { setFilter(e.target.value); setOpen(true); }}\r\n onFocus={() => setOpen(true)}\r\n onBlur={() => setTimeout(() => setOpen(false), 150)}\r\n placeholder={placeholder}\r\n role=\"combobox\"\r\n aria-expanded={open}\r\n aria-autocomplete=\"list\"\r\n />\r\n </div>\r\n {open && (\r\n <ul className=\"ui-combobox-list\" role=\"listbox\">\r\n {filtered.map((opt) => (\r\n <li\r\n key={opt.value}\r\n role=\"option\"\r\n aria-selected={value === opt.value}\r\n className=\"ui-combobox-option\"\r\n onMouseDown={() => { onChange?.(opt.value); setOpen(false); setFilter(\"\"); }}\r\n >\r\n {opt.label}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Combobox;\r\n","import React from \"react\";\r\nimport \"./Command.css\";\r\n\r\nfunction Command({ children, placeholder = \"Search...\", className = \"\" }) {\r\n const classNames = [\"ui-command\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames} role=\"command\">\r\n <input type=\"text\" className=\"ui-command-input\" placeholder={placeholder} />\r\n <div className=\"ui-command-list\">{children}</div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Command;\r\n","import React from \"react\";\r\nimport \"./ContextMenu.css\";\r\n\r\nfunction ContextMenu({ children, items = [], onOpenChange }) {\r\n const [open, setOpen] = React.useState(false);\r\n const [pos, setPos] = React.useState({ x: 0, y: 0 });\r\n const ref = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n const handle = (e) => {\r\n if (e.button === 2) {\r\n e.preventDefault();\r\n setPos({ x: e.clientX, y: e.clientY });\r\n setOpen(true);\r\n onOpenChange?.(true);\r\n }\r\n };\r\n const el = ref.current;\r\n el?.addEventListener(\"contextmenu\", handle);\r\n return () => el?.removeEventListener(\"contextmenu\", handle);\r\n }, [onOpenChange]);\r\n\r\n React.useEffect(() => {\r\n if (!open) return;\r\n const handle = () => {\r\n setOpen(false);\r\n onOpenChange?.(false);\r\n };\r\n document.addEventListener(\"click\", handle);\r\n return () => document.removeEventListener(\"click\", handle);\r\n }, [open, onOpenChange]);\r\n\r\n return (\r\n <div ref={ref} className=\"ui-contextmenu-wrapper\">\r\n {children}\r\n {open && (\r\n <ul\r\n className=\"ui-contextmenu\"\r\n style={{ left: pos.x, top: pos.y }}\r\n role=\"menu\"\r\n >\r\n {items.map((item, i) => (\r\n <li key={i} role=\"none\">\r\n <button type=\"button\" className=\"ui-contextmenu-item\" role=\"menuitem\" onClick={item.onClick}>\r\n {item.label}\r\n </button>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ContextMenu;\r\n","import React from \"react\";\r\nimport \"./DashboardPage.css\";\r\n\r\n/**\r\n * Dashboard shell: optional navbar + sidebar + scrollable main content.\r\n * Pass composed Navbar and Sidebar as nodes, or leave null for partial layouts.\r\n * @param {React.ReactNode} navbar - Top bar (e.g. Navbar component)\r\n * @param {React.ReactNode} sidebar - Side rail (e.g. Sidebar component)\r\n * @param {React.ReactNode} children - Main area content\r\n * @param {boolean} sidebarCollapsed - When true, main area uses collapsed spacing (optional visual)\r\n * @param {'fluid'|'contained'} mainWidth - Main content max-width\r\n * @param {boolean} fullHeight - Fill viewport height (min-height 100vh)\r\n * @param {string} className\r\n */\r\nfunction DashboardPage({\r\n navbar,\r\n sidebar,\r\n children,\r\n sidebarCollapsed = false,\r\n mainWidth = \"fluid\",\r\n fullHeight = true,\r\n className = \"\",\r\n}) {\r\n const classNames = [\r\n \"ui-dashboard\",\r\n fullHeight && \"ui-dashboard--full-height\",\r\n sidebarCollapsed && \"ui-dashboard--sidebar-collapsed\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const mainClass = [\r\n \"ui-dashboard-main\",\r\n mainWidth === \"contained\" && \"ui-dashboard-main--contained\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div className={classNames}>\r\n {navbar && <div className=\"ui-dashboard-navbar\">{navbar}</div>}\r\n <div className=\"ui-dashboard-body\">\r\n {sidebar && <div className=\"ui-dashboard-sidebar-wrap\">{sidebar}</div>}\r\n <main className={mainClass} role=\"main\">\r\n <div className=\"ui-dashboard-main-inner\">{children}</div>\r\n </main>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DashboardPage;\r\n","import React from \"react\";\r\nimport \"./DataTable.css\";\r\n\r\n/**\r\n * Data table with columns and rows.\r\n * @param {Array<{ key: string, header: string }>} columns - Column definitions\r\n * @param {Array<object>} data - Array of row objects (keys match column.key)\r\n * @param {string} className\r\n * @param {string} emptyMessage - Message when no data\r\n */\r\nfunction DataTable({\r\n columns = [],\r\n data = [],\r\n className = \"\",\r\n emptyMessage = \"No data\",\r\n}) {\r\n const classNames = [\"ui-datatable\", className].filter(Boolean).join(\" \");\r\n\r\n if (!columns.length) {\r\n return (\r\n <div className={classNames} role=\"region\" aria-label=\"Data table\">\r\n <p className=\"ui-datatable-empty\">{emptyMessage}</p>\r\n </div>\r\n );\r\n }\r\n\r\n if (!data.length) {\r\n return (\r\n <div className={classNames} role=\"region\" aria-label=\"Data table\">\r\n <table className=\"ui-datatable-table\">\r\n <thead>\r\n <tr>\r\n {columns.map((col) => (\r\n <th key={col.key} scope=\"col\" className=\"ui-datatable-th\">\r\n {col.header}\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td colSpan={columns.length} className=\"ui-datatable-empty-cell\">\r\n {emptyMessage}\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className={classNames} role=\"region\" aria-label=\"Data table\">\r\n <table className=\"ui-datatable-table\">\r\n <thead>\r\n <tr>\r\n {columns.map((col) => (\r\n <th key={col.key} scope=\"col\" className=\"ui-datatable-th\">\r\n {col.header}\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {data.map((row, rowIndex) => (\r\n <tr key={rowIndex} className=\"ui-datatable-tr\">\r\n {columns.map((col) => (\r\n <td key={col.key} className=\"ui-datatable-td\">\r\n {row[col.key] ?? \"\"}\r\n </td>\r\n ))}\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DataTable;\r\n","import React from \"react\";\r\nimport \"./Input.css\";\r\n\r\n/**\r\n * Input component with label and error support.\r\n * @param {string} label - Optional label text\r\n * @param {string} error - Error message to display\r\n * @param {string} type - input type (text, email, password, etc.)\r\n * @param {string} placeholder\r\n * @param {boolean} disabled\r\n * @param {string} id - For linking label; auto-generated if not provided\r\n * @param {string} className\r\n * @param {object} ...rest - Passed to native input\r\n */\r\nfunction Input({\r\n label,\r\n error,\r\n type = \"text\",\r\n placeholder,\r\n disabled = false,\r\n id: idProp,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n const id = idProp || `ui-input-${React.useId().replace(/:/g, \"\")}`;\r\n const errorId = error ? `${id}-error` : undefined;\r\n\r\n const classNames = [\r\n \"ui-input\",\r\n error && \"ui-input--error\",\r\n disabled && \"ui-input--disabled\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div className=\"ui-input-wrapper\">\r\n {label && (\r\n <label htmlFor={id} className=\"ui-input-label\">\r\n {label}\r\n </label>\r\n )}\r\n <input\r\n id={id}\r\n type={type}\r\n className={classNames}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n aria-invalid={!!error}\r\n aria-describedby={errorId}\r\n {...rest}\r\n />\r\n {error && (\r\n <span id={errorId} className=\"ui-input-error\" role=\"alert\">\r\n {error}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Input;\r\n","import React from \"react\";\r\nimport Calendar from \"../Calendar\";\r\nimport Input from \"../Input\";\r\nimport \"./DatePicker.css\";\r\n\r\nfunction DatePicker({ value, onChange, placeholder = \"Select date\", className = \"\" }) {\r\n const [open, setOpen] = React.useState(false);\r\n const str = value ? new Date(value).toLocaleDateString() : \"\";\r\n const classNames = [\"ui-datepicker\", className].filter(Boolean).join(\" \");\r\n\r\n return (\r\n <div className={classNames}>\r\n <Input\r\n readOnly\r\n value={str}\r\n placeholder={placeholder}\r\n onFocus={() => setOpen(true)}\r\n onClick={() => setOpen((v) => !v)}\r\n />\r\n {open && (\r\n <>\r\n <div className=\"ui-datepicker-overlay\" onClick={() => setOpen(false)} aria-hidden=\"true\" />\r\n <div className=\"ui-datepicker-dropdown\">\r\n <Calendar value={value} onChange={(d) => { onChange?.(d); setOpen(false); }} />\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default DatePicker;\r\n","import React, { useEffect } from \"react\";\r\nimport \"./Dialog.css\";\r\n\r\n/**\r\n * Modal dialog with overlay, title, and optional actions.\r\n * @param {boolean} open - Controlled open state\r\n * @param {function} onClose - Called when overlay/close is clicked or Escape\r\n * @param {string} title - Dialog title\r\n * @param {React.ReactNode} children - Body content\r\n * @param {React.ReactNode} footer - Optional footer (e.g. buttons)\r\n * @param {string} className\r\n */\r\nfunction Dialog({ open, onClose, title, children, footer, className = \"\" }) {\r\n const dialogRef = React.useRef(null);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const handleEscape = (e) => {\r\n if (e.key === \"Escape\") onClose?.();\r\n };\r\n document.addEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"hidden\";\r\n return () => {\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"\";\r\n };\r\n }, [open, onClose]);\r\n\r\n const handleOverlayClick = (e) => {\r\n if (e.target === e.currentTarget) onClose?.();\r\n };\r\n\r\n if (!open) return null;\r\n\r\n return (\r\n <div\r\n className=\"ui-dialog-overlay\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={title ? \"ui-dialog-title\" : undefined}\r\n onClick={handleOverlayClick}\r\n >\r\n <div\r\n ref={dialogRef}\r\n className={`ui-dialog ${className}`}\r\n role=\"document\"\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n <div className=\"ui-dialog-content\">\r\n {title && (\r\n <h2 id=\"ui-dialog-title\" className=\"ui-dialog-title\">\r\n {title}\r\n </h2>\r\n )}\r\n <div className=\"ui-dialog-body\">{children}</div>\r\n {footer && <div className=\"ui-dialog-footer\">{footer}</div>}\r\n </div>\r\n <button\r\n type=\"button\"\r\n className=\"ui-dialog-close\"\r\n onClick={onClose}\r\n aria-label=\"Close dialog\"\r\n >\r\n ×\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Dialog;\r\n","import React, { useEffect } from \"react\";\r\nimport \"./Drawer.css\";\r\n\r\nfunction Drawer({ open, onClose, title, children, side = \"right\", className = \"\" }) {\r\n useEffect(() => {\r\n if (open) document.body.style.overflow = \"hidden\";\r\n return () => { document.body.style.overflow = \"\"; };\r\n }, [open]);\r\n\r\n if (!open) return null;\r\n\r\n return (\r\n <>\r\n <div className=\"ui-drawer-overlay\" onClick={onClose} aria-hidden=\"true\" />\r\n <div className={`ui-drawer ui-drawer--${side} ${className}`} role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"ui-drawer-title\">\r\n {title && <h2 id=\"ui-drawer-title\" className=\"ui-drawer-title\">{title}</h2>}\r\n <div className=\"ui-drawer-body\">{children}</div>\r\n <button type=\"button\" className=\"ui-drawer-close\" onClick={onClose} aria-label=\"Close\">×</button>\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\nexport default Drawer;\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport \"./DropdownMenu.css\";\r\n\r\n/**\r\n * Dropdown menu triggered by a button, with keyboard navigation.\r\n * @param {React.ReactNode} trigger - Button or element that opens the menu\r\n * @param {Array<{ label: string, onClick?: function, disabled?: boolean }>} items - Menu items\r\n * @param {string} align - 'start' | 'end'\r\n */\r\nfunction DropdownMenu({ trigger, items = [], align = \"end\" }) {\r\n const [open, setOpen] = useState(false);\r\n const containerRef = useRef(null);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const handleClickOutside = (e) => {\r\n if (containerRef.current && !containerRef.current.contains(e.target)) {\r\n setOpen(false);\r\n }\r\n };\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const handleEscape = (e) => {\r\n if (e.key === \"Escape\") setOpen(false);\r\n };\r\n document.addEventListener(\"keydown\", handleEscape);\r\n return () => document.removeEventListener(\"keydown\", handleEscape);\r\n }, [open]);\r\n\r\n const handleItemClick = (item) => {\r\n if (item.disabled) return;\r\n item.onClick?.();\r\n setOpen(false);\r\n };\r\n\r\n const handleKeyDown = (e) => {\r\n if (!open) return;\r\n const focusable = containerRef.current?.querySelectorAll(\".ui-dropdown-item\");\r\n const list = focusable ? Array.from(focusable) : [];\r\n const current = document.activeElement;\r\n const idx = list.indexOf(current);\r\n if (e.key === \"ArrowDown\" && idx < list.length - 1) {\r\n e.preventDefault();\r\n list[idx + 1]?.focus();\r\n } else if (e.key === \"ArrowUp\" && idx > 0) {\r\n e.preventDefault();\r\n list[idx - 1]?.focus();\r\n } else if (e.key === \"Home\") {\r\n e.preventDefault();\r\n list[0]?.focus();\r\n } else if (e.key === \"End\") {\r\n e.preventDefault();\r\n list[list.length - 1]?.focus();\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className=\"ui-dropdown\"\r\n ref={containerRef}\r\n onKeyDown={handleKeyDown}\r\n >\r\n <div\r\n className=\"ui-dropdown-trigger\"\r\n onClick={() => setOpen((v) => !v)}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n setOpen((v) => !v);\r\n }\r\n }}\r\n role=\"button\"\r\n aria-haspopup=\"menu\"\r\n aria-expanded={open}\r\n aria-controls=\"ui-dropdown-menu\"\r\n tabIndex={0}\r\n >\r\n {trigger}\r\n </div>\r\n {open && (\r\n <ul\r\n id=\"ui-dropdown-menu\"\r\n className={`ui-dropdown-menu ui-dropdown-menu--${align}`}\r\n role=\"menu\"\r\n >\r\n {items.map((item, i) => (\r\n <li key={i} role=\"none\">\r\n <button\r\n type=\"button\"\r\n className=\"ui-dropdown-item\"\r\n role=\"menuitem\"\r\n disabled={item.disabled}\r\n onClick={() => handleItemClick(item)}\r\n tabIndex={0}\r\n >\r\n {item.label}\r\n </button>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default DropdownMenu;\r\n","import React from \"react\";\r\nimport \"./Empty.css\";\r\n\r\nfunction Empty({ title = \"No data\", description, icon, children, className = \"\" }) {\r\n const classNames = [\"ui-empty\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames} role=\"status\">\r\n {icon && <div className=\"ui-empty-icon\">{icon}</div>}\r\n <h3 className=\"ui-empty-title\">{title}</h3>\r\n {description && <p className=\"ui-empty-desc\">{description}</p>}\r\n {children && <div className=\"ui-empty-actions\">{children}</div>}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Empty;\r\n","import React from \"react\";\r\nimport \"./Field.css\";\r\n\r\nfunction Field({ label, error, hint, id, children, className = \"\" }) {\r\n const classNames = [\"ui-field\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames}>\r\n {label && <label htmlFor={id} className=\"ui-field-label\">{label}</label>}\r\n {children}\r\n {hint && <span className=\"ui-field-hint\">{hint}</span>}\r\n {error && <span className=\"ui-field-error\" role=\"alert\">{error}</span>}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Field;\r\n","import React, { useState } from \"react\";\r\nimport \"./HoverCard.css\";\r\n\r\nfunction HoverCard({ trigger, content, className = \"\" }) {\r\n const [open, setOpen] = useState(false);\r\n const classNames = [\"ui-hovercard\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div\r\n className={classNames}\r\n onMouseEnter={() => setOpen(true)}\r\n onMouseLeave={() => setOpen(false)}\r\n >\r\n <div className=\"ui-hovercard-trigger\">{trigger}</div>\r\n {open && <div className=\"ui-hovercard-content\">{content}</div>}\r\n </div>\r\n );\r\n}\r\n\r\nexport default HoverCard;\r\n","import React from \"react\";\r\nimport \"./InputGroup.css\";\r\n\r\nfunction InputGroup({ left, right, children, className = \"\" }) {\r\n const classNames = [\"ui-inputgroup\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames}>\r\n {left && <span className=\"ui-inputgroup-addon ui-inputgroup-addon--left\">{left}</span>}\r\n <span className=\"ui-inputgroup-input\">{children}</span>\r\n {right && <span className=\"ui-inputgroup-addon ui-inputgroup-addon--right\">{right}</span>}\r\n </div>\r\n );\r\n}\r\n\r\nexport default InputGroup;\r\n","import React, { useRef } from \"react\";\r\nimport \"./InputOTP.css\";\r\n\r\nfunction InputOTP({ length = 6, value = \"\", onChange, className = \"\" }) {\r\n const refs = useRef([]);\r\n const arr = value.split(\"\").concat(Array(length).fill(\"\")).slice(0, length);\r\n\r\n const handleChange = (i, v) => {\r\n const next = arr.slice();\r\n next[i] = v.replace(/\\D/g, \"\").slice(-1);\r\n onChange?.(next.join(\"\"));\r\n if (v && i < length - 1) refs.current[i + 1]?.focus();\r\n };\r\n\r\n const handleKeyDown = (i, e) => {\r\n if (e.key === \"Backspace\" && !arr[i] && i > 0) refs.current[i - 1]?.focus();\r\n };\r\n\r\n const classNames = [\"ui-inputotp\", className].filter(Boolean).join(\" \");\r\n return (\r\n <div className={classNames} role=\"group\" aria-label=\"One-time code\">\r\n {arr.map((ch, i) => (\r\n <input\r\n key={i}\r\n ref={(el) => (refs.current[i] = el)}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n maxLength={1}\r\n className=\"ui-inputotp-digit\"\r\n value={ch}\r\n onChange={(e) => handleChange(i, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(i, e)}\r\n aria-label={`Digit ${i + 1}`}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default InputOTP;\r\n","import React from \"react\";\r\nimport \"./NavLink.css\";\r\n\r\n/**\r\n * Navigation link for Navbar / Sidebar. Renders <a> when href is set, else <button>.\r\n * @param {string} href - If set, renders anchor\r\n * @param {function} onClick\r\n * @param {boolean} active\r\n * @param {boolean} disabled\r\n * @param {React.ReactNode} icon - Optional leading icon\r\n * @param {React.ReactNode} children\r\n * @param {string} className\r\n */\r\nfunction NavLink({\r\n href,\r\n onClick,\r\n active = false,\r\n disabled = false,\r\n icon,\r\n children,\r\n className = \"\",\r\n ...rest\r\n}) {\r\n const classNames = [\r\n \"ui-navlink\",\r\n active && \"ui-navlink--active\",\r\n disabled && \"ui-navlink--disabled\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const content = (\r\n <>\r\n {icon && <span className=\"ui-navlink-icon\" aria-hidden=\"true\">{icon}</span>}\r\n <span className=\"ui-navlink-text\">{children}</span>\r\n </>\r\n );\r\n\r\n if (href && !disabled) {\r\n return (\r\n <a\r\n href={href}\r\n className={classNames}\r\n onClick={onClick}\r\n aria-current={active ? \"page\" : undefined}\r\n {...rest}\r\n >\r\n {content}\r\n </a>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n className={classNames}\r\n onClick={disabled ? undefined : onClick}\r\n disabled={disabled}\r\n aria-current={active ? \"page\" : undefined}\r\n {...rest}\r\n >\r\n {content}\r\n </button>\r\n );\r\n}\r\n\r\nexport default NavLink;\r\n","import React, { useState, useId } from \"react\";\r\nimport \"./Navbar.css\";\r\n\r\nfunction Navbar({\r\n brand,\r\n nav,\r\n actions,\r\n variant = \"default\",\r\n sticky = false,\r\n dense = false,\r\n /** When true, shows a gradient mark before brand (text logos). Set false for custom image logos. */\r\n brandMark = false,\r\n mobileMenuOpen: controlledMobileOpen,\r\n onMobileMenuChange,\r\n className = \"\",\r\n}) {\r\n const mobilePanelId = useId().replace(/:/g, \"\");\r\n const [internalMobileOpen, setInternalMobileOpen] = useState(false);\r\n const isControlled = controlledMobileOpen !== undefined;\r\n const mobileOpen = isControlled ? controlledMobileOpen : internalMobileOpen;\r\n\r\n const setMobileOpen = (open) => {\r\n if (!isControlled) setInternalMobileOpen(open);\r\n onMobileMenuChange?.(open);\r\n };\r\n\r\n const classNames = [\r\n \"ui-navbar\",\r\n `ui-navbar--${variant}`,\r\n sticky && \"ui-navbar--sticky\",\r\n dense && \"ui-navbar--dense\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <header className={classNames} role=\"banner\">\r\n <div className=\"ui-navbar-inner\">\r\n <div\r\n className={[\"ui-navbar-brand\", brandMark && \"ui-navbar-brand--with-mark\"].filter(Boolean).join(\" \")}\r\n >\r\n {brand}\r\n </div>\r\n <nav className=\"ui-navbar-nav\" aria-label=\"Main\">\r\n {nav}\r\n </nav>\r\n <div className=\"ui-navbar-actions\">{actions}</div>\r\n <button\r\n type=\"button\"\r\n className=\"ui-navbar-menu-toggle\"\r\n aria-expanded={mobileOpen}\r\n aria-controls={`ui-navbar-mobile-${mobilePanelId}`}\r\n aria-label=\"Toggle menu\"\r\n onClick={() => setMobileOpen(!mobileOpen)}\r\n >\r\n <span className=\"ui-navbar-menu-icon\" aria-hidden=\"true\" />\r\n </button>\r\n </div>\r\n <div\r\n id={`ui-navbar-mobile-${mobilePanelId}`}\r\n className=\"ui-navbar-mobile\"\r\n hidden={!mobileOpen}\r\n role=\"navigation\"\r\n aria-label=\"Mobile\"\r\n >\r\n <div className=\"ui-navbar-mobile-inner\">\r\n {nav}\r\n {actions && <div className=\"ui-navbar-mobile-actions\">{actions}</div>}\r\n </div>\r\n </div>\r\n </header>\r\n );\r\n}\r\n\r\nexport default Navbar;\r\n","import React from \"react\";\r\nimport NavLink from \"../NavLink\";\r\nimport \"./Sidebar.css\";\r\n\r\n/**\r\n * Vertical navigation rail for dashboards.\r\n * @param {Array<{ id?: string, label: React.ReactNode, icon?: React.ReactNode, href?: string, active?: boolean, disabled?: boolean, onClick?: function }>} items\r\n * @param {React.ReactNode} header - Top slot (app name / logo); shown on the same row as the collapse control when both are set\r\n * @param {React.ReactNode} footer - Bottom slot\r\n * @param {boolean} collapsed - Narrow rail (icons only if you hide labels in CSS)\r\n * @param {function} onToggleCollapse - Called when collapse button clicked\r\n * @param {boolean} showCollapseButton - Show built-in toggle (aligned to the right of the header row)\r\n * @param {'left'|'right'} position\r\n * @param {'default'|'accent'|'minimal'} variant\r\n * @param {'normal'|'wide'} width - Expanded width\r\n * @param {string} className\r\n */\r\nfunction Sidebar({\r\n items = [],\r\n header,\r\n footer,\r\n collapsed = false,\r\n onToggleCollapse,\r\n showCollapseButton = true,\r\n position = \"left\",\r\n variant = \"default\",\r\n width = \"normal\",\r\n className = \"\",\r\n}) {\r\n const classNames = [\r\n \"ui-sidebar\",\r\n `ui-sidebar--${variant}`,\r\n `ui-sidebar--${position}`,\r\n `ui-sidebar--width-${width}`,\r\n collapsed && \"ui-sidebar--collapsed\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const showCollapse = Boolean(showCollapseButton && onToggleCollapse);\r\n const hasTopBar = Boolean(header || showCollapse);\r\n\r\n return (\r\n <aside className={classNames} aria-label=\"Sidebar navigation\">\r\n {hasTopBar && (\r\n <div\r\n className={[\r\n \"ui-sidebar-top\",\r\n !header && showCollapse && \"ui-sidebar-top--collapse-only\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {header ? <div className=\"ui-sidebar-header\">{header}</div> : null}\r\n {showCollapse ? (\r\n <button\r\n type=\"button\"\r\n className=\"ui-sidebar-collapse-btn\"\r\n onClick={() => onToggleCollapse(!collapsed)}\r\n aria-expanded={!collapsed}\r\n aria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\r\n >\r\n <span className=\"ui-sidebar-collapse-icon\" aria-hidden=\"true\" />\r\n </button>\r\n ) : null}\r\n </div>\r\n )}\r\n <nav className=\"ui-sidebar-nav\" aria-label=\"Sidebar\">\r\n <ul className=\"ui-sidebar-list\">\r\n {items.map((item, i) => (\r\n <li key={item.id ?? i} className=\"ui-sidebar-item\">\r\n <NavLink\r\n href={item.href}\r\n onClick={item.onClick}\r\n active={item.active}\r\n disabled={item.disabled}\r\n icon={item.icon}\r\n >\r\n {item.label}\r\n </NavLink>\r\n </li>\r\n ))}\r\n </ul>\r\n </nav>\r\n {footer && <div className=\"ui-sidebar-footer\">{footer}</div>}\r\n </aside>\r\n );\r\n}\r\n\r\nexport default Sidebar;\r\n"],"names":["Accordion","items","multiple","disabled","variant","className","openState","setOpenState","React","isOpen","i","toggle","item","prev","x","classNames","jsx","itemDisabled","jsxs","Alert","type","children","title","dismissible","onDismiss","rest","dismissed","setDismissed","handleDismiss","AlertDialog","open","onClose","description","confirmLabel","cancelLabel","onConfirm","showCancel","AspectRatio","ratio","Avatar","src","alt","fallback","size","loaded","setLoaded","Badge","Breadcrumb","separator","Button","onClick","leftIcon","rightIcon","ariaLabel","hasLabel","ButtonGroup","Calendar","value","onChange","d","view","setView","daysInMonth","firstDay","days","_","all","v","day","Card","footer","Carousel","index","setIndex","len","child","Chart","data","max","Checkbox","checked","label","idProp","indeterminate","id","inputRef","Collapsible","controlledOpen","defaultOpen","onOpenChange","trigger","internalOpen","setInternalOpen","isControlled","setOpen","Combobox","options","placeholder","useState","filter","setFilter","filtered","o","selected","e","opt","Command","ContextMenu","pos","setPos","ref","handle","el","DashboardPage","navbar","sidebar","sidebarCollapsed","mainWidth","fullHeight","mainClass","DataTable","columns","emptyMessage","col","row","rowIndex","Input","error","errorId","DatePicker","str","Fragment","Dialog","dialogRef","useEffect","handleEscape","handleOverlayClick","Drawer","side","DropdownMenu","align","containerRef","useRef","handleClickOutside","handleItemClick","_a","handleKeyDown","focusable","list","current","idx","_b","_c","_d","_e","Empty","icon","Field","hint","HoverCard","content","InputGroup","left","right","InputOTP","length","refs","arr","handleChange","next","ch","NavLink","href","active","Navbar","brand","nav","actions","sticky","dense","brandMark","controlledMobileOpen","onMobileMenuChange","mobilePanelId","useId","internalMobileOpen","setInternalMobileOpen","mobileOpen","setMobileOpen","Sidebar","header","collapsed","onToggleCollapse","showCollapseButton","position","width","showCollapse","hasTopBar"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tri-ui-library",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Reusable React UI component library with plain CSS — no Tailwind, MUI, or Bootstrap",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": "",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"react",
|
|
10
|
+
"react-components",
|
|
11
|
+
"ui",
|
|
12
|
+
"ui-library",
|
|
13
|
+
"design-system",
|
|
14
|
+
"components",
|
|
15
|
+
"css",
|
|
16
|
+
"vite"
|
|
17
|
+
],
|
|
18
|
+
"main": "./dist/tri-ui-library.umd.cjs",
|
|
19
|
+
"module": "./dist/tri-ui-library.js",
|
|
20
|
+
"exports": {
|
|
21
|
+
".": {
|
|
22
|
+
"import": "./dist/tri-ui-library.js",
|
|
23
|
+
"require": "./dist/tri-ui-library.umd.cjs",
|
|
24
|
+
"default": "./dist/tri-ui-library.js"
|
|
25
|
+
},
|
|
26
|
+
"./styles.css": "./dist/styles.css"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist"
|
|
30
|
+
],
|
|
31
|
+
"sideEffects": [
|
|
32
|
+
"**/*.css",
|
|
33
|
+
"./dist/styles.css"
|
|
34
|
+
],
|
|
35
|
+
"publishConfig": {
|
|
36
|
+
"access": "public"
|
|
37
|
+
},
|
|
38
|
+
"repository": {
|
|
39
|
+
"type": "git",
|
|
40
|
+
"url": "https://github.com/YOUR_USERNAME/tri-ui-library.git"
|
|
41
|
+
},
|
|
42
|
+
"bugs": {
|
|
43
|
+
"url": "https://github.com/YOUR_USERNAME/tri-ui-library/issues"
|
|
44
|
+
},
|
|
45
|
+
"homepage": "https://github.com/YOUR_USERNAME/tri-ui-library#readme",
|
|
46
|
+
"scripts": {
|
|
47
|
+
"dev": "vite",
|
|
48
|
+
"build": "vite build",
|
|
49
|
+
"preview": "vite preview",
|
|
50
|
+
"prepublishOnly": "npm run build"
|
|
51
|
+
},
|
|
52
|
+
"peerDependencies": {
|
|
53
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
54
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"react": "^18.3.1",
|
|
58
|
+
"react-dom": "^18.3.1",
|
|
59
|
+
"react-router-dom": "^6.28.0",
|
|
60
|
+
"vite": "^5.4.0",
|
|
61
|
+
"@vitejs/plugin-react": "^4.3.0"
|
|
62
|
+
},
|
|
63
|
+
"engines": {
|
|
64
|
+
"node": ">=18.0.0"
|
|
65
|
+
}
|
|
66
|
+
}
|