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,37 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import styled from '@emotion/styled';
|
|
3
|
+
import { useAccordionContext, useAccordionItemContext } from './Accordion.js';
|
|
4
|
+
|
|
5
|
+
const CONTENT_SIZE_MAP = {
|
|
6
|
+
sm: { paddingVKey: 'sm', paddingHKey: 'md' },
|
|
7
|
+
md: { paddingVKey: 'md', paddingHKey: 'lg' },
|
|
8
|
+
lg: { paddingVKey: 'lg', paddingHKey: 'xl' },
|
|
9
|
+
};
|
|
10
|
+
const StyledContentWrapper = styled.div `
|
|
11
|
+
display: grid;
|
|
12
|
+
grid-template-rows: ${props => (props.$expanded ? '1fr' : '0fr')};
|
|
13
|
+
transition: grid-template-rows ${props => props.theme.transitions.normal};
|
|
14
|
+
`;
|
|
15
|
+
const StyledContentInner = styled.div `
|
|
16
|
+
overflow: hidden;
|
|
17
|
+
min-height: 0;
|
|
18
|
+
`;
|
|
19
|
+
const StyledContentBody = styled.div `
|
|
20
|
+
padding: ${props => props.theme.spacing[CONTENT_SIZE_MAP[props.$size].paddingVKey]}px
|
|
21
|
+
${props => props.theme.spacing[CONTENT_SIZE_MAP[props.$size].paddingHKey]}px;
|
|
22
|
+
`;
|
|
23
|
+
// --- Component ---
|
|
24
|
+
const AccordionContent = ({ children, keepMounted = false, className, style, testId, ref, ...rest }) => {
|
|
25
|
+
const { size, accordionId } = useAccordionContext();
|
|
26
|
+
const { value, isExpanded } = useAccordionItemContext();
|
|
27
|
+
const triggerId = `accordion-${accordionId}-trigger-${value}`;
|
|
28
|
+
const contentId = `accordion-${accordionId}-content-${value}`;
|
|
29
|
+
if (!isExpanded && !keepMounted) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
return (jsx(StyledContentWrapper, { "$expanded": isExpanded, role: "region", id: contentId, "aria-labelledby": triggerId, hidden: !isExpanded || undefined, children: jsx(StyledContentInner, { children: jsx(StyledContentBody, { ref: ref, "$size": size, className: className, style: style, "data-testid": testId, ...rest, children: children }) }) }));
|
|
33
|
+
};
|
|
34
|
+
AccordionContent.displayName = 'AccordionContent';
|
|
35
|
+
|
|
36
|
+
export { AccordionContent };
|
|
37
|
+
//# sourceMappingURL=AccordionContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccordionContent.js","sources":["../../../../../../src/components/layout/Accordion/AccordionContent.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;AAaA,MAAM,gBAAgB,GAA6C;IACjE,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;IAC5C,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;IAC5C,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;CAC7C;AAQD,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAA2B;;AAE1C,sBAAA,EAAA,KAAK,KAAK,KAAK,CAAC,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC,CAAA;mCAC/B,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAA;CACzE;AAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGpC;AAMD,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAwB;AAC/C,WAAA,EAAA,KAAK,IACZ,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAA;AAC9D,IAAA,EAAA,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAA;CAC5E;AAED;AAEa,MAAA,gBAAgB,GAAoC,CAAC,EAChE,QAAQ,EACR,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,KAAK,EACL,MAAM,EACN,GAAG,EACH,GAAG,IAAI,EACR,KAAI;IACH,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,mBAAmB,EAAE;IACnD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,uBAAuB,EAAE;AAEvD,IAAA,MAAM,SAAS,GAAG,CAAA,UAAA,EAAa,WAAW,CAAY,SAAA,EAAA,KAAK,EAAE;AAC7D,IAAA,MAAM,SAAS,GAAG,CAAA,UAAA,EAAa,WAAW,CAAY,SAAA,EAAA,KAAK,EAAE;AAE7D,IAAA,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,OAAO,IAAI;;IAGb,QACEA,GAAC,CAAA,oBAAoB,EACR,EAAA,WAAA,EAAA,UAAU,EACrB,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,SAAS,EACI,iBAAA,EAAA,SAAS,EAC1B,MAAM,EAAE,CAAC,UAAU,IAAI,SAAS,EAEhC,QAAA,EAAAA,GAAA,CAAC,kBAAkB,EAAA,EAAA,QAAA,EACjBA,IAAC,iBAAiB,EAAA,EAChB,GAAG,EAAE,GAAG,EAAA,OAAA,EACD,IAAI,EACX,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EAAA,aAAA,EACC,MAAM,EAAA,GACf,IAAI,EAAA,QAAA,EAEP,QAAQ,EACS,CAAA,EAAA,CACD,EACA,CAAA;AAE3B;AAEA,gBAAgB,CAAC,WAAW,GAAG,kBAAkB;;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import styled from '@emotion/styled';
|
|
3
|
+
import { useAccordionContext, AccordionItemContext } from './Accordion.js';
|
|
4
|
+
|
|
5
|
+
// --- Styled ---
|
|
6
|
+
const StyledAccordionItem = styled.div `
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
`;
|
|
10
|
+
// --- Component ---
|
|
11
|
+
const AccordionItem = ({ value, disabled = false, children, className, style, testId, ref, ...rest }) => {
|
|
12
|
+
const { expandedItems } = useAccordionContext();
|
|
13
|
+
const isExpanded = expandedItems.includes(value);
|
|
14
|
+
const itemContext = {
|
|
15
|
+
value,
|
|
16
|
+
isExpanded,
|
|
17
|
+
isDisabled: disabled,
|
|
18
|
+
};
|
|
19
|
+
return (jsx(AccordionItemContext.Provider, { value: itemContext, children: jsx(StyledAccordionItem, { ref: ref, className: className, style: style, "data-testid": testId, ...rest, children: children }) }));
|
|
20
|
+
};
|
|
21
|
+
AccordionItem.displayName = 'AccordionItem';
|
|
22
|
+
|
|
23
|
+
export { AccordionItem };
|
|
24
|
+
//# sourceMappingURL=AccordionItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccordionItem.js","sources":["../../../../../../src/components/layout/Accordion/AccordionItem.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;AAQA;AAEA,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGrC;AAED;AAEa,MAAA,aAAa,GAAiC,CAAC,EAC1D,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,GAAG,EACH,GAAG,IAAI,EACR,KAAI;AACH,IAAA,MAAM,EAAE,aAAa,EAAE,GAAG,mBAAmB,EAAE;IAC/C,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;AAEhD,IAAA,MAAM,WAAW,GAA8B;QAC7C,KAAK;QACL,UAAU;AACV,QAAA,UAAU,EAAE,QAAQ;KACrB;AAED,IAAA,QACEA,GAAA,CAAC,oBAAoB,CAAC,QAAQ,EAAC,EAAA,KAAK,EAAE,WAAW,EAC/C,QAAA,EAAAA,GAAA,CAAC,mBAAmB,EAAA,EAClB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EAAA,aAAA,EACC,MAAM,EAAA,GACf,IAAI,EAEP,QAAA,EAAA,QAAQ,EACW,CAAA,EAAA,CACQ;AAEpC;AAEA,aAAa,CAAC,WAAW,GAAG,eAAe;;;;"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useCallback } from 'react';
|
|
3
|
+
import styled from '@emotion/styled';
|
|
4
|
+
import { useAccordionContext, useAccordionItemContext } from './Accordion.js';
|
|
5
|
+
|
|
6
|
+
const TRIGGER_SIZE_MAP = {
|
|
7
|
+
sm: { height: 28, paddingKey: 'md', fontKey: 'xs', chevronSize: 10 },
|
|
8
|
+
md: { height: 32, paddingKey: 'lg', fontKey: 'sm', chevronSize: 12 },
|
|
9
|
+
lg: { height: 38, paddingKey: 'xl', fontKey: 'md', chevronSize: 14 },
|
|
10
|
+
};
|
|
11
|
+
const StyledTriggerButton = styled.button `
|
|
12
|
+
/* Reset */
|
|
13
|
+
margin: 0;
|
|
14
|
+
border: none;
|
|
15
|
+
font-family: inherit;
|
|
16
|
+
outline: none;
|
|
17
|
+
cursor: ${props => (props.$disabled ? 'not-allowed' : 'pointer')};
|
|
18
|
+
user-select: none;
|
|
19
|
+
width: 100%;
|
|
20
|
+
text-align: left;
|
|
21
|
+
|
|
22
|
+
/* Layout */
|
|
23
|
+
display: flex;
|
|
24
|
+
align-items: center;
|
|
25
|
+
gap: ${props => props.theme.spacing.sm}px;
|
|
26
|
+
|
|
27
|
+
/* Sizing */
|
|
28
|
+
height: ${props => TRIGGER_SIZE_MAP[props.$size].height}px;
|
|
29
|
+
padding: 0
|
|
30
|
+
${props => props.theme.spacing[TRIGGER_SIZE_MAP[props.$size].paddingKey]}px;
|
|
31
|
+
font-size: ${props => props.theme.typography.fontSize[TRIGGER_SIZE_MAP[props.$size].fontKey]}px;
|
|
32
|
+
font-weight: ${props => props.theme.typography.fontWeight.medium};
|
|
33
|
+
color: ${props => props.theme.colors.text.primary};
|
|
34
|
+
transition: background ${props => props.theme.transitions.fast};
|
|
35
|
+
|
|
36
|
+
/* Disabled */
|
|
37
|
+
opacity: ${props => (props.$disabled ? 0.5 : 1)};
|
|
38
|
+
|
|
39
|
+
/* Variant styles */
|
|
40
|
+
${props => {
|
|
41
|
+
const { colors } = props.theme;
|
|
42
|
+
switch (props.$variant) {
|
|
43
|
+
case 'ghost':
|
|
44
|
+
return `
|
|
45
|
+
background: transparent;
|
|
46
|
+
border-bottom: 1px solid ${colors.border.default};
|
|
47
|
+
&:hover:not(:disabled) {
|
|
48
|
+
background: ${colors.surface.hover};
|
|
49
|
+
}
|
|
50
|
+
`;
|
|
51
|
+
case 'filled':
|
|
52
|
+
return `
|
|
53
|
+
background: ${colors.background.tertiary};
|
|
54
|
+
&:hover:not(:disabled) {
|
|
55
|
+
background: ${colors.surface.hover};
|
|
56
|
+
}
|
|
57
|
+
`;
|
|
58
|
+
default:
|
|
59
|
+
return `
|
|
60
|
+
background: ${colors.surface.default};
|
|
61
|
+
border-bottom: 1px solid ${colors.border.default};
|
|
62
|
+
&:hover:not(:disabled) {
|
|
63
|
+
background: ${colors.surface.hover};
|
|
64
|
+
}
|
|
65
|
+
`;
|
|
66
|
+
}
|
|
67
|
+
}}
|
|
68
|
+
|
|
69
|
+
/* Focus visible */
|
|
70
|
+
&:focus-visible {
|
|
71
|
+
box-shadow: ${props => props.theme.shadows.focus};
|
|
72
|
+
z-index: 1;
|
|
73
|
+
}
|
|
74
|
+
`;
|
|
75
|
+
const StyledChevron = styled.span `
|
|
76
|
+
display: flex;
|
|
77
|
+
align-items: center;
|
|
78
|
+
justify-content: center;
|
|
79
|
+
flex-shrink: 0;
|
|
80
|
+
transition: transform ${props => props.theme.transitions.fast};
|
|
81
|
+
transform: rotate(${props => (props.$expanded ? '90deg' : '0deg')});
|
|
82
|
+
color: ${props => props.theme.colors.text.muted};
|
|
83
|
+
|
|
84
|
+
svg {
|
|
85
|
+
width: ${props => props.$size}px;
|
|
86
|
+
height: ${props => props.$size}px;
|
|
87
|
+
}
|
|
88
|
+
`;
|
|
89
|
+
const StyledActionsArea = styled.span `
|
|
90
|
+
display: flex;
|
|
91
|
+
align-items: center;
|
|
92
|
+
margin-left: auto;
|
|
93
|
+
gap: ${props => props.theme.spacing.xs}px;
|
|
94
|
+
`;
|
|
95
|
+
const StyledIconArea = styled.span `
|
|
96
|
+
display: flex;
|
|
97
|
+
align-items: center;
|
|
98
|
+
flex-shrink: 0;
|
|
99
|
+
`;
|
|
100
|
+
// --- Chevron icon ---
|
|
101
|
+
const ChevronRightIcon = ({ size }) => (jsx("svg", { width: size, height: size, viewBox: "0 0 12 12", fill: "none", "aria-hidden": "true", children: jsx("path", { d: "M4.5 3L7.5 6L4.5 9", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
|
|
102
|
+
// --- Component ---
|
|
103
|
+
const AccordionTrigger = ({ children, icon, actions, indicator, className, style, testId, ref, ...rest }) => {
|
|
104
|
+
const { toggleItem, variant, size, accordionId } = useAccordionContext();
|
|
105
|
+
const { value, isExpanded, isDisabled } = useAccordionItemContext();
|
|
106
|
+
const sizeConfig = TRIGGER_SIZE_MAP[size];
|
|
107
|
+
const triggerId = `accordion-${accordionId}-trigger-${value}`;
|
|
108
|
+
const contentId = `accordion-${accordionId}-content-${value}`;
|
|
109
|
+
const handleClick = useCallback(() => {
|
|
110
|
+
if (!isDisabled) {
|
|
111
|
+
toggleItem(value);
|
|
112
|
+
}
|
|
113
|
+
}, [isDisabled, toggleItem, value]);
|
|
114
|
+
const handleActionsClick = useCallback((e) => {
|
|
115
|
+
e.stopPropagation();
|
|
116
|
+
}, []);
|
|
117
|
+
const showIndicator = indicator !== null;
|
|
118
|
+
return (jsxs(StyledTriggerButton, { ref: ref, type: "button", id: triggerId, "aria-expanded": isExpanded, "aria-controls": contentId, "aria-disabled": isDisabled || undefined, disabled: isDisabled, onClick: handleClick, "$variant": variant, "$size": size, "$expanded": isExpanded, "$disabled": isDisabled, className: className, style: style, "data-testid": testId, ...rest, children: [showIndicator && (jsx(StyledChevron, { "$expanded": isExpanded, "$size": sizeConfig.chevronSize, children: indicator ?? jsx(ChevronRightIcon, { size: sizeConfig.chevronSize }) })), icon && jsx(StyledIconArea, { children: icon }), jsx("span", { children: children }), actions && (jsx(StyledActionsArea, { onClick: handleActionsClick, children: actions }))] }));
|
|
119
|
+
};
|
|
120
|
+
AccordionTrigger.displayName = 'AccordionTrigger';
|
|
121
|
+
|
|
122
|
+
export { AccordionTrigger };
|
|
123
|
+
//# sourceMappingURL=AccordionTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccordionTrigger.js","sources":["../../../../../../src/components/layout/Accordion/AccordionTrigger.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;AAmBA,MAAM,gBAAgB,GAA6C;AACjE,IAAA,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE;AACpE,IAAA,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE;AACpE,IAAA,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE;CACrE;AAWD,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAA0B;;;;;;AAMvD,UAAA,EAAA,KAAK,KAAK,KAAK,CAAC,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC,CAAA;;;;;;;;SAQzD,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAA;;;YAG5B,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;;AAEnD,IAAA,EAAA,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAA;AAC7D,aAAA,EAAA,KAAK,IAChB,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAA;iBACzD,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAA;WACvD,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAA;2BACxB,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAA;;;AAGnD,WAAA,EAAA,KAAK,KAAK,KAAK,CAAC,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA;;;AAG7C,EAAA,EAAA,KAAK,IAAG;AACR,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK;AAE9B,IAAA,QAAQ,KAAK,CAAC,QAAQ;AACpB,QAAA,KAAK,OAAO;YACV,OAAO;;qCAEsB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAA;;0BAEhC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAA;;SAErC;AACH,QAAA,KAAK,QAAQ;YACX,OAAO;wBACS,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAA;;0BAExB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAA;;SAErC;AACH,QAAA;YACE,OAAO;wBACS,MAAM,CAAC,OAAO,CAAC,OAAO,CAAA;qCACT,MAAM,CAAC,MAAM,CAAC,OAAO,CAAA;;0BAEhC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAA;;SAErC;;AAEP,CAAC;;;;kBAIe,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA;;;CAGnD;AAOD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAoB;;;;;0BAK3B,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAA;AACzC,oBAAA,EAAA,KAAK,KAAK,KAAK,CAAC,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC,CAAA;WACxD,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAA;;;AAGpC,WAAA,EAAA,KAAK,IAAI,KAAK,CAAC,KAAK,CAAA;AACnB,YAAA,EAAA,KAAK,IAAI,KAAK,CAAC,KAAK,CAAA;;CAEjC;AAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAA;;;;SAI5B,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAA;CACvC;AAED,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAA;;;;CAIjC;AAED;AAEA,MAAM,gBAAgB,GAA+B,CAAC,EAAE,IAAI,EAAE,MAC5DA,GACE,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,iBACC,MAAM,EAAA,QAAA,EAElBA,GACE,CAAA,MAAA,EAAA,EAAA,CAAC,EAAC,oBAAoB,EACtB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EAAA,CACtB,EACE,CAAA,CACP;AAED;AAEa,MAAA,gBAAgB,GAAoC,CAAC,EAChE,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,SAAS,EACT,SAAS,EACT,KAAK,EACL,MAAM,EACN,GAAG,EACH,GAAG,IAAI,EACR,KAAI;AACH,IAAA,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,mBAAmB,EAAE;IACxE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,uBAAuB,EAAE;AACnE,IAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC;AAEzC,IAAA,MAAM,SAAS,GAAG,CAAA,UAAA,EAAa,WAAW,CAAY,SAAA,EAAA,KAAK,EAAE;AAC7D,IAAA,MAAM,SAAS,GAAG,CAAA,UAAA,EAAa,WAAW,CAAY,SAAA,EAAA,KAAK,EAAE;AAE7D,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAK;QACnC,IAAI,CAAC,UAAU,EAAE;YACf,UAAU,CAAC,KAAK,CAAC;;KAEpB,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAEnC,IAAA,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,CAAmB,KAAI;QAC7D,CAAC,CAAC,eAAe,EAAE;KACpB,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,aAAa,GAAG,SAAS,KAAK,IAAI;IAExC,QACEC,KAAC,mBAAmB,EAAA,EAClB,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,SAAS,EAAA,eAAA,EACE,UAAU,EAAA,eAAA,EACV,SAAS,EACT,eAAA,EAAA,UAAU,IAAI,SAAS,EACtC,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,WAAW,cACV,OAAO,EAAA,OAAA,EACV,IAAI,EAAA,WAAA,EACA,UAAU,EAAA,WAAA,EACV,UAAU,EACrB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EAAA,aAAA,EACC,MAAM,EAAA,GACf,IAAI,EAAA,QAAA,EAAA,CAEP,aAAa,KACZD,IAAC,aAAa,EAAA,EAAA,WAAA,EAAY,UAAU,EAAS,OAAA,EAAA,UAAU,CAAC,WAAW,EAChE,QAAA,EAAA,SAAS,IAAIA,GAAC,CAAA,gBAAgB,EAAC,EAAA,IAAI,EAAE,UAAU,CAAC,WAAW,EAAA,CAAI,EAClD,CAAA,CACjB,EACA,IAAI,IAAIA,GAAC,CAAA,cAAc,EAAE,EAAA,QAAA,EAAA,IAAI,EAAkB,CAAA,EAChDA,wBAAO,QAAQ,EAAA,CAAQ,EACtB,OAAO,KACNA,IAAC,iBAAiB,EAAA,EAAC,OAAO,EAAE,kBAAkB,EAAA,QAAA,EAC3C,OAAO,EACU,CAAA,CACrB,CACmB,EAAA,CAAA;AAE1B;AAEA,gBAAgB,CAAC,WAAW,GAAG,kBAAkB;;;;"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import styled from '@emotion/styled';
|
|
3
|
+
import { processCss } from '../../../utils/styledUtils.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Calculate gap value based on spacing multiplier and theme
|
|
7
|
+
*/
|
|
8
|
+
const getGapValue = (gap, theme, customGap) => {
|
|
9
|
+
if (customGap !== undefined) {
|
|
10
|
+
return typeof customGap === 'number' ? `${customGap}px` : customGap;
|
|
11
|
+
}
|
|
12
|
+
return `${gap * theme.spacing.sm}px`;
|
|
13
|
+
};
|
|
14
|
+
const StyledFlex = styled.div `
|
|
15
|
+
/* Base flex container */
|
|
16
|
+
display: flex;
|
|
17
|
+
box-sizing: border-box;
|
|
18
|
+
|
|
19
|
+
/* Flex properties */
|
|
20
|
+
flex-direction: ${props => props.$direction};
|
|
21
|
+
flex-wrap: ${props => props.$wrap};
|
|
22
|
+
justify-content: ${props => props.$justify};
|
|
23
|
+
align-items: ${props => props.$align};
|
|
24
|
+
align-content: ${props => props.$alignContent};
|
|
25
|
+
|
|
26
|
+
/* Gap between items */
|
|
27
|
+
gap: ${props => getGapValue(props.$gap, props.theme, props.$customGap)};
|
|
28
|
+
|
|
29
|
+
/* Flex item properties (when this Flex is inside another flex container) */
|
|
30
|
+
flex-grow: ${props => props.$grow};
|
|
31
|
+
flex-shrink: ${props => props.$shrink};
|
|
32
|
+
flex-basis: ${props => typeof props.$basis === 'number' ? `${props.$basis}px` : props.$basis};
|
|
33
|
+
|
|
34
|
+
/* Size control */
|
|
35
|
+
${props => props.$fullWidth && 'width: 100%;'}
|
|
36
|
+
${props => props.$fullHeight && 'height: 100%;'}
|
|
37
|
+
|
|
38
|
+
${props => props.$minHeight &&
|
|
39
|
+
`min-height: ${typeof props.$minHeight === 'number'
|
|
40
|
+
? `${props.$minHeight}px`
|
|
41
|
+
: props.$minHeight};`}
|
|
42
|
+
|
|
43
|
+
${props => props.$maxWidth &&
|
|
44
|
+
`max-width: ${typeof props.$maxWidth === 'number'
|
|
45
|
+
? `${props.$maxWidth}px`
|
|
46
|
+
: props.$maxWidth};`}
|
|
47
|
+
|
|
48
|
+
/* Responsive direction changes */
|
|
49
|
+
${props => props.$sm &&
|
|
50
|
+
`
|
|
51
|
+
@media (min-width: 576px) {
|
|
52
|
+
flex-direction: ${props.$sm};
|
|
53
|
+
}
|
|
54
|
+
`}
|
|
55
|
+
|
|
56
|
+
${props => props.$md &&
|
|
57
|
+
`
|
|
58
|
+
@media (min-width: 768px) {
|
|
59
|
+
flex-direction: ${props.$md};
|
|
60
|
+
}
|
|
61
|
+
`}
|
|
62
|
+
|
|
63
|
+
${props => props.$lg &&
|
|
64
|
+
`
|
|
65
|
+
@media (min-width: 992px) {
|
|
66
|
+
flex-direction: ${props.$lg};
|
|
67
|
+
}
|
|
68
|
+
`}
|
|
69
|
+
|
|
70
|
+
${props => props.$xl &&
|
|
71
|
+
`
|
|
72
|
+
@media (min-width: 1200px) {
|
|
73
|
+
flex-direction: ${props.$xl};
|
|
74
|
+
}
|
|
75
|
+
`}
|
|
76
|
+
|
|
77
|
+
/* Custom CSS */
|
|
78
|
+
${props => processCss(props.$css, props.theme)}
|
|
79
|
+
`;
|
|
80
|
+
/**
|
|
81
|
+
* A comprehensive flexbox component providing full control over flex properties.
|
|
82
|
+
*
|
|
83
|
+
* More powerful than Stack for complex layouts requiring precise flexbox control.
|
|
84
|
+
* Supports all flexbox properties, responsive direction changes, and flexible sizing.
|
|
85
|
+
* Perfect for complex layouts, navigation bars, form layouts, and sophisticated arrangements.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```tsx
|
|
89
|
+
* // Basic horizontal flex
|
|
90
|
+
* <Flex justify="space-between" align="center">
|
|
91
|
+
* <div>Left content</div>
|
|
92
|
+
* <div>Right content</div>
|
|
93
|
+
* </Flex>
|
|
94
|
+
*
|
|
95
|
+
* // Vertical stack with gap
|
|
96
|
+
* <Flex direction="column" gap={3}>
|
|
97
|
+
* <Card>Item 1</Card>
|
|
98
|
+
* <Card>Item 2</Card>
|
|
99
|
+
* <Card>Item 3</Card>
|
|
100
|
+
* </Flex>
|
|
101
|
+
*
|
|
102
|
+
* // Responsive navigation
|
|
103
|
+
* <Flex
|
|
104
|
+
* direction="column"
|
|
105
|
+
* md="row"
|
|
106
|
+
* justify="space-between"
|
|
107
|
+
* align="center"
|
|
108
|
+
* gap={2}
|
|
109
|
+
* >
|
|
110
|
+
* <Logo />
|
|
111
|
+
* <Navigation />
|
|
112
|
+
* <UserMenu />
|
|
113
|
+
* </Flex>
|
|
114
|
+
*
|
|
115
|
+
* // Flexible form layout
|
|
116
|
+
* <Flex direction="column" gap={2} maxWidth="400px">
|
|
117
|
+
* <Input label="Email" />
|
|
118
|
+
* <Input label="Password" />
|
|
119
|
+
* <Flex justify="space-between" gap={2}>
|
|
120
|
+
* <Button fullWidth variant="ghost">Cancel</Button>
|
|
121
|
+
* <Button fullWidth variant="filled">Login</Button>
|
|
122
|
+
* </Flex>
|
|
123
|
+
* </Flex>
|
|
124
|
+
*
|
|
125
|
+
* // Card grid with wrapping
|
|
126
|
+
* <Flex wrap="wrap" gap={3} justify="center">
|
|
127
|
+
* <Card basis="300px">Card 1</Card>
|
|
128
|
+
* <Card basis="300px">Card 2</Card>
|
|
129
|
+
* <Card basis="300px">Card 3</Card>
|
|
130
|
+
* </Flex>
|
|
131
|
+
*
|
|
132
|
+
* // Complex layout with nesting
|
|
133
|
+
* <Flex direction="column" fullHeight>
|
|
134
|
+
* <Header />
|
|
135
|
+
* <Flex grow={1}>
|
|
136
|
+
* <Sidebar basis="200px" />
|
|
137
|
+
* <MainContent grow={1} />
|
|
138
|
+
* </Flex>
|
|
139
|
+
* <Footer />
|
|
140
|
+
* </Flex>
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
const Flex = ({ children, direction = 'row', sm, md, lg, xl, wrap = 'nowrap', justify = 'flex-start', align = 'stretch', alignContent = 'stretch', gap = 0, customGap, grow = 0, shrink = 1, basis = 'auto', fullWidth = false, fullHeight = false, minHeight, maxWidth, className, testId, css, style, ref, ...htmlProps }) => {
|
|
144
|
+
return (jsx(StyledFlex, { ref: ref, className: className, "$direction": direction, "$sm": sm, "$md": md, "$lg": lg, "$xl": xl, "$wrap": wrap, "$justify": justify, "$align": align, "$alignContent": alignContent, "$gap": gap, "$customGap": customGap, "$grow": grow, "$shrink": shrink, "$basis": basis, "$fullWidth": fullWidth, "$fullHeight": fullHeight, "$minHeight": minHeight, "$maxWidth": maxWidth, "$css": css, "data-testid": testId, style: style, ...htmlProps, children: children }));
|
|
145
|
+
};
|
|
146
|
+
Flex.displayName = 'Flex';
|
|
147
|
+
|
|
148
|
+
export { Flex };
|
|
149
|
+
//# sourceMappingURL=Flex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Flex.js","sources":["../../../../../../src/components/layout/Flex/Flex.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import styled from '@emotion/styled';
|
|
3
|
+
import { processCss } from '../../../utils/styledUtils.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Calculate gap value based on spacing multiplier and theme
|
|
7
|
+
*/
|
|
8
|
+
const getGapValue = (spacing, theme, customGap) => {
|
|
9
|
+
if (customGap !== undefined) {
|
|
10
|
+
return typeof customGap === 'number' ? `${customGap}px` : customGap;
|
|
11
|
+
}
|
|
12
|
+
return `${spacing * theme.spacing.sm}px`;
|
|
13
|
+
};
|
|
14
|
+
const StyledGrid = styled.div `
|
|
15
|
+
/* Container styles - creates CSS Grid layout */
|
|
16
|
+
${props => props.$container &&
|
|
17
|
+
`
|
|
18
|
+
display: grid;
|
|
19
|
+
grid-template-columns: repeat(${props.$columns}, 1fr);
|
|
20
|
+
width: 100%;
|
|
21
|
+
box-sizing: border-box;
|
|
22
|
+
gap: ${getGapValue(props.$spacing ?? 2, props.theme, props.$gap)};
|
|
23
|
+
`}
|
|
24
|
+
|
|
25
|
+
/* Item styles - defines how this grid item behaves */
|
|
26
|
+
${props => !props.$container &&
|
|
27
|
+
props.$size &&
|
|
28
|
+
`
|
|
29
|
+
grid-column: span ${props.$size === 'auto' ? 'auto' : props.$size};
|
|
30
|
+
`}
|
|
31
|
+
|
|
32
|
+
/* Responsive grid item sizes */
|
|
33
|
+
${props => !props.$container &&
|
|
34
|
+
`
|
|
35
|
+
/* Base size */
|
|
36
|
+
${props.$size && `grid-column: span ${props.$size === 'auto' ? 'auto' : props.$size};`}
|
|
37
|
+
|
|
38
|
+
/* Extra small screens and up */
|
|
39
|
+
${props.$xs &&
|
|
40
|
+
`
|
|
41
|
+
grid-column: span ${props.$xs === 'auto' ? 'auto' : props.$xs};
|
|
42
|
+
`}
|
|
43
|
+
|
|
44
|
+
/* Small screens and up (576px) */
|
|
45
|
+
@media (min-width: 576px) {
|
|
46
|
+
${props.$sm && `grid-column: span ${props.$sm === 'auto' ? 'auto' : props.$sm};`}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* Medium screens and up (768px) */
|
|
50
|
+
@media (min-width: 768px) {
|
|
51
|
+
${props.$md && `grid-column: span ${props.$md === 'auto' ? 'auto' : props.$md};`}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Large screens and up (992px) */
|
|
55
|
+
@media (min-width: 992px) {
|
|
56
|
+
${props.$lg && `grid-column: span ${props.$lg === 'auto' ? 'auto' : props.$lg};`}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Extra large screens and up (1200px) */
|
|
60
|
+
@media (min-width: 1200px) {
|
|
61
|
+
${props.$xl && `grid-column: span ${props.$xl === 'auto' ? 'auto' : props.$xl};`}
|
|
62
|
+
}
|
|
63
|
+
`}
|
|
64
|
+
|
|
65
|
+
/* Ensure proper box sizing for all grid items */
|
|
66
|
+
box-sizing: border-box;
|
|
67
|
+
|
|
68
|
+
/* Custom CSS */
|
|
69
|
+
${props => processCss(props.$css, props.theme)}
|
|
70
|
+
`;
|
|
71
|
+
/**
|
|
72
|
+
* A flexible 12-column grid system component for creating responsive layouts.
|
|
73
|
+
*
|
|
74
|
+
* Supports both container and item modes. Container grids create the grid layout,
|
|
75
|
+
* while item grids define how much space each child should occupy.
|
|
76
|
+
* Built on CSS Grid for modern, flexible layouts.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```tsx
|
|
80
|
+
* // Basic two-column layout
|
|
81
|
+
* <Grid container spacing="md">
|
|
82
|
+
* <Grid size={6}>Left content</Grid>
|
|
83
|
+
* <Grid size={6}>Right content</Grid>
|
|
84
|
+
* </Grid>
|
|
85
|
+
*
|
|
86
|
+
* // Responsive three-column layout
|
|
87
|
+
* <Grid container spacing="lg">
|
|
88
|
+
* <Grid xs={12} sm={6} md={4}>Card 1</Grid>
|
|
89
|
+
* <Grid xs={12} sm={6} md={4}>Card 2</Grid>
|
|
90
|
+
* <Grid xs={12} sm={12} md={4}>Card 3</Grid>
|
|
91
|
+
* </Grid>
|
|
92
|
+
*
|
|
93
|
+
* // Nested grids
|
|
94
|
+
* <Grid container spacing="md">
|
|
95
|
+
* <Grid size={8}>
|
|
96
|
+
* <Grid container spacing="sm">
|
|
97
|
+
* <Grid size={6}>Nested left</Grid>
|
|
98
|
+
* <Grid size={6}>Nested right</Grid>
|
|
99
|
+
* </Grid>
|
|
100
|
+
* </Grid>
|
|
101
|
+
* <Grid size={4}>Sidebar</Grid>
|
|
102
|
+
* </Grid>
|
|
103
|
+
*
|
|
104
|
+
* // Custom gap
|
|
105
|
+
* <Grid container gap="2rem">
|
|
106
|
+
* <Grid size={4}>Item 1</Grid>
|
|
107
|
+
* <Grid size={4}>Item 2</Grid>
|
|
108
|
+
* <Grid size={4}>Item 3</Grid>
|
|
109
|
+
* </Grid>
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
const Grid = ({ children, container = false, size, xs, sm, md, lg, xl, spacing = 2, columns = 12, gap, className, testId, css, style, ref, ...htmlProps }) => {
|
|
113
|
+
return (jsx(StyledGrid, { ref: ref, className: className, "$container": container, "$size": size, "$xs": xs, "$sm": sm, "$md": md, "$lg": lg, "$xl": xl, "$spacing": spacing, "$columns": columns, "$gap": gap, "$css": css, "data-testid": testId, style: style, ...htmlProps, children: children }));
|
|
114
|
+
};
|
|
115
|
+
Grid.displayName = 'Grid';
|
|
116
|
+
|
|
117
|
+
export { Grid };
|
|
118
|
+
//# sourceMappingURL=Grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Grid.js","sources":["../../../../../../src/components/layout/Grid/Grid.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { useMemo, createContext, useContext } from 'react';
|
|
3
|
+
import styled from '@emotion/styled';
|
|
4
|
+
import { processCss } from '../../../utils/styledUtils.js';
|
|
5
|
+
|
|
6
|
+
const PanelSurfaceContext =
|
|
7
|
+
/*#__PURE__*/ createContext({
|
|
8
|
+
size: 'md',
|
|
9
|
+
});
|
|
10
|
+
const usePanelSurface = () => useContext(PanelSurfaceContext);
|
|
11
|
+
const HEADER_SIZE_MAP = {
|
|
12
|
+
sm: { minHeight: 24, paddingKey: 'sm', fontKey: 'xs' },
|
|
13
|
+
md: { minHeight: 28, paddingKey: 'md', fontKey: 'sm' },
|
|
14
|
+
lg: { minHeight: 32, paddingKey: 'lg', fontKey: 'md' },
|
|
15
|
+
};
|
|
16
|
+
const StyledRoot = styled.div `
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: column;
|
|
19
|
+
width: 100%;
|
|
20
|
+
height: 100%;
|
|
21
|
+
min-width: 0;
|
|
22
|
+
min-height: 0;
|
|
23
|
+
box-sizing: border-box;
|
|
24
|
+
overflow: hidden;
|
|
25
|
+
background: ${({ $background, theme }) => $background ?? theme.colors.background.secondary};
|
|
26
|
+
color: ${({ theme }) => theme.colors.text.primary};
|
|
27
|
+
border: ${({ $bordered, theme }) => $bordered ? `1px solid ${theme.colors.border.default}` : 'none'};
|
|
28
|
+
border-radius: ${({ theme }) => theme.borderRadius.md}px;
|
|
29
|
+
|
|
30
|
+
${({ $css, theme }) => processCss($css, theme)}
|
|
31
|
+
`;
|
|
32
|
+
const StyledHeader = styled.div `
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
justify-content: space-between;
|
|
36
|
+
min-height: ${({ $size }) => HEADER_SIZE_MAP[$size].minHeight}px;
|
|
37
|
+
padding: 0
|
|
38
|
+
${({ $size, theme }) => theme.spacing[HEADER_SIZE_MAP[$size].paddingKey]}px;
|
|
39
|
+
background: ${({ theme }) => theme.colors.background.secondary};
|
|
40
|
+
color: ${({ theme }) => theme.colors.text.secondary};
|
|
41
|
+
font-size: ${({ $size, theme }) => theme.typography.fontSize[HEADER_SIZE_MAP[$size].fontKey]}px;
|
|
42
|
+
font-weight: ${({ theme }) => theme.typography.fontWeight.medium};
|
|
43
|
+
border-bottom: 1px solid ${({ theme }) => theme.colors.border.default};
|
|
44
|
+
flex-shrink: 0;
|
|
45
|
+
user-select: none;
|
|
46
|
+
|
|
47
|
+
${({ $css, theme }) => processCss($css, theme)}
|
|
48
|
+
`;
|
|
49
|
+
const StyledHeaderActions = styled.div `
|
|
50
|
+
display: inline-flex;
|
|
51
|
+
align-items: center;
|
|
52
|
+
gap: ${({ theme }) => theme.spacing.xs}px;
|
|
53
|
+
margin-left: ${({ theme }) => theme.spacing.md}px;
|
|
54
|
+
`;
|
|
55
|
+
const StyledBody = styled.div `
|
|
56
|
+
flex: 1 1 auto;
|
|
57
|
+
min-width: 0;
|
|
58
|
+
min-height: 0;
|
|
59
|
+
box-sizing: border-box;
|
|
60
|
+
overflow: ${({ $scroll }) => ($scroll ? 'auto' : 'hidden')};
|
|
61
|
+
padding: ${({ $padding }) => $padding};
|
|
62
|
+
|
|
63
|
+
${({ $css, theme }) => processCss($css, theme)}
|
|
64
|
+
`;
|
|
65
|
+
const StyledFooter = styled.div `
|
|
66
|
+
display: flex;
|
|
67
|
+
align-items: center;
|
|
68
|
+
min-height: ${({ $size }) => HEADER_SIZE_MAP[$size].minHeight}px;
|
|
69
|
+
padding: 0
|
|
70
|
+
${({ $size, theme }) => theme.spacing[HEADER_SIZE_MAP[$size].paddingKey]}px;
|
|
71
|
+
border-top: 1px solid ${({ theme }) => theme.colors.border.default};
|
|
72
|
+
background: ${({ theme }) => theme.colors.background.secondary};
|
|
73
|
+
color: ${({ theme }) => theme.colors.text.secondary};
|
|
74
|
+
font-size: ${({ $size, theme }) => theme.typography.fontSize[HEADER_SIZE_MAP[$size].fontKey]}px;
|
|
75
|
+
flex-shrink: 0;
|
|
76
|
+
|
|
77
|
+
${({ $css, theme }) => processCss($css, theme)}
|
|
78
|
+
`;
|
|
79
|
+
const PanelSurfaceHeader = ({ children, actions, className, style, testId, css, ref, ...rest }) => {
|
|
80
|
+
const { size } = usePanelSurface();
|
|
81
|
+
return (jsxs(StyledHeader, { ref: ref, className: className, style: style, "data-testid": testId, "$size": size, "$css": css, ...rest, children: [jsx("span", { children: children }), actions ? jsx(StyledHeaderActions, { children: actions }) : null] }));
|
|
82
|
+
};
|
|
83
|
+
PanelSurfaceHeader.displayName = 'PanelSurface.Header';
|
|
84
|
+
const PanelSurfaceBody = ({ children, scroll = false, padding = 0, className, style, testId, css, ref, ...rest }) => {
|
|
85
|
+
const resolvedPadding = typeof padding === 'number' ? `${padding}px` : String(padding);
|
|
86
|
+
return (jsx(StyledBody, { ref: ref, className: className, style: style, "data-testid": testId, "$scroll": scroll, "$padding": resolvedPadding, "$css": css, ...rest, children: children }));
|
|
87
|
+
};
|
|
88
|
+
PanelSurfaceBody.displayName = 'PanelSurface.Body';
|
|
89
|
+
const PanelSurfaceFooter = ({ children, className, style, testId, css, ref, ...rest }) => {
|
|
90
|
+
const { size } = usePanelSurface();
|
|
91
|
+
return (jsx(StyledFooter, { ref: ref, className: className, style: style, "data-testid": testId, "$size": size, "$css": css, ...rest, children: children }));
|
|
92
|
+
};
|
|
93
|
+
PanelSurfaceFooter.displayName = 'PanelSurface.Footer';
|
|
94
|
+
const PanelSurfaceRoot = ({ children, size = 'md', bordered = true, background, className, style, testId, css, ref, ...rest }) => {
|
|
95
|
+
const contextValue = useMemo(() => ({ size }), [size]);
|
|
96
|
+
return (jsx(PanelSurfaceContext.Provider, { value: contextValue, children: jsx(StyledRoot, { ref: ref, className: className, style: style, "data-testid": testId, "$bordered": bordered, "$background": background, "$css": css, ...rest, children: children }) }));
|
|
97
|
+
};
|
|
98
|
+
PanelSurfaceRoot.displayName = 'PanelSurface';
|
|
99
|
+
const PanelSurface = /*#__PURE__*/ Object.assign(PanelSurfaceRoot, {
|
|
100
|
+
Header: PanelSurfaceHeader,
|
|
101
|
+
Body: PanelSurfaceBody,
|
|
102
|
+
Footer: PanelSurfaceFooter,
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
export { PanelSurface };
|
|
106
|
+
//# sourceMappingURL=PanelSurface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelSurface.js","sources":["../../../../../../src/components/layout/PanelSurface/PanelSurface.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
|