entangle-ui 0.1.0 → 0.3.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/CHANGELOG.md +54 -0
- package/README.md +129 -75
- package/dist/esm/components/Icons/CheckIcon.js +27 -0
- package/dist/esm/components/Icons/CheckIcon.js.map +1 -0
- package/dist/esm/components/Icons/ChevronDownIcon.js +27 -0
- package/dist/esm/components/Icons/ChevronDownIcon.js.map +1 -0
- package/dist/esm/components/Icons/ChevronUpIcon.js +27 -0
- package/dist/esm/components/Icons/ChevronUpIcon.js.map +1 -0
- package/dist/esm/components/Icons/CircleIcon.js +27 -0
- package/dist/esm/components/Icons/CircleIcon.js.map +1 -0
- package/dist/esm/components/Icons/CloseIcon.js +27 -0
- package/dist/esm/components/Icons/CloseIcon.js.map +1 -0
- package/dist/esm/components/Icons/EyeDropperIcon.js +28 -0
- package/dist/esm/components/Icons/EyeDropperIcon.js.map +1 -0
- package/dist/esm/components/Icons/TangentAlignedIcon.js +9 -0
- package/dist/esm/components/Icons/TangentAlignedIcon.js.map +1 -0
- package/dist/esm/components/Icons/TangentAutoIcon.js +9 -0
- package/dist/esm/components/Icons/TangentAutoIcon.js.map +1 -0
- package/dist/esm/components/Icons/TangentFreeIcon.js +9 -0
- package/dist/esm/components/Icons/TangentFreeIcon.js.map +1 -0
- package/dist/esm/components/Icons/TangentLinearIcon.js +9 -0
- package/dist/esm/components/Icons/TangentLinearIcon.js.map +1 -0
- package/dist/esm/components/Icons/TangentMirroredIcon.js +9 -0
- package/dist/esm/components/Icons/TangentMirroredIcon.js.map +1 -0
- package/dist/esm/components/Icons/TangentStepIcon.js +9 -0
- package/dist/esm/components/Icons/TangentStepIcon.js.map +1 -0
- package/dist/esm/components/controls/ColorPicker/AlphaSlider.js +92 -0
- package/dist/esm/components/controls/ColorPicker/AlphaSlider.js.map +1 -0
- package/dist/esm/components/controls/ColorPicker/ColorArea.js +93 -0
- package/dist/esm/components/controls/ColorPicker/ColorArea.js.map +1 -0
- package/dist/esm/components/controls/ColorPicker/ColorInputs.js +129 -0
- package/dist/esm/components/controls/ColorPicker/ColorInputs.js.map +1 -0
- package/dist/esm/components/controls/ColorPicker/ColorPalette.js +89 -0
- package/dist/esm/components/controls/ColorPicker/ColorPalette.js.map +1 -0
- package/dist/esm/components/controls/ColorPicker/ColorPicker.js +75 -0
- package/dist/esm/components/controls/ColorPicker/ColorPicker.js.map +1 -0
- package/dist/esm/components/controls/ColorPicker/ColorPresets.js +57 -0
- package/dist/esm/components/controls/ColorPicker/ColorPresets.js.map +1 -0
- package/dist/esm/components/controls/ColorPicker/ColorSwatch.js +67 -0
- package/dist/esm/components/controls/ColorPicker/ColorSwatch.js.map +1 -0
- package/dist/esm/components/controls/ColorPicker/EyeDropper.js +85 -0
- package/dist/esm/components/controls/ColorPicker/EyeDropper.js.map +1 -0
- package/dist/esm/components/controls/ColorPicker/HueSlider.js +85 -0
- package/dist/esm/components/controls/ColorPicker/HueSlider.js.map +1 -0
- package/dist/esm/components/controls/ColorPicker/colorUtils.js +220 -0
- package/dist/esm/components/controls/ColorPicker/colorUtils.js.map +1 -0
- package/dist/esm/components/controls/ColorPicker/palettes/material.js +299 -0
- package/dist/esm/components/controls/ColorPicker/palettes/material.js.map +1 -0
- package/dist/esm/components/controls/ColorPicker/palettes/professional.js +479 -0
- package/dist/esm/components/controls/ColorPicker/palettes/professional.js.map +1 -0
- package/dist/esm/components/controls/ColorPicker/palettes/tailwind.js +366 -0
- package/dist/esm/components/controls/ColorPicker/palettes/tailwind.js.map +1 -0
- package/dist/esm/components/controls/ColorPicker/useColor.js +63 -0
- package/dist/esm/components/controls/ColorPicker/useColor.js.map +1 -0
- package/dist/esm/components/controls/CurveEditor/CurveCanvas.js +84 -0
- package/dist/esm/components/controls/CurveEditor/CurveCanvas.js.map +1 -0
- package/dist/esm/components/controls/CurveEditor/CurveEditor.js +134 -0
- package/dist/esm/components/controls/CurveEditor/CurveEditor.js.map +1 -0
- package/dist/esm/components/controls/CurveEditor/CurveToolbar.js +96 -0
- package/dist/esm/components/controls/CurveEditor/CurveToolbar.js.map +1 -0
- package/dist/esm/components/controls/CurveEditor/curvePresets.js +184 -0
- package/dist/esm/components/controls/CurveEditor/curvePresets.js.map +1 -0
- package/dist/esm/components/controls/CurveEditor/curveUtils.js +338 -0
- package/dist/esm/components/controls/CurveEditor/curveUtils.js.map +1 -0
- package/dist/esm/components/controls/CurveEditor/useCurveInteraction.js +569 -0
- package/dist/esm/components/controls/CurveEditor/useCurveInteraction.js.map +1 -0
- package/dist/esm/components/controls/CurveEditor/useCurveRenderer.js +400 -0
- package/dist/esm/components/controls/CurveEditor/useCurveRenderer.js.map +1 -0
- package/dist/esm/components/controls/NumberInput/NumberInput.js +377 -0
- package/dist/esm/components/controls/NumberInput/NumberInput.js.map +1 -0
- package/dist/esm/components/controls/NumberInput/useNumberInput.js +324 -0
- package/dist/esm/components/controls/NumberInput/useNumberInput.js.map +1 -0
- package/dist/esm/components/controls/Select/Select.js +533 -0
- package/dist/esm/components/controls/Select/Select.js.map +1 -0
- package/dist/esm/components/controls/Slider/Slider.js +413 -0
- package/dist/esm/components/controls/Slider/Slider.js.map +1 -0
- package/dist/esm/components/controls/TreeView/TreeNode.js +189 -0
- package/dist/esm/components/controls/TreeView/TreeNode.js.map +1 -0
- package/dist/esm/components/controls/TreeView/TreeView.js +213 -0
- package/dist/esm/components/controls/TreeView/TreeView.js.map +1 -0
- package/dist/esm/components/controls/TreeView/useTreeState.js +154 -0
- package/dist/esm/components/controls/TreeView/useTreeState.js.map +1 -0
- package/dist/esm/components/controls/VectorInput/VectorInput.js +202 -0
- package/dist/esm/components/controls/VectorInput/VectorInput.js.map +1 -0
- package/dist/esm/components/editor/PropertyInspector/PropertyGroup.js +42 -0
- package/dist/esm/components/editor/PropertyInspector/PropertyGroup.js.map +1 -0
- package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js +98 -0
- package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js.map +1 -0
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.js +154 -0
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.js.map +1 -0
- package/dist/esm/components/editor/PropertyInspector/PropertySection.js +136 -0
- package/dist/esm/components/editor/PropertyInspector/PropertySection.js.map +1 -0
- package/dist/esm/components/editor/PropertyInspector/usePropertyUndo.js +86 -0
- package/dist/esm/components/editor/PropertyInspector/usePropertyUndo.js.map +1 -0
- package/dist/esm/components/feedback/Dialog/Dialog.js +92 -0
- package/dist/esm/components/feedback/Dialog/Dialog.js.map +1 -0
- package/dist/esm/components/feedback/Dialog/Dialog.styled.js +80 -0
- package/dist/esm/components/feedback/Dialog/Dialog.styled.js.map +1 -0
- package/dist/esm/components/feedback/Dialog/DialogBody.js +33 -0
- package/dist/esm/components/feedback/Dialog/DialogBody.js.map +1 -0
- package/dist/esm/components/feedback/Dialog/DialogClose.js +26 -0
- package/dist/esm/components/feedback/Dialog/DialogClose.js.map +1 -0
- package/dist/esm/components/feedback/Dialog/DialogFooter.js +43 -0
- package/dist/esm/components/feedback/Dialog/DialogFooter.js.map +1 -0
- package/dist/esm/components/feedback/Dialog/DialogHeader.js +84 -0
- package/dist/esm/components/feedback/Dialog/DialogHeader.js.map +1 -0
- package/dist/esm/components/feedback/Dialog/useDialogAnimation.js +70 -0
- package/dist/esm/components/feedback/Dialog/useDialogAnimation.js.map +1 -0
- package/dist/esm/components/feedback/Dialog/useFocusTrap.js +55 -0
- package/dist/esm/components/feedback/Dialog/useFocusTrap.js.map +1 -0
- package/dist/esm/components/feedback/Toast/ToastContainer.js +34 -0
- package/dist/esm/components/feedback/Toast/ToastContainer.js.map +1 -0
- package/dist/esm/components/feedback/Toast/ToastItem.js +214 -0
- package/dist/esm/components/feedback/Toast/ToastItem.js.map +1 -0
- package/dist/esm/components/feedback/Toast/ToastProvider.js +47 -0
- package/dist/esm/components/feedback/Toast/ToastProvider.js.map +1 -0
- package/dist/esm/components/feedback/Toast/useToast.js +60 -0
- package/dist/esm/components/feedback/Toast/useToast.js.map +1 -0
- package/dist/esm/components/form/FormHelperText.js +38 -0
- package/dist/esm/components/form/FormHelperText.js.map +1 -0
- package/dist/esm/components/form/FormLabel.js +43 -0
- package/dist/esm/components/form/FormLabel.js.map +1 -0
- package/dist/esm/components/form/InputWrapper.js +100 -0
- package/dist/esm/components/form/InputWrapper.js.map +1 -0
- package/dist/esm/components/layout/Accordion/Accordion.js +103 -0
- package/dist/esm/components/layout/Accordion/Accordion.js.map +1 -0
- package/dist/esm/components/layout/Accordion/AccordionContent.js +37 -0
- package/dist/esm/components/layout/Accordion/AccordionContent.js.map +1 -0
- package/dist/esm/components/layout/Accordion/AccordionItem.js +24 -0
- package/dist/esm/components/layout/Accordion/AccordionItem.js.map +1 -0
- package/dist/esm/components/layout/Accordion/AccordionTrigger.js +123 -0
- package/dist/esm/components/layout/Accordion/AccordionTrigger.js.map +1 -0
- package/dist/esm/components/layout/Flex/Flex.js +149 -0
- package/dist/esm/components/layout/Flex/Flex.js.map +1 -0
- package/dist/esm/components/layout/Grid/Grid.js +118 -0
- package/dist/esm/components/layout/Grid/Grid.js.map +1 -0
- package/dist/esm/components/layout/PanelSurface/PanelSurface.js +106 -0
- package/dist/esm/components/layout/PanelSurface/PanelSurface.js.map +1 -0
- package/dist/esm/components/layout/ScrollArea/ScrollArea.js +362 -0
- package/dist/esm/components/layout/ScrollArea/ScrollArea.js.map +1 -0
- package/dist/esm/components/layout/Spacer/Spacer.js +78 -0
- package/dist/esm/components/layout/Spacer/Spacer.js.map +1 -0
- package/dist/esm/components/layout/SplitPane/SplitPane.js +581 -0
- package/dist/esm/components/layout/SplitPane/SplitPane.js.map +1 -0
- package/dist/esm/components/layout/SplitPane/SplitPanePanel.js +29 -0
- package/dist/esm/components/layout/SplitPane/SplitPanePanel.js.map +1 -0
- package/dist/esm/components/layout/Stack/Stack.js +138 -0
- package/dist/esm/components/layout/Stack/Stack.js.map +1 -0
- package/dist/esm/components/navigation/ContextMenu/ContextMenu.js +45 -0
- package/dist/esm/components/navigation/ContextMenu/ContextMenu.js.map +1 -0
- package/dist/esm/components/navigation/ContextMenu/useContextMenuTarget.js +52 -0
- package/dist/esm/components/navigation/ContextMenu/useContextMenuTarget.js.map +1 -0
- package/dist/esm/components/navigation/Menu/Menu.helpers.js +52 -0
- package/dist/esm/components/navigation/Menu/Menu.helpers.js.map +1 -0
- package/dist/esm/components/navigation/Menu/Menu.js +80 -0
- package/dist/esm/components/navigation/Menu/Menu.js.map +1 -0
- package/dist/esm/components/navigation/Menu/Menu.styled.js +83 -0
- package/dist/esm/components/navigation/Menu/Menu.styled.js.map +1 -0
- package/dist/esm/components/navigation/Menu/useMenu.js +87 -0
- package/dist/esm/components/navigation/Menu/useMenu.js.map +1 -0
- package/dist/esm/components/navigation/Tabs/Tab.js +222 -0
- package/dist/esm/components/navigation/Tabs/Tab.js.map +1 -0
- package/dist/esm/components/navigation/Tabs/TabList.js +115 -0
- package/dist/esm/components/navigation/Tabs/TabList.js.map +1 -0
- package/dist/esm/components/navigation/Tabs/TabPanel.js +32 -0
- package/dist/esm/components/navigation/Tabs/TabPanel.js.map +1 -0
- package/dist/esm/components/navigation/Tabs/Tabs.js +77 -0
- package/dist/esm/components/navigation/Tabs/Tabs.js.map +1 -0
- package/dist/esm/components/primitives/BaseButton/BaseButton.js +17 -0
- package/dist/esm/components/primitives/BaseButton/BaseButton.js.map +1 -0
- package/dist/esm/components/primitives/Button/Button.js +183 -0
- package/dist/esm/components/primitives/Button/Button.js.map +1 -0
- package/dist/esm/components/primitives/Checkbox/Checkbox.js +205 -0
- package/dist/esm/components/primitives/Checkbox/Checkbox.js.map +1 -0
- package/dist/esm/components/primitives/Checkbox/CheckboxGroup.js +71 -0
- package/dist/esm/components/primitives/Checkbox/CheckboxGroup.js.map +1 -0
- package/dist/esm/components/primitives/Collapsible/Collapsible.js +116 -0
- package/dist/esm/components/primitives/Collapsible/Collapsible.js.map +1 -0
- package/dist/esm/components/primitives/Icon/Icon.js +63 -0
- package/dist/esm/components/primitives/Icon/Icon.js.map +1 -0
- package/dist/esm/components/primitives/IconButton/IconButton.js +222 -0
- package/dist/esm/components/primitives/IconButton/IconButton.js.map +1 -0
- package/dist/esm/components/primitives/Input/Input.js +133 -0
- package/dist/esm/components/primitives/Input/Input.js.map +1 -0
- package/dist/esm/components/primitives/Paper/Paper.js +146 -0
- package/dist/esm/components/primitives/Paper/Paper.js.map +1 -0
- package/dist/esm/components/primitives/Popover/Popover.js +121 -0
- package/dist/esm/components/primitives/Popover/Popover.js.map +1 -0
- package/dist/esm/components/primitives/Popover/PopoverClose.js +50 -0
- package/dist/esm/components/primitives/Popover/PopoverClose.js.map +1 -0
- package/dist/esm/components/primitives/Popover/PopoverContent.js +102 -0
- package/dist/esm/components/primitives/Popover/PopoverContent.js.map +1 -0
- package/dist/esm/components/primitives/Popover/PopoverTrigger.js +37 -0
- package/dist/esm/components/primitives/Popover/PopoverTrigger.js.map +1 -0
- package/dist/esm/components/primitives/Switch/Switch.js +170 -0
- package/dist/esm/components/primitives/Switch/Switch.js.map +1 -0
- package/dist/esm/components/primitives/Text/Text.js +166 -0
- package/dist/esm/components/primitives/Text/Text.js.map +1 -0
- package/dist/esm/components/primitives/Tooltip/Arrow.js +52 -0
- package/dist/esm/components/primitives/Tooltip/Arrow.js.map +1 -0
- package/dist/esm/components/primitives/Tooltip/Tooltip.js +219 -0
- package/dist/esm/components/primitives/Tooltip/Tooltip.js.map +1 -0
- package/dist/esm/components/primitives/Tooltip/utils.js +66 -0
- package/dist/esm/components/primitives/Tooltip/utils.js.map +1 -0
- package/dist/esm/components/shell/AppShell/AppShell.js +157 -0
- package/dist/esm/components/shell/AppShell/AppShell.js.map +1 -0
- package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js +236 -0
- package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js.map +1 -0
- package/dist/esm/components/shell/MenuBar/MenuBar.js +340 -0
- package/dist/esm/components/shell/MenuBar/MenuBar.js.map +1 -0
- package/dist/esm/components/shell/StatusBar/StatusBar.js +134 -0
- package/dist/esm/components/shell/StatusBar/StatusBar.js.map +1 -0
- package/dist/esm/components/shell/Toolbar/Toolbar.js +185 -0
- package/dist/esm/components/shell/Toolbar/Toolbar.js.map +1 -0
- package/dist/esm/context/KeyboardContext.js +14 -0
- package/dist/esm/context/KeyboardContext.js.map +1 -0
- package/dist/esm/index.js +78 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/palettes.js +4 -0
- package/dist/esm/palettes.js.map +1 -0
- package/dist/esm/theme/ThemeProvider.js +12 -0
- package/dist/esm/theme/ThemeProvider.js.map +1 -0
- package/dist/esm/theme/createTheme.js +10 -0
- package/dist/esm/theme/createTheme.js.map +1 -0
- package/dist/esm/theme/tokens.js +144 -0
- package/dist/esm/theme/tokens.js.map +1 -0
- package/dist/esm/utils/cn.js +6 -0
- package/dist/esm/utils/cn.js.map +1 -0
- package/dist/esm/utils/mathExpression.js +275 -0
- package/dist/esm/utils/mathExpression.js.map +1 -0
- package/dist/esm/utils/mathUtils.js +18 -0
- package/dist/esm/utils/mathUtils.js.map +1 -0
- package/dist/esm/utils/objects.js +22 -0
- package/dist/esm/utils/objects.js.map +1 -0
- package/dist/esm/utils/styledUtils.js +81 -0
- package/dist/esm/utils/styledUtils.js.map +1 -0
- package/dist/types/components/controls/ColorPicker/ColorPalette.d.ts +16 -0
- package/dist/types/components/controls/ColorPicker/ColorPicker.d.ts +6 -0
- package/dist/types/components/controls/ColorPicker/ColorPicker.types.d.ts +120 -0
- package/dist/types/components/controls/ColorPicker/ColorSwatch.d.ts +6 -0
- package/dist/types/components/controls/ColorPicker/EyeDropper.d.ts +28 -0
- package/dist/types/components/controls/ColorPicker/colorUtils.d.ts +3 -0
- package/dist/types/components/controls/ColorPicker/palettes/material.d.ts +24 -0
- package/dist/types/components/controls/ColorPicker/palettes/professional.d.ts +19 -0
- package/dist/types/components/controls/ColorPicker/palettes/tailwind.d.ts +12 -0
- package/dist/types/components/controls/CurveEditor/CurveEditor.d.ts +6 -0
- package/dist/types/components/controls/CurveEditor/CurveEditor.types.d.ts +297 -0
- package/dist/types/components/controls/CurveEditor/curvePresets.d.ts +5 -0
- package/dist/types/components/controls/CurveEditor/curveUtils.d.ts +28 -0
- package/dist/types/components/controls/NumberInput/NumberInput.d.ts +150 -0
- package/dist/types/components/controls/NumberInput/useNumberInput.d.ts +65 -0
- package/dist/types/components/controls/Select/Select.d.ts +29 -0
- package/dist/types/components/controls/Select/Select.types.d.ts +131 -0
- package/dist/types/components/controls/Slider/Slider.d.ts +178 -0
- package/dist/types/components/controls/TreeView/TreeView.d.ts +27 -0
- package/dist/types/components/controls/TreeView/TreeView.types.d.ts +135 -0
- package/dist/types/components/controls/VectorInput/VectorInput.d.ts +26 -0
- package/dist/types/components/controls/VectorInput/VectorInput.types.d.ts +158 -0
- package/dist/types/components/editor/PropertyInspector/PropertyGroup.d.ts +6 -0
- package/dist/types/components/editor/PropertyInspector/PropertyInspector.types.d.ts +238 -0
- package/dist/types/components/editor/PropertyInspector/PropertyPanel.d.ts +6 -0
- package/dist/types/components/editor/PropertyInspector/PropertyRow.d.ts +6 -0
- package/dist/types/components/editor/PropertyInspector/PropertySection.d.ts +6 -0
- package/dist/types/components/editor/PropertyInspector/usePropertyUndo.d.ts +9 -0
- package/dist/types/components/feedback/Dialog/Dialog.d.ts +25 -0
- package/dist/types/components/feedback/Dialog/Dialog.types.d.ts +55 -0
- package/dist/types/components/feedback/Dialog/DialogBody.d.ts +16 -0
- package/dist/types/components/feedback/Dialog/DialogClose.d.ts +21 -0
- package/dist/types/components/feedback/Dialog/DialogFooter.d.ts +17 -0
- package/dist/types/components/feedback/Dialog/DialogHeader.d.ts +17 -0
- package/dist/types/components/feedback/Toast/Toast.types.d.ts +39 -0
- package/dist/types/components/feedback/Toast/ToastProvider.d.ts +19 -0
- package/dist/types/components/feedback/Toast/useToast.d.ts +22 -0
- package/dist/types/components/form/FormHelperText.d.ts +321 -0
- package/dist/types/components/form/FormLabel.d.ts +331 -0
- package/dist/types/components/form/InputWrapper.d.ts +346 -0
- package/dist/types/components/layout/Accordion/Accordion.d.ts +23 -0
- package/dist/types/components/layout/Accordion/Accordion.types.d.ts +109 -0
- package/dist/types/components/layout/Accordion/AccordionContent.d.ts +6 -0
- package/dist/types/components/layout/Accordion/AccordionItem.d.ts +6 -0
- package/dist/types/components/layout/Accordion/AccordionTrigger.d.ts +6 -0
- package/dist/types/components/layout/Flex/Flex.d.ts +215 -0
- package/dist/types/components/layout/Grid/Grid.d.ts +113 -0
- package/dist/types/components/layout/PanelSurface/PanelSurface.d.ts +1153 -0
- package/dist/types/components/layout/PanelSurface/PanelSurface.types.d.ts +64 -0
- package/dist/types/components/layout/ScrollArea/ScrollArea.d.ts +6 -0
- package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts +93 -0
- package/dist/types/components/layout/Spacer/Spacer.d.ts +329 -0
- package/dist/types/components/layout/SplitPane/SplitPane.d.ts +21 -0
- package/dist/types/components/layout/SplitPane/SplitPane.types.d.ts +87 -0
- package/dist/types/components/layout/SplitPane/SplitPanePanel.d.ts +20 -0
- package/dist/types/components/layout/Stack/Stack.d.ts +166 -0
- package/dist/types/components/navigation/ContextMenu/ContextMenu.d.ts +6 -0
- package/dist/types/components/navigation/ContextMenu/ContextMenu.types.d.ts +74 -0
- package/dist/types/components/navigation/ContextMenu/useContextMenuTarget.d.ts +5 -0
- package/dist/types/components/navigation/Menu/Menu.d.ts +42 -0
- package/dist/types/components/navigation/Menu/Menu.types.d.ts +94 -0
- package/dist/types/components/navigation/Menu/useMenu.d.ts +16 -0
- package/dist/types/components/navigation/Tabs/Tab.d.ts +6 -0
- package/dist/types/components/navigation/Tabs/TabList.d.ts +6 -0
- package/dist/types/components/navigation/Tabs/TabPanel.d.ts +6 -0
- package/dist/types/components/navigation/Tabs/Tabs.d.ts +23 -0
- package/dist/types/components/navigation/Tabs/Tabs.types.d.ts +117 -0
- package/dist/types/components/primitives/Button/Button.d.ts +392 -0
- package/dist/types/components/primitives/Checkbox/Checkbox.d.ts +20 -0
- package/dist/types/components/primitives/Checkbox/Checkbox.types.d.ts +156 -0
- package/dist/types/components/primitives/Checkbox/CheckboxGroup.d.ts +25 -0
- package/dist/types/components/primitives/Collapsible/Collapsible.d.ts +6 -0
- package/dist/types/components/primitives/Collapsible/Collapsible.types.d.ts +28 -0
- package/dist/types/components/primitives/Icon/Icon.d.ts +40 -0
- package/dist/types/components/primitives/IconButton/IconButton.d.ts +354 -0
- package/dist/types/components/primitives/Input/Input.d.ts +134 -0
- package/dist/types/components/primitives/Paper/Paper.d.ts +419 -0
- package/dist/types/components/primitives/Popover/Popover.d.ts +25 -0
- package/dist/types/components/primitives/Popover/Popover.types.d.ts +99 -0
- package/dist/types/components/primitives/Popover/PopoverClose.d.ts +6 -0
- package/dist/types/components/primitives/Popover/PopoverContent.d.ts +6 -0
- package/dist/types/components/primitives/Popover/PopoverTrigger.d.ts +10 -0
- package/dist/types/components/primitives/Switch/Switch.d.ts +78 -0
- package/dist/types/components/primitives/Text/Text.d.ts +442 -0
- package/dist/types/components/primitives/Tooltip/Tooltip.d.ts +175 -0
- package/dist/types/components/primitives/Tooltip/types.d.ts +82 -0
- package/dist/types/components/shell/AppShell/AppShell.d.ts +1437 -0
- package/dist/types/components/shell/AppShell/AppShell.types.d.ts +48 -0
- package/dist/types/components/shell/FloatingPanel/FloatingPanel.d.ts +7 -0
- package/dist/types/components/shell/FloatingPanel/FloatingPanel.types.d.ts +61 -0
- package/dist/types/components/shell/MenuBar/MenuBar.d.ts +1441 -0
- package/dist/types/components/shell/MenuBar/MenuBar.types.d.ts +48 -0
- package/dist/types/components/shell/StatusBar/StatusBar.d.ts +868 -0
- package/dist/types/components/shell/StatusBar/StatusBar.types.d.ts +40 -0
- package/dist/types/components/shell/Toolbar/Toolbar.d.ts +1728 -0
- package/dist/types/components/shell/Toolbar/Toolbar.types.d.ts +59 -0
- package/dist/types/index.d.ts +101 -0
- package/dist/types/palettes.d.ts +3 -0
- package/dist/types/theme/ThemeProvider.d.ts +11 -0
- package/dist/types/theme/createTheme.d.ts +6 -0
- package/dist/types/theme/tokens.d.ts +147 -0
- package/dist/types/theme/types.d.ts +7 -0
- package/dist/types/types/common.d.ts +24 -0
- package/dist/types/types/utilities.d.ts +72 -0
- package/dist/types/utils/cn.d.ts +3 -0
- package/package.json +23 -7
- package/dist/index.d.ts +0 -11
- package/dist/index.esm.js +0 -12149
- package/dist/index.esm.js.map +0 -1
- package/dist/index.js +0 -12223
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
// src/utils/mathExpression.ts
|
|
2
|
+
/**
|
|
3
|
+
* Blocked identifiers that must be rejected before evaluation.
|
|
4
|
+
* Defense-in-depth layer to prevent prototype pollution or code execution
|
|
5
|
+
* via dangerous JavaScript identifiers that pass character validation.
|
|
6
|
+
*/
|
|
7
|
+
const BLOCKED_IDENTIFIERS = new Set([
|
|
8
|
+
'constructor',
|
|
9
|
+
'prototype',
|
|
10
|
+
'__proto__',
|
|
11
|
+
'this',
|
|
12
|
+
'self',
|
|
13
|
+
'window',
|
|
14
|
+
'document',
|
|
15
|
+
'globalThis',
|
|
16
|
+
'process',
|
|
17
|
+
'require',
|
|
18
|
+
'import',
|
|
19
|
+
'module',
|
|
20
|
+
'exports',
|
|
21
|
+
'eval',
|
|
22
|
+
'Function',
|
|
23
|
+
'Object',
|
|
24
|
+
'Array',
|
|
25
|
+
'Reflect',
|
|
26
|
+
'Proxy',
|
|
27
|
+
'Symbol',
|
|
28
|
+
]);
|
|
29
|
+
/**
|
|
30
|
+
* Mathematical constants available in expressions
|
|
31
|
+
*/
|
|
32
|
+
const MATH_CONSTANTS = {
|
|
33
|
+
pi: Math.PI,
|
|
34
|
+
e: Math.E,
|
|
35
|
+
tau: 2 * Math.PI,
|
|
36
|
+
phi: (1 + Math.sqrt(5)) / 2, // Golden ratio
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Mathematical functions available in expressions
|
|
40
|
+
*/
|
|
41
|
+
const MATH_FUNCTIONS = {
|
|
42
|
+
// Trigonometric functions
|
|
43
|
+
sin: Math.sin,
|
|
44
|
+
cos: Math.cos,
|
|
45
|
+
tan: Math.tan,
|
|
46
|
+
asin: Math.asin,
|
|
47
|
+
acos: Math.acos,
|
|
48
|
+
atan: Math.atan,
|
|
49
|
+
// Logarithmic and exponential
|
|
50
|
+
log: Math.log,
|
|
51
|
+
log10: Math.log10,
|
|
52
|
+
log2: Math.log2,
|
|
53
|
+
exp: Math.exp,
|
|
54
|
+
// Power and root functions
|
|
55
|
+
sqrt: Math.sqrt,
|
|
56
|
+
cbrt: Math.cbrt,
|
|
57
|
+
// Rounding functions
|
|
58
|
+
floor: Math.floor,
|
|
59
|
+
ceil: Math.ceil,
|
|
60
|
+
round: Math.round,
|
|
61
|
+
// Other useful functions
|
|
62
|
+
abs: Math.abs,
|
|
63
|
+
sign: Math.sign,
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Sanitizes mathematical expression by removing dangerous patterns
|
|
67
|
+
* and normalizing the input for safe evaluation.
|
|
68
|
+
*/
|
|
69
|
+
function sanitizeExpression(expression) {
|
|
70
|
+
// Remove whitespace
|
|
71
|
+
let sanitized = expression.replace(/\s+/g, '');
|
|
72
|
+
// Convert common alternative notations
|
|
73
|
+
sanitized = sanitized.replace(/×/g, '*'); // Multiplication symbol
|
|
74
|
+
sanitized = sanitized.replace(/÷/g, '/'); // Division symbol
|
|
75
|
+
sanitized = sanitized.replace(/\^/g, '**'); // Power operator
|
|
76
|
+
// Ensure proper decimal notation
|
|
77
|
+
sanitized = sanitized.replace(/,/g, '.'); // European decimal notation
|
|
78
|
+
return sanitized;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Validates that expression contains only allowed characters and patterns
|
|
82
|
+
*/
|
|
83
|
+
function isValidExpression(expression) {
|
|
84
|
+
// Allow numbers, operators, parentheses, dots, and known constants/functions
|
|
85
|
+
const allowedPattern = /^[0-9+\-*/().a-zA-Z_]+$/;
|
|
86
|
+
if (!allowedPattern.test(expression)) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
// Check for balanced parentheses
|
|
90
|
+
let depth = 0;
|
|
91
|
+
for (const char of expression) {
|
|
92
|
+
if (char === '(')
|
|
93
|
+
depth++;
|
|
94
|
+
if (char === ')')
|
|
95
|
+
depth--;
|
|
96
|
+
if (depth < 0)
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
return depth === 0;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Checks whether the expression contains any blocked identifiers or
|
|
103
|
+
* unknown alphabetic tokens. All word tokens must be either a known
|
|
104
|
+
* constant, a known function name, or part of "Math" (introduced by
|
|
105
|
+
* replaceConstantsAndFunctions). Any unrecognized identifier is rejected.
|
|
106
|
+
*/
|
|
107
|
+
function containsBlockedIdentifiers(expression) {
|
|
108
|
+
const wordTokens = expression.match(/[a-zA-Z_][a-zA-Z0-9_]*/g);
|
|
109
|
+
if (!wordTokens)
|
|
110
|
+
return false;
|
|
111
|
+
const allowedTokens = new Set([
|
|
112
|
+
...Object.keys(MATH_CONSTANTS),
|
|
113
|
+
...Object.keys(MATH_FUNCTIONS),
|
|
114
|
+
]);
|
|
115
|
+
for (const token of wordTokens) {
|
|
116
|
+
if (BLOCKED_IDENTIFIERS.has(token))
|
|
117
|
+
return true;
|
|
118
|
+
if (!allowedTokens.has(token))
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Replaces mathematical constants and functions in the expression
|
|
125
|
+
* with their JavaScript equivalents for safe evaluation.
|
|
126
|
+
*/
|
|
127
|
+
function replaceConstantsAndFunctions(expression) {
|
|
128
|
+
let result = expression;
|
|
129
|
+
// Replace constants
|
|
130
|
+
Object.entries(MATH_CONSTANTS).forEach(([name, value]) => {
|
|
131
|
+
const regex = new RegExp(`\\b${name}\\b`, 'g');
|
|
132
|
+
result = result.replace(regex, value.toString());
|
|
133
|
+
});
|
|
134
|
+
// Replace functions
|
|
135
|
+
Object.entries(MATH_FUNCTIONS).forEach(([name]) => {
|
|
136
|
+
const regex = new RegExp(`\\b${name}\\(`, 'g');
|
|
137
|
+
result = result.replace(regex, `Math.${name}(`);
|
|
138
|
+
});
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Safely evaluates a mathematical expression using Function constructor
|
|
143
|
+
* instead of eval() for better security.
|
|
144
|
+
*/
|
|
145
|
+
function safeEvaluate(expression) {
|
|
146
|
+
// Create a function that returns the expression result
|
|
147
|
+
// This is safer than eval() as it doesn't have access to the scope
|
|
148
|
+
// eslint-disable-next-line @typescript-eslint/no-implied-eval
|
|
149
|
+
const func = new Function('Math', `"use strict"; return (${expression});`);
|
|
150
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
151
|
+
return func(Math);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Evaluates a mathematical expression and returns the result.
|
|
155
|
+
*
|
|
156
|
+
* Supports:
|
|
157
|
+
* - Basic arithmetic: +, -, *, /, **, ()
|
|
158
|
+
* - Mathematical constants: pi, e, tau, phi
|
|
159
|
+
* - Mathematical functions: sin, cos, tan, sqrt, log, etc.
|
|
160
|
+
* - Alternative notations: × (multiplication), ÷ (division), ^ (power)
|
|
161
|
+
* - European decimal notation: , instead of .
|
|
162
|
+
*
|
|
163
|
+
* @param expression The mathematical expression to evaluate
|
|
164
|
+
* @returns Evaluation result with success status and value or error
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```typescript
|
|
168
|
+
* evaluateExpression("3 + 4 * 2") // { success: true, value: 11 }
|
|
169
|
+
* evaluateExpression("sqrt(16)") // { success: true, value: 4 }
|
|
170
|
+
* evaluateExpression("pi * 2") // { success: true, value: 6.283... }
|
|
171
|
+
* evaluateExpression("2 ^ 3") // { success: true, value: 8 }
|
|
172
|
+
* evaluateExpression("invalid") // { success: false, error: "..." }
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
function evaluateExpression(expression) {
|
|
176
|
+
const originalExpression = expression;
|
|
177
|
+
try {
|
|
178
|
+
// Handle empty or whitespace-only expressions
|
|
179
|
+
if (!expression?.trim()) {
|
|
180
|
+
return {
|
|
181
|
+
success: false,
|
|
182
|
+
error: 'Expression cannot be empty',
|
|
183
|
+
expression: originalExpression,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
// Sanitize the expression
|
|
187
|
+
const sanitized = sanitizeExpression(expression);
|
|
188
|
+
// Validate the expression
|
|
189
|
+
if (!isValidExpression(sanitized)) {
|
|
190
|
+
return {
|
|
191
|
+
success: false,
|
|
192
|
+
error: 'Expression contains invalid characters or syntax',
|
|
193
|
+
expression: originalExpression,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
// Check for blocked or unknown identifiers (defense-in-depth)
|
|
197
|
+
if (containsBlockedIdentifiers(sanitized)) {
|
|
198
|
+
return {
|
|
199
|
+
success: false,
|
|
200
|
+
error: 'Expression contains invalid characters or syntax',
|
|
201
|
+
expression: originalExpression,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
// Replace constants and functions
|
|
205
|
+
const processed = replaceConstantsAndFunctions(sanitized);
|
|
206
|
+
// Evaluate the expression
|
|
207
|
+
const result = safeEvaluate(processed);
|
|
208
|
+
// Check if result is a valid number
|
|
209
|
+
if (typeof result !== 'number' || !isFinite(result)) {
|
|
210
|
+
return {
|
|
211
|
+
success: false,
|
|
212
|
+
error: 'Expression does not evaluate to a valid number',
|
|
213
|
+
expression: originalExpression,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
return {
|
|
217
|
+
success: true,
|
|
218
|
+
value: result,
|
|
219
|
+
expression: originalExpression,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
return {
|
|
224
|
+
success: false,
|
|
225
|
+
error: error instanceof Error ? error.message : 'Unknown evaluation error',
|
|
226
|
+
expression: originalExpression,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Checks if a string looks like a mathematical expression
|
|
232
|
+
* (contains operators, functions, or constants)
|
|
233
|
+
*/
|
|
234
|
+
function isExpression(input) {
|
|
235
|
+
const trimmed = input.trim();
|
|
236
|
+
// Check for mathematical operators
|
|
237
|
+
if (/[+\-*/^×÷()]/.test(trimmed)) {
|
|
238
|
+
return true;
|
|
239
|
+
}
|
|
240
|
+
// Check for mathematical functions
|
|
241
|
+
const functionNames = Object.keys(MATH_FUNCTIONS);
|
|
242
|
+
const functionRegex = new RegExp(`\\b(${functionNames.join('|')})\\(`, 'i');
|
|
243
|
+
if (functionRegex.test(trimmed)) {
|
|
244
|
+
return true;
|
|
245
|
+
}
|
|
246
|
+
// Check for mathematical constants
|
|
247
|
+
const constantNames = Object.keys(MATH_CONSTANTS);
|
|
248
|
+
const constantRegex = new RegExp(`\\b(${constantNames.join('|')})\\b`, 'i');
|
|
249
|
+
if (constantRegex.test(trimmed)) {
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Attempts to parse a string as either a direct number or mathematical expression
|
|
256
|
+
*/
|
|
257
|
+
function parseNumericInput(input) {
|
|
258
|
+
const trimmed = input.trim();
|
|
259
|
+
// Try direct number parsing first (more efficient)
|
|
260
|
+
const directNumber = parseFloat(trimmed);
|
|
261
|
+
if (!isNaN(directNumber) &&
|
|
262
|
+
isFinite(directNumber) &&
|
|
263
|
+
trimmed === directNumber.toString()) {
|
|
264
|
+
return {
|
|
265
|
+
success: true,
|
|
266
|
+
value: directNumber,
|
|
267
|
+
expression: input,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
// Fall back to expression evaluation
|
|
271
|
+
return evaluateExpression(input);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
export { evaluateExpression, isExpression, parseNumericInput };
|
|
275
|
+
//# sourceMappingURL=mathExpression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mathExpression.js","sources":["../../../../src/utils/mathExpression.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AA2BA;;;;AAIG;AACH,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IACvD,aAAa;IACb,WAAW;IACX,WAAW;IACX,MAAM;IACN,MAAM;IACN,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,SAAS;IACT,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,QAAQ;IACR,OAAO;IACP,SAAS;IACT,OAAO;IACP,QAAQ;AACT,CAAA,CAAC;AAEF;;AAEG;AACH,MAAM,cAAc,GAA2B;IAC7C,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,CAAC,EAAE,IAAI,CAAC,CAAC;AACT,IAAA,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE;AAChB,IAAA,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;CAC5B;AAED;;AAEG;AACH,MAAM,cAAc,GAA0C;;IAE5D,GAAG,EAAE,IAAI,CAAC,GAAG;IACb,GAAG,EAAE,IAAI,CAAC,GAAG;IACb,GAAG,EAAE,IAAI,CAAC,GAAG;IACb,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,IAAI,EAAE,IAAI,CAAC,IAAI;;IAGf,GAAG,EAAE,IAAI,CAAC,GAAG;IACb,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,GAAG,EAAE,IAAI,CAAC,GAAG;;IAGb,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,IAAI,EAAE,IAAI,CAAC,IAAI;;IAGf,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,KAAK,EAAE,IAAI,CAAC,KAAK;;IAGjB,GAAG,EAAE,IAAI,CAAC,GAAG;IACb,IAAI,EAAE,IAAI,CAAC,IAAI;CAChB;AAED;;;AAGG;AACH,SAAS,kBAAkB,CAAC,UAAkB,EAAA;;IAE5C,IAAI,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;;IAG9C,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACzC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACzC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;IAG3C,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAEzC,IAAA,OAAO,SAAS;AAClB;AAEA;;AAEG;AACH,SAAS,iBAAiB,CAAC,UAAkB,EAAA;;IAE3C,MAAM,cAAc,GAAG,yBAAyB;IAEhD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACpC,QAAA,OAAO,KAAK;;;IAId,IAAI,KAAK,GAAG,CAAC;AACb,IAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;QAC7B,IAAI,IAAI,KAAK,GAAG;AAAE,YAAA,KAAK,EAAE;QACzB,IAAI,IAAI,KAAK,GAAG;AAAE,YAAA,KAAK,EAAE;QACzB,IAAI,KAAK,GAAG,CAAC;AAAE,YAAA,OAAO,KAAK;;IAG7B,OAAO,KAAK,KAAK,CAAC;AACpB;AAEA;;;;;AAKG;AACH,SAAS,0BAA0B,CAAC,UAAkB,EAAA;IACpD,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,yBAAyB,CAAC;AAC9D,IAAA,IAAI,CAAC,UAAU;AAAE,QAAA,OAAO,KAAK;AAE7B,IAAA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;AAC5B,QAAA,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;AAC9B,QAAA,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;AAC/B,KAAA,CAAC;AAEF,IAAA,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;AAC9B,QAAA,IAAI,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;AAC/C,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;;AAG5C,IAAA,OAAO,KAAK;AACd;AAEA;;;AAGG;AACH,SAAS,4BAA4B,CAAC,UAAkB,EAAA;IACtD,IAAI,MAAM,GAAG,UAAU;;AAGvB,IAAA,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAI;QACvD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAM,GAAA,EAAA,IAAI,CAAK,GAAA,CAAA,EAAE,GAAG,CAAC;AAC9C,QAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AAClD,KAAC,CAAC;;AAGF,IAAA,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAI;QAChD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAM,GAAA,EAAA,IAAI,CAAK,GAAA,CAAA,EAAE,GAAG,CAAC;QAC9C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAQ,KAAA,EAAA,IAAI,CAAG,CAAA,CAAA,CAAC;AACjD,KAAC,CAAC;AAEF,IAAA,OAAO,MAAM;AACf;AAEA;;;AAGG;AAEH,SAAS,YAAY,CAAC,UAAkB,EAAA;;;;IAKtC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAyB,sBAAA,EAAA,UAAU,CAAI,EAAA,CAAA,CAAC;;AAG1E,IAAA,OAAO,IAAI,CAAC,IAAI,CAAW;AAC7B;AAEA;;;;;;;;;;;;;;;;;;;;;AAqBG;AACG,SAAU,kBAAkB,CAAC,UAAkB,EAAA;IACnD,MAAM,kBAAkB,GAAG,UAAU;AAErC,IAAA,IAAI;;AAEF,QAAA,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;YACvB,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,4BAA4B;AACnC,gBAAA,UAAU,EAAE,kBAAkB;aAC/B;;;AAIH,QAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAAC;;AAGhD,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;YACjC,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,kDAAkD;AACzD,gBAAA,UAAU,EAAE,kBAAkB;aAC/B;;;AAIH,QAAA,IAAI,0BAA0B,CAAC,SAAS,CAAC,EAAE;YACzC,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,kDAAkD;AACzD,gBAAA,UAAU,EAAE,kBAAkB;aAC/B;;;AAIH,QAAA,MAAM,SAAS,GAAG,4BAA4B,CAAC,SAAS,CAAC;;AAGzD,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC;;QAGtC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACnD,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,gDAAgD;AACvD,gBAAA,UAAU,EAAE,kBAAkB;aAC/B;;QAGH,OAAO;AACL,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,UAAU,EAAE,kBAAkB;SAC/B;;IACD,OAAO,KAAK,EAAE;QACd,OAAO;AACL,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,KAAK,EACH,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,0BAA0B;AACrE,YAAA,UAAU,EAAE,kBAAkB;SAC/B;;AAEL;AAEA;;;AAGG;AACG,SAAU,YAAY,CAAC,KAAa,EAAA;AACxC,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;;AAG5B,IAAA,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAChC,QAAA,OAAO,IAAI;;;IAIb,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;AACjD,IAAA,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,IAAA,CAAM,EAAE,GAAG,CAAC;AAC3E,IAAA,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC/B,QAAA,OAAO,IAAI;;;IAIb,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;AACjD,IAAA,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,IAAA,CAAM,EAAE,GAAG,CAAC;AAC3E,IAAA,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC/B,QAAA,OAAO,IAAI;;AAGb,IAAA,OAAO,KAAK;AACd;AAEA;;AAEG;AACG,SAAU,iBAAiB,CAAC,KAAa,EAAA;AAC7C,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;;AAG5B,IAAA,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC;AACxC,IAAA,IACE,CAAC,KAAK,CAAC,YAAY,CAAC;QACpB,QAAQ,CAAC,YAAY,CAAC;AACtB,QAAA,OAAO,KAAK,YAAY,CAAC,QAAQ,EAAE,EACnC;QACA,OAAO;AACL,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,UAAU,EAAE,KAAK;SAClB;;;AAIH,IAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;AAClC;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clamps a value between min and max bounds
|
|
3
|
+
*/
|
|
4
|
+
function clamp(value, min, max) {
|
|
5
|
+
return Math.min(Math.max(value, min), max);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Rounds a number to specified decimal places
|
|
9
|
+
*/
|
|
10
|
+
function roundToPrecision(value, precision) {
|
|
11
|
+
if (precision === undefined)
|
|
12
|
+
return value;
|
|
13
|
+
const factor = Math.pow(10, precision);
|
|
14
|
+
return Math.round(value * factor) / factor;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { clamp, roundToPrecision };
|
|
18
|
+
//# sourceMappingURL=mathUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mathUtils.js","sources":["../../../../src/utils/mathUtils.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;AAEG;SACa,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAA;AAC3D,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;AAC5C;AAEA;;AAEG;AACa,SAAA,gBAAgB,CAAC,KAAa,EAAE,SAAkB,EAAA;IAChE,IAAI,SAAS,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM;AAC5C;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const mergeDeep = (target, source) => {
|
|
2
|
+
const result = { ...target };
|
|
3
|
+
for (const key in source) {
|
|
4
|
+
const sourceValue = source[key];
|
|
5
|
+
const targetValue = result[key];
|
|
6
|
+
if (sourceValue &&
|
|
7
|
+
typeof sourceValue === 'object' &&
|
|
8
|
+
!Array.isArray(sourceValue) &&
|
|
9
|
+
targetValue &&
|
|
10
|
+
typeof targetValue === 'object' &&
|
|
11
|
+
!Array.isArray(targetValue)) {
|
|
12
|
+
result[key] = mergeDeep(targetValue, sourceValue);
|
|
13
|
+
}
|
|
14
|
+
else if (sourceValue !== undefined) {
|
|
15
|
+
result[key] = sourceValue;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export { mergeDeep };
|
|
22
|
+
//# sourceMappingURL=objects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.js","sources":["../../../../src/utils/objects.ts"],"sourcesContent":[null],"names":[],"mappings":"MAEa,SAAS,GAAG,CACvB,MAAS,EACT,MAAsB,KACjB;AACL,IAAA,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE;AAC5B,IAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACxB,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;AAC/B,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;AAE/B,QAAA,IACE,WAAW;YACX,OAAO,WAAW,KAAK,QAAQ;AAC/B,YAAA,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3B,WAAW;YACX,OAAO,WAAW,KAAK,QAAQ;AAC/B,YAAA,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAC3B;YACA,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CACrB,WAAsC,EACtC,WAAmD,CACrB;;AAC3B,aAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AACpC,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,WAA0C;;;AAG5D,IAAA,OAAO,MAAM;AACf;;;;"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts camelCase to kebab-case
|
|
3
|
+
*/
|
|
4
|
+
const camelToKebab = (str) => {
|
|
5
|
+
return str.replace(/([A-Z])/g, '-$1').toLowerCase();
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Set of CSS properties (in kebab-case) that should NOT receive a `px` suffix
|
|
9
|
+
* when their value is a number. Based on the React DOM unitless properties list.
|
|
10
|
+
*/
|
|
11
|
+
const UNITLESS_PROPERTIES = new Set([
|
|
12
|
+
'animation-iteration-count',
|
|
13
|
+
'border-image-outset',
|
|
14
|
+
'border-image-slice',
|
|
15
|
+
'border-image-width',
|
|
16
|
+
'box-flex',
|
|
17
|
+
'box-flex-group',
|
|
18
|
+
'box-ordinal-group',
|
|
19
|
+
'column-count',
|
|
20
|
+
'columns',
|
|
21
|
+
'flex',
|
|
22
|
+
'flex-grow',
|
|
23
|
+
'flex-positive',
|
|
24
|
+
'flex-shrink',
|
|
25
|
+
'flex-negative',
|
|
26
|
+
'flex-order',
|
|
27
|
+
'grid-area',
|
|
28
|
+
'grid-column',
|
|
29
|
+
'grid-column-end',
|
|
30
|
+
'grid-column-span',
|
|
31
|
+
'grid-column-start',
|
|
32
|
+
'grid-row',
|
|
33
|
+
'grid-row-end',
|
|
34
|
+
'grid-row-span',
|
|
35
|
+
'grid-row-start',
|
|
36
|
+
'font-weight',
|
|
37
|
+
'line-clamp',
|
|
38
|
+
'line-height',
|
|
39
|
+
'opacity',
|
|
40
|
+
'order',
|
|
41
|
+
'orphans',
|
|
42
|
+
'tab-size',
|
|
43
|
+
'widows',
|
|
44
|
+
'z-index',
|
|
45
|
+
'zoom',
|
|
46
|
+
'fill-opacity',
|
|
47
|
+
'flood-opacity',
|
|
48
|
+
'stop-opacity',
|
|
49
|
+
'stroke-dasharray',
|
|
50
|
+
'stroke-dashoffset',
|
|
51
|
+
'stroke-miterlimit',
|
|
52
|
+
'stroke-opacity',
|
|
53
|
+
'stroke-width',
|
|
54
|
+
]);
|
|
55
|
+
/**
|
|
56
|
+
* Processes CSS properties from a CSS object or function
|
|
57
|
+
* Handles camelCase to kebab-case conversion and theme access.
|
|
58
|
+
* Numeric values are appended with 'px' unless the property is unitless.
|
|
59
|
+
*/
|
|
60
|
+
const processCss = (css, theme) => {
|
|
61
|
+
if (!css)
|
|
62
|
+
return '';
|
|
63
|
+
const cssObj = typeof css === 'function' ? css(theme) : css;
|
|
64
|
+
return Object.entries(cssObj)
|
|
65
|
+
.map(([key, value]) => {
|
|
66
|
+
const kebabKey = camelToKebab(key);
|
|
67
|
+
// Append 'px' to numeric values, except for 0 and unitless properties
|
|
68
|
+
const formattedValue = typeof value === 'number' &&
|
|
69
|
+
value !== 0 &&
|
|
70
|
+
!UNITLESS_PROPERTIES.has(kebabKey)
|
|
71
|
+
? `${value}px`
|
|
72
|
+
: typeof value === 'number'
|
|
73
|
+
? `${value}`
|
|
74
|
+
: value;
|
|
75
|
+
return `${kebabKey}: ${formattedValue};`;
|
|
76
|
+
})
|
|
77
|
+
.join('\n');
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export { UNITLESS_PROPERTIES, camelToKebab, processCss };
|
|
81
|
+
//# sourceMappingURL=styledUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styledUtils.js","sources":["../../../../src/utils/styledUtils.ts"],"sourcesContent":[null],"names":[],"mappings":"AAGA;;AAEG;AACU,MAAA,YAAY,GAAG,CAAC,GAAW,KAAY;IAClD,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE;AACrD;AAEA;;;AAGG;AACU,MAAA,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IAC9D,2BAA2B;IAC3B,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,UAAU;IACV,gBAAgB;IAChB,mBAAmB;IACnB,cAAc;IACd,SAAS;IACT,MAAM;IACN,WAAW;IACX,eAAe;IACf,aAAa;IACb,eAAe;IACf,YAAY;IACZ,WAAW;IACX,aAAa;IACb,iBAAiB;IACjB,kBAAkB;IAClB,mBAAmB;IACnB,UAAU;IACV,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,aAAa;IACb,YAAY;IACZ,aAAa;IACb,SAAS;IACT,OAAO;IACP,SAAS;IACT,UAAU;IACV,QAAQ;IACR,SAAS;IACT,MAAM;IACN,cAAc;IACd,eAAe;IACf,cAAc;IACd,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;IAChB,cAAc;AACf,CAAA;AAED;;;;AAIG;MACU,UAAU,GAAG,CACxB,GAGa,EACb,KAAY,KACF;AACV,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,EAAE;AAEnB,IAAA,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG;AAE3D,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM;SACzB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACpB,QAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC;;AAElC,QAAA,MAAM,cAAc,GAClB,OAAO,KAAK,KAAK,QAAQ;AACzB,YAAA,KAAK,KAAK,CAAC;AACX,YAAA,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ;cAC7B,CAAG,EAAA,KAAK,CAAI,EAAA;AACd,cAAE,OAAO,KAAK,KAAK;kBACf,CAAG,EAAA,KAAK,CAAE;kBACT,KAAgB;AACzB,QAAA,OAAO,CAAG,EAAA,QAAQ,CAAK,EAAA,EAAA,cAAc,GAAG;AAC1C,KAAC;SACA,IAAI,CAAC,IAAI,CAAC;AACf;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PaletteColor } from './palettes/material.js';
|
|
3
|
+
|
|
4
|
+
interface ColorPaletteProps {
|
|
5
|
+
palette: PaletteColor[];
|
|
6
|
+
currentColor: string;
|
|
7
|
+
onSelect: (color: string) => void;
|
|
8
|
+
/** Title displayed in the collapsible header @default "Palette" */
|
|
9
|
+
title?: string;
|
|
10
|
+
/** Whether the palette starts expanded @default false */
|
|
11
|
+
defaultExpanded?: boolean;
|
|
12
|
+
}
|
|
13
|
+
declare const ColorPalette: React.FC<ColorPaletteProps>;
|
|
14
|
+
|
|
15
|
+
export { ColorPalette };
|
|
16
|
+
export type { ColorPaletteProps };
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Prettify } from '../../../types/utilities.js';
|
|
2
|
+
import { BaseComponent, Size } from '../../../types/common.js';
|
|
3
|
+
import { ColorFormat as ColorFormat$1 } from './colorUtils.js';
|
|
4
|
+
import { Palette, PaletteColor } from './palettes/material.js';
|
|
5
|
+
export { PaletteShade } from './palettes/material.js';
|
|
6
|
+
|
|
7
|
+
type ColorFormat = ColorFormat$1;
|
|
8
|
+
type ColorPickerSize = Size;
|
|
9
|
+
type ColorInputMode = 'hex' | 'rgb' | 'hsl';
|
|
10
|
+
interface ColorPreset {
|
|
11
|
+
color: string;
|
|
12
|
+
label?: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface ColorPickerBaseProps extends Omit<BaseComponent, 'onChange' | 'value' | 'defaultValue'> {
|
|
16
|
+
/**
|
|
17
|
+
* Current color value (controlled).
|
|
18
|
+
* Accepts any valid CSS color string.
|
|
19
|
+
*/
|
|
20
|
+
value?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Default color value (uncontrolled)
|
|
23
|
+
* @default "#007acc"
|
|
24
|
+
*/
|
|
25
|
+
defaultValue?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Output format for onChange
|
|
28
|
+
* @default "hex"
|
|
29
|
+
*/
|
|
30
|
+
format?: ColorFormat;
|
|
31
|
+
/**
|
|
32
|
+
* Whether to show the alpha channel control
|
|
33
|
+
* @default false
|
|
34
|
+
*/
|
|
35
|
+
showAlpha?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Available input modes
|
|
38
|
+
* @default ['hex', 'rgb', 'hsl']
|
|
39
|
+
*/
|
|
40
|
+
inputModes?: ColorInputMode[];
|
|
41
|
+
/**
|
|
42
|
+
* Default input mode
|
|
43
|
+
* @default "hex"
|
|
44
|
+
*/
|
|
45
|
+
defaultInputMode?: ColorInputMode;
|
|
46
|
+
/**
|
|
47
|
+
* Preset color palette
|
|
48
|
+
*/
|
|
49
|
+
presets?: ColorPreset[];
|
|
50
|
+
/**
|
|
51
|
+
* Swatch trigger size
|
|
52
|
+
* @default "md"
|
|
53
|
+
*/
|
|
54
|
+
size?: ColorPickerSize;
|
|
55
|
+
/**
|
|
56
|
+
* Shape of the swatch trigger
|
|
57
|
+
* @default "square"
|
|
58
|
+
*/
|
|
59
|
+
swatchShape?: 'square' | 'circle';
|
|
60
|
+
/**
|
|
61
|
+
* Label displayed next to the swatch
|
|
62
|
+
*/
|
|
63
|
+
label?: string;
|
|
64
|
+
/**
|
|
65
|
+
* Whether the picker is disabled
|
|
66
|
+
* @default false
|
|
67
|
+
*/
|
|
68
|
+
disabled?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Whether the component is inline (no popover)
|
|
71
|
+
* @default false
|
|
72
|
+
*/
|
|
73
|
+
inline?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Width of the picker panel in pixels
|
|
76
|
+
* @default 240
|
|
77
|
+
*/
|
|
78
|
+
pickerWidth?: number;
|
|
79
|
+
/**
|
|
80
|
+
* Callback when color changes (continuous)
|
|
81
|
+
*/
|
|
82
|
+
onChange?: (color: string) => void;
|
|
83
|
+
/**
|
|
84
|
+
* Callback when color change is committed (drag end)
|
|
85
|
+
*/
|
|
86
|
+
onChangeComplete?: (color: string) => void;
|
|
87
|
+
/**
|
|
88
|
+
* Whether to show the EyeDropper button (Chromium-only).
|
|
89
|
+
* Hidden automatically if browser doesn't support the EyeDropper API.
|
|
90
|
+
* @default false
|
|
91
|
+
*/
|
|
92
|
+
showEyeDropper?: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Built-in color palette or custom palette data.
|
|
95
|
+
* - `'material'` — Material Design colors (19 hues × 10 shades)
|
|
96
|
+
* - `'tailwind'` — Tailwind CSS colors (22 hues × 11 shades)
|
|
97
|
+
* - `'pastel'` — Soft pastel colors
|
|
98
|
+
* - `'earth'` — Natural earth tones
|
|
99
|
+
* - `'neon'` — High-saturation neon colors
|
|
100
|
+
* - `'monochrome'` — Neutral, warm, and cool grays
|
|
101
|
+
* - `'skin-tones'` — Portrait/illustration skin palette
|
|
102
|
+
* - `'vintage'` — Desaturated retro film colors
|
|
103
|
+
* - `Palette` — custom palette with name
|
|
104
|
+
* - `PaletteColor[]` — custom palette data (legacy)
|
|
105
|
+
*/
|
|
106
|
+
palette?: 'material' | 'tailwind' | 'pastel' | 'earth' | 'neon' | 'monochrome' | 'skin-tones' | 'vintage' | Palette | PaletteColor[];
|
|
107
|
+
}
|
|
108
|
+
type ColorPickerProps = Prettify<ColorPickerBaseProps>;
|
|
109
|
+
interface ColorSwatchProps extends BaseComponent<HTMLButtonElement> {
|
|
110
|
+
color: string;
|
|
111
|
+
size?: ColorPickerSize;
|
|
112
|
+
shape?: 'square' | 'circle';
|
|
113
|
+
disabled?: boolean;
|
|
114
|
+
onClick?: () => void;
|
|
115
|
+
'aria-label'?: string;
|
|
116
|
+
}
|
|
117
|
+
type ColorSwatchPublicProps = Prettify<ColorSwatchProps>;
|
|
118
|
+
|
|
119
|
+
export { Palette, PaletteColor };
|
|
120
|
+
export type { ColorFormat, ColorInputMode, ColorPickerBaseProps, ColorPickerProps, ColorPickerSize, ColorPreset, ColorSwatchProps, ColorSwatchPublicProps };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Prettify } from '../../../types/utilities.js';
|
|
3
|
+
import { BaseComponent, Size } from '../../../types/common.js';
|
|
4
|
+
|
|
5
|
+
interface EyeDropperBaseProps extends Omit<BaseComponent<HTMLButtonElement>, 'onChange'> {
|
|
6
|
+
/** Callback when a color is picked */
|
|
7
|
+
onColorPick?: (color: string) => void;
|
|
8
|
+
/** Button size @default "md" */
|
|
9
|
+
size?: Size;
|
|
10
|
+
/** Whether disabled @default false */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
}
|
|
13
|
+
type EyeDropperProps = Prettify<EyeDropperBaseProps>;
|
|
14
|
+
/**
|
|
15
|
+
* EyeDropper button that opens the native browser EyeDropper API
|
|
16
|
+
* to sample a color from anywhere on the screen.
|
|
17
|
+
*
|
|
18
|
+
* Renders nothing if the EyeDropper API is not available in the browser.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```tsx
|
|
22
|
+
* <EyeDropper onColorPick={(hex) => setColor(hex)} />
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
declare const EyeDropper: React.FC<EyeDropperProps>;
|
|
26
|
+
|
|
27
|
+
export { EyeDropper };
|
|
28
|
+
export type { EyeDropperProps };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Material Design color palette
|
|
3
|
+
*
|
|
4
|
+
* Contains 19 color families with 10 shades each (50-900).
|
|
5
|
+
* Based on the official Material Design color system.
|
|
6
|
+
*/
|
|
7
|
+
interface PaletteShade {
|
|
8
|
+
label: string;
|
|
9
|
+
color: string;
|
|
10
|
+
}
|
|
11
|
+
interface PaletteColor {
|
|
12
|
+
name: string;
|
|
13
|
+
shades: PaletteShade[];
|
|
14
|
+
}
|
|
15
|
+
interface Palette {
|
|
16
|
+
/** Display name for the palette (e.g. "Material Design") */
|
|
17
|
+
name: string;
|
|
18
|
+
/** Color families in this palette */
|
|
19
|
+
colors: PaletteColor[];
|
|
20
|
+
}
|
|
21
|
+
declare const MATERIAL_PALETTE: Palette;
|
|
22
|
+
|
|
23
|
+
export { MATERIAL_PALETTE };
|
|
24
|
+
export type { Palette, PaletteColor, PaletteShade };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Palette } from './material.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Professional color palettes for creative workflows.
|
|
5
|
+
*
|
|
6
|
+
* Inspired by palettes found in Photoshop, Affinity Photo,
|
|
7
|
+
* and other professional creative tools.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
declare const PASTEL_PALETTE: Palette;
|
|
11
|
+
declare const EARTH_PALETTE: Palette;
|
|
12
|
+
declare const NEON_PALETTE: Palette;
|
|
13
|
+
declare const MONOCHROME_PALETTE: Palette;
|
|
14
|
+
declare const SKIN_TONES_PALETTE: Palette;
|
|
15
|
+
declare const VINTAGE_PALETTE: Palette;
|
|
16
|
+
/** All professional palettes as a convenience array */
|
|
17
|
+
declare const PROFESSIONAL_PALETTES: Palette[];
|
|
18
|
+
|
|
19
|
+
export { EARTH_PALETTE, MONOCHROME_PALETTE, NEON_PALETTE, PASTEL_PALETTE, PROFESSIONAL_PALETTES, SKIN_TONES_PALETTE, VINTAGE_PALETTE };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Palette } from './material.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Tailwind CSS color palette
|
|
5
|
+
*
|
|
6
|
+
* Contains 22 color families with 11 shades each (50-950).
|
|
7
|
+
* Based on the official Tailwind CSS color system.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
declare const TAILWIND_PALETTE: Palette;
|
|
11
|
+
|
|
12
|
+
export { TAILWIND_PALETTE };
|