entangle-ui 0.10.0 → 0.11.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 +72 -0
- package/README.md +7 -5
- package/dist/esm/assets/src/components/controls/Select/{Select.css.ts.vanilla-oZnFUorL.css → Select.css.ts.vanilla-Cpu2BvWL.css} +3 -0
- package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertyPanel.css.ts.vanilla-RYv_XgOu.css → PropertyPanel.css.ts.vanilla-Dpr_k5I3.css} +4 -1
- package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertyRow.css.ts.vanilla-C3YZnnHb.css → PropertyRow.css.ts.vanilla-pq1Uhd2a.css} +15 -8
- package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertySection.css.ts.vanilla-DK12opZc.css → PropertySection.css.ts.vanilla-6MWWAqyd.css} +50 -32
- package/dist/esm/components/Icons/AddIcon.js.map +1 -1
- package/dist/esm/components/Icons/AiChatIcon.js.map +1 -1
- package/dist/esm/components/Icons/AiSparklesIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArchiveIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArrowDownIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArrowLeftIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArrowRightIcon.js.map +1 -1
- package/dist/esm/components/Icons/ArrowUpIcon.js.map +1 -1
- package/dist/esm/components/Icons/BookmarkIcon.js.map +1 -1
- package/dist/esm/components/Icons/BugIcon.js.map +1 -1
- package/dist/esm/components/Icons/BuildingIcon.js.map +1 -1
- package/dist/esm/components/Icons/CalendarIcon.js.map +1 -1
- package/dist/esm/components/Icons/CameraIcon.js +31 -0
- package/dist/esm/components/Icons/CameraIcon.js.map +1 -0
- package/dist/esm/components/Icons/CheckIcon.js.map +1 -1
- package/dist/esm/components/Icons/ChevronDownIcon.js.map +1 -1
- package/dist/esm/components/Icons/ChevronLeftIcon.js.map +1 -1
- package/dist/esm/components/Icons/ChevronRightIcon.js.map +1 -1
- package/dist/esm/components/Icons/ChevronUpIcon.js.map +1 -1
- package/dist/esm/components/Icons/CircleIcon.js.map +1 -1
- package/dist/esm/components/Icons/ClockIcon.js.map +1 -1
- package/dist/esm/components/Icons/CloseIcon.js.map +1 -1
- package/dist/esm/components/Icons/CloudUploadIcon.js.map +1 -1
- package/dist/esm/components/Icons/CodeIcon.js.map +1 -1
- package/dist/esm/components/Icons/CopyIcon.js.map +1 -1
- package/dist/esm/components/Icons/CubeIcon.js +31 -0
- package/dist/esm/components/Icons/CubeIcon.js.map +1 -0
- package/dist/esm/components/Icons/CutIcon.js.map +1 -1
- package/dist/esm/components/Icons/DotsHorizontalIcon.js.map +1 -1
- package/dist/esm/components/Icons/DotsVerticalIcon.js.map +1 -1
- package/dist/esm/components/Icons/DownloadIcon.js.map +1 -1
- package/dist/esm/components/Icons/EditIcon.js.map +1 -1
- package/dist/esm/components/Icons/ErrorIcon.js.map +1 -1
- package/dist/esm/components/Icons/ExternalLinkIcon.js.map +1 -1
- package/dist/esm/components/Icons/EyeDropperIcon.js.map +1 -1
- package/dist/esm/components/Icons/EyeIcon.js.map +1 -1
- package/dist/esm/components/Icons/FileTextIcon.js.map +1 -1
- package/dist/esm/components/Icons/FilterIcon.js.map +1 -1
- package/dist/esm/components/Icons/FirstIcon.js.map +1 -1
- package/dist/esm/components/Icons/FolderCogIcon.js.map +1 -1
- package/dist/esm/components/Icons/FolderIcon.js.map +1 -1
- package/dist/esm/components/Icons/FolderOpenIcon.js.map +1 -1
- package/dist/esm/components/Icons/FullscreenIcon.js.map +1 -1
- package/dist/esm/components/Icons/GitBranchIcon.js.map +1 -1
- package/dist/esm/components/Icons/GridIcon.js.map +1 -1
- package/dist/esm/components/Icons/HeartIcon.js.map +1 -1
- package/dist/esm/components/Icons/HelpIcon.js.map +1 -1
- package/dist/esm/components/Icons/HomeIcon.js.map +1 -1
- package/dist/esm/components/Icons/ImageIcon.js.map +1 -1
- package/dist/esm/components/Icons/InfoIcon.js.map +1 -1
- package/dist/esm/components/Icons/LastIcon.js.map +1 -1
- package/dist/esm/components/Icons/LinkIcon.js.map +1 -1
- package/dist/esm/components/Icons/ListIcon.js.map +1 -1
- package/dist/esm/components/Icons/LockIcon.js.map +1 -1
- package/dist/esm/components/Icons/MaximizeIcon.js.map +1 -1
- package/dist/esm/components/Icons/MenuIcon.js.map +1 -1
- package/dist/esm/components/Icons/MinimizeIcon.js.map +1 -1
- package/dist/esm/components/Icons/MinusIcon.js.map +1 -1
- package/dist/esm/components/Icons/OrbitIcon.js +31 -0
- package/dist/esm/components/Icons/OrbitIcon.js.map +1 -0
- package/dist/esm/components/Icons/PasteIcon.js.map +1 -1
- package/dist/esm/components/Icons/PauseIcon.js.map +1 -1
- package/dist/esm/components/Icons/PinIcon.js.map +1 -1
- package/dist/esm/components/Icons/PlayIcon.js.map +1 -1
- package/dist/esm/components/Icons/RedoIcon.js.map +1 -1
- package/dist/esm/components/Icons/RefreshIcon.js.map +1 -1
- package/dist/esm/components/Icons/RobotIcon.js.map +1 -1
- package/dist/esm/components/Icons/RotateIcon.js +32 -0
- package/dist/esm/components/Icons/RotateIcon.js.map +1 -0
- package/dist/esm/components/Icons/SaveIcon.js.map +1 -1
- package/dist/esm/components/Icons/SearchIcon.js.map +1 -1
- package/dist/esm/components/Icons/SendIcon.js.map +1 -1
- package/dist/esm/components/Icons/SettingsIcon.js.map +1 -1
- package/dist/esm/components/Icons/SortIcon.js.map +1 -1
- package/dist/esm/components/Icons/SpinIcon.js +32 -0
- package/dist/esm/components/Icons/SpinIcon.js.map +1 -0
- package/dist/esm/components/Icons/StarIcon.js.map +1 -1
- package/dist/esm/components/Icons/StopIcon.js.map +1 -1
- package/dist/esm/components/Icons/SuccessIcon.js.map +1 -1
- package/dist/esm/components/Icons/TagIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentAlignedIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentAutoIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentFreeIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentLinearIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentMirroredIcon.js.map +1 -1
- package/dist/esm/components/Icons/TangentStepIcon.js.map +1 -1
- package/dist/esm/components/Icons/TerminalIcon.js.map +1 -1
- package/dist/esm/components/Icons/TrashIcon.js.map +1 -1
- package/dist/esm/components/Icons/UndoIcon.js.map +1 -1
- package/dist/esm/components/Icons/UnlinkIcon.js.map +1 -1
- package/dist/esm/components/Icons/UnlockIcon.js.map +1 -1
- package/dist/esm/components/Icons/UploadIcon.js.map +1 -1
- package/dist/esm/components/Icons/UserIcon.js.map +1 -1
- package/dist/esm/components/Icons/UsersIcon.js.map +1 -1
- package/dist/esm/components/Icons/WarningIcon.js.map +1 -1
- package/dist/esm/components/Icons/ZoomFitIcon.js +32 -0
- package/dist/esm/components/Icons/ZoomFitIcon.js.map +1 -0
- package/dist/esm/components/Icons/ZoomInIcon.js.map +1 -1
- package/dist/esm/components/Icons/ZoomOutIcon.js.map +1 -1
- package/dist/esm/components/controls/CartesianPicker/CartesianPicker.js.map +1 -1
- package/dist/esm/components/controls/CartesianPicker/useCartesianInteraction.js.map +1 -1
- package/dist/esm/components/controls/CartesianPicker/useCartesianRenderer.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/AlphaSlider.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorArea.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorInputs.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorPalette.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorPresets.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/ColorSwatch.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/EyeDropper.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/HueSlider.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/colorUtils.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/palettes/material.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/palettes/professional.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/palettes/tailwind.js.map +1 -1
- package/dist/esm/components/controls/ColorPicker/useColor.js.map +1 -1
- package/dist/esm/components/controls/Combobox/Combobox.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/CurveCanvas.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/CurveEditor.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/CurveToolbar.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/curvePresets.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/curveUtils.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/useCurveInteraction.js.map +1 -1
- package/dist/esm/components/controls/CurveEditor/useCurveRenderer.js.map +1 -1
- package/dist/esm/components/controls/FileTree/FileTree.js +7 -1
- package/dist/esm/components/controls/FileTree/FileTree.js.map +1 -1
- package/dist/esm/components/controls/FileTree/fileTreeIcons.js.map +1 -1
- package/dist/esm/components/controls/FileTree/fileTreeLabels.js.map +1 -1
- package/dist/esm/components/controls/FileTree/useFileTreeDrop.js +1 -1
- package/dist/esm/components/controls/FileTree/useFileTreeDrop.js.map +1 -1
- package/dist/esm/components/controls/FileUploader/FileUploader.js.map +1 -1
- package/dist/esm/components/controls/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/esm/components/controls/NumberInput/NumberInput.js.map +1 -1
- package/dist/esm/components/controls/NumberInput/useNumberInput.js.map +1 -1
- package/dist/esm/components/controls/Select/Select.css.js +1 -1
- package/dist/esm/components/controls/Select/Select.js +15 -7
- package/dist/esm/components/controls/Select/Select.js.map +1 -1
- package/dist/esm/components/controls/Slider/Slider.js.map +1 -1
- package/dist/esm/components/controls/TagInput/TagInput.js.map +1 -1
- package/dist/esm/components/controls/TreeView/TreeNode.js +6 -0
- package/dist/esm/components/controls/TreeView/TreeNode.js.map +1 -1
- package/dist/esm/components/controls/TreeView/TreeView.js.map +1 -1
- package/dist/esm/components/controls/TreeView/useTreeState.js.map +1 -1
- package/dist/esm/components/controls/VectorInput/VectorInput.js +6 -0
- package/dist/esm/components/controls/VectorInput/VectorInput.js.map +1 -1
- package/dist/esm/components/data/DataTable/DataTable.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowser.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserAnnouncementLive.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserBreadcrumbs.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContent.js +6 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContent.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContext.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserContextMenu.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserDefaultMenus.js +6 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserDefaultMenus.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserGrid.js +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserGrid.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserGridItem.js +6 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserGridItem.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserList.js +6 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserList.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserRenameField.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserSidebar.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserStatusBar.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserStore.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserSurface.js +6 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserSurface.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserToolbar.js +6 -0
- package/dist/esm/components/editor/AssetBrowser/AssetBrowserToolbar.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/assetBrowserFilter.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/assetBrowserFormat.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/assetBrowserGeometry.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/assetBrowserKeyboard.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/assetBrowserLabels.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/slots.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserAnnouncement.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserHandle.js +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserHandle.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserViewState.js +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetBrowserViewState.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetDnd.js +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetDnd.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetGridKeyboardNav.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetGridVirtualizer.js +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetGridVirtualizer.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetMarqueeGesture.js +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetMarqueeGesture.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetMutationKeyboard.js +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetMutationKeyboard.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetMutations.js +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetMutations.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetNavigation.js +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetNavigation.js.map +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetSelectionController.js +1 -1
- package/dist/esm/components/editor/AssetBrowser/useAssetSelectionController.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatActionBar.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatAttachment.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatBubble.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js +6 -0
- package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatContextChip.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatEmptyState.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatIcons.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatInput.js +6 -0
- package/dist/esm/components/editor/ChatPanel/ChatInput.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatInputToolbar.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatMarkdownRenderer.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatMessage.js +6 -0
- package/dist/esm/components/editor/ChatPanel/ChatMessage.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatMessageList.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatPanel.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatToolCall.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/ChatTypingIndicator.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/useChatInput.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/useChatMessages.js.map +1 -1
- package/dist/esm/components/editor/ChatPanel/useChatScroll.js.map +1 -1
- package/dist/esm/components/editor/Minimap/Minimap.js +1 -1
- package/dist/esm/components/editor/Minimap/Minimap.js.map +1 -1
- package/dist/esm/components/editor/Minimap/Minimap.types.js.map +1 -1
- package/dist/esm/components/editor/Minimap/MinimapContext.js.map +1 -1
- package/dist/esm/components/editor/Minimap/MinimapCorner.js.map +1 -1
- package/dist/esm/components/editor/Minimap/MinimapFooter.js.map +1 -1
- package/dist/esm/components/editor/Minimap/MinimapStore.js.map +1 -1
- package/dist/esm/components/editor/Minimap/MinimapTitle.js.map +1 -1
- package/dist/esm/components/editor/Minimap/ViewportMinimap.js +1 -1
- package/dist/esm/components/editor/Minimap/ViewportMinimap.js.map +1 -1
- package/dist/esm/components/editor/Minimap/computeBoundsFromItems.js.map +1 -1
- package/dist/esm/components/editor/Minimap/index.js.map +1 -1
- package/dist/esm/components/editor/Minimap/minimapCoords.js.map +1 -1
- package/dist/esm/components/editor/Minimap/minimapDrawing.js.map +1 -1
- package/dist/esm/components/editor/Minimap/minimapHitTest.js.map +1 -1
- package/dist/esm/components/editor/Minimap/useMinimapGestures.js +1 -1
- package/dist/esm/components/editor/Minimap/useMinimapGestures.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraph.js +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraph.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraph.types.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphContext.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphEdgeLabels.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphGroup.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphMinimap.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphNode.js +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphNode.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeContext.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeParts.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSection.js +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSection.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphNodeSectionContext.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphPin.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphPort.js +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphPort.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphPortVisual.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphSlots.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphSpawnPalette.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphStore.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/NodeGraphToolbar.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/createTypeMatchValidator.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/nodeGraphActions.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/nodeGraphDrawing.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/nodeGraphIds.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/nodeGraphMath.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/sortSlots.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/useDragGesture.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/useNodeGraph.js +1 -1
- package/dist/esm/components/editor/NodeGraph/useNodeGraph.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/useNodeGraphConnection.js +1 -1
- package/dist/esm/components/editor/NodeGraph/useNodeGraphConnection.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/useNodeGraphEdgeInteraction.js +1 -1
- package/dist/esm/components/editor/NodeGraph/useNodeGraphEdgeInteraction.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/useNodeGraphGroupDrag.js +1 -1
- package/dist/esm/components/editor/NodeGraph/useNodeGraphGroupDrag.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/useNodeGraphKeyboard.js +1 -1
- package/dist/esm/components/editor/NodeGraph/useNodeGraphKeyboard.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/useNodeGraphNodeDrag.js +1 -1
- package/dist/esm/components/editor/NodeGraph/useNodeGraphNodeDrag.js.map +1 -1
- package/dist/esm/components/editor/NodeGraph/useStoreSlice.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyGroup.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyPanel.css.js +4 -3
- package/dist/esm/components/editor/PropertyInspector/PropertyPanel.css.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js +5 -4
- package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.css.js +7 -6
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.css.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.js +18 -3
- package/dist/esm/components/editor/PropertyInspector/PropertyRow.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertySection.css.js +11 -10
- package/dist/esm/components/editor/PropertyInspector/PropertySection.css.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/PropertySection.js +29 -21
- package/dist/esm/components/editor/PropertyInspector/PropertySection.js.map +1 -1
- package/dist/esm/components/editor/PropertyInspector/usePropertyUndo.js.map +1 -1
- package/dist/esm/components/editor/Timeline/Timeline.js +1 -1
- package/dist/esm/components/editor/Timeline/Timeline.js.map +1 -1
- package/dist/esm/components/editor/Timeline/Timeline.types.js.map +1 -1
- package/dist/esm/components/editor/Timeline/TimelineContext.js.map +1 -1
- package/dist/esm/components/editor/Timeline/TimelineFooter.js.map +1 -1
- package/dist/esm/components/editor/Timeline/TimelineMinimap.js +1 -1
- package/dist/esm/components/editor/Timeline/TimelineMinimap.js.map +1 -1
- package/dist/esm/components/editor/Timeline/TimelineStore.js.map +1 -1
- package/dist/esm/components/editor/Timeline/TimelineToolbar.js.map +1 -1
- package/dist/esm/components/editor/Timeline/TimelineTrackHeaders.js +1 -1
- package/dist/esm/components/editor/Timeline/TimelineTrackHeaders.js.map +1 -1
- package/dist/esm/components/editor/Timeline/TimelineTrackScale.js.map +1 -1
- package/dist/esm/components/editor/Timeline/index.js.map +1 -1
- package/dist/esm/components/editor/Timeline/timelineCoords.js.map +1 -1
- package/dist/esm/components/editor/Timeline/timelineDrawing.js.map +1 -1
- package/dist/esm/components/editor/Timeline/timelineEdits.js.map +1 -1
- package/dist/esm/components/editor/Timeline/timelineHitTest.js.map +1 -1
- package/dist/esm/components/editor/Timeline/timelineLayout.js.map +1 -1
- package/dist/esm/components/editor/Timeline/timelineSelection.js.map +1 -1
- package/dist/esm/components/editor/Timeline/useTimelineDraw.js +1 -1
- package/dist/esm/components/editor/Timeline/useTimelineDraw.js.map +1 -1
- package/dist/esm/components/editor/Timeline/useTimelineGestures.js +1 -1
- package/dist/esm/components/editor/Timeline/useTimelineGestures.js.map +1 -1
- package/dist/esm/components/editor/Timeline/useTimelinePlayback.js.map +1 -1
- package/dist/esm/components/editor/TransformControl/TransformControl.js.map +1 -1
- package/dist/esm/components/editor/ViewportGizmo/ViewportGizmo.js.map +1 -1
- package/dist/esm/components/editor/ViewportGizmo/gizmoMath.js.map +1 -1
- package/dist/esm/components/editor/ViewportGizmo/useGizmoInteraction.js.map +1 -1
- package/dist/esm/components/editor/ViewportGizmo/useGizmoRenderer.js.map +1 -1
- package/dist/esm/components/feedback/Alert/Alert.js.map +1 -1
- package/dist/esm/components/feedback/Alert/AlertActions.js.map +1 -1
- package/dist/esm/components/feedback/Alert/AlertDescription.js.map +1 -1
- package/dist/esm/components/feedback/Alert/AlertTitle.js.map +1 -1
- package/dist/esm/components/feedback/CommandPalette/CommandPalette.js.map +1 -1
- package/dist/esm/components/feedback/CommandPalette/fuzzySearch.js.map +1 -1
- package/dist/esm/components/feedback/CommandPalette/useRecentItems.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/DialogBody.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/DialogClose.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/DialogFooter.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/DialogHeader.js.map +1 -1
- package/dist/esm/components/feedback/Dialog/useDialogAnimation.js.map +1 -1
- package/dist/esm/components/feedback/Drawer/Drawer.js.map +1 -1
- package/dist/esm/components/feedback/Drawer/useDrawerAnimation.js.map +1 -1
- package/dist/esm/components/feedback/EmptyState/EmptyState.js.map +1 -1
- package/dist/esm/components/feedback/LogView/LogView.js.map +1 -1
- package/dist/esm/components/feedback/LogView/LogViewBody.js.map +1 -1
- package/dist/esm/components/feedback/LogView/LogViewContext.js.map +1 -1
- package/dist/esm/components/feedback/LogView/LogViewParts.js.map +1 -1
- package/dist/esm/components/feedback/LogView/LogViewStore.js.map +1 -1
- package/dist/esm/components/feedback/LogView/logViewLabels.js.map +1 -1
- package/dist/esm/components/feedback/LogView/logViewLevels.js.map +1 -1
- package/dist/esm/components/feedback/LogView/logViewUtils.js.map +1 -1
- package/dist/esm/components/feedback/LogView/useFollowTail.js.map +1 -1
- package/dist/esm/components/feedback/LogView/useLogSelection.js.map +1 -1
- package/dist/esm/components/feedback/ProgressBar/CircularProgress.js.map +1 -1
- package/dist/esm/components/feedback/ProgressBar/ProgressBar.js.map +1 -1
- package/dist/esm/components/feedback/Skeleton/Skeleton.js.map +1 -1
- package/dist/esm/components/feedback/Skeleton/SkeletonGroup.js.map +1 -1
- package/dist/esm/components/feedback/Skeleton/SkeletonLayout.js.map +1 -1
- package/dist/esm/components/feedback/Spinner/Spinner.js.map +1 -1
- package/dist/esm/components/feedback/Stat/Stat.js.map +1 -1
- package/dist/esm/components/feedback/Toast/ToastContainer.js.map +1 -1
- package/dist/esm/components/feedback/Toast/ToastItem.js.map +1 -1
- package/dist/esm/components/feedback/Toast/ToastProvider.js.map +1 -1
- package/dist/esm/components/feedback/Toast/useToast.js.map +1 -1
- package/dist/esm/components/form/FormHelperText.js.map +1 -1
- package/dist/esm/components/form/FormLabel.js.map +1 -1
- package/dist/esm/components/form/InputWrapper.js.map +1 -1
- package/dist/esm/components/layout/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/layout/Accordion/AccordionContent.js.map +1 -1
- package/dist/esm/components/layout/Accordion/AccordionItem.js.map +1 -1
- package/dist/esm/components/layout/Accordion/AccordionTrigger.js.map +1 -1
- package/dist/esm/components/layout/Card/Card.js.map +1 -1
- package/dist/esm/components/layout/Divider/Divider.js.map +1 -1
- package/dist/esm/components/layout/Flex/Flex.js.map +1 -1
- package/dist/esm/components/layout/Grid/Grid.js.map +1 -1
- package/dist/esm/components/layout/ListItem/ListItem.js.map +1 -1
- package/dist/esm/components/layout/PageHeader/PageHeader.js.map +1 -1
- package/dist/esm/components/layout/PanelSurface/PanelSurface.js.map +1 -1
- package/dist/esm/components/layout/ScrollArea/ScrollArea.js.map +1 -1
- package/dist/esm/components/layout/Spacer/Spacer.js.map +1 -1
- package/dist/esm/components/layout/SplitPane/SplitPane.js.map +1 -1
- package/dist/esm/components/layout/SplitPane/SplitPanePanel.js.map +1 -1
- package/dist/esm/components/layout/Stack/Stack.js.map +1 -1
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js.map +1 -1
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js.map +1 -1
- package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbSeparator.js.map +1 -1
- package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js +6 -0
- package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/esm/components/navigation/ContextMenu/ContextMenu.js.map +1 -1
- package/dist/esm/components/navigation/Menu/Menu.js.map +1 -1
- package/dist/esm/components/navigation/Menu/MenuGapContext.js.map +1 -1
- package/dist/esm/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/navigation/Pagination/usePagination.js.map +1 -1
- package/dist/esm/components/navigation/PathBar/PathBar.js +7 -1
- package/dist/esm/components/navigation/PathBar/PathBar.js.map +1 -1
- package/dist/esm/components/navigation/PathBar/PathBarSiblingMenu.js +6 -0
- package/dist/esm/components/navigation/PathBar/PathBarSiblingMenu.js.map +1 -1
- package/dist/esm/components/navigation/PathBar/pathUtils.js.map +1 -1
- package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/esm/components/navigation/SegmentedControl/SegmentedControlItem.js.map +1 -1
- package/dist/esm/components/navigation/Tabs/Tab.js.map +1 -1
- package/dist/esm/components/navigation/Tabs/TabList.js.map +1 -1
- package/dist/esm/components/navigation/Tabs/TabPanel.js.map +1 -1
- package/dist/esm/components/navigation/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/primitives/Avatar/Avatar.js +6 -0
- package/dist/esm/components/primitives/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/primitives/Avatar/AvatarGroup.js.map +1 -1
- package/dist/esm/components/primitives/Badge/Badge.js +6 -0
- package/dist/esm/components/primitives/Badge/Badge.js.map +1 -1
- package/dist/esm/components/primitives/Button/Button.js.map +1 -1
- package/dist/esm/components/primitives/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/primitives/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/esm/components/primitives/Code/Code.js.map +1 -1
- package/dist/esm/components/primitives/Collapsible/Collapsible.js.map +1 -1
- package/dist/esm/components/primitives/HoverCard/HoverCard.js.map +1 -1
- package/dist/esm/components/primitives/Icon/Icon.js.map +1 -1
- package/dist/esm/components/primitives/IconButton/IconButton.js.map +1 -1
- package/dist/esm/components/primitives/Input/Input.js.map +1 -1
- package/dist/esm/components/primitives/Kbd/Kbd.js.map +1 -1
- package/dist/esm/components/primitives/Link/Link.js.map +1 -1
- package/dist/esm/components/primitives/Paper/Paper.js.map +1 -1
- package/dist/esm/components/primitives/Popover/Popover.js.map +1 -1
- package/dist/esm/components/primitives/Popover/PopoverClose.js.map +1 -1
- package/dist/esm/components/primitives/Popover/PopoverContent.js.map +1 -1
- package/dist/esm/components/primitives/Popover/PopoverTrigger.js.map +1 -1
- package/dist/esm/components/primitives/Radio/Radio.js.map +1 -1
- package/dist/esm/components/primitives/Radio/RadioGroup.js.map +1 -1
- package/dist/esm/components/primitives/Switch/Switch.js.map +1 -1
- package/dist/esm/components/primitives/Text/Text.js.map +1 -1
- package/dist/esm/components/primitives/TextArea/TextArea.js.map +1 -1
- package/dist/esm/components/primitives/Tooltip/Arrow.js.map +1 -1
- package/dist/esm/components/primitives/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/primitives/Tooltip/utils.js.map +1 -1
- package/dist/esm/components/primitives/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/esm/components/primitives/canvas/CanvasContainer.js.map +1 -1
- package/dist/esm/components/primitives/canvas/canvasCoords.js.map +1 -1
- package/dist/esm/components/primitives/canvas/canvasDrawing.js.map +1 -1
- package/dist/esm/components/primitives/canvas/canvasTheme.js.map +1 -1
- package/dist/esm/components/primitives/canvas/useCanvasRenderer.js.map +1 -1
- package/dist/esm/components/primitives/viewport/Viewport.js +1 -1
- package/dist/esm/components/primitives/viewport/Viewport.js.map +1 -1
- package/dist/esm/components/primitives/viewport/ViewportContext.js.map +1 -1
- package/dist/esm/components/primitives/viewport/ViewportLayer.js +1 -1
- package/dist/esm/components/primitives/viewport/ViewportLayer.js.map +1 -1
- package/dist/esm/components/primitives/viewport/ViewportOverlay.js.map +1 -1
- package/dist/esm/components/primitives/viewport/ViewportStore.js.map +1 -1
- package/dist/esm/components/primitives/viewport/ViewportWorld.js.map +1 -1
- package/dist/esm/components/primitives/viewport/useViewportGestures.js +1 -1
- package/dist/esm/components/primitives/viewport/useViewportGestures.js.map +1 -1
- package/dist/esm/components/primitives/viewport/viewportCoords.js.map +1 -1
- package/dist/esm/components/primitives/viewport/viewportMath.js.map +1 -1
- package/dist/esm/components/shell/AppShell/AppShell.js.map +1 -1
- package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js.map +1 -1
- package/dist/esm/components/shell/MenuBar/MenuBar.js.map +1 -1
- package/dist/esm/components/shell/StatusBar/StatusBar.js.map +1 -1
- package/dist/esm/components/shell/Toolbar/Toolbar.js.map +1 -1
- package/dist/esm/context/KeyboardContext.js.map +1 -1
- package/dist/esm/hooks/useBreakpoint/useBreakpoint.js.map +1 -1
- package/dist/esm/hooks/useClickOutside/useClickOutside.js.map +1 -1
- package/dist/esm/hooks/useClipboard/useClipboard.js.map +1 -1
- package/dist/esm/hooks/useControlledState/useControlledState.js.map +1 -1
- package/dist/esm/hooks/useDebounced/useDebouncedCallback.js.map +1 -1
- package/dist/esm/hooks/useDebounced/useDebouncedValue.js.map +1 -1
- package/dist/esm/hooks/useDisclosure/useDisclosure.js.map +1 -1
- package/dist/esm/hooks/useEventCallback/useEventCallback.js.map +1 -1
- package/dist/esm/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
- package/dist/esm/hooks/useHotkey/useHotkey.js.map +1 -1
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -1
- package/dist/esm/hooks/useIsMounted/useIsMounted.js.map +1 -1
- package/dist/esm/hooks/useKeyboard/useKeyboard.js.map +1 -1
- package/dist/esm/hooks/useKeyboard/utils.js.map +1 -1
- package/dist/esm/hooks/useLatest/useLatest.js.map +1 -1
- package/dist/esm/hooks/useListboxNav/useListboxNav.js.map +1 -1
- package/dist/esm/hooks/useMediaQuery/useMediaQuery.js.map +1 -1
- package/dist/esm/hooks/useMergedRef/useMergedRef.js.map +1 -1
- package/dist/esm/hooks/useNavigationHistory/useNavigationHistory.js.map +1 -1
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.js.map +1 -1
- package/dist/esm/hooks/useTheme/useTheme.js +1 -1
- package/dist/esm/hooks/useTheme/useTheme.js.map +1 -1
- package/dist/esm/hooks/useThrottledCallback/useThrottledCallback.js.map +1 -1
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/esm/styles.js +3 -0
- package/dist/esm/styles.js.map +1 -0
- package/dist/esm/theme/ThemeProvider.js +5 -3
- package/dist/esm/theme/ThemeProvider.js.map +1 -1
- package/dist/esm/theme/VanillaThemeProvider.js.map +1 -1
- package/dist/esm/theme/breakpoints.js.map +1 -1
- package/dist/esm/theme/createCustomTheme.js +1 -1
- package/dist/esm/theme/createCustomTheme.js.map +1 -1
- package/dist/esm/theme/createLightTheme.js.map +1 -1
- package/dist/esm/theme/darkThemeValues.js.map +1 -1
- package/dist/esm/theme/lightThemeValues.js.map +1 -1
- package/dist/esm/theme/themeContractData.js.map +1 -1
- package/dist/esm/utils/cx.js.map +1 -1
- package/dist/esm/utils/devWarn.js.map +1 -1
- package/dist/esm/utils/mathExpression.js.map +1 -1
- package/dist/esm/utils/mathUtils.js.map +1 -1
- package/dist/esm/utils/objects.js.map +1 -1
- package/dist/esm/utils/platform.js.map +1 -1
- package/dist/tokens/tokens.dark.css +1 -1
- package/dist/tokens/tokens.json +1 -1
- package/dist/tokens/tokens.light.css +1 -1
- package/dist/types/components/Icons/CameraIcon.d.ts +34 -0
- package/dist/types/components/Icons/CubeIcon.d.ts +34 -0
- package/dist/types/components/Icons/OrbitIcon.d.ts +34 -0
- package/dist/types/components/Icons/RotateIcon.d.ts +35 -0
- package/dist/types/components/Icons/SpinIcon.d.ts +35 -0
- package/dist/types/components/Icons/ZoomFitIcon.d.ts +35 -0
- package/dist/types/components/controls/Select/Select.d.ts +1 -1
- package/dist/types/components/controls/Select/Select.types.d.ts +43 -9
- package/dist/types/components/editor/PropertyInspector/PropertyInspector.types.d.ts +49 -3
- package/dist/types/components/primitives/Button/Button.d.ts +1 -1
- package/dist/types/components/primitives/IconButton/IconButton.d.ts +1 -1
- package/dist/types/index.d.ts +6 -0
- package/dist/types/theme/ThemeProvider.d.ts +5 -3
- package/package.json +6 -2
- package/dist/esm/_virtual/_commonjsHelpers.js +0 -6
- package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/esm/_virtual/cjs.js +0 -4
- package/dist/esm/_virtual/cjs.js.map +0 -1
- package/dist/esm/_virtual/cssesc.js +0 -8
- package/dist/esm/_virtual/cssesc.js.map +0 -1
- package/dist/esm/_virtual/picocolors.js +0 -8
- package/dist/esm/_virtual/picocolors.js.map +0 -1
- package/dist/esm/_virtual/picocolors2.js +0 -4
- package/dist/esm/_virtual/picocolors2.js.map +0 -1
- package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js +0 -56
- package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/adapter/dist/vanilla-extract-css-adapter.esm.js +0 -46
- package/dist/esm/node_modules/@vanilla-extract/css/adapter/dist/vanilla-extract-css-adapter.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/dist/taggedTemplateLiteral-10998315.esm.js +0 -13
- package/dist/esm/node_modules/@vanilla-extract/css/dist/taggedTemplateLiteral-10998315.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/dist/transformCss-fd0786e1.esm.js +0 -962
- package/dist/esm/node_modules/@vanilla-extract/css/dist/transformCss-fd0786e1.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js +0 -309
- package/dist/esm/node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/fileScope/dist/vanilla-extract-css-fileScope.esm.js +0 -18
- package/dist/esm/node_modules/@vanilla-extract/css/fileScope/dist/vanilla-extract-css-fileScope.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/injectStyles/dist/vanilla-extract-css-injectStyles.esm.js +0 -23
- package/dist/esm/node_modules/@vanilla-extract/css/injectStyles/dist/vanilla-extract-css-injectStyles.esm.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/css/node_modules/lru-cache/dist/esm/index.js +0 -1543
- package/dist/esm/node_modules/@vanilla-extract/css/node_modules/lru-cache/dist/esm/index.js.map +0 -1
- package/dist/esm/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js +0 -38
- package/dist/esm/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js.map +0 -1
- package/dist/esm/node_modules/css-what/lib/es/parse.js +0 -424
- package/dist/esm/node_modules/css-what/lib/es/parse.js.map +0 -1
- package/dist/esm/node_modules/css-what/lib/es/types.js +0 -29
- package/dist/esm/node_modules/css-what/lib/es/types.js.map +0 -1
- package/dist/esm/node_modules/cssesc/cssesc.js +0 -120
- package/dist/esm/node_modules/cssesc/cssesc.js.map +0 -1
- package/dist/esm/node_modules/dedent/dist/dedent.js +0 -100
- package/dist/esm/node_modules/dedent/dist/dedent.js.map +0 -1
- package/dist/esm/node_modules/deep-object-diff/mjs/diff.js +0 -40
- package/dist/esm/node_modules/deep-object-diff/mjs/diff.js.map +0 -1
- package/dist/esm/node_modules/deep-object-diff/mjs/utils.js +0 -9
- package/dist/esm/node_modules/deep-object-diff/mjs/utils.js.map +0 -1
- package/dist/esm/node_modules/deepmerge/dist/cjs.js +0 -143
- package/dist/esm/node_modules/deepmerge/dist/cjs.js.map +0 -1
- package/dist/esm/node_modules/media-query-parser/dist/media-query-parser.esm.js +0 -1386
- package/dist/esm/node_modules/media-query-parser/dist/media-query-parser.esm.js.map +0 -1
- package/dist/esm/node_modules/modern-ahocorasick/dist/index.js +0 -102
- package/dist/esm/node_modules/modern-ahocorasick/dist/index.js.map +0 -1
- package/dist/esm/node_modules/picocolors/picocolors.js +0 -87
- package/dist/esm/node_modules/picocolors/picocolors.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TangentMirroredIcon.js","sources":["
|
|
1
|
+
{"version":3,"file":"TangentMirroredIcon.js","sources":["src/components/Icons/TangentMirroredIcon.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport { Icon } from '@/components/primitives/Icon';\n\nimport type { IconProps } from '@/components/primitives/Icon';\n\nexport const TangentMirroredIcon = /*#__PURE__*/ React.memo<\n Omit<IconProps, 'children'>\n>(props => {\n return (\n <Icon {...props}>\n <g strokeWidth=\"2.25\">\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"6\" />\n </g>\n <circle cx=\"6\" cy=\"16.5\" r=\"2.25\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"18\" cy=\"7.5\" r=\"2.25\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" fill=\"currentColor\" stroke=\"none\" />\n </Icon>\n );\n});\n\nTangentMirroredIcon.displayName = 'TangentMirroredIcon';\n"],"names":[],"mappings":";;;;;AAQO;;AAaP;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TangentStepIcon.js","sources":["
|
|
1
|
+
{"version":3,"file":"TangentStepIcon.js","sources":["src/components/Icons/TangentStepIcon.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport { Icon } from '@/components/primitives/Icon';\n\nimport type { IconProps } from '@/components/primitives/Icon';\n\nexport const TangentStepIcon = /*#__PURE__*/ React.memo<\n Omit<IconProps, 'children'>\n>(props => {\n return (\n <Icon {...props}>\n <g strokeWidth=\"2.25\">\n <polyline points=\"3,18 3,12 12,12 12,6 21,6\" />\n </g>\n </Icon>\n );\n});\n\nTangentStepIcon.displayName = 'TangentStepIcon';\n"],"names":[],"mappings":";;;;;AAQO;AAGL;AAOF;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TerminalIcon.js","sources":["
|
|
1
|
+
{"version":3,"file":"TerminalIcon.js","sources":["src/components/Icons/TerminalIcon.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport { Icon } from '@/components/primitives/Icon';\n\nimport type { IconProps } from '@/components/primitives/Icon';\n\n/**\n * Terminal icon component for shells, command palettes, and CLI panels.\n *\n * A prompt caret with an underscore line, commonly used for terminal\n * panels, command palette triggers, and shell-related actions.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <TerminalIcon />\n *\n * // With custom size and color\n * <TerminalIcon size=\"md\" color=\"secondary\" />\n *\n * // In a command palette trigger\n * <IconButton icon={<TerminalIcon />} label=\"Open terminal\" />\n * ```\n */\nexport const TerminalIcon = /*#__PURE__*/ React.memo<\n Omit<IconProps, 'children'>\n>(props => {\n return (\n <Icon {...props}>\n <polyline points=\"4 17 10 11 4 5\" />\n <line x1=\"12\" y1=\"19\" x2=\"20\" y2=\"19\" />\n </Icon>\n );\n});\n\nTerminalIcon.displayName = 'TerminalIcon';\n"],"names":[],"mappings":";;;;;AAQA;;;;;;;;;;;;;;;;;AAiBG;AACI;AAGL;AAMF;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrashIcon.js","sources":["
|
|
1
|
+
{"version":3,"file":"TrashIcon.js","sources":["src/components/Icons/TrashIcon.tsx"],"sourcesContent":["'use client';\n\n// src/icons/TrashIcon.tsx\nimport React from 'react';\n\nimport { Icon } from '@/components/primitives/Icon';\n\nimport type { IconProps } from '@/components/primitives/Icon';\n\n/**\n * Trash icon component for delete actions.\n *\n * A standard trash can icon commonly used for deleting items,\n * removing content, and destructive operations in editor interfaces.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <TrashIcon />\n *\n * // With custom size and color\n * <TrashIcon size=\"md\" color=\"error\" />\n *\n * // In a delete button\n * <Button icon={<TrashIcon />}>Delete</Button>\n * ```\n */\nexport const TrashIcon = /*#__PURE__*/ React.memo<Omit<IconProps, 'children'>>(\n props => {\n return (\n <Icon {...props}>\n <polyline points=\"3,6 5,6 21,6\" />\n <path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\" />\n <line x1=\"10\" y1=\"11\" x2=\"10\" y2=\"17\" />\n <line x1=\"14\" y1=\"11\" x2=\"14\" y2=\"17\" />\n </Icon>\n );\n }\n);\n\nTrashIcon.displayName = 'TrashIcon';\n"],"names":[],"mappings":";;;;;AASA;;;;;;;;;;;;;;;;;AAiBG;AACI;;AAUL;AAGF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UndoIcon.js","sources":["
|
|
1
|
+
{"version":3,"file":"UndoIcon.js","sources":["src/components/Icons/UndoIcon.tsx"],"sourcesContent":["'use client';\n\n// src/icons/UndoIcon.tsx\nimport React from 'react';\n\nimport { Icon } from '@/components/primitives/Icon';\n\nimport type { IconProps } from '@/components/primitives/Icon';\n\n/**\n * Undo icon component for undo actions.\n *\n * A standard curved arrow icon commonly used for undoing operations,\n * reverting changes, and history navigation in editor interfaces.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <UndoIcon />\n *\n * // With custom size and color\n * <UndoIcon size=\"md\" color=\"secondary\" />\n *\n * // In an undo button\n * <Button icon={<UndoIcon />}>Undo</Button>\n * ```\n */\nexport const UndoIcon = /*#__PURE__*/ React.memo<Omit<IconProps, 'children'>>(\n props => {\n return (\n <Icon {...props}>\n <path d=\"M3 7v6h6\" />\n <path d=\"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\" />\n </Icon>\n );\n }\n);\n\nUndoIcon.displayName = 'UndoIcon';\n"],"names":[],"mappings":";;;;;AASA;;;;;;;;;;;;;;;;;AAiBG;AACI;AAEH;AAMF;AAGF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnlinkIcon.js","sources":["
|
|
1
|
+
{"version":3,"file":"UnlinkIcon.js","sources":["src/components/Icons/UnlinkIcon.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport { Icon } from '@/components/primitives/Icon';\n\nimport type { IconProps } from '@/components/primitives/Icon';\n\n/**\n * Unlink icon — a broken chain.\n *\n * Indicates that two values are decoupled (no longer linked). Pair with\n * `LinkIcon` to render a toggle: link → unlink. Common in coordinate\n * inputs, transform locks, color-channel groups.\n *\n * @example\n * ```tsx\n * <IconButton aria-label=\"Unlink axes\">\n * <UnlinkIcon />\n * </IconButton>\n * ```\n */\nexport const UnlinkIcon = /*#__PURE__*/ React.memo<Omit<IconProps, 'children'>>(\n props => {\n return (\n <Icon {...props}>\n <path d=\"M9 17H7A5 5 0 0 1 7 7h2\" />\n <path d=\"M15 7h2a5 5 0 0 1 0 10h-2\" />\n <line x1=\"3\" y1=\"3\" x2=\"21\" y2=\"21\" />\n </Icon>\n );\n }\n);\n\nUnlinkIcon.displayName = 'UnlinkIcon';\n"],"names":[],"mappings":";;;;;AAQA;;;;;;;;;;;;;AAaG;AACI;AAEH;AAOF;AAGF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnlockIcon.js","sources":["
|
|
1
|
+
{"version":3,"file":"UnlockIcon.js","sources":["src/components/Icons/UnlockIcon.tsx"],"sourcesContent":["'use client';\n\n// src/icons/UnlockIcon.tsx\nimport React from 'react';\n\nimport { Icon } from '@/components/primitives/Icon';\n\nimport type { IconProps } from '@/components/primitives/Icon';\n\n/**\n * Unlock icon component for security and unlocked states.\n *\n * A standard open padlock icon commonly used for indicating unlocked content,\n * accessible features, and unprotected operations in editor interfaces.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <UnlockIcon />\n *\n * // With custom size and color\n * <UnlockIcon size=\"md\" color=\"success\" />\n *\n * // In a security context\n * <Button icon={<UnlockIcon />}>Unlock</Button>\n * ```\n */\nexport const UnlockIcon = /*#__PURE__*/ React.memo<Omit<IconProps, 'children'>>(\n props => {\n return (\n <Icon {...props}>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 9.9-1\" />\n </Icon>\n );\n }\n);\n\nUnlockIcon.displayName = 'UnlockIcon';\n"],"names":[],"mappings":";;;;;AASA;;;;;;;;;;;;;;;;;AAiBG;AACI;AAEH;AAMF;AAGF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadIcon.js","sources":["
|
|
1
|
+
{"version":3,"file":"UploadIcon.js","sources":["src/components/Icons/UploadIcon.tsx"],"sourcesContent":["'use client';\n\n// src/icons/UploadIcon.tsx\nimport React from 'react';\n\nimport { Icon } from '@/components/primitives/Icon';\n\nimport type { IconProps } from '@/components/primitives/Icon';\n\n/**\n * Upload icon component for upload actions.\n *\n * A standard upload arrow icon commonly used for uploading files,\n * importing data, and file transfer operations in editor interfaces.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <UploadIcon />\n *\n * // With custom size and color\n * <UploadIcon size=\"lg\" color=\"primary\" />\n *\n * // In an upload button\n * <Button icon={<UploadIcon />}>Upload</Button>\n * ```\n */\nexport const UploadIcon = /*#__PURE__*/ React.memo<Omit<IconProps, 'children'>>(\n props => {\n return (\n <Icon {...props}>\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"17,8 12,3 7,8\" />\n <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\" />\n </Icon>\n );\n }\n);\n\nUploadIcon.displayName = 'UploadIcon';\n"],"names":[],"mappings":";;;;;AASA;;;;;;;;;;;;;;;;;AAiBG;AACI;AAEH;AAOF;AAGF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserIcon.js","sources":["
|
|
1
|
+
{"version":3,"file":"UserIcon.js","sources":["src/components/Icons/UserIcon.tsx"],"sourcesContent":["'use client';\n\n// src/icons/UserIcon.tsx\nimport React from 'react';\n\nimport { Icon } from '@/components/primitives/Icon';\n\nimport type { IconProps } from '@/components/primitives/Icon';\n\n/**\n * User icon component for user profiles and accounts.\n *\n * A standard user silhouette icon commonly used for user profiles,\n * account management, and person-related features in editor interfaces.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <UserIcon />\n *\n * // With custom size and color\n * <UserIcon size=\"sm\" color=\"secondary\" />\n *\n * // In a profile context\n * <Button icon={<UserIcon />}>Profile</Button>\n * ```\n */\nexport const UserIcon = /*#__PURE__*/ React.memo<Omit<IconProps, 'children'>>(\n props => {\n return (\n <Icon {...props}>\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\n </Icon>\n );\n }\n);\n\nUserIcon.displayName = 'UserIcon';\n"],"names":[],"mappings":";;;;;AASA;;;;;;;;;;;;;;;;;AAiBG;AACI;;AAQL;AAGF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UsersIcon.js","sources":["
|
|
1
|
+
{"version":3,"file":"UsersIcon.js","sources":["src/components/Icons/UsersIcon.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport { Icon } from '@/components/primitives/Icon';\n\nimport type { IconProps } from '@/components/primitives/Icon';\n\n/**\n * Users icon component for groups, teams, and multi-user contexts.\n *\n * Two overlapping user silhouettes commonly used for team membership,\n * shared resources, and group-level actions. Pairs with `UserIcon` for\n * single-user contexts.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <UsersIcon />\n *\n * // With custom size and color\n * <UsersIcon size=\"md\" color=\"secondary\" />\n *\n * // In a team selector\n * <Button icon={<UsersIcon />}>Team</Button>\n * ```\n */\nexport const UsersIcon = /*#__PURE__*/ React.memo<Omit<IconProps, 'children'>>(\n props => {\n return (\n <Icon {...props}>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <path d=\"M22 21v-2a4 4 0 0 0-3-3.87\" />\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" />\n </Icon>\n );\n }\n);\n\nUsersIcon.displayName = 'UsersIcon';\n"],"names":[],"mappings":";;;;;AAQA;;;;;;;;;;;;;;;;;;AAkBG;AACI;AAEH;AAQF;AAGF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WarningIcon.js","sources":["
|
|
1
|
+
{"version":3,"file":"WarningIcon.js","sources":["src/components/Icons/WarningIcon.tsx"],"sourcesContent":["'use client';\n\n// src/icons/WarningIcon.tsx\nimport React from 'react';\n\nimport { Icon } from '@/components/primitives/Icon';\n\nimport type { IconProps } from '@/components/primitives/Icon';\n\n/**\n * Warning icon component for warning states.\n *\n * A standard triangle with exclamation icon commonly used for warnings,\n * caution messages, and alert notifications in editor interfaces.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <WarningIcon />\n *\n * // With custom size and color\n * <WarningIcon size=\"md\" color=\"warning\" />\n *\n * // In a warning context\n * <Button icon={<WarningIcon />}>Warning</Button>\n * ```\n */\nexport const WarningIcon = /*#__PURE__*/ React.memo<\n Omit<IconProps, 'children'>\n>(props => {\n return (\n <Icon {...props}>\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </Icon>\n );\n});\n\nWarningIcon.displayName = 'WarningIcon';\n"],"names":[],"mappings":";;;;;AASA;;;;;;;;;;;;;;;;;AAiBG;AACI;;AAUP;AAEA;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { Icon } from '../primitives/Icon/Icon.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Zoom-to-fit icon component for framing content to the viewport.
|
|
8
|
+
*
|
|
9
|
+
* A corner frame around a focal point — the conventional glyph for
|
|
10
|
+
* "zoom to fit", "frame selected", and "fit to view" actions that reset the
|
|
11
|
+
* camera so the content fills the viewport. Distinct from `FullscreenIcon`
|
|
12
|
+
* (outward expand arrows) and `MaximizeIcon` (a plain window outline).
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* // Basic usage
|
|
17
|
+
* <ZoomFitIcon />
|
|
18
|
+
*
|
|
19
|
+
* // With custom size and color
|
|
20
|
+
* <ZoomFitIcon size="md" color="accent" />
|
|
21
|
+
*
|
|
22
|
+
* // In a viewport control bar
|
|
23
|
+
* <IconButton icon={<ZoomFitIcon />} label="Zoom to fit" />
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
const ZoomFitIcon = /*#__PURE__*/ React.memo(props => {
|
|
27
|
+
return (jsxs(Icon, { ...props, children: [jsx("path", { d: "M3 7V5a2 2 0 0 1 2-2h2" }), jsx("path", { d: "M17 3h2a2 2 0 0 1 2 2v2" }), jsx("path", { d: "M21 17v2a2 2 0 0 1-2 2h-2" }), jsx("path", { d: "M7 21H5a2 2 0 0 1-2-2v-2" }), jsx("circle", { cx: "12", cy: "12", r: "3" })] }));
|
|
28
|
+
});
|
|
29
|
+
ZoomFitIcon.displayName = 'ZoomFitIcon';
|
|
30
|
+
|
|
31
|
+
export { ZoomFitIcon };
|
|
32
|
+
//# sourceMappingURL=ZoomFitIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZoomFitIcon.js","sources":["src/components/Icons/ZoomFitIcon.tsx"],"sourcesContent":["'use client';\n\n// src/icons/ZoomFitIcon.tsx\nimport React from 'react';\n\nimport { Icon } from '@/components/primitives/Icon';\n\nimport type { IconProps } from '@/components/primitives/Icon';\n\n/**\n * Zoom-to-fit icon component for framing content to the viewport.\n *\n * A corner frame around a focal point — the conventional glyph for\n * \"zoom to fit\", \"frame selected\", and \"fit to view\" actions that reset the\n * camera so the content fills the viewport. Distinct from `FullscreenIcon`\n * (outward expand arrows) and `MaximizeIcon` (a plain window outline).\n *\n * @example\n * ```tsx\n * // Basic usage\n * <ZoomFitIcon />\n *\n * // With custom size and color\n * <ZoomFitIcon size=\"md\" color=\"accent\" />\n *\n * // In a viewport control bar\n * <IconButton icon={<ZoomFitIcon />} label=\"Zoom to fit\" />\n * ```\n */\nexport const ZoomFitIcon = /*#__PURE__*/ React.memo<\n Omit<IconProps, 'children'>\n>(props => {\n return (\n <Icon {...props}>\n <path d=\"M3 7V5a2 2 0 0 1 2-2h2\" />\n <path d=\"M17 3h2a2 2 0 0 1 2 2v2\" />\n <path d=\"M21 17v2a2 2 0 0 1-2 2h-2\" />\n <path d=\"M7 21H5a2 2 0 0 1-2-2v-2\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </Icon>\n );\n});\n\nZoomFitIcon.displayName = 'ZoomFitIcon';\n"],"names":[],"mappings":";;;;;AASA;;;;;;;;;;;;;;;;;;;AAmBG;AACI;;AAYP;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZoomInIcon.js","sources":["
|
|
1
|
+
{"version":3,"file":"ZoomInIcon.js","sources":["src/components/Icons/ZoomInIcon.tsx"],"sourcesContent":["'use client';\n\n// src/icons/ZoomInIcon.tsx\nimport React from 'react';\n\nimport { Icon } from '@/components/primitives/Icon';\n\nimport type { IconProps } from '@/components/primitives/Icon';\n\n/**\n * Zoom In icon component for zoom in actions.\n *\n * A standard magnifying glass with plus icon commonly used for zooming in,\n * enlarging content, and scale increase operations in editor interfaces.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <ZoomInIcon />\n *\n * // With custom size and color\n * <ZoomInIcon size=\"md\" color=\"accent\" />\n *\n * // In a zoom context\n * <Button icon={<ZoomInIcon />}>Zoom In</Button>\n * ```\n */\nexport const ZoomInIcon = /*#__PURE__*/ React.memo<Omit<IconProps, 'children'>>(\n props => {\n return (\n <Icon {...props}>\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"M21 21l-4.35-4.35\" />\n <line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\" />\n <line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\" />\n </Icon>\n );\n }\n);\n\nZoomInIcon.displayName = 'ZoomInIcon';\n"],"names":[],"mappings":";;;;;AASA;;;;;;;;;;;;;;;;;AAiBG;AACI;AAEH;AAQF;AAGF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZoomOutIcon.js","sources":["
|
|
1
|
+
{"version":3,"file":"ZoomOutIcon.js","sources":["src/components/Icons/ZoomOutIcon.tsx"],"sourcesContent":["'use client';\n\n// src/icons/ZoomOutIcon.tsx\nimport React from 'react';\n\nimport { Icon } from '@/components/primitives/Icon';\n\nimport type { IconProps } from '@/components/primitives/Icon';\n\n/**\n * Zoom Out icon component for zoom out actions.\n *\n * A standard magnifying glass with minus icon commonly used for zooming out,\n * reducing content, and scale decrease operations in editor interfaces.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <ZoomOutIcon />\n *\n * // With custom size and color\n * <ZoomOutIcon size=\"lg\" color=\"secondary\" />\n *\n * // In a zoom context\n * <Button icon={<ZoomOutIcon />}>Zoom Out</Button>\n * ```\n */\nexport const ZoomOutIcon = /*#__PURE__*/ React.memo<\n Omit<IconProps, 'children'>\n>(props => {\n return (\n <Icon {...props}>\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"M21 21l-4.35-4.35\" />\n <line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\" />\n </Icon>\n );\n});\n\nZoomOutIcon.displayName = 'ZoomOutIcon';\n"],"names":[],"mappings":";;;;;AASA;;;;;;;;;;;;;;;;;AAiBG;AACI;;AAUP;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CartesianPicker.js","sources":["
|
|
1
|
+
{"version":3,"file":"CartesianPicker.js","sources":["src/components/controls/CartesianPicker/CartesianPicker.tsx"],"sourcesContent":["'use client';\n\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport React, { useState, useCallback, useMemo, useRef } from 'react';\n\nimport { CanvasContainer } from '@/components/primitives/canvas/CanvasContainer';\nimport { cx } from '@/utils/cx';\nimport { roundToPrecision } from '@/utils/mathUtils';\n\nimport {\n cartesianPickerRecipe,\n pickerWidthVar,\n bottomBarStyle,\n} from './CartesianPicker.css';\nimport { useCartesianInteraction } from './useCartesianInteraction';\nimport { useCartesianRenderer } from './useCartesianRenderer';\n\nimport type { CartesianPickerProps } from './CartesianPicker.types';\nimport type {\n Point2D,\n CanvasViewport,\n} from '@/components/primitives/canvas/canvas.types';\n\nexport const CartesianPicker: React.FC<CartesianPickerProps> = ({\n value,\n defaultValue,\n domainX = [-1, 1],\n domainY = [-1, 1],\n showGrid = true,\n gridSubdivisions = 4,\n showAxisLabels = true,\n showOriginAxes = true,\n showCrosshair = true,\n crosshairStyle = 'dashed',\n labelX,\n labelY,\n markerRadius = 6,\n snapToGrid = false,\n step,\n clampToRange = true,\n precision = 2,\n width = 200,\n height = 200,\n responsive = false,\n disabled = false,\n readOnly = false,\n onChange,\n onChangeComplete,\n renderBackground,\n renderBottomBar,\n className,\n testId,\n id,\n style,\n ...rest\n}) => {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n // Controlled / uncontrolled\n const [internalValue, setInternalValue] = useState<Point2D>(\n () => defaultValue ?? { x: 0, y: 0 }\n );\n\n const isControlled = value !== undefined;\n const currentPoint = useMemo(\n () => (isControlled ? value : internalValue),\n [isControlled, value, internalValue]\n );\n\n const handleChange = useCallback(\n (newPoint: Point2D) => {\n if (!isControlled) {\n setInternalValue(newPoint);\n }\n onChange?.(newPoint);\n },\n [isControlled, onChange]\n );\n\n const handleChangeComplete = useCallback(\n (newPoint: Point2D) => {\n onChangeComplete?.(newPoint);\n },\n [onChangeComplete]\n );\n\n // Viewport with padding\n const viewport = useMemo((): CanvasViewport => {\n const hasAxisNames = Boolean(labelX ?? labelY);\n const padding = hasAxisNames && showAxisLabels ? 0.12 : 0.08;\n const [dxMin, dxMax] = domainX;\n const [dyMin, dyMax] = domainY;\n const xPad = (dxMax - dxMin) * padding;\n const yPad = (dyMax - dyMin) * padding;\n return {\n viewX: [dxMin - xPad, dxMax + xPad],\n viewY: [dyMin - yPad, dyMax + yPad],\n };\n }, [domainX, domainY, labelX, labelY, showAxisLabels]);\n\n // Interaction hook\n const interaction = useCartesianInteraction({\n point: currentPoint,\n viewport,\n canvasRef,\n domainX,\n domainY,\n disabled,\n readOnly,\n clampToRange,\n snapToGrid,\n gridSubdivisions,\n step,\n precision,\n onChange: handleChange,\n onChangeComplete: handleChangeComplete,\n });\n\n // Renderer hook\n useCartesianRenderer({\n canvasRef,\n point: currentPoint,\n viewport,\n domainX,\n domainY,\n showGrid,\n gridSubdivisions,\n showAxisLabels,\n showOriginAxes,\n showCrosshair,\n crosshairStyle,\n labelX,\n labelY,\n markerRadius,\n disabled,\n isHovered: interaction.isHovered,\n isDragging: interaction.isDragging,\n renderBackground,\n });\n\n // ARIA description\n const ariaDescription = `2D point picker, current value X: ${roundToPrecision(currentPoint.x, precision)}, Y: ${roundToPrecision(currentPoint.y, precision)}`;\n\n // Live announcement\n const liveAnnouncement = `X: ${roundToPrecision(currentPoint.x, precision)}, Y: ${roundToPrecision(currentPoint.y, precision)}`;\n\n return (\n <div\n className={cx(cartesianPickerRecipe({ disabled, responsive }), className)}\n style={{\n ...style,\n ...(!responsive\n ? assignInlineVars({ [pickerWidthVar]: `${width}px` })\n : {}),\n }}\n data-testid={testId}\n id={id}\n {...rest}\n >\n <CanvasContainer\n canvasRef={canvasRef}\n height={height}\n responsive={responsive}\n disabled={disabled}\n ariaLabel=\"Cartesian point picker\"\n ariaRoledescription={ariaDescription}\n liveAnnouncement={liveAnnouncement}\n handlers={interaction.handlers}\n testId={testId ? `${testId}-canvas` : undefined}\n />\n {renderBottomBar && (\n <div\n className={bottomBarStyle}\n data-testid={testId ? `${testId}-bottom-bar` : undefined}\n >\n {renderBottomBar({\n point: currentPoint,\n disabled,\n readOnly,\n isDragging: interaction.isDragging,\n domainX,\n domainY,\n })}\n </div>\n )}\n </div>\n );\n};\n\nCartesianPicker.displayName = 'CartesianPicker';\n"],"names":[],"mappings":";;;;;;;;;;;AAuBO;AAiCL;;;AAOA;;AAMA;;;;AAKI;AACF;AAIF;AAEI;AACF;;AAKF;;AAEE;AACA;AACA;;;;;;;AAOF;;;AAIE;;;;;;;;;;;;AAYA;AACA;AACD;;AAGD;;AAEE;;;;;;;;;;;;;;;;;AAiBD;;;;;AAQD;AAIM;;AAEE;;AAEH;AAsBK;;;;;;AAMD;AAKX;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCartesianInteraction.js","sources":["
|
|
1
|
+
{"version":3,"file":"useCartesianInteraction.js","sources":["src/components/controls/CartesianPicker/useCartesianInteraction.ts"],"sourcesContent":["'use client';\n\nimport { useState, useCallback, useRef } from 'react';\n\nimport {\n canvasToDomain,\n getCanvasPointerPosition,\n hitTestPoint,\n} from '@/components/primitives/canvas/canvasCoords';\nimport { clamp, roundToPrecision } from '@/utils/mathUtils';\n\nimport type {\n Point2D,\n CanvasViewport,\n} from '@/components/primitives/canvas/canvas.types';\nimport type React from 'react';\n\ninterface UseCartesianInteractionOptions {\n point: Point2D;\n viewport: CanvasViewport;\n canvasRef: React.RefObject<HTMLCanvasElement | null>;\n domainX: [number, number];\n domainY: [number, number];\n disabled: boolean;\n readOnly: boolean;\n clampToRange: boolean;\n snapToGrid: boolean;\n gridSubdivisions: number;\n step?: number | [number, number];\n precision: number;\n onChange: (point: Point2D) => void;\n onChangeComplete?: (point: Point2D) => void;\n}\n\ninterface UseCartesianInteractionReturn {\n isDragging: boolean;\n isHovered: boolean;\n handlers: {\n onPointerDown: (e: React.PointerEvent) => void;\n onPointerMove: (e: React.PointerEvent) => void;\n onPointerUp: (e: React.PointerEvent) => void;\n onKeyDown: (e: React.KeyboardEvent) => void;\n };\n}\n\nfunction snapValue(value: number, step: number): number {\n if (step === 0) return value;\n return Math.round(value / step) * step;\n}\n\nexport function useCartesianInteraction(\n options: UseCartesianInteractionOptions\n): UseCartesianInteractionReturn {\n const {\n point,\n viewport,\n canvasRef,\n domainX,\n domainY,\n disabled,\n readOnly,\n clampToRange,\n snapToGrid,\n gridSubdivisions,\n step,\n precision,\n onChange,\n onChangeComplete,\n } = options;\n\n const [isHovered, setIsHovered] = useState(false);\n // Ref drives synchronous reads inside the pointer handlers; the state mirror\n // is the value exposed for rendering (kept in sync on drag start/end).\n const isDraggingRef = useRef(false);\n const [isDragging, setIsDragging] = useState(false);\n\n const getCanvasSize = useCallback(() => {\n const canvas = canvasRef.current;\n if (!canvas) return { w: 200, h: 200 };\n const rect = canvas.getBoundingClientRect();\n return { w: rect.width, h: rect.height };\n }, [canvasRef]);\n\n const applyConstraints = useCallback(\n (rawX: number, rawY: number, ctrlKey: boolean): Point2D => {\n let newX = rawX;\n let newY = rawY;\n\n // Apply snap\n if (step) {\n const [stepX, stepY] = Array.isArray(step) ? step : [step, step];\n newX = snapValue(newX, stepX);\n newY = snapValue(newY, stepY);\n } else if (snapToGrid !== ctrlKey) {\n // Ctrl toggles snap behavior\n const xStep = (domainX[1] - domainX[0]) / gridSubdivisions;\n const yStep = (domainY[1] - domainY[0]) / gridSubdivisions;\n newX = snapValue(newX, xStep);\n newY = snapValue(newY, yStep);\n }\n\n newX = roundToPrecision(newX, precision);\n newY = roundToPrecision(newY, precision);\n\n if (clampToRange) {\n newX = clamp(newX, domainX[0], domainX[1]);\n newY = clamp(newY, domainY[0], domainY[1]);\n }\n\n return { x: newX, y: newY };\n },\n [\n step,\n snapToGrid,\n gridSubdivisions,\n domainX,\n domainY,\n precision,\n clampToRange,\n ]\n );\n\n const onPointerDown = useCallback(\n (e: React.PointerEvent) => {\n if (disabled || readOnly || e.button !== 0) return;\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n const { px, py } = getCanvasPointerPosition(e, canvas);\n const { w, h } = getCanvasSize();\n\n const domain = canvasToDomain(px, py, viewport, w, h);\n const newPoint = applyConstraints(domain.x, domain.y, e.ctrlKey);\n\n isDraggingRef.current = true;\n setIsDragging(true);\n canvas.setPointerCapture(e.pointerId);\n\n onChange(newPoint);\n },\n [\n disabled,\n readOnly,\n canvasRef,\n viewport,\n getCanvasSize,\n applyConstraints,\n onChange,\n ]\n );\n\n const onPointerMove = useCallback(\n (e: React.PointerEvent) => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n if (isDraggingRef.current) {\n if (readOnly) return;\n const { px, py } = getCanvasPointerPosition(e, canvas);\n const { w, h } = getCanvasSize();\n const domain = canvasToDomain(px, py, viewport, w, h);\n const newPoint = applyConstraints(domain.x, domain.y, e.ctrlKey);\n onChange(newPoint);\n return;\n }\n\n // Hover detection\n const { px, py } = getCanvasPointerPosition(e, canvas);\n const { w, h } = getCanvasSize();\n const dist = hitTestPoint(px, py, point, viewport, w, h, 12);\n const hovering = dist !== Infinity;\n setIsHovered(hovering);\n\n if (disabled) {\n canvas.style.cursor = 'not-allowed';\n } else if (readOnly) {\n canvas.style.cursor = 'default';\n } else if (hovering) {\n canvas.style.cursor = 'grab';\n } else {\n canvas.style.cursor = 'crosshair';\n }\n },\n [\n canvasRef,\n viewport,\n point,\n disabled,\n readOnly,\n getCanvasSize,\n applyConstraints,\n onChange,\n ]\n );\n\n const onPointerUp = useCallback(\n (e: React.PointerEvent) => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n if (isDraggingRef.current) {\n isDraggingRef.current = false;\n setIsDragging(false);\n canvas.releasePointerCapture(e.pointerId);\n\n // Compute final point for onChangeComplete\n const { px, py } = getCanvasPointerPosition(e, canvas);\n const { w, h } = getCanvasSize();\n const domain = canvasToDomain(px, py, viewport, w, h);\n const finalPoint = applyConstraints(domain.x, domain.y, e.ctrlKey);\n onChangeComplete?.(finalPoint);\n }\n },\n [canvasRef, viewport, getCanvasSize, applyConstraints, onChangeComplete]\n );\n\n const onKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled || readOnly) return;\n\n const xRange = domainX[1] - domainX[0];\n const yRange = domainY[1] - domainY[0];\n\n let baseStep: number;\n if (step) {\n const [stepX] = Array.isArray(step) ? step : [step, step];\n baseStep = stepX;\n } else {\n baseStep = xRange / gridSubdivisions;\n }\n\n const fineMultiplier = e.shiftKey ? 0.1 : 1;\n const xStep = baseStep * fineMultiplier;\n const yStep =\n (step\n ? Array.isArray(step)\n ? step[1]\n : step\n : yRange / gridSubdivisions) * fineMultiplier;\n\n let newX = point.x;\n let newY = point.y;\n let handled = false;\n\n switch (e.key) {\n case 'ArrowLeft':\n newX -= xStep;\n handled = true;\n break;\n case 'ArrowRight':\n newX += xStep;\n handled = true;\n break;\n case 'ArrowUp':\n newY += yStep;\n handled = true;\n break;\n case 'ArrowDown':\n newY -= yStep;\n handled = true;\n break;\n case 'Home': {\n // Reset to center of domain\n newX = (domainX[0] + domainX[1]) / 2;\n newY = (domainY[0] + domainY[1]) / 2;\n handled = true;\n break;\n }\n case '0': {\n // Reset to origin\n newX = 0;\n newY = 0;\n handled = true;\n break;\n }\n }\n\n if (!handled) return;\n e.preventDefault();\n\n newX = roundToPrecision(newX, precision);\n newY = roundToPrecision(newY, precision);\n\n if (clampToRange) {\n newX = clamp(newX, domainX[0], domainX[1]);\n newY = clamp(newY, domainY[0], domainY[1]);\n }\n\n const newPoint = { x: newX, y: newY };\n onChange(newPoint);\n onChangeComplete?.(newPoint);\n },\n [\n disabled,\n readOnly,\n point,\n domainX,\n domainY,\n step,\n gridSubdivisions,\n precision,\n clampToRange,\n onChange,\n onChangeComplete,\n ]\n );\n\n return {\n isDragging,\n isHovered,\n handlers: {\n onPointerDown,\n onPointerMove,\n onPointerUp,\n onKeyDown,\n },\n };\n}\n"],"names":[],"mappings":";;;;;AA6CA;;AACkB;;AAElB;AAEM;AAGJ;;;;AAoBA;;AAGA;AACE;AACA;;AACA;AACA;AACF;;;;;;;AAUM;AACA;;AACK;;AAEL;AACA;AACA;AACA;;AAGF;AACA;;AAGE;AACA;;;AAIJ;;;;;;;;AASC;AAGH;;;AAGI;AACA;;AAEA;;AAGA;AACA;AAEA;;AAEA;;AAGF;;;;;;;;AASC;AAGH;AAEI;AACA;;AAEA;AACE;;AACA;;AAEA;AACA;;;;;AAMF;;AAEA;AACA;;;AAIE;;;AAEA;;;AAEA;;;AAEA;;AAEJ;;;;;;;;;AAUC;AAGH;AAEI;AACA;;AAEA;AACE;;AAEA;;AAGA;;AAEA;AACA;AACA;;AAEJ;AAIF;;;;;AAOI;;;;;;AAKE;;AAGF;AACA;;AAGI;AACE;AACA;AACF;AAEJ;AACA;;AAGA;AACE;;;;AAIA;;;;AAIA;;;;AAIA;;;;;;AAME;AACA;;;;;;;;;;;;AAaJ;;;AAGA;AACA;;AAGE;AACA;;;;AAKF;AACF;;;;;;;;;;;;AAaC;;;;AAMD;;;;;AAKC;;AAEL;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCartesianRenderer.js","sources":["
|
|
1
|
+
{"version":3,"file":"useCartesianRenderer.js","sources":["src/components/controls/CartesianPicker/useCartesianRenderer.ts"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\n\nimport {\n drawGrid,\n drawDomainBounds,\n drawOriginAxes,\n drawAxisLabels,\n drawCrosshair,\n drawPointMarker,\n} from '@/components/primitives/canvas/canvasDrawing';\nimport { resolveCanvasTheme } from '@/components/primitives/canvas/canvasTheme';\nimport { useCanvasRenderer } from '@/components/primitives/canvas/useCanvasRenderer';\n\nimport type {\n Point2D,\n CanvasViewport,\n CanvasBackgroundInfo,\n CanvasThemeColors,\n} from '@/components/primitives/canvas/canvas.types';\nimport type React from 'react';\n\ninterface UseCartesianRendererOptions {\n canvasRef: React.RefObject<HTMLCanvasElement | null>;\n point: Point2D;\n viewport: CanvasViewport;\n domainX: [number, number];\n domainY: [number, number];\n showGrid: boolean;\n gridSubdivisions: number;\n showAxisLabels: boolean;\n showOriginAxes: boolean;\n showCrosshair: boolean;\n crosshairStyle: 'solid' | 'dashed';\n labelX?: string;\n labelY?: string;\n markerRadius: number;\n disabled: boolean;\n isHovered: boolean;\n isDragging: boolean;\n renderBackground?: (\n ctx: CanvasRenderingContext2D,\n info: CanvasBackgroundInfo\n ) => void;\n}\n\nexport function useCartesianRenderer(\n options: UseCartesianRendererOptions\n): void {\n const {\n canvasRef,\n point,\n viewport,\n domainX,\n domainY,\n showGrid,\n gridSubdivisions,\n showAxisLabels,\n showOriginAxes: showOrigin,\n showCrosshair,\n crosshairStyle,\n labelX,\n labelY,\n markerRadius,\n disabled,\n isHovered,\n isDragging,\n renderBackground,\n } = options;\n\n const draw = useCallback(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const dpr =\n typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n const rect = canvas.getBoundingClientRect();\n const w = rect.width;\n const h = rect.height;\n\n // Set canvas resolution for retina\n if (canvas.width !== w * dpr || canvas.height !== h * dpr) {\n canvas.width = w * dpr;\n canvas.height = h * dpr;\n ctx.scale(dpr, dpr);\n } else {\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n\n const theme: CanvasThemeColors = resolveCanvasTheme(canvas);\n const opacity = disabled ? 0.4 : 1;\n const domain = { domainX, domainY };\n\n // 1. Clear background\n ctx.globalAlpha = 1;\n ctx.fillStyle = theme.backgroundSecondary;\n ctx.fillRect(0, 0, w, h);\n\n // 2. Custom background\n if (renderBackground) {\n ctx.save();\n renderBackground(ctx, {\n width: w,\n height: h,\n viewport,\n domainX,\n domainY,\n });\n ctx.restore();\n }\n\n // 3. Grid lines\n if (showGrid) {\n drawGrid(ctx, w, h, theme, {\n subdivisions: gridSubdivisions,\n domain,\n viewport,\n opacity,\n });\n }\n\n // 4. Domain bounds\n drawDomainBounds(ctx, w, h, theme, domain, viewport, opacity);\n\n // 5. Origin axes\n if (showOrigin) {\n drawOriginAxes(ctx, w, h, theme, viewport, opacity);\n }\n\n // 6. Axis labels\n if (showAxisLabels) {\n drawAxisLabels(ctx, w, h, theme, {\n subdivisions: gridSubdivisions,\n domain,\n viewport,\n opacity,\n labelX,\n labelY,\n });\n }\n\n // 7. Crosshair\n if (showCrosshair) {\n drawCrosshair(ctx, w, h, theme, {\n point,\n viewport,\n lineStyle: crosshairStyle,\n opacity,\n });\n }\n\n // 8. Point marker\n drawPointMarker(ctx, w, h, theme, {\n point,\n viewport,\n radius: markerRadius,\n hovered: isHovered,\n dragging: isDragging,\n opacity,\n });\n\n ctx.globalAlpha = 1;\n }, [\n canvasRef,\n point,\n viewport,\n domainX,\n domainY,\n showGrid,\n gridSubdivisions,\n showAxisLabels,\n showOrigin,\n showCrosshair,\n crosshairStyle,\n labelX,\n labelY,\n markerRadius,\n disabled,\n isHovered,\n isDragging,\n renderBackground,\n ]);\n\n useCanvasRenderer({\n draw,\n deps: [draw],\n paused: false,\n });\n}\n"],"names":[],"mappings":";;;;;;AA+CM;AAGJ;AAqBA;AACE;AACA;;;AAGA;;AAEA;AAEA;AACA;AACA;;AAGA;AACE;AACA;AACA;;;AAEA;;AAGF;;AAEA;;AAGA;AACA;;;;;;AAOI;AACA;;;;AAID;;;;;;AAOC;;;;AAID;;;AAIH;;;AAIE;;;;;AAME;;;;;;AAMD;;;;;;;AAQC;;AAED;;;;;;AAOD;AACA;AACA;;AAED;AAED;AACF;;;;;;;;;;;;;;;;;;;AAmBC;AAED;;;AAGE;AACD;AACH;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlphaSlider.js","sources":["
|
|
1
|
+
{"version":3,"file":"AlphaSlider.js","sources":["src/components/controls/ColorPicker/AlphaSlider.tsx"],"sourcesContent":["'use client';\n\nimport React, { useCallback, useRef } from 'react';\n\nimport {\n alphaTrackStyle,\n alphaGradientStyle,\n alphaThumbStyle,\n} from './ColorPicker.css';\n\ninterface AlphaSliderProps {\n alpha: number;\n color: string;\n onChange: (alpha: number) => void;\n onChangeComplete?: () => void;\n}\n\nexport const AlphaSlider: React.FC<AlphaSliderProps> = ({\n alpha,\n color,\n onChange,\n onChangeComplete,\n}) => {\n const trackRef = useRef<HTMLDivElement>(null);\n\n const getAlpha = useCallback(\n (clientX: number) => {\n const rect = trackRef.current?.getBoundingClientRect();\n if (!rect) return;\n\n const x = Math.max(0, Math.min(clientX - rect.left, rect.width));\n const a = Number((x / rect.width).toFixed(2));\n onChange(a);\n },\n [onChange]\n );\n\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault();\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n getAlpha(e.clientX);\n },\n [getAlpha]\n );\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent) => {\n if (e.buttons === 0) return;\n getAlpha(e.clientX);\n },\n [getAlpha]\n );\n\n const handlePointerUp = useCallback(() => {\n onChangeComplete?.();\n }, [onChangeComplete]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n const step = e.shiftKey ? 0.01 : 0.05;\n let newAlpha = alpha;\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n newAlpha = Math.min(1, alpha + step);\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n newAlpha = Math.max(0, alpha - step);\n break;\n default:\n return;\n }\n\n e.preventDefault();\n onChange(Number(newAlpha.toFixed(2)));\n },\n [alpha, onChange]\n );\n\n const thumbPosition = `${alpha * 100}%`;\n\n return (\n <div\n ref={trackRef}\n className={alphaTrackStyle}\n role=\"slider\"\n tabIndex={0}\n aria-label=\"Opacity\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(alpha * 100)}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onKeyDown={handleKeyDown}\n >\n <div\n className={alphaGradientStyle}\n style={{\n background: `linear-gradient(to right, transparent, ${color})`,\n }}\n />\n <div className={alphaThumbStyle} style={{ left: thumbPosition }} />\n </div>\n );\n};\n\nAlphaSlider.displayName = 'AlphaSlider';\n"],"names":[],"mappings":";;;;;AAiBO;AAML;AAEA;;AAGI;;;AAGA;;AAEF;AAIF;;;AAII;AACF;AAIF;AAEI;;AACA;AACF;AAIF;;AAEA;AAEA;AAEI;;AAGA;AACE;AACA;;;AAGA;AACA;;;AAGA;;;;;AAMJ;AAIF;;;AAqBO;AAKT;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorArea.js","sources":["
|
|
1
|
+
{"version":3,"file":"ColorArea.js","sources":["src/components/controls/ColorPicker/ColorArea.tsx"],"sourcesContent":["'use client';\n\nimport React, { useCallback, useRef } from 'react';\n\nimport {\n colorAreaStyle,\n saturationGradientStyle,\n valueGradientStyle,\n colorAreaThumbStyle,\n} from './ColorPicker.css';\nimport { hsvToRgb, rgbToHex } from './colorUtils';\n\ninterface ColorAreaProps {\n hue: number;\n saturation: number;\n value: number;\n onChange: (s: number, v: number) => void;\n onChangeComplete?: () => void;\n}\n\nexport const ColorArea: React.FC<ColorAreaProps> = ({\n hue,\n saturation,\n value,\n onChange,\n onChangeComplete,\n}) => {\n const areaRef = useRef<HTMLDivElement>(null);\n\n const getSV = useCallback(\n (clientX: number, clientY: number) => {\n const rect = areaRef.current?.getBoundingClientRect();\n if (!rect) return;\n\n const x = Math.max(0, Math.min(clientX - rect.left, rect.width));\n const y = Math.max(0, Math.min(clientY - rect.top, rect.height));\n\n const s = Math.round((x / rect.width) * 100);\n const v = Math.round((1 - y / rect.height) * 100);\n onChange(s, v);\n },\n [onChange]\n );\n\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault();\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n getSV(e.clientX, e.clientY);\n },\n [getSV]\n );\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent) => {\n if (e.buttons === 0) return;\n getSV(e.clientX, e.clientY);\n },\n [getSV]\n );\n\n const handlePointerUp = useCallback(() => {\n onChangeComplete?.();\n }, [onChangeComplete]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n const step = e.shiftKey ? 1 : 5;\n let newS = saturation;\n let newV = value;\n\n switch (e.key) {\n case 'ArrowRight':\n newS = Math.min(100, saturation + step);\n break;\n case 'ArrowLeft':\n newS = Math.max(0, saturation - step);\n break;\n case 'ArrowUp':\n newV = Math.min(100, value + step);\n break;\n case 'ArrowDown':\n newV = Math.max(0, value - step);\n break;\n default:\n return;\n }\n\n e.preventDefault();\n onChange(newS, newV);\n },\n [saturation, value, onChange]\n );\n\n const { r, g, b } = hsvToRgb(hue, 100, 100);\n const hueColor = rgbToHex(r, g, b);\n const thumbX = `${saturation}%`;\n const thumbY = `${100 - value}%`;\n\n return (\n <div\n ref={areaRef}\n className={colorAreaStyle}\n role=\"slider\"\n tabIndex={0}\n aria-label=\"Color saturation and brightness\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={value}\n aria-valuetext={`Saturation ${saturation}%, Brightness ${value}%`}\n style={{ backgroundColor: hueColor }}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onKeyDown={handleKeyDown}\n >\n <div className={saturationGradientStyle} />\n <div className={valueGradientStyle} />\n <div\n className={colorAreaThumbStyle}\n style={{ left: thumbX, top: thumbY }}\n />\n </div>\n );\n};\n\nColorArea.displayName = 'ColorArea';\n"],"names":[],"mappings":";;;;;;AAoBO;AAOL;;;AAKI;;;;AAKA;AACA;AACA;AACF;AAIF;;;;AAKE;AAIF;AAEI;;;AAEF;AAIF;;AAEA;AAEA;AAEI;;;AAIA;AACE;;;AAGA;;;AAGA;;;AAGA;;;AAGA;;;;AAKF;;AAKJ;;AAEA;AACA;AAEA;AAyBF;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorInputs.js","sources":["
|
|
1
|
+
{"version":3,"file":"ColorInputs.js","sources":["src/components/controls/ColorPicker/ColorInputs.tsx"],"sourcesContent":["'use client';\n\nimport React, { useCallback, useState } from 'react';\n\nimport {\n inputsRowStyle,\n modeToggleStyle,\n smallInputStyle,\n inputLabelStyle,\n inputColStyle,\n} from './ColorPicker.css';\nimport { hsvToRgb, hsvToHsl, rgbToHex, rgbToHsv, hslToHsv } from './colorUtils';\nimport { EyeDropper } from './EyeDropper';\n\nimport type { ColorInputMode } from './ColorPicker.types';\nimport type { ColorHSVA } from './colorUtils';\n\ninterface ColorInputsProps {\n hsva: ColorHSVA;\n inputModes: ColorInputMode[];\n defaultInputMode: ColorInputMode;\n showAlpha: boolean;\n showEyeDropper?: boolean;\n disabled?: boolean;\n onSetFromString: (color: string) => void;\n onSetAlpha: (a: number) => void;\n onSetHue: (h: number) => void;\n onSetSaturationValue: (s: number, v: number) => void;\n}\n\nexport const ColorInputs: React.FC<ColorInputsProps> = ({\n hsva,\n inputModes,\n defaultInputMode,\n showAlpha,\n showEyeDropper = false,\n disabled = false,\n onSetFromString,\n onSetAlpha,\n onSetHue,\n onSetSaturationValue,\n}) => {\n const [mode, setMode] = useState<ColorInputMode>(defaultInputMode);\n\n const cycleMode = useCallback(() => {\n const idx = inputModes.indexOf(mode);\n const next = inputModes[(idx + 1) % inputModes.length];\n if (next) setMode(next);\n }, [mode, inputModes]);\n\n const { r, g, b } = hsvToRgb(hsva.h, hsva.s, hsva.v);\n const hex = rgbToHex(r, g, b).replace('#', '');\n const hsl = hsvToHsl(hsva.h, hsva.s, hsva.v);\n\n const handleHexChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value.replace('#', '');\n if (/^[0-9a-fA-F]{6}$/.test(val)) {\n onSetFromString(`#${val}`);\n }\n },\n [onSetFromString]\n );\n\n const handleHexBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const val = e.target.value.replace('#', '');\n if (/^[0-9a-fA-F]{3}$/.test(val) || /^[0-9a-fA-F]{6}$/.test(val)) {\n onSetFromString(`#${val}`);\n }\n },\n [onSetFromString]\n );\n\n const handleRgbChange = useCallback(\n (channel: 'r' | 'g' | 'b', val: string) => {\n const num = Math.max(0, Math.min(255, parseInt(val, 10)));\n if (isNaN(num)) return;\n const newR = channel === 'r' ? num : r;\n const newG = channel === 'g' ? num : g;\n const newB = channel === 'b' ? num : b;\n const newHsv = rgbToHsv(newR, newG, newB);\n onSetHue(newHsv.h);\n onSetSaturationValue(newHsv.s, newHsv.v);\n },\n [r, g, b, onSetHue, onSetSaturationValue]\n );\n\n const handleHslChange = useCallback(\n (channel: 'h' | 's' | 'l', val: string) => {\n const num = parseInt(val, 10);\n if (isNaN(num)) return;\n const newH = channel === 'h' ? Math.max(0, Math.min(360, num)) : hsl.h;\n const newS = channel === 's' ? Math.max(0, Math.min(100, num)) : hsl.s;\n const newL = channel === 'l' ? Math.max(0, Math.min(100, num)) : hsl.l;\n const newHsv = hslToHsv(newH, newS, newL);\n onSetHue(newHsv.h);\n onSetSaturationValue(newHsv.s, newHsv.v);\n },\n [hsl.h, hsl.s, hsl.l, onSetHue, onSetSaturationValue]\n );\n\n const handleAlphaChange = useCallback(\n (val: string) => {\n const num = Math.max(0, Math.min(100, parseInt(val, 10)));\n if (isNaN(num)) return;\n onSetAlpha(num / 100);\n },\n [onSetAlpha]\n );\n\n return (\n <div>\n <div className={inputsRowStyle}>\n {inputModes.length > 1 && (\n <button type=\"button\" className={modeToggleStyle} onClick={cycleMode}>\n {mode.toUpperCase()}\n </button>\n )}\n\n {mode === 'hex' && (\n <div className={inputColStyle}>\n <input\n className={smallInputStyle}\n defaultValue={hex}\n key={hex}\n maxLength={6}\n onChange={handleHexChange}\n onBlur={handleHexBlur}\n aria-label=\"Hex color\"\n />\n <span className={inputLabelStyle}>HEX</span>\n </div>\n )}\n\n {mode === 'rgb' && (\n <>\n <div className={inputColStyle}>\n <input\n className={smallInputStyle}\n type=\"number\"\n min={0}\n max={255}\n value={r}\n onChange={e => {\n handleRgbChange('r', e.target.value);\n }}\n aria-label=\"Red\"\n />\n <span className={inputLabelStyle}>R</span>\n </div>\n <div className={inputColStyle}>\n <input\n className={smallInputStyle}\n type=\"number\"\n min={0}\n max={255}\n value={g}\n onChange={e => {\n handleRgbChange('g', e.target.value);\n }}\n aria-label=\"Green\"\n />\n <span className={inputLabelStyle}>G</span>\n </div>\n <div className={inputColStyle}>\n <input\n className={smallInputStyle}\n type=\"number\"\n min={0}\n max={255}\n value={b}\n onChange={e => {\n handleRgbChange('b', e.target.value);\n }}\n aria-label=\"Blue\"\n />\n <span className={inputLabelStyle}>B</span>\n </div>\n </>\n )}\n\n {mode === 'hsl' && (\n <>\n <div className={inputColStyle}>\n <input\n className={smallInputStyle}\n type=\"number\"\n min={0}\n max={360}\n value={hsl.h}\n onChange={e => {\n handleHslChange('h', e.target.value);\n }}\n aria-label=\"Hue\"\n />\n <span className={inputLabelStyle}>H</span>\n </div>\n <div className={inputColStyle}>\n <input\n className={smallInputStyle}\n type=\"number\"\n min={0}\n max={100}\n value={hsl.s}\n onChange={e => {\n handleHslChange('s', e.target.value);\n }}\n aria-label=\"Saturation\"\n />\n <span className={inputLabelStyle}>S</span>\n </div>\n <div className={inputColStyle}>\n <input\n className={smallInputStyle}\n type=\"number\"\n min={0}\n max={100}\n value={hsl.l}\n onChange={e => {\n handleHslChange('l', e.target.value);\n }}\n aria-label=\"Lightness\"\n />\n <span className={inputLabelStyle}>L</span>\n </div>\n </>\n )}\n\n {showAlpha && (\n <div className={inputColStyle}>\n <input\n className={smallInputStyle}\n type=\"number\"\n min={0}\n max={100}\n value={Math.round(hsva.a * 100)}\n onChange={e => {\n handleAlphaChange(e.target.value);\n }}\n aria-label=\"Alpha\"\n />\n <span className={inputLabelStyle}>A</span>\n </div>\n )}\n\n {showEyeDropper && (\n <EyeDropper\n onColorPick={onSetFromString}\n size=\"sm\"\n disabled={disabled}\n />\n )}\n </div>\n </div>\n );\n};\n\nColorInputs.displayName = 'ColorInputs';\n"],"names":[],"mappings":";;;;;;;AA8BO;;AAcL;;AAEE;AACA;;AACF;;AAGA;AACA;AAEA;AAEI;AACA;AACE;;AAEJ;AAIF;AAEI;AACA;AACE;;AAEJ;;;;;AAQE;AACA;AACA;;AAEA;;AAEF;;;;;AAQE;AACA;AACA;;AAEA;;AAEF;AAIF;;;;AAII;AACF;;;AAuCY;;AAcA;;;;AAiCA;;AAcA;;;AA+BA;AACF;AAiBd;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorPalette.js","sources":["
|
|
1
|
+
{"version":3,"file":"ColorPalette.js","sources":["src/components/controls/ColorPicker/ColorPalette.tsx"],"sourcesContent":["'use client';\n\nimport React, { useCallback } from 'react';\n\nimport { Collapsible } from '@/components/primitives/Collapsible';\n\nimport {\n paletteContainerStyle,\n paletteRowStyle,\n paletteRowLabelStyle,\n paletteShadeRecipe,\n paletteShadeColorStyle,\n} from './ColorPicker.css';\n\nimport type { PaletteColor } from './palettes';\n\ninterface ColorPaletteProps {\n palette: PaletteColor[];\n currentColor: string;\n onSelect: (color: string) => void;\n /** Title displayed in the collapsible header @default \"Palette\" */\n title?: string;\n /** Whether the palette starts expanded @default false */\n defaultExpanded?: boolean;\n}\n\nexport const ColorPalette: React.FC<ColorPaletteProps> = ({\n palette,\n currentColor,\n onSelect,\n title = 'Palette',\n defaultExpanded = false,\n}) => {\n const handleSelect = useCallback(\n (color: string) => {\n onSelect(color);\n },\n [onSelect]\n );\n\n const normalizedCurrent = currentColor.toLowerCase();\n\n return (\n <Collapsible trigger={title} defaultOpen={defaultExpanded} size=\"sm\">\n <div\n className={paletteContainerStyle}\n role=\"radiogroup\"\n aria-label=\"Color palette\"\n >\n {palette.map(color => (\n <div className={paletteRowStyle} key={color.name}>\n <span className={paletteRowLabelStyle}>\n {color.name.slice(0, 2)}\n </span>\n {color.shades.map(shade => (\n <button\n key={shade.color}\n type=\"button\"\n role=\"radio\"\n aria-checked={shade.color.toLowerCase() === normalizedCurrent}\n aria-label={`${color.name} ${shade.label}`}\n title={`${color.name} ${shade.label} (${shade.color})`}\n className={paletteShadeRecipe({\n selected: shade.color.toLowerCase() === normalizedCurrent,\n })}\n onClick={() => {\n handleSelect(shade.color);\n }}\n >\n <span\n className={paletteShadeColorStyle}\n style={{ background: shade.color }}\n />\n </button>\n ))}\n </div>\n ))}\n </div>\n </Collapsible>\n );\n};\n\nColorPalette.displayName = 'ColorPalette';\n\nexport type { ColorPaletteProps };\n"],"names":[],"mappings":";;;;;;;AAiCE;;AAGE;AAIF;;;AAwBe;AAEC;AACF;AAahB;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorPicker.js","sources":["
|
|
1
|
+
{"version":3,"file":"ColorPicker.js","sources":["src/components/controls/ColorPicker/ColorPicker.tsx"],"sourcesContent":["'use client';\n\nimport React, { useMemo } from 'react';\n\nimport { Popover } from '@/components/primitives/Popover/Popover';\nimport { PopoverContent } from '@/components/primitives/Popover/PopoverContent';\nimport { PopoverTrigger } from '@/components/primitives/Popover/PopoverTrigger';\n\nimport { AlphaSlider } from './AlphaSlider';\nimport { ColorArea } from './ColorArea';\nimport { ColorInputs } from './ColorInputs';\nimport { ColorPalette } from './ColorPalette';\nimport {\n pickerBodyStyle,\n triggerRowStyle,\n labelStyle,\n} from './ColorPicker.css';\nimport { ColorPresets } from './ColorPresets';\nimport { ColorSwatch } from './ColorSwatch';\nimport { HueSlider } from './HueSlider';\nimport {\n MATERIAL_PALETTE,\n TAILWIND_PALETTE,\n PASTEL_PALETTE,\n EARTH_PALETTE,\n NEON_PALETTE,\n MONOCHROME_PALETTE,\n SKIN_TONES_PALETTE,\n VINTAGE_PALETTE,\n} from './palettes';\nimport { useColor } from './useColor';\n\nimport type { ColorPickerProps } from './ColorPicker.types';\nimport type { Palette, PaletteColor } from './palettes';\n\n// --- Constants ---\n\nconst PALETTE_MAP: Record<string, Palette> = {\n material: MATERIAL_PALETTE,\n tailwind: TAILWIND_PALETTE,\n pastel: PASTEL_PALETTE,\n earth: EARTH_PALETTE,\n neon: NEON_PALETTE,\n monochrome: MONOCHROME_PALETTE,\n 'skin-tones': SKIN_TONES_PALETTE,\n vintage: VINTAGE_PALETTE,\n};\n\n// --- Component ---\n\nexport const ColorPicker: React.FC<ColorPickerProps> = ({\n value,\n defaultValue = '#007acc',\n format = 'hex',\n showAlpha = false,\n inputModes = ['hex', 'rgb', 'hsl'],\n defaultInputMode = 'hex',\n presets,\n showEyeDropper = false,\n palette,\n size = 'md',\n swatchShape = 'square',\n label,\n disabled = false,\n inline = false,\n pickerWidth = 240,\n onChange,\n onChangeComplete,\n className,\n style,\n testId,\n ...rest\n}) => {\n const colorState = useColor({\n value,\n defaultValue,\n format,\n onChange,\n onChangeComplete,\n });\n\n const resolvedPalette = useMemo<\n { colors: PaletteColor[]; title: string } | undefined\n >(() => {\n if (!palette) return undefined;\n if (typeof palette === 'string') {\n const found = PALETTE_MAP[palette];\n return found ? { colors: found.colors, title: found.name } : undefined;\n }\n if (Array.isArray(palette)) {\n return { colors: palette, title: 'Palette' };\n }\n return { colors: palette.colors, title: palette.name };\n }, [palette]);\n\n const pickerBody = (\n <div\n className={pickerBodyStyle}\n data-testid={testId ? `${testId}-panel` : undefined}\n >\n <ColorArea\n hue={colorState.hsva.h}\n saturation={colorState.hsva.s}\n value={colorState.hsva.v}\n onChange={colorState.setSaturationValue}\n onChangeComplete={colorState.commitChange}\n />\n <HueSlider\n hue={colorState.hsva.h}\n onChange={colorState.setHue}\n onChangeComplete={colorState.commitChange}\n />\n {showAlpha && (\n <AlphaSlider\n alpha={colorState.hsva.a}\n color={colorState.hexString}\n onChange={colorState.setAlpha}\n onChangeComplete={colorState.commitChange}\n />\n )}\n <ColorInputs\n hsva={colorState.hsva}\n inputModes={inputModes}\n defaultInputMode={defaultInputMode}\n showAlpha={showAlpha}\n showEyeDropper={showEyeDropper}\n disabled={disabled}\n onSetFromString={colorState.setFromString}\n onSetAlpha={colorState.setAlpha}\n onSetHue={colorState.setHue}\n onSetSaturationValue={colorState.setSaturationValue}\n />\n {presets && presets.length > 0 && (\n <ColorPresets\n presets={presets}\n currentColor={colorState.hexString}\n onSelect={colorState.setFromString}\n />\n )}\n {resolvedPalette && (\n <ColorPalette\n palette={resolvedPalette.colors}\n currentColor={colorState.hexString}\n onSelect={colorState.setFromString}\n title={resolvedPalette.title}\n />\n )}\n </div>\n );\n\n if (inline) {\n return (\n <div\n className={className}\n style={{ ...style, width: pickerWidth }}\n data-testid={testId}\n {...rest}\n >\n {pickerBody}\n </div>\n );\n }\n\n return (\n <Popover>\n <PopoverTrigger>\n <div className={triggerRowStyle} data-testid={testId} {...rest}>\n <ColorSwatch\n color={colorState.hexString}\n size={size}\n shape={swatchShape}\n disabled={disabled}\n testId={testId ? `${testId}-swatch` : undefined}\n />\n {label && <span className={labelStyle}>{label}</span>}\n </div>\n </PopoverTrigger>\n <PopoverContent width={pickerWidth} padding=\"md\">\n {pickerBody}\n </PopoverContent>\n </Popover>\n );\n};\n\nColorPicker.displayName = 'ColorPicker';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAmCA;AAEA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGF;AAEO;;;;;;;AA6BJ;AAED;AAGE;AAAc;AACd;AACE;;;AAGF;;;AAGA;AACF;;;;;AAsEA;AAmBF;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorPresets.js","sources":["
|
|
1
|
+
{"version":3,"file":"ColorPresets.js","sources":["src/components/controls/ColorPicker/ColorPresets.tsx"],"sourcesContent":["'use client';\n\nimport React, { useCallback } from 'react';\n\nimport {\n presetsGridStyle,\n presetButtonRecipe,\n presetColorStyle,\n} from './ColorPicker.css';\n\nimport type { ColorPreset } from './ColorPicker.types';\n\ninterface ColorPresetsProps {\n presets: ColorPreset[];\n currentColor: string;\n onSelect: (color: string) => void;\n}\n\nexport const ColorPresets: React.FC<ColorPresetsProps> = ({\n presets,\n currentColor,\n onSelect,\n}) => {\n const handleClick = useCallback(\n (color: string) => {\n onSelect(color);\n },\n [onSelect]\n );\n\n const normalizedCurrent = currentColor.toLowerCase();\n\n return (\n <div\n className={presetsGridStyle}\n role=\"radiogroup\"\n aria-label=\"Color presets\"\n >\n {presets.map((preset, i) => (\n <button\n key={`${preset.color}-${i}`}\n type=\"button\"\n role=\"radio\"\n aria-checked={preset.color.toLowerCase() === normalizedCurrent}\n aria-label={preset.label ?? preset.color}\n title={preset.label ?? preset.color}\n className={presetButtonRecipe({\n selected: preset.color.toLowerCase() === normalizedCurrent,\n })}\n onClick={() => {\n handleClick(preset.color);\n }}\n >\n <span\n className={presetColorStyle}\n style={{ background: preset.color }}\n />\n </button>\n ))}\n </div>\n );\n};\n\nColorPresets.displayName = 'ColorPresets';\n"],"names":[],"mappings":";;;;;AAkBO;AAKL;;AAGE;AAIF;AAEA;;AAgBS;AAEC;AACF;AAUV;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorSwatch.js","sources":["
|
|
1
|
+
{"version":3,"file":"ColorSwatch.js","sources":["src/components/controls/ColorPicker/ColorSwatch.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport { cx } from '@/utils/cx';\n\nimport { swatchRecipe, swatchColorStyle } from './ColorPicker.css';\n\nimport type { ColorSwatchProps } from './ColorPicker.types';\n\nexport const ColorSwatch = /*#__PURE__*/ React.memo<ColorSwatchProps>(\n ({\n color,\n size = 'md',\n shape = 'square',\n disabled = false,\n onClick,\n className,\n style,\n testId,\n ref,\n ...rest\n }) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cx(swatchRecipe({ size, shape, disabled }), className)}\n disabled={disabled}\n onClick={onClick}\n style={style}\n data-testid={testId}\n aria-label={rest['aria-label'] ?? `Color: ${color}`}\n {...rest}\n >\n <span className={swatchColorStyle} style={{ background: color }} />\n </button>\n );\n }\n);\n\nColorSwatch.displayName = 'ColorSwatch';\n"],"names":[],"mappings":";;;;;;AAUO;AAaH;AAeF;AAGF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EyeDropper.js","sources":["
|
|
1
|
+
{"version":3,"file":"EyeDropper.js","sources":["src/components/controls/ColorPicker/EyeDropper.tsx"],"sourcesContent":["'use client';\n\nimport React, { useCallback } from 'react';\n\nimport { EyeDropperIcon } from '@/components/Icons/EyeDropperIcon';\n\nimport { eyeDropperRecipe } from './ColorPicker.css';\n\nimport type { BaseComponent, Size } from '@/types/common';\nimport type { Prettify } from '@/types/utilities';\n\n// ---------- EyeDropper API types (not yet in TypeScript lib) ----------\n\ninterface EyeDropperResult {\n sRGBHex: string;\n}\n\ninterface EyeDropperAPI {\n open(): Promise<EyeDropperResult>;\n}\n\n// ---------- Component types ----------\n\ninterface EyeDropperBaseProps extends Omit<\n BaseComponent<HTMLButtonElement>,\n 'onChange'\n> {\n /** Callback when a color is picked */\n onColorPick?: (color: string) => void;\n /** Button size @default \"md\" */\n size?: Size;\n /** Whether disabled @default false */\n disabled?: boolean;\n}\n\ntype EyeDropperProps = Prettify<EyeDropperBaseProps>;\n\n// ---------- Component ----------\n\n/**\n * EyeDropper button that opens the native browser EyeDropper API\n * to sample a color from anywhere on the screen.\n *\n * Renders nothing if the EyeDropper API is not available in the browser.\n *\n * @example\n * ```tsx\n * <EyeDropper onColorPick={(hex) => setColor(hex)} />\n * ```\n */\nconst EyeDropper: React.FC<EyeDropperProps> = ({\n onColorPick,\n size = 'md',\n disabled = false,\n testId,\n ...rest\n}) => {\n const isAvailable = typeof window !== 'undefined' && 'EyeDropper' in window;\n\n const handleClick = useCallback(() => {\n if (!isAvailable) return;\n\n const dropper = new (\n window as unknown as { EyeDropper: new () => EyeDropperAPI }\n ).EyeDropper();\n\n void dropper.open().then(\n result => {\n onColorPick?.(result.sRGBHex);\n },\n () => {\n // User cancelled the eye dropper -- silently ignore\n }\n );\n }, [isAvailable, onColorPick]);\n\n if (!isAvailable) {\n return null;\n }\n\n return (\n <button\n type=\"button\"\n className={eyeDropperRecipe({ size, disabled })}\n disabled={disabled}\n onClick={handleClick}\n data-testid={testId}\n aria-label=\"Pick color from screen\"\n {...rest}\n >\n <EyeDropperIcon size=\"sm\" />\n </button>\n );\n};\n\nEyeDropper.displayName = 'EyeDropper';\n\nexport { EyeDropper };\nexport type { EyeDropperProps };\n"],"names":[],"mappings":";;;;;;AAqCA;AAEA;;;;;;;;;;AAUG;AACH;;AASE;AACE;;AAEA;;AAMI;;;AAIF;AAEJ;;AAGE;;AAGF;AAaF;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HueSlider.js","sources":["
|
|
1
|
+
{"version":3,"file":"HueSlider.js","sources":["src/components/controls/ColorPicker/HueSlider.tsx"],"sourcesContent":["'use client';\n\nimport React, { useCallback, useRef } from 'react';\n\nimport { hueTrackStyle, hueThumbStyle } from './ColorPicker.css';\n\ninterface HueSliderProps {\n hue: number;\n onChange: (hue: number) => void;\n onChangeComplete?: () => void;\n}\n\nexport const HueSlider: React.FC<HueSliderProps> = ({\n hue,\n onChange,\n onChangeComplete,\n}) => {\n const trackRef = useRef<HTMLDivElement>(null);\n\n const getHue = useCallback(\n (clientX: number) => {\n const rect = trackRef.current?.getBoundingClientRect();\n if (!rect) return;\n\n const x = Math.max(0, Math.min(clientX - rect.left, rect.width));\n const h = Math.round((x / rect.width) * 360);\n onChange(h);\n },\n [onChange]\n );\n\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault();\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n getHue(e.clientX);\n },\n [getHue]\n );\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent) => {\n if (e.buttons === 0) return;\n getHue(e.clientX);\n },\n [getHue]\n );\n\n const handlePointerUp = useCallback(() => {\n onChangeComplete?.();\n }, [onChangeComplete]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n const step = e.shiftKey ? 1 : 5;\n let newHue = hue;\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n newHue = Math.min(360, hue + step);\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n newHue = Math.max(0, hue - step);\n break;\n default:\n return;\n }\n\n e.preventDefault();\n onChange(newHue);\n },\n [hue, onChange]\n );\n\n const thumbPosition = `${(hue / 360) * 100}%`;\n\n return (\n <div\n ref={trackRef}\n className={hueTrackStyle}\n role=\"slider\"\n tabIndex={0}\n aria-label=\"Hue\"\n aria-valuemin={0}\n aria-valuemax={360}\n aria-valuenow={hue}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onKeyDown={handleKeyDown}\n >\n <div\n className={hueThumbStyle}\n style={{\n left: thumbPosition,\n backgroundColor: `hsl(${hue}, 100%, 50%)`,\n }}\n />\n </div>\n );\n};\n\nHueSlider.displayName = 'HueSlider';\n"],"names":[],"mappings":";;;;;AAYO;AAKL;AAEA;;AAGI;;;AAGA;;AAEF;AAIF;;;AAII;AACF;AAIF;AAEI;;AACA;AACF;AAIF;;AAEA;AAEA;AAEI;;AAGA;AACE;AACA;;;AAGA;AACA;;;AAGA;;;;;AAMJ;;;AAwBM;;;AAMV;AAEA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorUtils.js","sources":["../../../../../../src/components/controls/ColorPicker/colorUtils.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"colorUtils.js","sources":["src/components/controls/ColorPicker/colorUtils.ts"],"sourcesContent":["/**\n * Pure color conversion utilities for the ColorPicker.\n * Internal state is always HSVA. All conversions go through HSVA.\n */\n\nexport interface ColorHSVA {\n h: number; // 0-360\n s: number; // 0-100\n v: number; // 0-100\n a: number; // 0-1\n}\n\nexport type ColorFormat = 'hex' | 'hex8' | 'rgb' | 'rgba' | 'hsl' | 'hsla';\n\n// --- Conversions ---\n\nexport function hsvToRgb(\n h: number,\n s: number,\n v: number\n): { r: number; g: number; b: number } {\n const s1 = s / 100;\n const v1 = v / 100;\n const c = v1 * s1;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = v1 - c;\n\n let r1 = 0,\n g1 = 0,\n b1 = 0;\n\n if (h < 60) {\n r1 = c;\n g1 = x;\n } else if (h < 120) {\n r1 = x;\n g1 = c;\n } else if (h < 180) {\n g1 = c;\n b1 = x;\n } else if (h < 240) {\n g1 = x;\n b1 = c;\n } else if (h < 300) {\n r1 = x;\n b1 = c;\n } else {\n r1 = c;\n b1 = x;\n }\n\n return {\n r: Math.round((r1 + m) * 255),\n g: Math.round((g1 + m) * 255),\n b: Math.round((b1 + m) * 255),\n };\n}\n\nexport function rgbToHsv(\n r: number,\n g: number,\n b: number\n): { h: number; s: number; v: number } {\n const r1 = r / 255;\n const g1 = g / 255;\n const b1 = b / 255;\n\n const max = Math.max(r1, g1, b1);\n const min = Math.min(r1, g1, b1);\n const d = max - min;\n\n let h = 0;\n const s = max === 0 ? 0 : (d / max) * 100;\n const v = max * 100;\n\n if (d !== 0) {\n if (max === r1) {\n h = ((g1 - b1) / d) % 6;\n } else if (max === g1) {\n h = (b1 - r1) / d + 2;\n } else {\n h = (r1 - g1) / d + 4;\n }\n h *= 60;\n if (h < 0) h += 360;\n }\n\n return { h: Math.round(h), s: Math.round(s), v: Math.round(v) };\n}\n\nexport function hsvToHsl(\n h: number,\n s: number,\n v: number\n): { h: number; s: number; l: number } {\n const s1 = s / 100;\n const v1 = v / 100;\n\n const l = v1 * (1 - s1 / 2);\n let sl = 0;\n if (l > 0 && l < 1) {\n sl = (v1 - l) / Math.min(l, 1 - l);\n }\n\n return {\n h: Math.round(h),\n s: Math.round(sl * 100),\n l: Math.round(l * 100),\n };\n}\n\nexport function hslToHsv(\n h: number,\n s: number,\n l: number\n): { h: number; s: number; v: number } {\n const s1 = s / 100;\n const l1 = l / 100;\n\n const v = l1 + s1 * Math.min(l1, 1 - l1);\n const sv = v === 0 ? 0 : 2 * (1 - l1 / v);\n\n return {\n h: Math.round(h),\n s: Math.round(sv * 100),\n v: Math.round(v * 100),\n };\n}\n\nexport function rgbToHex(r: number, g: number, b: number): string {\n const toHex = (n: number) =>\n Math.max(0, Math.min(255, Math.round(n)))\n .toString(16)\n .padStart(2, '0');\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function hexToRgb(\n hex: string\n): { r: number; g: number; b: number; a?: number } | null {\n const clean = hex.replace('#', '');\n\n // Validate hex characters\n if (!/^[0-9a-fA-F]+$/.test(clean)) {\n return null;\n }\n\n if (clean.length === 3) {\n const c0 = clean.charAt(0);\n const c1 = clean.charAt(1);\n const c2 = clean.charAt(2);\n const r = parseInt(c0 + c0, 16);\n const g = parseInt(c1 + c1, 16);\n const b = parseInt(c2 + c2, 16);\n return { r, g, b };\n }\n\n if (clean.length === 6) {\n const r = parseInt(clean.substring(0, 2), 16);\n const g = parseInt(clean.substring(2, 4), 16);\n const b = parseInt(clean.substring(4, 6), 16);\n return { r, g, b };\n }\n\n if (clean.length === 8) {\n const r = parseInt(clean.substring(0, 2), 16);\n const g = parseInt(clean.substring(2, 4), 16);\n const b = parseInt(clean.substring(4, 6), 16);\n const a = parseInt(clean.substring(6, 8), 16) / 255;\n return { r, g, b, a };\n }\n\n return null;\n}\n\n// --- Parsing ---\n\nexport function parseColor(color: string): ColorHSVA {\n const trimmed = color.trim().toLowerCase();\n\n // Named colors lookup (common ones)\n const named = NAMED_COLORS[trimmed];\n if (named) {\n return parseColor(named);\n }\n\n // HEX\n if (trimmed.startsWith('#')) {\n const rgb = hexToRgb(trimmed);\n if (rgb) {\n const hsv = rgbToHsv(rgb.r, rgb.g, rgb.b);\n return { ...hsv, a: rgb.a ?? 1 };\n }\n }\n\n // rgb() / rgba()\n const rgbMatch = trimmed.match(\n /rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([\\d.]+)\\s*)?\\)/\n );\n if (rgbMatch) {\n const rStr = rgbMatch[1] ?? '0';\n const gStr = rgbMatch[2] ?? '0';\n const bStr = rgbMatch[3] ?? '0';\n const r = parseInt(rStr, 10);\n const g = parseInt(gStr, 10);\n const b = parseInt(bStr, 10);\n const a = rgbMatch[4] ? parseFloat(rgbMatch[4]) : 1;\n const hsv = rgbToHsv(r, g, b);\n return { ...hsv, a };\n }\n\n // hsl() / hsla()\n const hslMatch = trimmed.match(\n /hsla?\\(\\s*(\\d+)\\s*,\\s*(\\d+)%?\\s*,\\s*(\\d+)%?\\s*(?:,\\s*([\\d.]+)\\s*)?\\)/\n );\n if (hslMatch) {\n const hStr = hslMatch[1] ?? '0';\n const sStr = hslMatch[2] ?? '0';\n const lStr = hslMatch[3] ?? '0';\n const h = parseInt(hStr, 10);\n const s = parseInt(sStr, 10);\n const l = parseInt(lStr, 10);\n const a = hslMatch[4] ? parseFloat(hslMatch[4]) : 1;\n const hsv = hslToHsv(h, s, l);\n return { ...hsv, a };\n }\n\n // Fallback: blue\n return { h: 210, s: 100, v: 80, a: 1 };\n}\n\n// --- Formatting ---\n\nexport function formatColor(hsva: ColorHSVA, format: ColorFormat): string {\n const { r, g, b } = hsvToRgb(hsva.h, hsva.s, hsva.v);\n\n switch (format) {\n case 'hex':\n return rgbToHex(r, g, b);\n case 'hex8': {\n const alphaHex = Math.round(hsva.a * 255)\n .toString(16)\n .padStart(2, '0');\n return `${rgbToHex(r, g, b)}${alphaHex}`;\n }\n case 'rgb':\n return `rgb(${r}, ${g}, ${b})`;\n case 'rgba':\n return `rgba(${r}, ${g}, ${b}, ${Number(hsva.a.toFixed(2))})`;\n case 'hsl': {\n const hsl = hsvToHsl(hsva.h, hsva.s, hsva.v);\n return `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`;\n }\n case 'hsla': {\n const hsl = hsvToHsl(hsva.h, hsva.s, hsva.v);\n return `hsla(${hsl.h}, ${hsl.s}%, ${hsl.l}%, ${Number(hsva.a.toFixed(2))})`;\n }\n }\n}\n\n// --- Validation ---\n\nexport function isValidHex(hex: string): boolean {\n return /^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(hex);\n}\n\nexport function getContrastColor(hex: string): 'black' | 'white' {\n const rgb = hexToRgb(hex);\n if (!rgb) return 'white';\n // Perceived luminance\n const luminance = (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;\n return luminance > 0.5 ? 'black' : 'white';\n}\n\n// --- Named colors (subset) ---\n\nconst NAMED_COLORS: Record<string, string> = {\n red: '#ff0000',\n green: '#008000',\n blue: '#0000ff',\n white: '#ffffff',\n black: '#000000',\n yellow: '#ffff00',\n cyan: '#00ffff',\n magenta: '#ff00ff',\n orange: '#ffa500',\n purple: '#800080',\n pink: '#ffc0cb',\n gray: '#808080',\n grey: '#808080',\n transparent: 'rgba(0, 0, 0, 0)',\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material.js","sources":["../../../../../../../src/components/controls/ColorPicker/palettes/material.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"material.js","sources":["src/components/controls/ColorPicker/palettes/material.ts"],"sourcesContent":["/**\n * Material Design color palette\n *\n * Contains 19 color families with 10 shades each (50-900).\n * Based on the official Material Design color system.\n */\n\nexport interface PaletteShade {\n label: string;\n color: string;\n}\n\nexport interface PaletteColor {\n name: string;\n shades: PaletteShade[];\n}\n\nexport interface Palette {\n /** Display name for the palette (e.g. \"Material Design\") */\n name: string;\n /** Color families in this palette */\n colors: PaletteColor[];\n}\n\nexport const MATERIAL_PALETTE: Palette = {\n name: 'Material Design',\n colors: [\n {\n name: 'Red',\n shades: [\n { label: '50', color: '#ffebee' },\n { label: '100', color: '#ffcdd2' },\n { label: '200', color: '#ef9a9a' },\n { label: '300', color: '#e57373' },\n { label: '400', color: '#ef5350' },\n { label: '500', color: '#f44336' },\n { label: '600', color: '#e53935' },\n { label: '700', color: '#d32f2f' },\n { label: '800', color: '#c62828' },\n { label: '900', color: '#b71c1c' },\n ],\n },\n {\n name: 'Pink',\n shades: [\n { label: '50', color: '#fce4ec' },\n { label: '100', color: '#f8bbd0' },\n { label: '200', color: '#f48fb1' },\n { label: '300', color: '#f06292' },\n { label: '400', color: '#ec407a' },\n { label: '500', color: '#e91e63' },\n { label: '600', color: '#d81b60' },\n { label: '700', color: '#c2185b' },\n { label: '800', color: '#ad1457' },\n { label: '900', color: '#880e4f' },\n ],\n },\n {\n name: 'Purple',\n shades: [\n { label: '50', color: '#f3e5f5' },\n { label: '100', color: '#e1bee7' },\n { label: '200', color: '#ce93d8' },\n { label: '300', color: '#ba68c8' },\n { label: '400', color: '#ab47bc' },\n { label: '500', color: '#9c27b0' },\n { label: '600', color: '#8e24aa' },\n { label: '700', color: '#7b1fa2' },\n { label: '800', color: '#6a1b9a' },\n { label: '900', color: '#4a148c' },\n ],\n },\n {\n name: 'Deep Purple',\n shades: [\n { label: '50', color: '#ede7f6' },\n { label: '100', color: '#d1c4e9' },\n { label: '200', color: '#b39ddb' },\n { label: '300', color: '#9575cd' },\n { label: '400', color: '#7e57c2' },\n { label: '500', color: '#673ab7' },\n { label: '600', color: '#5e35b1' },\n { label: '700', color: '#512da8' },\n { label: '800', color: '#4527a0' },\n { label: '900', color: '#311b92' },\n ],\n },\n {\n name: 'Indigo',\n shades: [\n { label: '50', color: '#e8eaf6' },\n { label: '100', color: '#c5cae9' },\n { label: '200', color: '#9fa8da' },\n { label: '300', color: '#7986cb' },\n { label: '400', color: '#5c6bc0' },\n { label: '500', color: '#3f51b5' },\n { label: '600', color: '#3949ab' },\n { label: '700', color: '#303f9f' },\n { label: '800', color: '#283593' },\n { label: '900', color: '#1a237e' },\n ],\n },\n {\n name: 'Blue',\n shades: [\n { label: '50', color: '#e3f2fd' },\n { label: '100', color: '#bbdefb' },\n { label: '200', color: '#90caf9' },\n { label: '300', color: '#64b5f6' },\n { label: '400', color: '#42a5f5' },\n { label: '500', color: '#2196f3' },\n { label: '600', color: '#1e88e5' },\n { label: '700', color: '#1976d2' },\n { label: '800', color: '#1565c0' },\n { label: '900', color: '#0d47a1' },\n ],\n },\n {\n name: 'Light Blue',\n shades: [\n { label: '50', color: '#e1f5fe' },\n { label: '100', color: '#b3e5fc' },\n { label: '200', color: '#81d4fa' },\n { label: '300', color: '#4fc3f7' },\n { label: '400', color: '#29b6f6' },\n { label: '500', color: '#03a9f4' },\n { label: '600', color: '#039be5' },\n { label: '700', color: '#0288d1' },\n { label: '800', color: '#0277bd' },\n { label: '900', color: '#01579b' },\n ],\n },\n {\n name: 'Cyan',\n shades: [\n { label: '50', color: '#e0f7fa' },\n { label: '100', color: '#b2ebf2' },\n { label: '200', color: '#80deea' },\n { label: '300', color: '#4dd0e1' },\n { label: '400', color: '#26c6da' },\n { label: '500', color: '#00bcd4' },\n { label: '600', color: '#00acc1' },\n { label: '700', color: '#0097a7' },\n { label: '800', color: '#00838f' },\n { label: '900', color: '#006064' },\n ],\n },\n {\n name: 'Teal',\n shades: [\n { label: '50', color: '#e0f2f1' },\n { label: '100', color: '#b2dfdb' },\n { label: '200', color: '#80cbc4' },\n { label: '300', color: '#4db6ac' },\n { label: '400', color: '#26a69a' },\n { label: '500', color: '#009688' },\n { label: '600', color: '#00897b' },\n { label: '700', color: '#00796b' },\n { label: '800', color: '#00695c' },\n { label: '900', color: '#004d40' },\n ],\n },\n {\n name: 'Green',\n shades: [\n { label: '50', color: '#e8f5e9' },\n { label: '100', color: '#c8e6c9' },\n { label: '200', color: '#a5d6a7' },\n { label: '300', color: '#81c784' },\n { label: '400', color: '#66bb6a' },\n { label: '500', color: '#4caf50' },\n { label: '600', color: '#43a047' },\n { label: '700', color: '#388e3c' },\n { label: '800', color: '#2e7d32' },\n { label: '900', color: '#1b5e20' },\n ],\n },\n {\n name: 'Light Green',\n shades: [\n { label: '50', color: '#f1f8e9' },\n { label: '100', color: '#dcedc8' },\n { label: '200', color: '#c5e1a5' },\n { label: '300', color: '#aed581' },\n { label: '400', color: '#9ccc65' },\n { label: '500', color: '#8bc34a' },\n { label: '600', color: '#7cb342' },\n { label: '700', color: '#689f38' },\n { label: '800', color: '#558b2f' },\n { label: '900', color: '#33691e' },\n ],\n },\n {\n name: 'Lime',\n shades: [\n { label: '50', color: '#f9fbe7' },\n { label: '100', color: '#f0f4c3' },\n { label: '200', color: '#e6ee9c' },\n { label: '300', color: '#dce775' },\n { label: '400', color: '#d4e157' },\n { label: '500', color: '#cddc39' },\n { label: '600', color: '#c0ca33' },\n { label: '700', color: '#afb42b' },\n { label: '800', color: '#9e9d24' },\n { label: '900', color: '#827717' },\n ],\n },\n {\n name: 'Yellow',\n shades: [\n { label: '50', color: '#fffde7' },\n { label: '100', color: '#fff9c4' },\n { label: '200', color: '#fff59d' },\n { label: '300', color: '#fff176' },\n { label: '400', color: '#ffee58' },\n { label: '500', color: '#ffeb3b' },\n { label: '600', color: '#fdd835' },\n { label: '700', color: '#fbc02d' },\n { label: '800', color: '#f9a825' },\n { label: '900', color: '#f57f17' },\n ],\n },\n {\n name: 'Amber',\n shades: [\n { label: '50', color: '#fff8e1' },\n { label: '100', color: '#ffecb3' },\n { label: '200', color: '#ffe082' },\n { label: '300', color: '#ffd54f' },\n { label: '400', color: '#ffca28' },\n { label: '500', color: '#ffc107' },\n { label: '600', color: '#ffb300' },\n { label: '700', color: '#ffa000' },\n { label: '800', color: '#ff8f00' },\n { label: '900', color: '#ff6f00' },\n ],\n },\n {\n name: 'Orange',\n shades: [\n { label: '50', color: '#fff3e0' },\n { label: '100', color: '#ffe0b2' },\n { label: '200', color: '#ffcc80' },\n { label: '300', color: '#ffb74d' },\n { label: '400', color: '#ffa726' },\n { label: '500', color: '#ff9800' },\n { label: '600', color: '#fb8c00' },\n { label: '700', color: '#f57c00' },\n { label: '800', color: '#ef6c00' },\n { label: '900', color: '#e65100' },\n ],\n },\n {\n name: 'Deep Orange',\n shades: [\n { label: '50', color: '#fbe9e7' },\n { label: '100', color: '#ffccbc' },\n { label: '200', color: '#ffab91' },\n { label: '300', color: '#ff8a65' },\n { label: '400', color: '#ff7043' },\n { label: '500', color: '#ff5722' },\n { label: '600', color: '#f4511e' },\n { label: '700', color: '#e64a19' },\n { label: '800', color: '#d84315' },\n { label: '900', color: '#bf360c' },\n ],\n },\n {\n name: 'Brown',\n shades: [\n { label: '50', color: '#efebe9' },\n { label: '100', color: '#d7ccc8' },\n { label: '200', color: '#bcaaa4' },\n { label: '300', color: '#a1887f' },\n { label: '400', color: '#8d6e63' },\n { label: '500', color: '#795548' },\n { label: '600', color: '#6d4c41' },\n { label: '700', color: '#5d4037' },\n { label: '800', color: '#4e342e' },\n { label: '900', color: '#3e2723' },\n ],\n },\n {\n name: 'Grey',\n shades: [\n { label: '50', color: '#fafafa' },\n { label: '100', color: '#f5f5f5' },\n { label: '200', color: '#eeeeee' },\n { label: '300', color: '#e0e0e0' },\n { label: '400', color: '#bdbdbd' },\n { label: '500', color: '#9e9e9e' },\n { label: '600', color: '#757575' },\n { label: '700', color: '#616161' },\n { label: '800', color: '#424242' },\n { label: '900', color: '#212121' },\n ],\n },\n {\n name: 'Blue Grey',\n shades: [\n { label: '50', color: '#eceff1' },\n { label: '100', color: '#cfd8dc' },\n { label: '200', color: '#b0bec5' },\n { label: '300', color: '#90a4ae' },\n { label: '400', color: '#78909c' },\n { label: '500', color: '#607d8b' },\n { label: '600', color: '#546e7a' },\n { label: '700', color: '#455a64' },\n { label: '800', color: '#37474f' },\n { label: '900', color: '#263238' },\n ],\n },\n ],\n};\n"],"names":[],"mappings":"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"}
|