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,297 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Prettify } from '../../../types/utilities.js';
|
|
3
|
+
import { BaseComponent, Size } from '../../../types/common.js';
|
|
4
|
+
|
|
5
|
+
type CurveEditorSize = Size;
|
|
6
|
+
/**
|
|
7
|
+
* Tangent handle mode — controls how handles behave around a keyframe.
|
|
8
|
+
* - `free`: Each handle moves independently
|
|
9
|
+
* - `aligned`: Handles stay co-linear but can differ in length
|
|
10
|
+
* - `mirrored`: Handles are symmetric (same angle and length)
|
|
11
|
+
* - `auto`: Smooth catmull-rom style — handles auto-computed from neighbors
|
|
12
|
+
* - `linear`: No handles — straight line segments
|
|
13
|
+
* - `step`: Constant value until next keyframe (hold / step function)
|
|
14
|
+
*/
|
|
15
|
+
type TangentMode = 'free' | 'aligned' | 'mirrored' | 'auto' | 'linear' | 'step';
|
|
16
|
+
/**
|
|
17
|
+
* Single control point (keyframe) on the curve.
|
|
18
|
+
*/
|
|
19
|
+
interface CurveKeyframe {
|
|
20
|
+
/** X position in domain space (e.g., 0-1 for normalized, 0-100 for frames) */
|
|
21
|
+
x: number;
|
|
22
|
+
/** Y value at this position */
|
|
23
|
+
y: number;
|
|
24
|
+
/** Left tangent handle offset (relative to keyframe position) */
|
|
25
|
+
handleIn: {
|
|
26
|
+
x: number;
|
|
27
|
+
y: number;
|
|
28
|
+
};
|
|
29
|
+
/** Right tangent handle offset (relative to keyframe position) */
|
|
30
|
+
handleOut: {
|
|
31
|
+
x: number;
|
|
32
|
+
y: number;
|
|
33
|
+
};
|
|
34
|
+
/** Tangent mode for this keyframe */
|
|
35
|
+
tangentMode: TangentMode;
|
|
36
|
+
/** Optional unique ID (auto-generated if not provided) */
|
|
37
|
+
id?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Complete curve data model.
|
|
41
|
+
*/
|
|
42
|
+
interface CurveData {
|
|
43
|
+
/** Ordered array of keyframes (sorted by x) */
|
|
44
|
+
keyframes: CurveKeyframe[];
|
|
45
|
+
/** Domain bounds — x range */
|
|
46
|
+
domainX: [number, number];
|
|
47
|
+
/** Domain bounds — y range */
|
|
48
|
+
domainY: [number, number];
|
|
49
|
+
/**
|
|
50
|
+
* Pre-infinity behavior — what happens before the first keyframe
|
|
51
|
+
* @default "constant"
|
|
52
|
+
*/
|
|
53
|
+
preInfinity?: 'constant' | 'linear' | 'cycle' | 'pingpong';
|
|
54
|
+
/**
|
|
55
|
+
* Post-infinity behavior — what happens after the last keyframe
|
|
56
|
+
* @default "constant"
|
|
57
|
+
*/
|
|
58
|
+
postInfinity?: 'constant' | 'linear' | 'cycle' | 'pingpong';
|
|
59
|
+
}
|
|
60
|
+
interface CurveEditorBaseProps extends Omit<BaseComponent, 'onChange' | 'value' | 'defaultValue'> {
|
|
61
|
+
/**
|
|
62
|
+
* Curve data (controlled)
|
|
63
|
+
*/
|
|
64
|
+
value?: CurveData;
|
|
65
|
+
/**
|
|
66
|
+
* Default curve data (uncontrolled)
|
|
67
|
+
* @default ease-in-out preset
|
|
68
|
+
*/
|
|
69
|
+
defaultValue?: CurveData;
|
|
70
|
+
/**
|
|
71
|
+
* Width of the editor in pixels
|
|
72
|
+
* @default 320
|
|
73
|
+
*/
|
|
74
|
+
width?: number;
|
|
75
|
+
/**
|
|
76
|
+
* Height of the editor in pixels
|
|
77
|
+
* @default 200
|
|
78
|
+
*/
|
|
79
|
+
height?: number;
|
|
80
|
+
/**
|
|
81
|
+
* Whether the editor fills its parent container.
|
|
82
|
+
* Overrides width/height — uses ResizeObserver.
|
|
83
|
+
* @default false
|
|
84
|
+
*/
|
|
85
|
+
responsive?: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Whether to show the toolbar (presets, tangent mode, zoom)
|
|
88
|
+
* @default true
|
|
89
|
+
*/
|
|
90
|
+
showToolbar?: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Whether to show the grid lines
|
|
93
|
+
* @default true
|
|
94
|
+
*/
|
|
95
|
+
showGrid?: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Grid subdivision count (lines between domain bounds)
|
|
98
|
+
* @default 4
|
|
99
|
+
*/
|
|
100
|
+
gridSubdivisions?: number;
|
|
101
|
+
/**
|
|
102
|
+
* Whether to display X/Y axis value labels on the grid
|
|
103
|
+
* @default true
|
|
104
|
+
*/
|
|
105
|
+
showAxisLabels?: boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Whether to allow adding new keyframes by double-clicking the curve
|
|
108
|
+
* @default true
|
|
109
|
+
*/
|
|
110
|
+
allowAdd?: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Maximum number of keyframes allowed.
|
|
113
|
+
* When reached, double-click will not add new keyframes.
|
|
114
|
+
* @default Infinity
|
|
115
|
+
*/
|
|
116
|
+
maxKeyframes?: number;
|
|
117
|
+
/**
|
|
118
|
+
* Whether to allow deleting keyframes (Delete/Backspace key)
|
|
119
|
+
* @default true
|
|
120
|
+
*/
|
|
121
|
+
allowDelete?: boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Whether the first and last keyframe X positions are locked
|
|
124
|
+
* (user can change Y but not move them along X axis)
|
|
125
|
+
* @default true
|
|
126
|
+
*/
|
|
127
|
+
lockEndpoints?: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Minimum distance between keyframes on the X axis.
|
|
130
|
+
* Prevents overlapping keyframes.
|
|
131
|
+
* @default 0.001
|
|
132
|
+
*/
|
|
133
|
+
minKeyframeDistance?: number;
|
|
134
|
+
/**
|
|
135
|
+
* Whether Y values are clamped to domainY bounds.
|
|
136
|
+
* @default true
|
|
137
|
+
*/
|
|
138
|
+
clampY?: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Snap to grid while dragging (hold Ctrl to toggle)
|
|
141
|
+
* @default false
|
|
142
|
+
*/
|
|
143
|
+
snapToGrid?: boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Number format precision for displayed values
|
|
146
|
+
* @default 3
|
|
147
|
+
*/
|
|
148
|
+
precision?: number;
|
|
149
|
+
/**
|
|
150
|
+
* X axis label (e.g., "Time", "Input", "Distance")
|
|
151
|
+
*/
|
|
152
|
+
labelX?: string;
|
|
153
|
+
/**
|
|
154
|
+
* Y axis label (e.g., "Value", "Output", "Intensity")
|
|
155
|
+
*/
|
|
156
|
+
labelY?: string;
|
|
157
|
+
/**
|
|
158
|
+
* Preset curves available in the toolbar.
|
|
159
|
+
* Merged with built-in presets.
|
|
160
|
+
*/
|
|
161
|
+
presets?: CurvePreset[];
|
|
162
|
+
/**
|
|
163
|
+
* Component size — affects toolbar and label sizing
|
|
164
|
+
* @default "md"
|
|
165
|
+
*/
|
|
166
|
+
size?: CurveEditorSize;
|
|
167
|
+
/**
|
|
168
|
+
* Whether the editor is disabled
|
|
169
|
+
* @default false
|
|
170
|
+
*/
|
|
171
|
+
disabled?: boolean;
|
|
172
|
+
/**
|
|
173
|
+
* Whether the editor is read-only (can view but not edit)
|
|
174
|
+
* @default false
|
|
175
|
+
*/
|
|
176
|
+
readOnly?: boolean;
|
|
177
|
+
/**
|
|
178
|
+
* Curve line color
|
|
179
|
+
* @default theme.colors.accent.primary
|
|
180
|
+
*/
|
|
181
|
+
curveColor?: string;
|
|
182
|
+
/**
|
|
183
|
+
* Curve line width in pixels
|
|
184
|
+
* @default 2
|
|
185
|
+
*/
|
|
186
|
+
curveWidth?: number;
|
|
187
|
+
/**
|
|
188
|
+
* Callback when curve data changes.
|
|
189
|
+
* Fires continuously during drag.
|
|
190
|
+
*/
|
|
191
|
+
onChange?: (curve: CurveData) => void;
|
|
192
|
+
/**
|
|
193
|
+
* Callback when editing is committed (drag end, keyframe add/delete).
|
|
194
|
+
* Use for undo system integration.
|
|
195
|
+
*/
|
|
196
|
+
onChangeComplete?: (curve: CurveData) => void;
|
|
197
|
+
/**
|
|
198
|
+
* Callback when selection changes
|
|
199
|
+
*/
|
|
200
|
+
onSelectionChange?: (selectedIds: string[]) => void;
|
|
201
|
+
/**
|
|
202
|
+
* Callback to evaluate the curve at a given X position.
|
|
203
|
+
* Useful for displaying a preview value indicator.
|
|
204
|
+
*/
|
|
205
|
+
onEvaluate?: (x: number, y: number) => void;
|
|
206
|
+
/**
|
|
207
|
+
* Custom background renderer — called after clearing the canvas but before
|
|
208
|
+
* drawing the grid. Use this to draw histograms, gradients, or other
|
|
209
|
+
* visualisations behind the curve (like Photoshop / Lightroom curves).
|
|
210
|
+
*
|
|
211
|
+
* The callback receives the canvas 2D context already scaled for
|
|
212
|
+
* `devicePixelRatio`, the drawable area in CSS pixels, and the current
|
|
213
|
+
* viewport so you can map domain values to pixel positions with
|
|
214
|
+
* `domainToCanvas()`.
|
|
215
|
+
*/
|
|
216
|
+
renderBackground?: (ctx: CanvasRenderingContext2D, info: CurveBackgroundInfo) => void;
|
|
217
|
+
/**
|
|
218
|
+
* Render prop for custom content below the canvas.
|
|
219
|
+
* Use for channel selectors, coordinate displays, color space
|
|
220
|
+
* pickers, or any custom status bar content.
|
|
221
|
+
*
|
|
222
|
+
* The callback receives curve state so the bottom bar can display
|
|
223
|
+
* reactive data (selected keyframe coordinates, evaluated values, etc.).
|
|
224
|
+
*/
|
|
225
|
+
renderBottomBar?: (info: CurveBottomBarInfo) => React.ReactNode;
|
|
226
|
+
/**
|
|
227
|
+
* Whether tangent editing is locked.
|
|
228
|
+
* When true:
|
|
229
|
+
* - Tangent mode buttons are hidden from the toolbar
|
|
230
|
+
* - Tangent handle lines/circles are not drawn on canvas
|
|
231
|
+
* - Handle dragging is disabled
|
|
232
|
+
* - Double-click on keyframes does not cycle tangent modes
|
|
233
|
+
* - Keyboard shortcuts 1-6 for tangent modes are ignored
|
|
234
|
+
*
|
|
235
|
+
* The curve still renders normally using each keyframe's existing
|
|
236
|
+
* tangentMode — this prop only locks UI-based changes.
|
|
237
|
+
* @default false
|
|
238
|
+
*/
|
|
239
|
+
lockTangents?: boolean;
|
|
240
|
+
}
|
|
241
|
+
type CurveEditorProps = Prettify<CurveEditorBaseProps>;
|
|
242
|
+
interface CurvePreset {
|
|
243
|
+
/** Display name in the preset selector */
|
|
244
|
+
label: string;
|
|
245
|
+
/** Preset identifier */
|
|
246
|
+
id: string;
|
|
247
|
+
/** Curve data for this preset */
|
|
248
|
+
curve: CurveData;
|
|
249
|
+
/** Optional category for grouping presets */
|
|
250
|
+
category?: string;
|
|
251
|
+
/** Optional icon element */
|
|
252
|
+
icon?: React.ReactNode;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Information passed to the `renderBottomBar` render prop.
|
|
256
|
+
*/
|
|
257
|
+
interface CurveBottomBarInfo {
|
|
258
|
+
/** Current curve data */
|
|
259
|
+
curve: CurveData;
|
|
260
|
+
/** IDs of currently selected keyframes */
|
|
261
|
+
selectedIds: string[];
|
|
262
|
+
/** The actual selected keyframe objects */
|
|
263
|
+
selectedKeyframes: CurveKeyframe[];
|
|
264
|
+
/** Evaluate the curve at a given X position */
|
|
265
|
+
evaluate: (x: number) => number;
|
|
266
|
+
/** Whether the editor is disabled */
|
|
267
|
+
disabled: boolean;
|
|
268
|
+
/** Whether the editor is read-only */
|
|
269
|
+
readOnly: boolean;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Information passed to the `renderBackground` callback.
|
|
273
|
+
*/
|
|
274
|
+
interface CurveBackgroundInfo {
|
|
275
|
+
/** Canvas width in CSS pixels */
|
|
276
|
+
width: number;
|
|
277
|
+
/** Canvas height in CSS pixels */
|
|
278
|
+
height: number;
|
|
279
|
+
/** Current viewport mapping (use with `domainToCanvas`) */
|
|
280
|
+
viewport: CurveViewport;
|
|
281
|
+
/** Domain X range — e.g. [0, 1] or [0, 255] */
|
|
282
|
+
domainX: [number, number];
|
|
283
|
+
/** Domain Y range */
|
|
284
|
+
domainY: [number, number];
|
|
285
|
+
}
|
|
286
|
+
interface CurveViewport {
|
|
287
|
+
/** Visible domain range */
|
|
288
|
+
viewX: [number, number];
|
|
289
|
+
viewY: [number, number];
|
|
290
|
+
/** Zoom level (1 = fit to bounds) */
|
|
291
|
+
zoom: number;
|
|
292
|
+
/** Pan offset in domain units */
|
|
293
|
+
panX: number;
|
|
294
|
+
panY: number;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
export type { CurveBackgroundInfo, CurveBottomBarInfo, CurveData, CurveEditorBaseProps, CurveEditorProps, CurveEditorSize, CurveKeyframe, CurvePreset, CurveViewport, TangentMode };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { CurveData, CurveViewport } from './CurveEditor.types.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Evaluate the entire curve at a given X position.
|
|
5
|
+
* Finds the right segment, solves for t, returns Y.
|
|
6
|
+
*/
|
|
7
|
+
declare function evaluateCurve(curve: CurveData, x: number): number;
|
|
8
|
+
/**
|
|
9
|
+
* Sample the curve at N evenly-spaced X points.
|
|
10
|
+
* Returns array of {x, y} for rendering as a polyline.
|
|
11
|
+
*/
|
|
12
|
+
declare function sampleCurve(curve: CurveData, numSamples: number): Array<{
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
}>;
|
|
16
|
+
/**
|
|
17
|
+
* Convert domain coordinates to canvas pixel coordinates.
|
|
18
|
+
*/
|
|
19
|
+
declare function domainToCanvas(domainX: number, domainY: number, viewport: CurveViewport, canvasWidth: number, canvasHeight: number): {
|
|
20
|
+
px: number;
|
|
21
|
+
py: number;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Create a default linear curve.
|
|
25
|
+
*/
|
|
26
|
+
declare function createLinearCurve(domainX?: [number, number], domainY?: [number, number]): CurveData;
|
|
27
|
+
|
|
28
|
+
export { createLinearCurve, domainToCanvas, evaluateCurve, sampleCurve };
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Prettify } from '../../../types/utilities.js';
|
|
4
|
+
import { BaseComponent, Size } from '../../../types/common.js';
|
|
5
|
+
import { UseNumberInputOptions } from './useNumberInput.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Props specific to NumberInput component
|
|
9
|
+
*/
|
|
10
|
+
interface NumberInputBaseProps extends Omit<BaseComponent, 'onChange'>, UseNumberInputOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Current numeric value
|
|
13
|
+
*/
|
|
14
|
+
value: number;
|
|
15
|
+
/**
|
|
16
|
+
* Callback when value changes
|
|
17
|
+
*/
|
|
18
|
+
onChange: (value: number) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Unit suffix to display (e.g., "px", "%", "°")
|
|
21
|
+
* Can be a string or a function that formats the value
|
|
22
|
+
*/
|
|
23
|
+
unit?: string | ((value: number) => string);
|
|
24
|
+
/**
|
|
25
|
+
* Whether to show increment/decrement buttons on hover
|
|
26
|
+
* @default true
|
|
27
|
+
*/
|
|
28
|
+
showStepButtons?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Custom validation function
|
|
31
|
+
* Return error message string if invalid, undefined if valid
|
|
32
|
+
*/
|
|
33
|
+
validate?: (value: number) => string | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Format value for display (e.g., add commas, currency symbols)
|
|
36
|
+
* This is separate from unit display
|
|
37
|
+
*/
|
|
38
|
+
formatValue?: (value: number) => string;
|
|
39
|
+
/**
|
|
40
|
+
* Parse custom formatted input back to number
|
|
41
|
+
* Used in conjunction with formatValue
|
|
42
|
+
*/
|
|
43
|
+
parseValue?: (input: string) => number | null;
|
|
44
|
+
/**
|
|
45
|
+
* Input size using standard library sizing
|
|
46
|
+
* - `sm`: 20px height, compact for toolbars
|
|
47
|
+
* - `md`: 24px height, standard for forms
|
|
48
|
+
* - `lg`: 32px height, prominent inputs
|
|
49
|
+
* @default "md"
|
|
50
|
+
*/
|
|
51
|
+
size?: Size;
|
|
52
|
+
/**
|
|
53
|
+
* Whether the input is disabled
|
|
54
|
+
* @default false
|
|
55
|
+
*/
|
|
56
|
+
disabled?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Whether the input is read-only
|
|
59
|
+
* @default false
|
|
60
|
+
*/
|
|
61
|
+
readOnly?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Error message displayed when error is true
|
|
64
|
+
*/
|
|
65
|
+
errorMessage?: string | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Placeholder text
|
|
68
|
+
*/
|
|
69
|
+
placeholder?: string | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Input label
|
|
72
|
+
*/
|
|
73
|
+
label?: string | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* Helper text displayed below the input
|
|
76
|
+
*/
|
|
77
|
+
helperText?: string | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* Whether the input is required
|
|
80
|
+
* @default false
|
|
81
|
+
*/
|
|
82
|
+
required?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Focus event handler
|
|
85
|
+
*/
|
|
86
|
+
onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;
|
|
87
|
+
/**
|
|
88
|
+
* Blur event handler
|
|
89
|
+
*/
|
|
90
|
+
onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;
|
|
91
|
+
/**
|
|
92
|
+
* Key down event handler
|
|
93
|
+
*/
|
|
94
|
+
onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Props for the NumberInput component with prettified type for better IntelliSense
|
|
98
|
+
*/
|
|
99
|
+
type NumberInputProps = Prettify<NumberInputBaseProps>;
|
|
100
|
+
/**
|
|
101
|
+
* A specialized number input component with Blender-like functionality.
|
|
102
|
+
*
|
|
103
|
+
* Features:
|
|
104
|
+
* - Drag left/right to change values with mouse
|
|
105
|
+
* - Click chevron buttons to increment/decrement
|
|
106
|
+
* - Keyboard input with mathematical expression support
|
|
107
|
+
* - Modifier keys: Ctrl (large steps), Shift (precision), Minus (negate)
|
|
108
|
+
* - Soft and hard value limits
|
|
109
|
+
* - Unit display support
|
|
110
|
+
* - Expression evaluation (pi, sqrt, sin, etc.)
|
|
111
|
+
* - Custom validation and formatting
|
|
112
|
+
* - Centered value and unit display
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```tsx
|
|
116
|
+
* // Basic number input
|
|
117
|
+
* <NumberInput
|
|
118
|
+
* value={rotation}
|
|
119
|
+
* onChange={setRotation}
|
|
120
|
+
* unit="°"
|
|
121
|
+
* step={1}
|
|
122
|
+
* />
|
|
123
|
+
*
|
|
124
|
+
* // With limits and precision
|
|
125
|
+
* <NumberInput
|
|
126
|
+
* value={opacity}
|
|
127
|
+
* onChange={setOpacity}
|
|
128
|
+
* min={0}
|
|
129
|
+
* max={1}
|
|
130
|
+
* step={0.1}
|
|
131
|
+
* precision={2}
|
|
132
|
+
* unit="%"
|
|
133
|
+
* />
|
|
134
|
+
*
|
|
135
|
+
* // With custom validation
|
|
136
|
+
* <NumberInput
|
|
137
|
+
* value={dimension}
|
|
138
|
+
* onChange={setDimension}
|
|
139
|
+
* validate={(v) => v <= 0 ? "Must be positive" : undefined}
|
|
140
|
+
* placeholder="Enter value or expression"
|
|
141
|
+
* />
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
declare const NumberInput: {
|
|
145
|
+
({ value, onChange, unit, showStepButtons, validate, formatValue, parseValue, min, max, softMin, softMax, step, precisionStep, largeStep, precision, allowExpressions, dragSensitivity, size, disabled, readOnly, errorMessage, placeholder, label, helperText, required, className, testId, onFocus, onBlur, onKeyDown, ref, ...props }: NumberInputProps): react_jsx_runtime.JSX.Element;
|
|
146
|
+
displayName: string;
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
export { NumberInput };
|
|
150
|
+
export type { NumberInputBaseProps, NumberInputProps };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration options for NumberInput behavior
|
|
3
|
+
*/
|
|
4
|
+
interface UseNumberInputOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Minimum allowed value (hard limit)
|
|
7
|
+
*/
|
|
8
|
+
min?: number;
|
|
9
|
+
/**
|
|
10
|
+
* Maximum allowed value (hard limit)
|
|
11
|
+
*/
|
|
12
|
+
max?: number;
|
|
13
|
+
/**
|
|
14
|
+
* Soft minimum for drag operations (can be overridden by keyboard)
|
|
15
|
+
*/
|
|
16
|
+
softMin?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Soft maximum for drag operations (can be overridden by keyboard)
|
|
19
|
+
*/
|
|
20
|
+
softMax?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Step size for increment/decrement operations
|
|
23
|
+
* @default 1
|
|
24
|
+
*/
|
|
25
|
+
step?: number;
|
|
26
|
+
/**
|
|
27
|
+
* Step size when Shift is held (precision mode)
|
|
28
|
+
* @default step / 10
|
|
29
|
+
*/
|
|
30
|
+
precisionStep?: number;
|
|
31
|
+
/**
|
|
32
|
+
* Step size when Ctrl is held (large steps)
|
|
33
|
+
* @default step * 10
|
|
34
|
+
*/
|
|
35
|
+
largeStep?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Number of decimal places to round to
|
|
38
|
+
*/
|
|
39
|
+
precision?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Whether to allow mathematical expressions
|
|
42
|
+
* @default true
|
|
43
|
+
*/
|
|
44
|
+
allowExpressions?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Whether the input is disabled
|
|
47
|
+
* @default false
|
|
48
|
+
*/
|
|
49
|
+
disabled?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Drag sensitivity multiplier
|
|
52
|
+
* @default 1
|
|
53
|
+
*/
|
|
54
|
+
dragSensitivity?: number;
|
|
55
|
+
/**
|
|
56
|
+
* Custom format function for display
|
|
57
|
+
*/
|
|
58
|
+
formatValue?: (value: number) => string;
|
|
59
|
+
/**
|
|
60
|
+
* Custom parse function for input
|
|
61
|
+
*/
|
|
62
|
+
parseValue?: (input: string) => number | null;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export type { UseNumberInputOptions };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { SelectProps } from './Select.types.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Select component for choosing single values from a dropdown list.
|
|
6
|
+
*
|
|
7
|
+
* Supports searchable mode, grouped options, keyboard navigation,
|
|
8
|
+
* clearable state, and multiple visual variants.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <Select
|
|
13
|
+
* label="Blend Mode"
|
|
14
|
+
* options={[
|
|
15
|
+
* { value: 'normal', label: 'Normal' },
|
|
16
|
+
* { value: 'multiply', label: 'Multiply' },
|
|
17
|
+
* { value: 'screen', label: 'Screen' },
|
|
18
|
+
* ]}
|
|
19
|
+
* value={blendMode}
|
|
20
|
+
* onChange={setBlendMode}
|
|
21
|
+
* />
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
declare function Select<T extends string = string>({ value: valueProp, defaultValue, options, placeholder, searchable, searchPlaceholder, filterFn, emptyMessage, size, variant, label, helperText, error, errorMessage, disabled, required, clearable, maxDropdownHeight, minDropdownWidth, name, onChange, onOpenChange, className, style, css, testId, ref, id: idProp, ...rest }: SelectProps<T>): react_jsx_runtime.JSX.Element;
|
|
25
|
+
declare namespace Select {
|
|
26
|
+
var displayName: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { Select };
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Prettify } from '../../../types/utilities.js';
|
|
3
|
+
import { BaseComponent, Size } from '../../../types/common.js';
|
|
4
|
+
|
|
5
|
+
type SelectSize = Size;
|
|
6
|
+
type SelectVariant = 'default' | 'ghost' | 'filled';
|
|
7
|
+
interface SelectOptionItem<T extends string = string> {
|
|
8
|
+
/** Unique value used for selection */
|
|
9
|
+
value: T;
|
|
10
|
+
/** Display label (falls back to value if not provided) */
|
|
11
|
+
label?: string;
|
|
12
|
+
/** Optional icon rendered before the label */
|
|
13
|
+
icon?: React.ReactNode;
|
|
14
|
+
/** Whether this option is disabled */
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
}
|
|
17
|
+
interface SelectOptionGroup<T extends string = string> {
|
|
18
|
+
/** Group label displayed as a non-selectable header */
|
|
19
|
+
label: string;
|
|
20
|
+
/** Options within this group */
|
|
21
|
+
options: SelectOptionItem<T>[];
|
|
22
|
+
}
|
|
23
|
+
interface SelectBaseProps<T extends string = string> extends Omit<BaseComponent<HTMLButtonElement>, 'onChange' | 'value' | 'defaultValue'> {
|
|
24
|
+
/**
|
|
25
|
+
* Selected value (controlled)
|
|
26
|
+
*/
|
|
27
|
+
value?: T | null;
|
|
28
|
+
/**
|
|
29
|
+
* Default selected value (uncontrolled)
|
|
30
|
+
*/
|
|
31
|
+
defaultValue?: T;
|
|
32
|
+
/**
|
|
33
|
+
* Options to display — flat list or grouped
|
|
34
|
+
*/
|
|
35
|
+
options: Array<SelectOptionItem<T> | SelectOptionGroup<T>>;
|
|
36
|
+
/**
|
|
37
|
+
* Placeholder text when no value is selected
|
|
38
|
+
* @default "Select..."
|
|
39
|
+
*/
|
|
40
|
+
placeholder?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Whether to show a search/filter input inside the dropdown
|
|
43
|
+
* @default false
|
|
44
|
+
*/
|
|
45
|
+
searchable?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Placeholder for the search input
|
|
48
|
+
* @default "Search..."
|
|
49
|
+
*/
|
|
50
|
+
searchPlaceholder?: string;
|
|
51
|
+
/**
|
|
52
|
+
* Custom filter function for searchable mode
|
|
53
|
+
*/
|
|
54
|
+
filterFn?: (option: SelectOptionItem<T>, query: string) => boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Message shown when search yields no results
|
|
57
|
+
* @default "No results found"
|
|
58
|
+
*/
|
|
59
|
+
emptyMessage?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Size using standard library sizing
|
|
62
|
+
* - `sm`: 20px trigger height
|
|
63
|
+
* - `md`: 24px trigger height
|
|
64
|
+
* - `lg`: 32px trigger height
|
|
65
|
+
* @default "md"
|
|
66
|
+
*/
|
|
67
|
+
size?: SelectSize;
|
|
68
|
+
/**
|
|
69
|
+
* Visual variant for the trigger button
|
|
70
|
+
* @default "default"
|
|
71
|
+
*/
|
|
72
|
+
variant?: SelectVariant;
|
|
73
|
+
/**
|
|
74
|
+
* Label displayed above the select
|
|
75
|
+
*/
|
|
76
|
+
label?: string;
|
|
77
|
+
/**
|
|
78
|
+
* Helper text displayed below the select
|
|
79
|
+
*/
|
|
80
|
+
helperText?: string;
|
|
81
|
+
/**
|
|
82
|
+
* Error state
|
|
83
|
+
* @default false
|
|
84
|
+
*/
|
|
85
|
+
error?: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Error message
|
|
88
|
+
*/
|
|
89
|
+
errorMessage?: string;
|
|
90
|
+
/**
|
|
91
|
+
* Whether the select is disabled
|
|
92
|
+
* @default false
|
|
93
|
+
*/
|
|
94
|
+
disabled?: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Whether the select is required
|
|
97
|
+
* @default false
|
|
98
|
+
*/
|
|
99
|
+
required?: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Whether a clear button appears when value is selected
|
|
102
|
+
* @default false
|
|
103
|
+
*/
|
|
104
|
+
clearable?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Maximum height of the dropdown in pixels
|
|
107
|
+
* @default 240
|
|
108
|
+
*/
|
|
109
|
+
maxDropdownHeight?: number;
|
|
110
|
+
/**
|
|
111
|
+
* Minimum width of the dropdown in pixels.
|
|
112
|
+
* When set, the dropdown will be at least this wide,
|
|
113
|
+
* even if the trigger is narrower.
|
|
114
|
+
*/
|
|
115
|
+
minDropdownWidth?: number;
|
|
116
|
+
/**
|
|
117
|
+
* Name attribute for form submission
|
|
118
|
+
*/
|
|
119
|
+
name?: string;
|
|
120
|
+
/**
|
|
121
|
+
* Change event handler
|
|
122
|
+
*/
|
|
123
|
+
onChange?: (value: T | null) => void;
|
|
124
|
+
/**
|
|
125
|
+
* Open state change handler
|
|
126
|
+
*/
|
|
127
|
+
onOpenChange?: (open: boolean) => void;
|
|
128
|
+
}
|
|
129
|
+
type SelectProps<T extends string = string> = Prettify<SelectBaseProps<T>>;
|
|
130
|
+
|
|
131
|
+
export type { SelectBaseProps, SelectOptionGroup, SelectOptionItem, SelectProps, SelectSize, SelectVariant };
|