@fabio.caffarello/react-design-system 3.13.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/granular/ui/components/Autocomplete/Autocomplete.js +116 -88
- package/dist/granular/ui/components/Autocomplete/Autocomplete.js.map +1 -1
- package/dist/granular/ui/components/Autocomplete/AutocompleteList.js +57 -47
- package/dist/granular/ui/components/Autocomplete/AutocompleteList.js.map +1 -1
- package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js +21 -20
- package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js.map +1 -1
- package/dist/granular/ui/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/granular/ui/components/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/granular/ui/components/CommandPalette/CommandPalette.js +187 -149
- package/dist/granular/ui/components/CommandPalette/CommandPalette.js.map +1 -1
- package/dist/granular/ui/components/DataGrid/DataGrid.js +92 -92
- package/dist/granular/ui/components/DataGrid/DataGrid.js.map +1 -1
- package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js +154 -139
- package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js.map +1 -1
- package/dist/granular/ui/components/Dialog/AlertDialog.js +73 -40
- package/dist/granular/ui/components/Dialog/AlertDialog.js.map +1 -1
- package/dist/granular/ui/components/Dialog/DialogContent.js +54 -48
- package/dist/granular/ui/components/Dialog/DialogContent.js.map +1 -1
- package/dist/granular/ui/components/Dialog/DialogDescription.js +31 -31
- package/dist/granular/ui/components/Dialog/DialogDescription.js.map +1 -1
- package/dist/granular/ui/components/Dialog/DialogTitle.js +30 -30
- package/dist/granular/ui/components/Dialog/DialogTitle.js.map +1 -1
- package/dist/granular/ui/components/Drawer/Drawer.js.map +1 -1
- package/dist/granular/ui/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/granular/ui/components/EmptyState/EmptyState.js.map +1 -1
- package/dist/granular/ui/components/FileUpload/FileUpload.js.map +1 -1
- package/dist/granular/ui/components/Form/Form.js +38 -37
- package/dist/granular/ui/components/Form/Form.js.map +1 -1
- package/dist/granular/ui/components/Form/FormField.js +28 -26
- package/dist/granular/ui/components/Form/FormField.js.map +1 -1
- package/dist/granular/ui/components/Header/Header.js.map +1 -1
- package/dist/granular/ui/components/Header/components/HeaderActions.js.map +1 -1
- package/dist/granular/ui/components/Header/components/HeaderHamburger.js.map +1 -1
- package/dist/granular/ui/components/Header/components/HeaderLogo.js.map +1 -1
- package/dist/granular/ui/components/Header/components/HeaderMobileMenu.js.map +1 -1
- package/dist/granular/ui/components/Header/components/HeaderNavigation.js.map +1 -1
- package/dist/granular/ui/components/Header/contexts/HeaderContext.js.map +1 -1
- package/dist/granular/ui/components/Menu/Menu.js.map +1 -1
- package/dist/granular/ui/components/Modal/Modal.js +98 -86
- package/dist/granular/ui/components/Modal/Modal.js.map +1 -1
- package/dist/granular/ui/components/MultiSelect/MultiSelect.js +122 -106
- package/dist/granular/ui/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/granular/ui/components/Navigation/Navigation.js.map +1 -1
- package/dist/granular/ui/components/PageHeader/PageHeader.js.map +1 -1
- package/dist/granular/ui/components/Pagination/Pagination.js.map +1 -1
- package/dist/granular/ui/components/Popover/Popover.js.map +1 -1
- package/dist/granular/ui/components/Rating/Rating.js.map +1 -1
- package/dist/granular/ui/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js +82 -64
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js.map +1 -1
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js +30 -29
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js.map +1 -1
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js +37 -35
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js.map +1 -1
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js +57 -57
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js.map +1 -1
- package/dist/granular/ui/components/Stepper/Stepper.js +102 -94
- package/dist/granular/ui/components/Stepper/Stepper.js.map +1 -1
- package/dist/granular/ui/components/Table/Table.js +41 -35
- package/dist/granular/ui/components/Table/Table.js.map +1 -1
- package/dist/granular/ui/components/Table/TableActions/TableActions.js.map +1 -1
- package/dist/granular/ui/components/Table/TableFilters/TableFilters.js +49 -46
- package/dist/granular/ui/components/Table/TableFilters/TableFilters.js.map +1 -1
- package/dist/granular/ui/components/Table/TablePagination/TablePagination.js.map +1 -1
- package/dist/granular/ui/components/Table/TableProvider.js +82 -80
- package/dist/granular/ui/components/Table/TableProvider.js.map +1 -1
- package/dist/granular/ui/components/Table/TableRow.js +57 -53
- package/dist/granular/ui/components/Table/TableRow.js.map +1 -1
- package/dist/granular/ui/components/Table/useColumnResizing.js +53 -53
- package/dist/granular/ui/components/Table/useColumnResizing.js.map +1 -1
- package/dist/granular/ui/components/TimePicker/TimePicker.js +149 -103
- package/dist/granular/ui/components/TimePicker/TimePicker.js.map +1 -1
- package/dist/granular/ui/components/Timeline/Timeline.js.map +1 -1
- package/dist/granular/ui/hooks/useFocusRestore.js +14 -15
- package/dist/granular/ui/hooks/useFocusRestore.js.map +1 -1
- package/dist/granular/ui/primitives/Badge/Badge.js.map +1 -1
- package/dist/granular/ui/primitives/Button/Button.js +86 -104
- package/dist/granular/ui/primitives/Button/Button.js.map +1 -1
- package/dist/granular/ui/primitives/Checkbox/Checkbox.js.map +1 -1
- package/dist/granular/ui/primitives/Chip/Chip.js +91 -71
- package/dist/granular/ui/primitives/Chip/Chip.js.map +1 -1
- package/dist/granular/ui/primitives/ErrorMessage/ErrorMessage.js.map +1 -1
- package/dist/granular/ui/primitives/Input/Input.js.map +1 -1
- package/dist/granular/ui/primitives/Label/Label.js.map +1 -1
- package/dist/granular/ui/primitives/NavLink/NavLink.js.map +1 -1
- package/dist/granular/ui/primitives/Radio/Radio.js.map +1 -1
- package/dist/granular/ui/primitives/Select/Select.js.map +1 -1
- package/dist/granular/ui/primitives/Separator/Separator.js.map +1 -1
- package/dist/granular/ui/primitives/Skeleton/Skeleton.js.map +1 -1
- package/dist/granular/ui/primitives/Slider/Slider.js.map +1 -1
- package/dist/granular/ui/primitives/Spinner/Spinner.js.map +1 -1
- package/dist/granular/ui/primitives/Switch/Switch.js.map +1 -1
- package/dist/granular/ui/primitives/Tooltip/Tooltip.js.map +1 -1
- package/dist/granular/ui/providers/DialogContext.js.map +1 -1
- package/dist/granular/ui/providers/DialogProvider.js +24 -20
- package/dist/granular/ui/providers/DialogProvider.js.map +1 -1
- package/dist/index.cjs +144 -144
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +5896 -5609
- package/dist/index.js.map +1 -1
- package/dist/react-design-system.css +1 -1
- package/dist/server/index.cjs +13 -13
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.js +1050 -789
- package/dist/server/index.js.map +1 -1
- package/dist/ui/components/Autocomplete/Autocomplete.d.ts +21 -0
- package/dist/ui/components/Autocomplete/AutocompleteList.d.ts +4 -0
- package/dist/ui/components/Autocomplete/AutocompleteOption.d.ts +8 -0
- package/dist/ui/components/Breadcrumb/Breadcrumb.d.ts +0 -1
- package/dist/ui/components/ColorPicker/ColorPicker.d.ts +0 -1
- package/dist/ui/components/CommandPalette/CommandPalette.d.ts +0 -1
- package/dist/ui/components/DataGrid/DataGrid.d.ts +0 -1
- package/dist/ui/components/Dialog/DialogContent.d.ts +20 -1
- package/dist/ui/components/Drawer/Drawer.d.ts +0 -1
- package/dist/ui/components/Dropdown/Dropdown.d.ts +0 -1
- package/dist/ui/components/EmptyState/EmptyState.d.ts +0 -1
- package/dist/ui/components/FileUpload/FileUpload.d.ts +0 -1
- package/dist/ui/components/Form/FormField.d.ts +7 -0
- package/dist/ui/components/Header/Header.d.ts +1 -1
- package/dist/ui/components/Header/components/HeaderActions.d.ts +1 -1
- package/dist/ui/components/Header/components/HeaderHamburger.d.ts +1 -1
- package/dist/ui/components/Header/components/HeaderLogo.d.ts +1 -1
- package/dist/ui/components/Header/components/HeaderMobileMenu.d.ts +1 -1
- package/dist/ui/components/Header/components/HeaderNavigation.d.ts +1 -1
- package/dist/ui/components/Header/contexts/HeaderContext.d.ts +1 -1
- package/dist/ui/components/Menu/Menu.d.ts +0 -1
- package/dist/ui/components/Modal/Modal.d.ts +1 -2
- package/dist/ui/components/Navigation/Navigation.d.ts +1 -1
- package/dist/ui/components/PageHeader/PageHeader.d.ts +1 -1
- package/dist/ui/components/Pagination/Pagination.d.ts +0 -1
- package/dist/ui/components/Popover/Popover.d.ts +0 -1
- package/dist/ui/components/Rating/Rating.d.ts +0 -1
- package/dist/ui/components/SearchInput/SearchInput.d.ts +0 -1
- package/dist/ui/components/Stepper/Stepper.d.ts +0 -1
- package/dist/ui/components/Table/TableActions/TableActions.d.ts +0 -1
- package/dist/ui/components/Table/TableFilters/TableFilters.d.ts +0 -1
- package/dist/ui/components/Table/TablePagination/TablePagination.d.ts +0 -1
- package/dist/ui/components/TimePicker/TimePicker.d.ts +0 -1
- package/dist/ui/components/Timeline/Timeline.d.ts +0 -1
- package/dist/ui/primitives/Checkbox/Checkbox.d.ts +0 -1
- package/dist/ui/primitives/Chip/Chip.d.ts +21 -0
- package/dist/ui/primitives/ErrorMessage/ErrorMessage.d.ts +0 -1
- package/dist/ui/primitives/Input/Input.d.ts +0 -1
- package/dist/ui/primitives/Label/Label.d.ts +0 -1
- package/dist/ui/primitives/NavLink/NavLink.d.ts +1 -1
- package/dist/ui/primitives/Radio/Radio.d.ts +0 -1
- package/dist/ui/primitives/Select/Select.d.ts +0 -1
- package/dist/ui/primitives/Skeleton/Skeleton.d.ts +0 -1
- package/dist/ui/primitives/Slider/Slider.d.ts +0 -1
- package/dist/ui/primitives/Switch/Switch.d.ts +0 -1
- package/dist/ui/primitives/Tooltip/Tooltip.d.ts +0 -1
- package/dist/ui/providers/DialogContext.d.ts +8 -0
- package/dist/ui/server.d.ts +2 -0
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Breadcrumb.js","sources":["../../../../../src/ui/components/Breadcrumb/Breadcrumb.tsx"],"sourcesContent":["\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils\";\nimport {\n getSpacingClass,\n getTypographySize,\n getTypographyWeight,\n} from \"../../tokens\";\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n}\n\ninterface Props extends HTMLAttributes<HTMLElement> {\n items: BreadcrumbItem[];\n separator?: string;\n}\n\n/**\n * Breadcrumb Component\n *\n * A breadcrumb navigation component for hierarchical navigation.\n
|
|
1
|
+
{"version":3,"file":"Breadcrumb.js","sources":["../../../../../src/ui/components/Breadcrumb/Breadcrumb.tsx"],"sourcesContent":["\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils\";\nimport {\n getSpacingClass,\n getTypographySize,\n getTypographyWeight,\n} from \"../../tokens\";\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n}\n\ninterface Props extends HTMLAttributes<HTMLElement> {\n items: BreadcrumbItem[];\n separator?: string;\n}\n\n/**\n * Breadcrumb Component\n *\n * A breadcrumb navigation component for hierarchical navigation.\n *\n * @example\n * ```tsx\n * <Breadcrumb\n * items={[\n * { label: \"Home\", href: \"/\" },\n * { label: \"Epics\", href: \"/epics\" },\n * { label: \"Epic Details\" }\n * ]}\n * />\n * ```\n */\nexport default function Breadcrumb({\n items,\n separator = \"/\",\n className = \"\",\n ...props\n}: Props) {\n const baseClasses = [\n \"flex\",\n \"items-center\",\n getSpacingClass(\"sm\", \"space-x\"),\n getTypographySize(\"bodySmall\"),\n ];\n\n const classes = cn(...baseClasses, className);\n\n return (\n <nav aria-label=\"Breadcrumb\" className={classes} {...props}>\n <ol\n className={cn(\"flex\", \"items-center\", getSpacingClass(\"sm\", \"space-x\"))}\n >\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n\n return (\n <li key={index} className=\"flex items-center\">\n {index > 0 && (\n <span\n className={cn(\n getSpacingClass(\"sm\", \"mx\"),\n \"text-fg-tertiary\",\n )}\n aria-hidden=\"true\"\n >\n {separator}\n </span>\n )}\n {isLast ? (\n <span\n className={cn(\n \"text-fg-primary\",\n getTypographyWeight(\"label\"),\n )}\n aria-current=\"page\"\n >\n {item.label}\n </span>\n ) : item.href ? (\n <a\n href={item.href}\n className={cn(\n \"inline-flex\",\n \"items-center\",\n getSpacingClass(\"xs\", \"px\"),\n getSpacingClass(\"xs\", \"pt\"),\n \"border-b-2\",\n \"border-transparent\",\n getTypographySize(\"bodySmall\"),\n getTypographyWeight(\"label\"),\n \"transition-colors\",\n \"text-fg-secondary\",\n \"hover:border-line-emphasis\",\n \"hover:text-fg-primary\",\n )}\n >\n {item.label}\n </a>\n ) : (\n <span className=\"text-fg-secondary\">{item.label}</span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n"],"names":["Breadcrumb","_a","_b","items","separator","className","props","__objRest","baseClasses","getSpacingClass","getTypographySize","classes","cn","__spreadProps","__spreadValues","jsx","item","index","isLast","jsxs","getTypographyWeight"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,SAAwBA,EAAWC,GAKzB;AALyB,MAAAC,IAAAD,GACjC;AAAA,WAAAE;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,WAAAC,IAAY;AAAA,MAHqBH,GAI9BI,IAAAC,EAJ8BL,GAI9B;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAMM,IAAc;AAAA,IAClB;AAAA,IACA;AAAA,IACAC,EAAgB,MAAM,SAAS;AAAA,IAC/BC,EAAkB,WAAW;AAAA,EAAA,GAGzBC,IAAUC,EAAG,GAAGJ,GAAaH,CAAS;AAE5C,2BACG,OAAAQ,EAAAC,EAAA,EAAI,cAAW,cAAa,WAAWH,KAAaL,IAApD,EACC,UAAA,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWH,EAAG,QAAQ,gBAAgBH,EAAgB,MAAM,SAAS,CAAC;AAAA,MAErE,UAAAN,EAAM,IAAI,CAACa,GAAMC,MAAU;AAC1B,cAAMC,IAASD,MAAUd,EAAM,SAAS;AAExC,eACE,gBAAAgB,EAAC,MAAA,EAAe,WAAU,qBACvB,UAAA;AAAA,UAAAF,IAAQ,KACP,gBAAAF;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWH;AAAA,gBACTH,EAAgB,MAAM,IAAI;AAAA,gBAC1B;AAAA,cAAA;AAAA,cAEF,eAAY;AAAA,cAEX,UAAAL;AAAA,YAAA;AAAA,UAAA;AAAA,UAGJc,IACC,gBAAAH;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWH;AAAA,gBACT;AAAA,gBACAQ,EAAoB,OAAO;AAAA,cAAA;AAAA,cAE7B,gBAAa;AAAA,cAEZ,UAAAJ,EAAK;AAAA,YAAA;AAAA,UAAA,IAENA,EAAK,OACP,gBAAAD;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAMC,EAAK;AAAA,cACX,WAAWJ;AAAA,gBACT;AAAA,gBACA;AAAA,gBACAH,EAAgB,MAAM,IAAI;AAAA,gBAC1BA,EAAgB,MAAM,IAAI;AAAA,gBAC1B;AAAA,gBACA;AAAA,gBACAC,EAAkB,WAAW;AAAA,gBAC7BU,EAAoB,OAAO;AAAA,gBAC3B;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cAAA;AAAA,cAGD,UAAAJ,EAAK;AAAA,YAAA;AAAA,UAAA,IAGR,gBAAAD,EAAC,QAAA,EAAK,WAAU,qBAAqB,YAAK,MAAA,CAAM;AAAA,QAAA,EAAA,GA3C3CE,CA6CT;AAAA,MAEJ,CAAC;AAAA,IAAA;AAAA,EAAA,IAEL;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorPicker.js","sources":["../../../../../src/ui/components/ColorPicker/ColorPicker.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useEffect, type ChangeEvent } from \"react\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getShadowClass } from \"../../tokens/shadows\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport Input from \"../../primitives/Input/Input\";\nimport Popover from \"../Popover/Popover\";\n\nexport type ColorFormat = \"hex\" | \"rgb\" | \"hsl\";\n\nexport interface ColorPickerProps {\n value?: string; // Hex color (e.g., \"#ff0000\")\n defaultValue?: string;\n format?: ColorFormat;\n onChange?: (value: string) => void;\n presets?: string[];\n showInput?: boolean;\n disabled?: boolean;\n label?: string;\n className?: string;\n}\n\n/**\n * ColorPicker Component\n *\n * A color picker component for selecting colors.\n * Supports hex, rgb, and hsl formats with presets.\n * Follows Atomic Design principles as a Molecule component.\n *\n * @example\n * ```tsx\n * <ColorPicker\n * value=\"#ff0000\"\n * onChange={(color) => console.log(color)}\n * />\n * ```\n */\nexport default function ColorPicker({\n value: controlledValue,\n defaultValue = \"#000000\",\n format: _format = \"hex\",\n onChange,\n presets,\n showInput = true,\n disabled = false,\n label,\n className = \"\",\n}: ColorPickerProps) {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [rgb, setRgb] = useState({ r: 0, g: 0, b: 0 });\n\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n\n // Convert hex to RGB\n const hexToRgb = (hex: string) => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : { r: 0, g: 0, b: 0 };\n };\n\n // Convert RGB to hex\n const rgbToHex = (r: number, g: number, b: number) => {\n return (\n \"#\" +\n [r, g, b]\n .map((x) => {\n const hex = x.toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n })\n .join(\"\")\n );\n };\n\n // Update RGB when value changes\n useEffect(() => {\n if (currentValue) {\n const rgbValue = hexToRgb(currentValue);\n setRgb(rgbValue);\n }\n }, [currentValue]);\n\n const handleHexChange = (e: ChangeEvent<HTMLInputElement>) => {\n const hex = e.target.value;\n if (/^#[0-9A-F]{6}$/i.test(hex) || hex === \"\") {\n if (!isControlled) {\n setInternalValue(hex);\n }\n onChange?.(hex);\n if (hex) {\n setRgb(hexToRgb(hex));\n }\n }\n };\n\n const handleRgbChange = (component: \"r\" | \"g\" | \"b\", val: number) => {\n const newRgb = { ...rgb, [component]: Math.max(0, Math.min(255, val)) };\n setRgb(newRgb);\n const hex = rgbToHex(newRgb.r, newRgb.g, newRgb.b);\n if (!isControlled) {\n setInternalValue(hex);\n }\n onChange?.(hex);\n };\n\n const defaultPresets = [\n \"#000000\",\n \"#ffffff\",\n \"#ff0000\",\n \"#00ff00\",\n \"#0000ff\",\n \"#ffff00\",\n \"#ff00ff\",\n \"#00ffff\",\n \"#808080\",\n \"#ffa500\",\n ];\n\n const colorPresets = presets || defaultPresets;\n\n const colorPickerContent = (\n <div className={`${getSpacingClass(\"base\", \"p\")} min-w-[280px]`}>\n {/* Color Preview */}\n <div\n className={`\n w-full\n h-32\n ${getRadiusClass(\"md\")}\n ${getShadowClass(\"sm\")}\n ${getSpacingClass(\"base\", \"mb\")}\n border\n border-line-default\n `}\n style={{ backgroundColor: currentValue }}\n />\n\n {/* RGB Sliders */}\n <div\n className={`${getSpacingClass(\"md\", \"space-y\")} ${getSpacingClass(\"base\", \"mb\")}`}\n >\n <div>\n <label\n className={`block text-xs font-medium text-fg-secondary ${getSpacingClass(\"xs\", \"mb\")}`}\n >\n Red: {rgb.r}\n </label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"255\"\n value={rgb.r}\n onChange={(e) => handleRgbChange(\"r\", parseInt(e.target.value))}\n disabled={disabled}\n className=\"w-full\"\n />\n </div>\n <div>\n <label\n className={`block text-xs font-medium text-fg-secondary ${getSpacingClass(\"xs\", \"mb\")}`}\n >\n Green: {rgb.g}\n </label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"255\"\n value={rgb.g}\n onChange={(e) => handleRgbChange(\"g\", parseInt(e.target.value))}\n disabled={disabled}\n className=\"w-full\"\n />\n </div>\n <div>\n <label\n className={`block text-xs font-medium text-fg-secondary ${getSpacingClass(\"xs\", \"mb\")}`}\n >\n Blue: {rgb.b}\n </label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"255\"\n value={rgb.b}\n onChange={(e) => handleRgbChange(\"b\", parseInt(e.target.value))}\n disabled={disabled}\n className=\"w-full\"\n />\n </div>\n </div>\n\n {/* Hex Input */}\n {showInput && (\n <div className={getSpacingClass(\"base\", \"mb\")}>\n <Input\n label=\"Hex\"\n value={currentValue}\n onChange={handleHexChange}\n disabled={disabled}\n placeholder=\"#000000\"\n className=\"font-mono\"\n />\n </div>\n )}\n\n {/* Color Presets */}\n {colorPresets.length > 0 && (\n <div>\n <label\n className={`block text-xs font-medium text-fg-secondary ${getSpacingClass(\"sm\", \"mb\")}`}\n >\n Presets\n </label>\n <div className={`grid grid-cols-10 ${getSpacingClass(\"xs\", \"gap\")}`}>\n {colorPresets.map((color, index) => (\n <button\n key={index}\n type=\"button\"\n onClick={() => {\n if (!disabled) {\n if (!isControlled) {\n setInternalValue(color);\n }\n onChange?.(color);\n setRgb(hexToRgb(color));\n }\n }}\n disabled={disabled}\n className={`\n w-6\n h-6\n ${getRadiusClass(\"sm\")}\n border\n border-line-emphasis\n hover:scale-110\n ${getShadowClass(\"sm\")}\n ${currentValue.toLowerCase() === color.toLowerCase() ? \"ring-2 ring-offset-1 ring-line-brand\" : \"\"}\n `}\n style={{ backgroundColor: color }}\n aria-label={`Select color ${color}`}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n );\n\n return (\n <div className={className}>\n <Popover\n trigger={\n <div className={`flex items-center ${getSpacingClass(\"sm\", \"gap\")}`}>\n {label && (\n <label className=\"text-sm font-medium text-fg-secondary\">\n {label}\n </label>\n )}\n <div\n className={`\n w-10\n h-10\n ${getRadiusClass(\"md\")}\n border\n border-line-emphasis\n ${getShadowClass(\"sm\")}\n cursor-pointer\n ${disabled ? \"opacity-50 cursor-not-allowed\" : \"\"}\n `}\n style={{ backgroundColor: currentValue }}\n />\n {showInput && (\n <Input\n value={currentValue}\n onChange={handleHexChange}\n disabled={disabled}\n placeholder=\"#000000\"\n className=\"w-24 font-mono\"\n />\n )}\n </div>\n }\n placement=\"bottom-start\"\n showCloseButton\n title=\"Pick a Color\"\n >\n {colorPickerContent}\n </Popover>\n </div>\n );\n}\n"],"names":["ColorPicker","controlledValue","defaultValue","_format","onChange","presets","showInput","disabled","label","className","internalValue","setInternalValue","useState","rgb","setRgb","isControlled","currentValue","hexToRgb","hex","result","rgbToHex","r","g","b","x","useEffect","rgbValue","handleHexChange","handleRgbChange","component","val","newRgb","__spreadProps","__spreadValues","colorPresets","colorPickerContent","getSpacingClass","jsx","getRadiusClass","getShadowClass","jsxs","Input","color","index","Popover"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ColorPicker.js","sources":["../../../../../src/ui/components/ColorPicker/ColorPicker.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useEffect, type ChangeEvent } from \"react\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getShadowClass } from \"../../tokens/shadows\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport Input from \"../../primitives/Input/Input\";\nimport Popover from \"../Popover/Popover\";\n\nexport type ColorFormat = \"hex\" | \"rgb\" | \"hsl\";\n\nexport interface ColorPickerProps {\n value?: string; // Hex color (e.g., \"#ff0000\")\n defaultValue?: string;\n format?: ColorFormat;\n onChange?: (value: string) => void;\n presets?: string[];\n showInput?: boolean;\n disabled?: boolean;\n label?: string;\n className?: string;\n}\n\n/**\n * ColorPicker Component\n *\n * A color picker component for selecting colors.\n * Supports hex, rgb, and hsl formats with presets.\n *\n * @example\n * ```tsx\n * <ColorPicker\n * value=\"#ff0000\"\n * onChange={(color) => console.log(color)}\n * />\n * ```\n */\nexport default function ColorPicker({\n value: controlledValue,\n defaultValue = \"#000000\",\n format: _format = \"hex\",\n onChange,\n presets,\n showInput = true,\n disabled = false,\n label,\n className = \"\",\n}: ColorPickerProps) {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [rgb, setRgb] = useState({ r: 0, g: 0, b: 0 });\n\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n\n // Convert hex to RGB\n const hexToRgb = (hex: string) => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : { r: 0, g: 0, b: 0 };\n };\n\n // Convert RGB to hex\n const rgbToHex = (r: number, g: number, b: number) => {\n return (\n \"#\" +\n [r, g, b]\n .map((x) => {\n const hex = x.toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n })\n .join(\"\")\n );\n };\n\n // Update RGB when value changes\n useEffect(() => {\n if (currentValue) {\n const rgbValue = hexToRgb(currentValue);\n setRgb(rgbValue);\n }\n }, [currentValue]);\n\n const handleHexChange = (e: ChangeEvent<HTMLInputElement>) => {\n const hex = e.target.value;\n if (/^#[0-9A-F]{6}$/i.test(hex) || hex === \"\") {\n if (!isControlled) {\n setInternalValue(hex);\n }\n onChange?.(hex);\n if (hex) {\n setRgb(hexToRgb(hex));\n }\n }\n };\n\n const handleRgbChange = (component: \"r\" | \"g\" | \"b\", val: number) => {\n const newRgb = { ...rgb, [component]: Math.max(0, Math.min(255, val)) };\n setRgb(newRgb);\n const hex = rgbToHex(newRgb.r, newRgb.g, newRgb.b);\n if (!isControlled) {\n setInternalValue(hex);\n }\n onChange?.(hex);\n };\n\n const defaultPresets = [\n \"#000000\",\n \"#ffffff\",\n \"#ff0000\",\n \"#00ff00\",\n \"#0000ff\",\n \"#ffff00\",\n \"#ff00ff\",\n \"#00ffff\",\n \"#808080\",\n \"#ffa500\",\n ];\n\n const colorPresets = presets || defaultPresets;\n\n const colorPickerContent = (\n <div className={`${getSpacingClass(\"base\", \"p\")} min-w-[280px]`}>\n {/* Color Preview */}\n <div\n className={`\n w-full\n h-32\n ${getRadiusClass(\"md\")}\n ${getShadowClass(\"sm\")}\n ${getSpacingClass(\"base\", \"mb\")}\n border\n border-line-default\n `}\n style={{ backgroundColor: currentValue }}\n />\n\n {/* RGB Sliders */}\n <div\n className={`${getSpacingClass(\"md\", \"space-y\")} ${getSpacingClass(\"base\", \"mb\")}`}\n >\n <div>\n <label\n className={`block text-xs font-medium text-fg-secondary ${getSpacingClass(\"xs\", \"mb\")}`}\n >\n Red: {rgb.r}\n </label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"255\"\n value={rgb.r}\n onChange={(e) => handleRgbChange(\"r\", parseInt(e.target.value))}\n disabled={disabled}\n className=\"w-full\"\n />\n </div>\n <div>\n <label\n className={`block text-xs font-medium text-fg-secondary ${getSpacingClass(\"xs\", \"mb\")}`}\n >\n Green: {rgb.g}\n </label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"255\"\n value={rgb.g}\n onChange={(e) => handleRgbChange(\"g\", parseInt(e.target.value))}\n disabled={disabled}\n className=\"w-full\"\n />\n </div>\n <div>\n <label\n className={`block text-xs font-medium text-fg-secondary ${getSpacingClass(\"xs\", \"mb\")}`}\n >\n Blue: {rgb.b}\n </label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"255\"\n value={rgb.b}\n onChange={(e) => handleRgbChange(\"b\", parseInt(e.target.value))}\n disabled={disabled}\n className=\"w-full\"\n />\n </div>\n </div>\n\n {/* Hex Input */}\n {showInput && (\n <div className={getSpacingClass(\"base\", \"mb\")}>\n <Input\n label=\"Hex\"\n value={currentValue}\n onChange={handleHexChange}\n disabled={disabled}\n placeholder=\"#000000\"\n className=\"font-mono\"\n />\n </div>\n )}\n\n {/* Color Presets */}\n {colorPresets.length > 0 && (\n <div>\n <label\n className={`block text-xs font-medium text-fg-secondary ${getSpacingClass(\"sm\", \"mb\")}`}\n >\n Presets\n </label>\n <div className={`grid grid-cols-10 ${getSpacingClass(\"xs\", \"gap\")}`}>\n {colorPresets.map((color, index) => (\n <button\n key={index}\n type=\"button\"\n onClick={() => {\n if (!disabled) {\n if (!isControlled) {\n setInternalValue(color);\n }\n onChange?.(color);\n setRgb(hexToRgb(color));\n }\n }}\n disabled={disabled}\n className={`\n w-6\n h-6\n ${getRadiusClass(\"sm\")}\n border\n border-line-emphasis\n hover:scale-110\n ${getShadowClass(\"sm\")}\n ${currentValue.toLowerCase() === color.toLowerCase() ? \"ring-2 ring-offset-1 ring-line-brand\" : \"\"}\n `}\n style={{ backgroundColor: color }}\n aria-label={`Select color ${color}`}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n );\n\n return (\n <div className={className}>\n <Popover\n trigger={\n <div className={`flex items-center ${getSpacingClass(\"sm\", \"gap\")}`}>\n {label && (\n <label className=\"text-sm font-medium text-fg-secondary\">\n {label}\n </label>\n )}\n <div\n className={`\n w-10\n h-10\n ${getRadiusClass(\"md\")}\n border\n border-line-emphasis\n ${getShadowClass(\"sm\")}\n cursor-pointer\n ${disabled ? \"opacity-50 cursor-not-allowed\" : \"\"}\n `}\n style={{ backgroundColor: currentValue }}\n />\n {showInput && (\n <Input\n value={currentValue}\n onChange={handleHexChange}\n disabled={disabled}\n placeholder=\"#000000\"\n className=\"w-24 font-mono\"\n />\n )}\n </div>\n }\n placement=\"bottom-start\"\n showCloseButton\n title=\"Pick a Color\"\n >\n {colorPickerContent}\n </Popover>\n </div>\n );\n}\n"],"names":["ColorPicker","controlledValue","defaultValue","_format","onChange","presets","showInput","disabled","label","className","internalValue","setInternalValue","useState","rgb","setRgb","isControlled","currentValue","hexToRgb","hex","result","rgbToHex","r","g","b","x","useEffect","rgbValue","handleHexChange","handleRgbChange","component","val","newRgb","__spreadProps","__spreadValues","colorPresets","colorPickerContent","getSpacingClass","jsx","getRadiusClass","getShadowClass","jsxs","Input","color","index","Popover"],"mappings":"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"}
|
|
@@ -1,80 +1,90 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
3
|
-
import { useState as
|
|
4
|
-
import { createPortal as
|
|
5
|
-
import { Search as
|
|
6
|
-
import { getSpacingClass as
|
|
7
|
-
import { getRadiusClass as
|
|
8
|
-
import { getShadowClass as
|
|
9
|
-
import { getZIndexClass as
|
|
10
|
-
import { getAnimationClass as
|
|
11
|
-
import
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
2
|
+
import { jsx as a, jsxs as i, Fragment as Z } from "react/jsx-runtime";
|
|
3
|
+
import { useState as $, useRef as g, useId as _, useCallback as z, useEffect as h } from "react";
|
|
4
|
+
import { createPortal as B } from "react-dom";
|
|
5
|
+
import { Search as G, Command as H } from "lucide-react";
|
|
6
|
+
import { getSpacingClass as s } from "../../tokens/spacing.js";
|
|
7
|
+
import { getRadiusClass as E } from "../../tokens/radius.js";
|
|
8
|
+
import { getShadowClass as J } from "../../tokens/shadows.js";
|
|
9
|
+
import { getZIndexClass as R } from "../../tokens/z-index.js";
|
|
10
|
+
import { getAnimationClass as w } from "../../tokens/animations.js";
|
|
11
|
+
import W from "../../primitives/Input/Input.js";
|
|
12
|
+
import { useFocusTrap as X } from "../../hooks/useFocusTrap.js";
|
|
13
|
+
import { useFocusRestore as Y } from "../../hooks/useFocusRestore.js";
|
|
14
|
+
function ue({
|
|
15
|
+
items: O,
|
|
16
|
+
open: k,
|
|
17
|
+
defaultOpen: P = !1,
|
|
18
|
+
onOpenChange: f,
|
|
19
|
+
trigger: C,
|
|
20
|
+
placeholder: I = "Type a command or search...",
|
|
21
|
+
emptyMessage: T = "No commands found",
|
|
20
22
|
className: A = ""
|
|
21
23
|
}) {
|
|
22
|
-
const [
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
const [F, q] = $(P), [u, N] = $(""), [n, p] = $(0), D = g(null), b = g(null), S = g(null), x = _(), y = k !== void 0, o = y ? k : F;
|
|
25
|
+
Y(o), X(S, o);
|
|
26
|
+
const v = O.filter((e) => {
|
|
27
|
+
var l, j;
|
|
28
|
+
if (!u) return !0;
|
|
29
|
+
const t = u.toLowerCase(), r = e.label.toLowerCase().includes(t), L = (l = e.description) == null ? void 0 : l.toLowerCase().includes(t), m = (j = e.keywords) == null ? void 0 : j.some(
|
|
30
|
+
(U) => U.toLowerCase().includes(t)
|
|
27
31
|
);
|
|
28
|
-
return
|
|
29
|
-
})
|
|
32
|
+
return r || L || m;
|
|
33
|
+
}).reduce(
|
|
30
34
|
(e, t) => {
|
|
31
|
-
const
|
|
32
|
-
return e[
|
|
35
|
+
const r = t.group || "Other";
|
|
36
|
+
return e[r] || (e[r] = []), e[r].push(t), e;
|
|
33
37
|
},
|
|
34
38
|
{}
|
|
35
|
-
), c =
|
|
39
|
+
), d = Object.values(v).flat(), M = o && d[n] ? `${x}-option-${n}` : void 0, c = z(
|
|
36
40
|
(e) => {
|
|
37
|
-
|
|
38
|
-
var t;
|
|
39
|
-
return (t = k.current) == null ? void 0 : t.focus();
|
|
40
|
-
}, 0));
|
|
41
|
+
y || q(e), f == null || f(e), e && (N(""), p(0));
|
|
41
42
|
},
|
|
42
|
-
[
|
|
43
|
-
)
|
|
43
|
+
[y, f]
|
|
44
|
+
);
|
|
45
|
+
h(() => {
|
|
46
|
+
if (!o) return;
|
|
47
|
+
const e = setTimeout(() => {
|
|
48
|
+
var t;
|
|
49
|
+
return (t = D.current) == null ? void 0 : t.focus();
|
|
50
|
+
}, 0);
|
|
51
|
+
return () => clearTimeout(e);
|
|
52
|
+
}, [o]);
|
|
53
|
+
const K = (e) => {
|
|
44
54
|
e.action(), c(!1);
|
|
45
|
-
},
|
|
55
|
+
}, Q = (e) => {
|
|
46
56
|
if (e.key === "Escape") {
|
|
47
57
|
c(!1);
|
|
48
58
|
return;
|
|
49
59
|
}
|
|
50
60
|
if (e.key === "ArrowDown") {
|
|
51
|
-
e.preventDefault(),
|
|
61
|
+
e.preventDefault(), p((t) => Math.min(t + 1, d.length - 1));
|
|
52
62
|
return;
|
|
53
63
|
}
|
|
54
64
|
if (e.key === "ArrowUp") {
|
|
55
|
-
e.preventDefault(),
|
|
65
|
+
e.preventDefault(), p((t) => Math.max(t - 1, 0));
|
|
56
66
|
return;
|
|
57
67
|
}
|
|
58
68
|
if (e.key === "Enter") {
|
|
59
|
-
e.preventDefault(),
|
|
69
|
+
e.preventDefault(), d[n] && K(d[n]);
|
|
60
70
|
return;
|
|
61
71
|
}
|
|
62
72
|
};
|
|
63
|
-
|
|
64
|
-
if (
|
|
65
|
-
const e =
|
|
66
|
-
`[data-index="${
|
|
73
|
+
h(() => {
|
|
74
|
+
if (b.current && n >= 0) {
|
|
75
|
+
const e = b.current.querySelector(
|
|
76
|
+
`[data-index="${n}"]`
|
|
67
77
|
);
|
|
68
78
|
e && typeof e.scrollIntoView == "function" && e.scrollIntoView({
|
|
69
79
|
block: "nearest",
|
|
70
80
|
behavior: "smooth"
|
|
71
81
|
});
|
|
72
82
|
}
|
|
73
|
-
}, [
|
|
74
|
-
|
|
75
|
-
}, [
|
|
83
|
+
}, [n]), h(() => {
|
|
84
|
+
p(0);
|
|
85
|
+
}, [u]), h(() => {
|
|
76
86
|
const e = (t) => {
|
|
77
|
-
(t.metaKey || t.ctrlKey) && t.key === "k" && (t.preventDefault(), c(!
|
|
87
|
+
(t.metaKey || t.ctrlKey) && t.key === "k" && (t.preventDefault(), c(!o));
|
|
78
88
|
};
|
|
79
89
|
return document.addEventListener(
|
|
80
90
|
"keydown",
|
|
@@ -83,179 +93,207 @@ function ne({
|
|
|
83
93
|
"keydown",
|
|
84
94
|
e
|
|
85
95
|
);
|
|
86
|
-
}, [
|
|
87
|
-
const
|
|
96
|
+
}, [o, c]);
|
|
97
|
+
const V = o ? /* @__PURE__ */ a(
|
|
88
98
|
"div",
|
|
89
99
|
{
|
|
90
100
|
className: `
|
|
91
101
|
fixed
|
|
92
102
|
inset-0
|
|
93
|
-
${
|
|
103
|
+
${R("modal-backdrop")}
|
|
94
104
|
bg-scrim
|
|
95
105
|
flex
|
|
96
106
|
items-start
|
|
97
107
|
justify-center
|
|
98
108
|
pt-[20vh]
|
|
99
|
-
${
|
|
109
|
+
${w("base")}
|
|
100
110
|
`,
|
|
101
111
|
onClick: () => c(!1),
|
|
102
|
-
children: /* @__PURE__ */
|
|
112
|
+
children: /* @__PURE__ */ i(
|
|
103
113
|
"div",
|
|
104
114
|
{
|
|
115
|
+
ref: S,
|
|
116
|
+
role: "dialog",
|
|
117
|
+
"aria-modal": "true",
|
|
118
|
+
"aria-label": "Command palette",
|
|
105
119
|
className: `
|
|
106
120
|
w-full
|
|
107
121
|
max-w-2xl
|
|
108
|
-
${
|
|
122
|
+
${s("base", "mx")}
|
|
109
123
|
bg-surface-overlay
|
|
110
|
-
${
|
|
111
|
-
${
|
|
112
|
-
${
|
|
113
|
-
${
|
|
124
|
+
${E("lg")}
|
|
125
|
+
${J("xl")}
|
|
126
|
+
${R("modal")}
|
|
127
|
+
${w("base")}
|
|
114
128
|
${A}
|
|
115
129
|
`,
|
|
116
130
|
onClick: (e) => e.stopPropagation(),
|
|
117
131
|
children: [
|
|
118
|
-
/* @__PURE__ */
|
|
132
|
+
/* @__PURE__ */ i(
|
|
119
133
|
"div",
|
|
120
134
|
{
|
|
121
135
|
className: `
|
|
122
136
|
flex
|
|
123
137
|
items-center
|
|
124
|
-
${
|
|
125
|
-
${
|
|
138
|
+
${s("md", "gap")}
|
|
139
|
+
${s("base", "p")}
|
|
126
140
|
border-b
|
|
127
141
|
border-line-default
|
|
128
142
|
`,
|
|
129
143
|
children: [
|
|
130
|
-
/* @__PURE__ */
|
|
131
|
-
/* @__PURE__ */
|
|
132
|
-
|
|
144
|
+
/* @__PURE__ */ a(G, { className: "h-5 w-5 text-fg-secondary" }),
|
|
145
|
+
/* @__PURE__ */ a(
|
|
146
|
+
W,
|
|
133
147
|
{
|
|
134
|
-
ref:
|
|
135
|
-
value:
|
|
136
|
-
onChange: (e) =>
|
|
137
|
-
onKeyDown:
|
|
138
|
-
placeholder:
|
|
148
|
+
ref: D,
|
|
149
|
+
value: u,
|
|
150
|
+
onChange: (e) => N(e.target.value),
|
|
151
|
+
onKeyDown: Q,
|
|
152
|
+
placeholder: I,
|
|
139
153
|
className: "flex-1 border-0 focus:ring-0",
|
|
140
|
-
|
|
154
|
+
role: "combobox",
|
|
155
|
+
"aria-expanded": o,
|
|
156
|
+
"aria-controls": x,
|
|
157
|
+
"aria-activedescendant": M,
|
|
158
|
+
"aria-autocomplete": "list",
|
|
159
|
+
"aria-label": I
|
|
141
160
|
}
|
|
142
161
|
),
|
|
143
|
-
/* @__PURE__ */
|
|
162
|
+
/* @__PURE__ */ i(
|
|
144
163
|
"div",
|
|
145
164
|
{
|
|
146
165
|
className: `
|
|
147
166
|
flex
|
|
148
167
|
items-center
|
|
149
|
-
${
|
|
150
|
-
${
|
|
151
|
-
${
|
|
152
|
-
${
|
|
168
|
+
${s("xs", "gap")}
|
|
169
|
+
${s("sm", "px")}
|
|
170
|
+
${s("xs", "py")}
|
|
171
|
+
${E("sm")}
|
|
153
172
|
bg-surface-muted
|
|
154
173
|
text-xs
|
|
155
174
|
text-fg-tertiary
|
|
156
175
|
`,
|
|
157
176
|
children: [
|
|
158
|
-
/* @__PURE__ */
|
|
159
|
-
/* @__PURE__ */
|
|
177
|
+
/* @__PURE__ */ a(H, { className: "h-3 w-3" }),
|
|
178
|
+
/* @__PURE__ */ a("span", { children: "K" })
|
|
160
179
|
]
|
|
161
180
|
}
|
|
162
181
|
)
|
|
163
182
|
]
|
|
164
183
|
}
|
|
165
184
|
),
|
|
166
|
-
/* @__PURE__ */
|
|
185
|
+
/* @__PURE__ */ a(
|
|
167
186
|
"div",
|
|
168
187
|
{
|
|
169
|
-
ref:
|
|
188
|
+
ref: b,
|
|
189
|
+
id: x,
|
|
190
|
+
role: "listbox",
|
|
191
|
+
"aria-label": "Commands",
|
|
170
192
|
className: `
|
|
171
193
|
max-h-96
|
|
172
194
|
overflow-y-auto
|
|
173
|
-
${
|
|
195
|
+
${s("sm", "py")}
|
|
174
196
|
`,
|
|
175
|
-
children: Object.
|
|
197
|
+
children: Object.entries(v).map(([e, t]) => /* @__PURE__ */ i(
|
|
176
198
|
"div",
|
|
177
199
|
{
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
"div",
|
|
189
|
-
{
|
|
190
|
-
className: `
|
|
191
|
-
${r("sm", "px")}
|
|
192
|
-
${r("xs", "py")}
|
|
200
|
+
role: "group",
|
|
201
|
+
"aria-label": e !== "Other" ? e : void 0,
|
|
202
|
+
children: [
|
|
203
|
+
e !== "Other" && /* @__PURE__ */ a(
|
|
204
|
+
"div",
|
|
205
|
+
{
|
|
206
|
+
"aria-hidden": "true",
|
|
207
|
+
className: `
|
|
208
|
+
${s("sm", "px")}
|
|
209
|
+
${s("xs", "py")}
|
|
193
210
|
text-xs
|
|
194
211
|
font-semibold
|
|
195
212
|
text-fg-tertiary
|
|
196
213
|
uppercase
|
|
197
214
|
tracking-wider
|
|
198
215
|
`,
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
216
|
+
children: e
|
|
217
|
+
}
|
|
218
|
+
),
|
|
219
|
+
t.map((r, L) => {
|
|
220
|
+
const m = d.indexOf(r), l = m === n;
|
|
221
|
+
return /* @__PURE__ */ i(
|
|
222
|
+
"button",
|
|
223
|
+
{
|
|
224
|
+
type: "button",
|
|
225
|
+
id: `${x}-option-${m}`,
|
|
226
|
+
role: "option",
|
|
227
|
+
"aria-selected": l,
|
|
228
|
+
tabIndex: -1,
|
|
229
|
+
"data-index": m,
|
|
230
|
+
onClick: () => K(r),
|
|
231
|
+
className: `
|
|
211
232
|
w-full
|
|
212
233
|
flex
|
|
213
234
|
items-center
|
|
214
|
-
${
|
|
215
|
-
${
|
|
216
|
-
${
|
|
235
|
+
${s("md", "gap")}
|
|
236
|
+
${s("base", "px")}
|
|
237
|
+
${s("md", "py")}
|
|
217
238
|
text-left
|
|
218
|
-
${
|
|
219
|
-
${
|
|
239
|
+
${w("base")}
|
|
240
|
+
${l ? "bg-surface-brand-muted" : "hover:bg-surface-hover"}
|
|
220
241
|
`,
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
${
|
|
242
|
+
children: [
|
|
243
|
+
r.icon && /* @__PURE__ */ a(
|
|
244
|
+
"div",
|
|
245
|
+
{
|
|
246
|
+
className: `
|
|
247
|
+
${l ? "text-fg-brand-emphasis" : "text-fg-secondary"}
|
|
227
248
|
`,
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
249
|
+
children: r.icon
|
|
250
|
+
}
|
|
251
|
+
),
|
|
252
|
+
/* @__PURE__ */ i("div", { className: "flex-1 min-w-0", children: [
|
|
253
|
+
/* @__PURE__ */ a(
|
|
254
|
+
"div",
|
|
255
|
+
{
|
|
256
|
+
className: `
|
|
236
257
|
text-sm
|
|
237
258
|
font-medium
|
|
238
|
-
${
|
|
259
|
+
${l ? "text-fg-brand-emphasis" : "text-fg-primary"}
|
|
239
260
|
`,
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
261
|
+
children: r.label
|
|
262
|
+
}
|
|
263
|
+
),
|
|
264
|
+
r.description && // fg-secondary on selected: brand-muted bg drops fg-tertiary below AA;
|
|
265
|
+
// caption role preserved, intensity raised for contrast.
|
|
266
|
+
/* @__PURE__ */ a(
|
|
267
|
+
"div",
|
|
268
|
+
{
|
|
269
|
+
className: `text-xs ${l ? "text-fg-secondary" : "text-fg-tertiary"} ${s("0.5", "mt")}`,
|
|
270
|
+
children: r.description
|
|
271
|
+
}
|
|
272
|
+
)
|
|
273
|
+
] })
|
|
274
|
+
]
|
|
275
|
+
},
|
|
276
|
+
r.id
|
|
277
|
+
);
|
|
278
|
+
})
|
|
279
|
+
]
|
|
280
|
+
},
|
|
281
|
+
e
|
|
282
|
+
))
|
|
283
|
+
}
|
|
284
|
+
),
|
|
285
|
+
Object.keys(v).length === 0 && /* @__PURE__ */ a(
|
|
286
|
+
"div",
|
|
287
|
+
{
|
|
288
|
+
role: "status",
|
|
289
|
+
"aria-live": "polite",
|
|
290
|
+
className: `
|
|
291
|
+
${s("lg", "p")}
|
|
292
|
+
text-center
|
|
293
|
+
text-sm
|
|
294
|
+
text-fg-secondary
|
|
295
|
+
`,
|
|
296
|
+
children: T
|
|
259
297
|
}
|
|
260
298
|
)
|
|
261
299
|
]
|
|
@@ -263,12 +301,12 @@ function ne({
|
|
|
263
301
|
)
|
|
264
302
|
}
|
|
265
303
|
) : null;
|
|
266
|
-
return /* @__PURE__ */
|
|
267
|
-
|
|
268
|
-
typeof window != "undefined" &&
|
|
304
|
+
return /* @__PURE__ */ i(Z, { children: [
|
|
305
|
+
C ? /* @__PURE__ */ a("div", { onClick: () => c(!0), children: C }) : null,
|
|
306
|
+
typeof window != "undefined" && B(V, document.body)
|
|
269
307
|
] });
|
|
270
308
|
}
|
|
271
309
|
export {
|
|
272
|
-
|
|
310
|
+
ue as default
|
|
273
311
|
};
|
|
274
312
|
//# sourceMappingURL=CommandPalette.js.map
|