@d4gger/design-system 3.0.1 → 4.0.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/README.md +19 -0
- package/dist/components/accordion.css +9 -2
- package/dist/components/alert/Alert.cjs +11 -7
- package/dist/components/alert/Alert.cjs.map +2 -2
- package/dist/components/alert/Alert.d.cts.map +1 -1
- package/dist/components/alert/Alert.d.mts.map +1 -1
- package/dist/components/alert/Alert.d.ts.map +1 -1
- package/dist/components/alert/Alert.js +12 -8
- package/dist/components/alert/Alert.js.map +2 -2
- package/dist/components/alert.css +13 -0
- package/dist/components/article-nodes.css +16 -1
- package/dist/components/articleNodes/ArticleNodes.cjs +46 -5
- package/dist/components/articleNodes/ArticleNodes.cjs.map +2 -2
- package/dist/components/articleNodes/ArticleNodes.d.cts +7 -3
- package/dist/components/articleNodes/ArticleNodes.d.cts.map +1 -1
- package/dist/components/articleNodes/ArticleNodes.d.mts +7 -3
- package/dist/components/articleNodes/ArticleNodes.d.mts.map +1 -1
- package/dist/components/articleNodes/ArticleNodes.d.ts +7 -3
- package/dist/components/articleNodes/ArticleNodes.d.ts.map +1 -1
- package/dist/components/articleNodes/ArticleNodes.js +46 -5
- package/dist/components/articleNodes/ArticleNodes.js.map +2 -2
- package/dist/components/articleNodes/articleExtensions.cjs +21 -4
- package/dist/components/articleNodes/articleExtensions.cjs.map +2 -2
- package/dist/components/articleNodes/articleExtensions.d.cts +8 -2
- package/dist/components/articleNodes/articleExtensions.d.cts.map +1 -1
- package/dist/components/articleNodes/articleExtensions.d.mts +8 -2
- package/dist/components/articleNodes/articleExtensions.d.mts.map +1 -1
- package/dist/components/articleNodes/articleExtensions.d.ts +8 -2
- package/dist/components/articleNodes/articleExtensions.d.ts.map +1 -1
- package/dist/components/articleNodes/articleExtensions.js +21 -4
- package/dist/components/articleNodes/articleExtensions.js.map +2 -2
- package/dist/components/articleNodes/articleNodeViews.cjs +154 -0
- package/dist/components/articleNodes/articleNodeViews.cjs.map +7 -0
- package/dist/components/articleNodes/articleNodeViews.d.cts +3 -0
- package/dist/components/articleNodes/articleNodeViews.d.cts.map +1 -0
- package/dist/components/articleNodes/articleNodeViews.d.mts +3 -0
- package/dist/components/articleNodes/articleNodeViews.d.mts.map +1 -0
- package/dist/components/articleNodes/articleNodeViews.d.ts +3 -0
- package/dist/components/articleNodes/articleNodeViews.d.ts.map +1 -0
- package/dist/components/articleNodes/articleNodeViews.js +124 -0
- package/dist/components/articleNodes/articleNodeViews.js.map +7 -0
- package/dist/components/articleNodes/articleNodes.props.cjs.map +1 -1
- package/dist/components/articleNodes/articleNodes.props.d.cts +25 -2
- package/dist/components/articleNodes/articleNodes.props.d.cts.map +1 -1
- package/dist/components/articleNodes/articleNodes.props.d.mts +25 -2
- package/dist/components/articleNodes/articleNodes.props.d.mts.map +1 -1
- package/dist/components/articleNodes/articleNodes.props.d.ts +25 -2
- package/dist/components/articleNodes/articleNodes.props.d.ts.map +1 -1
- package/dist/components/banner.css +5 -4
- package/dist/components/blockquote.css +7 -4
- package/dist/components/bottom-dock.css +132 -0
- package/dist/components/bottomDock/BottomDock.cjs +140 -0
- package/dist/components/bottomDock/BottomDock.cjs.map +7 -0
- package/dist/components/bottomDock/BottomDock.d.cts +25 -0
- package/dist/components/bottomDock/BottomDock.d.cts.map +1 -0
- package/dist/components/bottomDock/BottomDock.d.mts +25 -0
- package/dist/components/bottomDock/BottomDock.d.mts.map +1 -0
- package/dist/components/bottomDock/BottomDock.d.ts +25 -0
- package/dist/components/bottomDock/BottomDock.d.ts.map +1 -0
- package/dist/components/bottomDock/BottomDock.js +110 -0
- package/dist/components/bottomDock/BottomDock.js.map +7 -0
- package/dist/components/bottomDock/bottomDock.props.cjs +49 -0
- package/dist/components/bottomDock/bottomDock.props.cjs.map +7 -0
- package/dist/components/bottomDock/bottomDock.props.d.cts +29 -0
- package/dist/components/bottomDock/bottomDock.props.d.cts.map +1 -0
- package/dist/components/bottomDock/bottomDock.props.d.mts +29 -0
- package/dist/components/bottomDock/bottomDock.props.d.mts.map +1 -0
- package/dist/components/bottomDock/bottomDock.props.d.ts +29 -0
- package/dist/components/bottomDock/bottomDock.props.d.ts.map +1 -0
- package/dist/components/bottomDock/bottomDock.props.js +29 -0
- package/dist/components/bottomDock/bottomDock.props.js.map +7 -0
- package/dist/components/breadcrumb.css +24 -3
- package/dist/components/callout.css +20 -7
- package/dist/components/card.css +8 -0
- package/dist/components/code.css +29 -13
- package/dist/components/collapsible/Collapsible.cjs +4 -0
- package/dist/components/collapsible/Collapsible.cjs.map +2 -2
- package/dist/components/collapsible/Collapsible.d.cts.map +1 -1
- package/dist/components/collapsible/Collapsible.d.mts.map +1 -1
- package/dist/components/collapsible/Collapsible.d.ts.map +1 -1
- package/dist/components/collapsible/Collapsible.js +4 -0
- package/dist/components/collapsible/Collapsible.js.map +2 -2
- package/dist/components/collapsible.css +10 -1
- package/dist/components/command.css +0 -2
- package/dist/components/comment-thread.css +15 -7
- package/dist/components/commentThread/CommentThread.cjs +45 -17
- package/dist/components/commentThread/CommentThread.cjs.map +2 -2
- package/dist/components/commentThread/CommentThread.d.cts +6 -6
- package/dist/components/commentThread/CommentThread.d.cts.map +1 -1
- package/dist/components/commentThread/CommentThread.d.mts +6 -6
- package/dist/components/commentThread/CommentThread.d.mts.map +1 -1
- package/dist/components/commentThread/CommentThread.d.ts +6 -6
- package/dist/components/commentThread/CommentThread.d.ts.map +1 -1
- package/dist/components/commentThread/CommentThread.js +45 -17
- package/dist/components/commentThread/CommentThread.js.map +2 -2
- package/dist/components/commentThread/commentThread.props.cjs.map +1 -1
- package/dist/components/commentThread/commentThread.props.d.cts +24 -0
- package/dist/components/commentThread/commentThread.props.d.cts.map +1 -1
- package/dist/components/commentThread/commentThread.props.d.mts +24 -0
- package/dist/components/commentThread/commentThread.props.d.mts.map +1 -1
- package/dist/components/commentThread/commentThread.props.d.ts +24 -0
- package/dist/components/commentThread/commentThread.props.d.ts.map +1 -1
- package/dist/components/config-drawer.css +7 -3
- package/dist/components/configDrawer/ConfigDrawer.cjs +1 -1
- package/dist/components/configDrawer/ConfigDrawer.cjs.map +2 -2
- package/dist/components/configDrawer/ConfigDrawer.js +1 -1
- package/dist/components/configDrawer/ConfigDrawer.js.map +2 -2
- package/dist/components/context-menu.css +3 -1
- package/dist/components/contextMenu/ContextMenu.cjs +37 -6
- package/dist/components/contextMenu/ContextMenu.cjs.map +2 -2
- package/dist/components/contextMenu/ContextMenu.d.cts +1 -1
- package/dist/components/contextMenu/ContextMenu.d.cts.map +1 -1
- package/dist/components/contextMenu/ContextMenu.d.mts +1 -1
- package/dist/components/contextMenu/ContextMenu.d.mts.map +1 -1
- package/dist/components/contextMenu/ContextMenu.d.ts +1 -1
- package/dist/components/contextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/components/contextMenu/ContextMenu.js +37 -6
- package/dist/components/contextMenu/ContextMenu.js.map +2 -2
- package/dist/components/drawer.css +23 -6
- package/dist/components/dropdownMenu/DropdownMenu.cjs +10 -5
- package/dist/components/dropdownMenu/DropdownMenu.cjs.map +2 -2
- package/dist/components/dropdownMenu/DropdownMenu.d.cts.map +1 -1
- package/dist/components/dropdownMenu/DropdownMenu.d.mts.map +1 -1
- package/dist/components/dropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/dropdownMenu/DropdownMenu.js +10 -5
- package/dist/components/dropdownMenu/DropdownMenu.js.map +2 -2
- package/dist/components/file-upload.css +36 -9
- package/dist/components/floating-panel.css +49 -18
- package/dist/components/floatingPanel/FloatingPanel.cjs +156 -58
- package/dist/components/floatingPanel/FloatingPanel.cjs.map +2 -2
- package/dist/components/floatingPanel/FloatingPanel.d.cts.map +1 -1
- package/dist/components/floatingPanel/FloatingPanel.d.mts.map +1 -1
- package/dist/components/floatingPanel/FloatingPanel.d.ts.map +1 -1
- package/dist/components/floatingPanel/FloatingPanel.js +156 -58
- package/dist/components/floatingPanel/FloatingPanel.js.map +2 -2
- package/dist/components/grid/Grid.cjs +24 -35
- package/dist/components/grid/Grid.cjs.map +2 -2
- package/dist/components/grid/Grid.d.cts.map +1 -1
- package/dist/components/grid/Grid.d.mts.map +1 -1
- package/dist/components/grid/Grid.d.ts.map +1 -1
- package/dist/components/grid/Grid.js +24 -35
- package/dist/components/grid/Grid.js.map +2 -2
- package/dist/components/heading/Heading.cjs +1 -8
- package/dist/components/heading/Heading.cjs.map +2 -2
- package/dist/components/heading/Heading.d.cts.map +1 -1
- package/dist/components/heading/Heading.d.mts.map +1 -1
- package/dist/components/heading/Heading.d.ts.map +1 -1
- package/dist/components/heading/Heading.js +1 -8
- package/dist/components/heading/Heading.js.map +2 -2
- package/dist/components/heading/heading.props.cjs +9 -9
- package/dist/components/heading/heading.props.cjs.map +2 -2
- package/dist/components/heading/heading.props.d.cts +42 -43
- package/dist/components/heading/heading.props.d.cts.map +1 -1
- package/dist/components/heading/heading.props.d.mts +42 -43
- package/dist/components/heading/heading.props.d.mts.map +1 -1
- package/dist/components/heading/heading.props.d.ts +42 -43
- package/dist/components/heading/heading.props.d.ts.map +1 -1
- package/dist/components/heading/heading.props.js +9 -9
- package/dist/components/heading/heading.props.js.map +2 -2
- package/dist/components/heading.css +127 -104
- package/dist/components/hover-card.css +5 -2
- package/dist/components/icon/Icon.cjs +3 -0
- package/dist/components/icon/Icon.cjs.map +2 -2
- package/dist/components/icon/Icon.d.cts +5 -1
- package/dist/components/icon/Icon.d.cts.map +1 -1
- package/dist/components/icon/Icon.d.mts +5 -1
- package/dist/components/icon/Icon.d.mts.map +1 -1
- package/dist/components/icon/Icon.d.ts +5 -1
- package/dist/components/icon/Icon.d.ts.map +1 -1
- package/dist/components/icon/Icon.js +4 -0
- package/dist/components/icon/Icon.js.map +2 -2
- package/dist/components/icon/icons.cjs +2 -0
- package/dist/components/icon/icons.cjs.map +2 -2
- package/dist/components/icon/icons.d.cts +5 -0
- package/dist/components/icon/icons.d.cts.map +1 -1
- package/dist/components/icon/icons.d.mts +5 -0
- package/dist/components/icon/icons.d.mts.map +1 -1
- package/dist/components/icon/icons.d.ts +5 -0
- package/dist/components/icon/icons.d.ts.map +1 -1
- package/dist/components/icon/icons.js +2 -0
- package/dist/components/icon/icons.js.map +2 -2
- package/dist/components/index.cjs +1 -0
- package/dist/components/index.cjs.map +2 -2
- package/dist/components/index.d.cts +1 -0
- package/dist/components/index.d.cts.map +1 -1
- package/dist/components/index.d.mts +1 -0
- package/dist/components/index.d.mts.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +2 -2
- package/dist/components/label.css +3 -0
- package/dist/components/link.css +33 -97
- package/dist/components/notification-center.css +49 -9
- package/dist/components/notificationCenter/NotificationCenter.cjs +21 -16
- package/dist/components/notificationCenter/NotificationCenter.cjs.map +2 -2
- package/dist/components/notificationCenter/NotificationCenter.d.cts.map +1 -1
- package/dist/components/notificationCenter/NotificationCenter.d.mts.map +1 -1
- package/dist/components/notificationCenter/NotificationCenter.d.ts.map +1 -1
- package/dist/components/notificationCenter/NotificationCenter.js +22 -17
- package/dist/components/notificationCenter/NotificationCenter.js.map +2 -2
- package/dist/components/pills/Pills.cjs +1 -1
- package/dist/components/pills/Pills.cjs.map +2 -2
- package/dist/components/pills/Pills.js +2 -2
- package/dist/components/pills/Pills.js.map +2 -2
- package/dist/components/pills.css +6 -0
- package/dist/components/popover.css +45 -6
- package/dist/components/prose.css +3 -3
- package/dist/components/qr-code.css +5 -2
- package/dist/components/qrCode/QrCode.cjs +14 -11
- package/dist/components/qrCode/QrCode.cjs.map +2 -2
- package/dist/components/qrCode/QrCode.d.cts.map +1 -1
- package/dist/components/qrCode/QrCode.d.mts.map +1 -1
- package/dist/components/qrCode/QrCode.d.ts.map +1 -1
- package/dist/components/qrCode/QrCode.js +14 -11
- package/dist/components/qrCode/QrCode.js.map +2 -2
- package/dist/components/resizable.css +20 -4
- package/dist/components/rich-text-editor.css +50 -14
- package/dist/components/richTextEditor/EditorTools.cjs +226 -0
- package/dist/components/richTextEditor/EditorTools.cjs.map +7 -0
- package/dist/components/richTextEditor/EditorTools.d.cts +22 -0
- package/dist/components/richTextEditor/EditorTools.d.cts.map +1 -0
- package/dist/components/richTextEditor/EditorTools.d.mts +22 -0
- package/dist/components/richTextEditor/EditorTools.d.mts.map +1 -0
- package/dist/components/richTextEditor/EditorTools.d.ts +22 -0
- package/dist/components/richTextEditor/EditorTools.d.ts.map +1 -0
- package/dist/components/richTextEditor/EditorTools.js +196 -0
- package/dist/components/richTextEditor/EditorTools.js.map +7 -0
- package/dist/components/richTextEditor/MentionSuggestions.cjs +96 -0
- package/dist/components/richTextEditor/MentionSuggestions.cjs.map +7 -0
- package/dist/components/richTextEditor/MentionSuggestions.d.cts +7 -0
- package/dist/components/richTextEditor/MentionSuggestions.d.cts.map +1 -0
- package/dist/components/richTextEditor/MentionSuggestions.d.mts +7 -0
- package/dist/components/richTextEditor/MentionSuggestions.d.mts.map +1 -0
- package/dist/components/richTextEditor/MentionSuggestions.d.ts +7 -0
- package/dist/components/richTextEditor/MentionSuggestions.d.ts.map +1 -0
- package/dist/components/richTextEditor/MentionSuggestions.js +66 -0
- package/dist/components/richTextEditor/MentionSuggestions.js.map +7 -0
- package/dist/components/richTextEditor/RichTextEditor.cjs +53 -206
- package/dist/components/richTextEditor/RichTextEditor.cjs.map +3 -3
- package/dist/components/richTextEditor/RichTextEditor.d.cts +17 -7
- package/dist/components/richTextEditor/RichTextEditor.d.cts.map +1 -1
- package/dist/components/richTextEditor/RichTextEditor.d.mts +17 -7
- package/dist/components/richTextEditor/RichTextEditor.d.mts.map +1 -1
- package/dist/components/richTextEditor/RichTextEditor.d.ts +17 -7
- package/dist/components/richTextEditor/RichTextEditor.d.ts.map +1 -1
- package/dist/components/richTextEditor/RichTextEditor.js +53 -206
- package/dist/components/richTextEditor/RichTextEditor.js.map +3 -3
- package/dist/components/richTextEditor/editorTokens.cjs +75 -0
- package/dist/components/richTextEditor/editorTokens.cjs.map +7 -0
- package/dist/components/richTextEditor/editorTokens.d.cts +21 -0
- package/dist/components/richTextEditor/editorTokens.d.cts.map +1 -0
- package/dist/components/richTextEditor/editorTokens.d.mts +21 -0
- package/dist/components/richTextEditor/editorTokens.d.mts.map +1 -0
- package/dist/components/richTextEditor/editorTokens.d.ts +21 -0
- package/dist/components/richTextEditor/editorTokens.d.ts.map +1 -0
- package/dist/components/richTextEditor/editorTokens.js +55 -0
- package/dist/components/richTextEditor/editorTokens.js.map +7 -0
- package/dist/components/scroll-area.css +12 -0
- package/dist/components/scrollArea/ScrollArea.cjs +12 -1
- package/dist/components/scrollArea/ScrollArea.cjs.map +2 -2
- package/dist/components/scrollArea/ScrollArea.d.cts.map +1 -1
- package/dist/components/scrollArea/ScrollArea.d.mts.map +1 -1
- package/dist/components/scrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/components/scrollArea/ScrollArea.js +12 -1
- package/dist/components/scrollArea/ScrollArea.js.map +2 -2
- package/dist/components/segmentedControl/SegmentedControl.cjs +2 -2
- package/dist/components/segmentedControl/SegmentedControl.cjs.map +2 -2
- package/dist/components/segmentedControl/SegmentedControl.d.cts.map +1 -1
- package/dist/components/segmentedControl/SegmentedControl.d.mts.map +1 -1
- package/dist/components/segmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/components/segmentedControl/SegmentedControl.js +2 -2
- package/dist/components/segmentedControl/SegmentedControl.js.map +2 -2
- package/dist/components/separator.css +3 -9
- package/dist/components/sidebar/Sidebar.cjs +12 -4
- package/dist/components/sidebar/Sidebar.cjs.map +2 -2
- package/dist/components/sidebar/Sidebar.d.cts +4 -1
- package/dist/components/sidebar/Sidebar.d.cts.map +1 -1
- package/dist/components/sidebar/Sidebar.d.mts +4 -1
- package/dist/components/sidebar/Sidebar.d.mts.map +1 -1
- package/dist/components/sidebar/Sidebar.d.ts +4 -1
- package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
- package/dist/components/sidebar/Sidebar.js +12 -4
- package/dist/components/sidebar/Sidebar.js.map +2 -2
- package/dist/components/sidebar/sidebar.props.cjs +8 -1
- package/dist/components/sidebar/sidebar.props.cjs.map +2 -2
- package/dist/components/sidebar/sidebar.props.d.cts +9 -1
- package/dist/components/sidebar/sidebar.props.d.cts.map +1 -1
- package/dist/components/sidebar/sidebar.props.d.mts +9 -1
- package/dist/components/sidebar/sidebar.props.d.mts.map +1 -1
- package/dist/components/sidebar/sidebar.props.d.ts +9 -1
- package/dist/components/sidebar/sidebar.props.d.ts.map +1 -1
- package/dist/components/sidebar/sidebar.props.js +8 -1
- package/dist/components/sidebar/sidebar.props.js.map +2 -2
- package/dist/components/sidebar.css +28 -0
- package/dist/components/sonner.css +78 -16
- package/dist/components/stepper.css +23 -12
- package/dist/components/tab-nav.css +25 -13
- package/dist/components/tabNav/TabNav.cjs +1 -4
- package/dist/components/tabNav/TabNav.cjs.map +2 -2
- package/dist/components/tabNav/TabNav.d.cts.map +1 -1
- package/dist/components/tabNav/TabNav.d.mts.map +1 -1
- package/dist/components/tabNav/TabNav.d.ts.map +1 -1
- package/dist/components/tabNav/TabNav.js +1 -4
- package/dist/components/tabNav/TabNav.js.map +2 -2
- package/dist/components/table-of-contents.css +12 -2
- package/dist/components/tableOfContents/TableOfContents.cjs +11 -4
- package/dist/components/tableOfContents/TableOfContents.cjs.map +2 -2
- package/dist/components/tableOfContents/TableOfContents.d.cts.map +1 -1
- package/dist/components/tableOfContents/TableOfContents.d.mts.map +1 -1
- package/dist/components/tableOfContents/TableOfContents.d.ts.map +1 -1
- package/dist/components/tableOfContents/TableOfContents.js +11 -4
- package/dist/components/tableOfContents/TableOfContents.js.map +2 -2
- package/dist/components/tabs/Tabs.cjs +39 -54
- package/dist/components/tabs/Tabs.cjs.map +2 -2
- package/dist/components/tabs/Tabs.d.cts.map +1 -1
- package/dist/components/tabs/Tabs.d.mts.map +1 -1
- package/dist/components/tabs/Tabs.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.js +39 -54
- package/dist/components/tabs/Tabs.js.map +2 -2
- package/dist/components/tabs.css +52 -7
- package/dist/components/text/text.props.cjs +9 -9
- package/dist/components/text/text.props.cjs.map +2 -2
- package/dist/components/text/text.props.d.cts +42 -43
- package/dist/components/text/text.props.d.cts.map +1 -1
- package/dist/components/text/text.props.d.mts +42 -43
- package/dist/components/text/text.props.d.mts.map +1 -1
- package/dist/components/text/text.props.d.ts +42 -43
- package/dist/components/text/text.props.d.ts.map +1 -1
- package/dist/components/text/text.props.js +9 -9
- package/dist/components/text/text.props.js.map +2 -2
- package/dist/components/text/typography.props.cjs +32 -0
- package/dist/components/text/typography.props.cjs.map +7 -0
- package/dist/components/text/typography.props.d.cts +3 -0
- package/dist/components/text/typography.props.d.cts.map +1 -0
- package/dist/components/text/typography.props.d.mts +3 -0
- package/dist/components/text/typography.props.d.mts.map +1 -0
- package/dist/components/text/typography.props.d.ts +3 -0
- package/dist/components/text/typography.props.d.ts.map +1 -0
- package/dist/components/text/typography.props.js +12 -0
- package/dist/components/text/typography.props.js.map +7 -0
- package/dist/components/text-field.css +1 -0
- package/dist/components/text.css +41 -6
- package/dist/components/theme-panel.css +6 -0
- package/dist/components/toast/Toast.cjs +3 -1
- package/dist/components/toast/Toast.cjs.map +2 -2
- package/dist/components/toast/Toast.d.cts.map +1 -1
- package/dist/components/toast/Toast.d.mts.map +1 -1
- package/dist/components/toast/Toast.d.ts.map +1 -1
- package/dist/components/toast/Toast.js +3 -1
- package/dist/components/toast/Toast.js.map +2 -2
- package/dist/components/toast.css +36 -36
- package/dist/components/toggle-tip.css +58 -9
- package/dist/components/toggleTip/ToggleTip.cjs +9 -5
- package/dist/components/toggleTip/ToggleTip.cjs.map +2 -2
- package/dist/components/toggleTip/ToggleTip.d.cts.map +1 -1
- package/dist/components/toggleTip/ToggleTip.d.mts.map +1 -1
- package/dist/components/toggleTip/ToggleTip.d.ts.map +1 -1
- package/dist/components/toggleTip/ToggleTip.js +9 -5
- package/dist/components/toggleTip/ToggleTip.js.map +2 -2
- package/dist/components/toolbar/Toolbar.cjs +10 -7
- package/dist/components/toolbar/Toolbar.cjs.map +2 -2
- package/dist/components/toolbar/Toolbar.js +10 -7
- package/dist/components/toolbar/Toolbar.js.map +2 -2
- package/dist/components/toolbar.css +58 -4
- package/dist/components/tooltip.css +9 -5
- package/dist/components/tree-view.css +17 -3
- package/dist/components/treeView/TreeView.cjs +76 -21
- package/dist/components/treeView/TreeView.cjs.map +2 -2
- package/dist/components/treeView/TreeView.d.cts.map +1 -1
- package/dist/components/treeView/TreeView.d.mts.map +1 -1
- package/dist/components/treeView/TreeView.d.ts.map +1 -1
- package/dist/components/treeView/TreeView.js +76 -21
- package/dist/components/treeView/TreeView.js.map +2 -2
- package/dist/components.css +1 -0
- package/dist/docs/README.md +1 -0
- package/dist/docs/component-contract.md +4 -3
- package/dist/docs/component-index.json +9 -1
- package/dist/docs/components/accordion.md +5 -36
- package/dist/docs/components/alert.md +17 -10
- package/dist/docs/components/article-nodes.md +59 -2
- package/dist/docs/components/aspect-ratio.md +3 -26
- package/dist/docs/components/banner.md +7 -7
- package/dist/docs/components/blockquote.md +15 -14
- package/dist/docs/components/bottom-dock.md +146 -0
- package/dist/docs/components/box.md +3 -34
- package/dist/docs/components/breadcrumb.md +13 -8
- package/dist/docs/components/callout.md +18 -7
- package/dist/docs/components/card.md +9 -2
- package/dist/docs/components/code.md +33 -220
- package/dist/docs/components/collapsible.md +11 -35
- package/dist/docs/components/command.md +2 -0
- package/dist/docs/components/comment-thread.md +51 -1
- package/dist/docs/components/config-drawer.md +72 -171
- package/dist/docs/components/container.md +2 -0
- package/dist/docs/components/context-menu.md +19 -5
- package/dist/docs/components/dialog.md +3 -1
- package/dist/docs/components/drawer.md +17 -6
- package/dist/docs/components/dropdown-menu.md +11 -2
- package/dist/docs/components/em.md +1 -1
- package/dist/docs/components/file-upload.md +13 -7
- package/dist/docs/components/floating-panel.md +79 -285
- package/dist/docs/components/form.md +4 -0
- package/dist/docs/components/grid.md +11 -60
- package/dist/docs/components/heading.md +35 -32
- package/dist/docs/components/hover-card.md +9 -1
- package/dist/docs/components/kbd.md +2 -0
- package/dist/docs/components/label.md +11 -9
- package/dist/docs/components/link.md +31 -209
- package/dist/docs/components/notification-center.md +24 -14
- package/dist/docs/components/page-header.md +2 -0
- package/dist/docs/components/pagination.md +4 -0
- package/dist/docs/components/pills.md +13 -4
- package/dist/docs/components/popover.md +10 -3
- package/dist/docs/components/prose.md +9 -0
- package/dist/docs/components/qr-code.md +12 -12
- package/dist/docs/components/quote.md +9 -4
- package/dist/docs/components/resizable.md +26 -18
- package/dist/docs/components/rich-text-editor.md +68 -18
- package/dist/docs/components/scroll-area.md +17 -9
- package/dist/docs/components/section.md +3 -38
- package/dist/docs/components/segmented-control.md +1 -1
- package/dist/docs/components/segmented-meter.md +9 -0
- package/dist/docs/components/separator.md +10 -46
- package/dist/docs/components/sidebar.md +17 -3
- package/dist/docs/components/sonner.md +25 -16
- package/dist/docs/components/stepper.md +8 -33
- package/dist/docs/components/strong.md +1 -1
- package/dist/docs/components/tab-nav.md +33 -96
- package/dist/docs/components/table-of-contents.md +8 -2
- package/dist/docs/components/tabs.md +19 -50
- package/dist/docs/components/text-field.md +1 -0
- package/dist/docs/components/text.md +34 -28
- package/dist/docs/components/theme-panel.md +3 -28
- package/dist/docs/components/theme.md +7 -3
- package/dist/docs/components/toast.md +27 -13
- package/dist/docs/components/toggle-tip.md +58 -241
- package/dist/docs/components/toolbar.md +16 -39
- package/dist/docs/components/tooltip.md +13 -7
- package/dist/docs/components/tree-view.md +22 -55
- package/dist/generated/tokens.cjs +1 -0
- package/dist/generated/tokens.cjs.map +2 -2
- package/dist/generated/tokens.d.cts.map +1 -1
- package/dist/generated/tokens.d.mts.map +1 -1
- package/dist/generated/tokens.d.ts.map +1 -1
- package/dist/generated/tokens.js +1 -0
- package/dist/generated/tokens.js.map +2 -2
- package/dist/styles.css +1632 -1300
- package/dist/tokens.css +344 -362
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/segmentedControl/SegmentedControl.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react'\nimport classNames from 'classnames'\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group'\n\nimport { extractProps } from '../../_internal/helpers/extractProps'\nimport { segmentedControlPropDefs } from './segmentedControl.props'\n\nimport type { GetPropDefTypes } from '../../_internal/props/propDef'\n\ntype SegmentedControlRootOwnProps = GetPropDefTypes<typeof segmentedControlPropDefs> & {\n value?: string\n defaultValue?: string\n onValueChange?(value: string): void\n}\n\ntype SegmentedControlRootProps = React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>\n & SegmentedControlRootOwnProps\n\ntype SegmentedControlRootElement = React.ComponentRef<typeof ToggleGroupPrimitive.Root>\n\nfunction composeRefs<T>(...refs: Array<React.Ref<T> | undefined>) {\n return (node: T | null) => {\n for (const ref of refs) {\n if (!ref) {\n continue\n }\n\n if (typeof ref === 'function') {\n ref(node)\n continue\n }\n\n ;(ref as { current: T | null }).current = node\n }\n }\n}\n\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\ninterface SegmentedControlSelection {\n activationMode: 'manual' | 'automatic'\n disabled: boolean\n selectedValue: string | undefined\n requestSelect(value: string): void\n}\n\nconst SegmentedControlSelectionContext = React.createContext<SegmentedControlSelection | null>(null)\n\nconst SegmentedControlRoot = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive.Root>,\n SegmentedControlRootProps\n>(({ className, children, disabled = false, size = 'md', variant = 'default', orientation = 'horizontal', activationMode = 'manual', fill = false, value, defaultValue, onValueChange, ...props }, forwardedRef) => {\n const rootProps = extractProps(\n { className, disabled, orientation, size },\n segmentedControlPropDefs,\n )\n const innerRootRef = React.useRef<SegmentedControlRootElement | null>(null)\n const mergedRef = composeRefs(forwardedRef, innerRootRef)\n\n // Deselect guard (disallowEmptySelection): own the selection so the control\n // can never render with no active item. Radix fires \"\" when the active item\n // is clicked; the handler below swallows it and keeps the last value, and\n // the resolved value below keeps Radix controlled so its internal state can\n // never clear either.\n const [uncontrolledValue, setUncontrolledValue] = React.useState<string | undefined>(defaultValue)\n const resolvedValue = value ?? uncontrolledValue\n\n // Sliding indicator: Mantine-style measured pill rendered behind the active\n // item. The offset is a physical-pixel diff (active.left - root.left), which\n // is direction-agnostic and therefore RTL-correct without special-casing.\n // Measuring in layout effect positions the pill before first paint, and the\n // `indicatorLive` gate keeps `transition: none` until that first positioned\n // frame so mount never animates from the origin.\n const [indicator, setIndicator] = React.useState({ x: 0, y: 0, width: 0, height: 0 })\n const [indicatorLive, setIndicatorLive] = React.useState(false)\n\n const measureActive = React.useCallback((root: HTMLElement) => {\n const active = root.querySelector<HTMLElement>('[data-state=\"on\"]')\n\n if (!active) {\n return\n }\n\n const rootRect = root.getBoundingClientRect()\n const activeRect = active.getBoundingClientRect()\n // Border-box diffs are padding-box positioned: subtract the frame so the\n // wrapper never overshoots the content box (1-2px overflow summoned a\n // horizontal scrollbar on bordered variants).\n setIndicator({\n x: activeRect.left - rootRect.left - root.clientLeft,\n y: activeRect.top - rootRect.top - root.clientTop,\n width: activeRect.width,\n height: activeRect.height,\n })\n }, [])\n\n useIsomorphicLayoutEffect(() => {\n const root = innerRootRef.current\n\n if (!root) {\n return undefined\n }\n\n const measure = () => measureActive(root)\n\n measure()\n setIndicatorLive(true)\n\n if (typeof ResizeObserver === 'undefined') {\n return undefined\n }\n\n const observer = new ResizeObserver(measure)\n observer.observe(root)\n\n const active = root.querySelector('[data-state=\"on\"]')\n\n if (active) {\n observer.observe(active)\n }\n\n return () => observer.disconnect()\n }, [resolvedValue, measureActive])\n\n const handleValueChange = (nextValue: string) => {\n if (!nextValue) {\n return\n }\n\n if (value === undefined) {\n setUncontrolledValue(nextValue)\n }\n\n onValueChange?.(nextValue)\n }\n\n // Automatic activation: selection follows focus, so arrow-key navigation\n // selects without Enter. The focused value goes through the same guarded\n // setter, so focus can never empty the selection; landing on the\n // already-selected item is a no-op. Manual mode (default) ignores focus\n // and only selects on activation \u2014 use it when onValueChange drives side\n // effects that must not fire on focus. Each item reads this context in its\n // own onFocus (Radix strips the value prop from the DOM, so the root\n // cannot recover the focused value from the event target).\n const selection = React.useMemo<SegmentedControlSelection>(\n () => ({\n activationMode,\n disabled,\n selectedValue: resolvedValue,\n requestSelect: handleValueChange,\n }),\n [activationMode, disabled, resolvedValue, handleValueChange],\n )\n\n return (\n <ToggleGroupPrimitive.Root\n {...props}\n {...rootProps}\n ref={mergedRef}\n className={classNames(\n 'dsx-segmented-control',\n `dsx-segmented-control--${size}`,\n `dsx-segmented-control--${variant}`,\n fill && 'dsx-segmented-control--fill',\n className,\n )}\n type=\"single\"\n value={resolvedValue}\n onValueChange={handleValueChange}\n disabled={disabled}\n orientation={orientation}\n data-disabled={disabled || undefined}\n data-fill={fill || undefined}\n data-size={size}\n data-variant={variant}\n data-orientation={orientation}\n data-activation-mode={activationMode}\n >\n <SegmentedControlSelectionContext.Provider value={selection}>\n {children}\n </SegmentedControlSelectionContext.Provider>\n <span\n aria-hidden=\"true\"\n className=\"dsx-segmented-control__indicator\"\n style={\n orientation === 'vertical'\n ? {\n transform: `translateY(${indicator.y}px)`,\n height: indicator.height,\n transition: indicatorLive ? undefined : 'none',\n }\n : {\n transform: `translateX(${indicator.x}px)`,\n width: indicator.width,\n transition: indicatorLive ? undefined : 'none',\n }\n }\n />\n </ToggleGroupPrimitive.Root>\n )\n})\nSegmentedControlRoot.displayName = 'SegmentedControl'\n\ninterface SegmentedControlItemProps\n extends React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> {\n iconOnly?: boolean\n value: string\n}\n\nconst SegmentedControlItem = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive.Item>,\n SegmentedControlItemProps\n>(({ children, className, disabled, iconOnly = false, value, onFocus, ...props }, forwardedRef) => {\n const selection = React.useContext(SegmentedControlSelectionContext)\n\n const handleItemFocus: React.FocusEventHandler<React.ComponentRef<typeof ToggleGroupPrimitive.Item>> = (event) => {\n onFocus?.(event)\n\n if (!selection || selection.activationMode !== 'automatic') {\n return\n }\n\n if (selection.disabled || disabled || value === selection.selectedValue) {\n return\n }\n\n selection.requestSelect(value)\n }\n\n return (\n <ToggleGroupPrimitive.Item\n {...props}\n ref={forwardedRef}\n value={value}\n className={classNames('dsx-segmented-control__item', className)}\n disabled={disabled}\n data-disabled={disabled || undefined}\n data-icon-only={iconOnly || undefined}\n onFocus={handleItemFocus}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n})\nSegmentedControlItem.displayName = 'SegmentedControlItem'\n\nconst SegmentedControl: typeof SegmentedControlRoot & {\n Item: typeof SegmentedControlItem\n} = Object.assign(SegmentedControlRoot, {\n Item: SegmentedControlItem,\n})\n\nexport { SegmentedControl, SegmentedControlItem, SegmentedControlRoot }\nexport type { SegmentedControlItemProps, SegmentedControlRootProps }\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAuB;AACvB,wBAAuB;AACvB,2BAAsC;AAEtC,0BAA6B;AAC7B,8BAAyC;
|
|
4
|
+
"sourcesContent": ["import * as React from 'react'\nimport classNames from 'classnames'\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group'\n\nimport { extractProps } from '../../_internal/helpers/extractProps'\nimport { segmentedControlPropDefs } from './segmentedControl.props'\n\nimport type { GetPropDefTypes } from '../../_internal/props/propDef'\n\ntype SegmentedControlRootOwnProps = GetPropDefTypes<typeof segmentedControlPropDefs> & {\n value?: string\n defaultValue?: string\n onValueChange?(value: string): void\n}\n\ntype SegmentedControlRootProps = React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>\n & SegmentedControlRootOwnProps\n\ntype SegmentedControlRootElement = React.ComponentRef<typeof ToggleGroupPrimitive.Root>\n\nfunction composeRefs<T>(...refs: Array<React.Ref<T> | undefined>) {\n return (node: T | null) => {\n for (const ref of refs) {\n if (!ref) {\n continue\n }\n\n if (typeof ref === 'function') {\n ref(node)\n continue\n }\n\n ;(ref as { current: T | null }).current = node\n }\n }\n}\n\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\ninterface SegmentedControlSelection {\n activationMode: 'manual' | 'automatic'\n disabled: boolean\n selectedValue: string | undefined\n requestSelect(value: string): void\n}\n\nconst SegmentedControlSelectionContext = React.createContext<SegmentedControlSelection | null>(null)\n\nconst SegmentedControlRoot = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive.Root>,\n SegmentedControlRootProps\n>(({ className, children, disabled = false, size = 'md', variant = 'default', orientation = 'horizontal', activationMode = 'manual', fill = false, value, defaultValue, onValueChange, ...props }, forwardedRef) => {\n const rootProps = extractProps(\n { className, disabled, orientation, size },\n segmentedControlPropDefs,\n )\n const innerRootRef = React.useRef<SegmentedControlRootElement | null>(null)\n const mergedRef = composeRefs(forwardedRef, innerRootRef)\n\n // Deselect guard (disallowEmptySelection): own the selection so the control\n // can never render with no active item. Radix fires \"\" when the active item\n // is clicked; the handler below swallows it and keeps the last value, and\n // the resolved value below keeps Radix controlled so its internal state can\n // never clear either.\n const [uncontrolledValue, setUncontrolledValue] = React.useState<string | undefined>(defaultValue)\n const resolvedValue = value ?? uncontrolledValue\n\n // Sliding indicator: Mantine-style measured pill rendered behind the active\n // item. The offset is a physical-pixel diff (active.left - root.left), which\n // is direction-agnostic and therefore RTL-correct without special-casing.\n // Measuring in layout effect positions the pill before first paint, and the\n // `indicatorLive` gate keeps `transition: none` until that first positioned\n // frame so mount never animates from the origin.\n const [indicator, setIndicator] = React.useState({ x: 0, y: 0, width: 0, height: 0 })\n const [indicatorLive, setIndicatorLive] = React.useState(false)\n\n const measureActive = React.useCallback((root: HTMLElement) => {\n const active = root.querySelector<HTMLElement>('[data-state=\"on\"]')\n\n if (!active) {\n return\n }\n\n const rootRect = root.getBoundingClientRect()\n const activeRect = active.getBoundingClientRect()\n // Border-box diffs are padding-box positioned: subtract the frame so the\n // wrapper never overshoots the content box (1-2px overflow summoned a\n // horizontal scrollbar on bordered variants). Add scroll offsets to convert\n // viewport coordinates into the indicator's content coordinates; otherwise\n // a scrolled selection paints behind the preceding item.\n setIndicator({\n x: activeRect.left - rootRect.left - root.clientLeft + root.scrollLeft,\n y: activeRect.top - rootRect.top - root.clientTop + root.scrollTop,\n width: activeRect.width,\n height: activeRect.height,\n })\n }, [])\n\n useIsomorphicLayoutEffect(() => {\n const root = innerRootRef.current\n\n if (!root) {\n return undefined\n }\n\n const measure = () => measureActive(root)\n\n measure()\n setIndicatorLive(true)\n\n if (typeof ResizeObserver === 'undefined') {\n return undefined\n }\n\n const observer = new ResizeObserver(measure)\n observer.observe(root)\n\n const active = root.querySelector('[data-state=\"on\"]')\n\n if (active) {\n observer.observe(active)\n }\n\n return () => observer.disconnect()\n }, [resolvedValue, measureActive])\n\n const handleValueChange = (nextValue: string) => {\n if (!nextValue) {\n return\n }\n\n if (value === undefined) {\n setUncontrolledValue(nextValue)\n }\n\n onValueChange?.(nextValue)\n }\n\n // Automatic activation: selection follows focus, so arrow-key navigation\n // selects without Enter. The focused value goes through the same guarded\n // setter, so focus can never empty the selection; landing on the\n // already-selected item is a no-op. Manual mode (default) ignores focus\n // and only selects on activation \u2014 use it when onValueChange drives side\n // effects that must not fire on focus. Each item reads this context in its\n // own onFocus (Radix strips the value prop from the DOM, so the root\n // cannot recover the focused value from the event target).\n const selection = React.useMemo<SegmentedControlSelection>(\n () => ({\n activationMode,\n disabled,\n selectedValue: resolvedValue,\n requestSelect: handleValueChange,\n }),\n [activationMode, disabled, resolvedValue, handleValueChange],\n )\n\n return (\n <ToggleGroupPrimitive.Root\n {...props}\n {...rootProps}\n ref={mergedRef}\n className={classNames(\n 'dsx-segmented-control',\n `dsx-segmented-control--${size}`,\n `dsx-segmented-control--${variant}`,\n fill && 'dsx-segmented-control--fill',\n className,\n )}\n type=\"single\"\n value={resolvedValue}\n onValueChange={handleValueChange}\n disabled={disabled}\n orientation={orientation}\n data-disabled={disabled || undefined}\n data-fill={fill || undefined}\n data-size={size}\n data-variant={variant}\n data-orientation={orientation}\n data-activation-mode={activationMode}\n >\n <SegmentedControlSelectionContext.Provider value={selection}>\n {children}\n </SegmentedControlSelectionContext.Provider>\n <span\n aria-hidden=\"true\"\n className=\"dsx-segmented-control__indicator\"\n style={\n orientation === 'vertical'\n ? {\n transform: `translateY(${indicator.y}px)`,\n height: indicator.height,\n transition: indicatorLive ? undefined : 'none',\n }\n : {\n transform: `translateX(${indicator.x}px)`,\n width: indicator.width,\n transition: indicatorLive ? undefined : 'none',\n }\n }\n />\n </ToggleGroupPrimitive.Root>\n )\n})\nSegmentedControlRoot.displayName = 'SegmentedControl'\n\ninterface SegmentedControlItemProps\n extends React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> {\n iconOnly?: boolean\n value: string\n}\n\nconst SegmentedControlItem = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive.Item>,\n SegmentedControlItemProps\n>(({ children, className, disabled, iconOnly = false, value, onFocus, ...props }, forwardedRef) => {\n const selection = React.useContext(SegmentedControlSelectionContext)\n\n const handleItemFocus: React.FocusEventHandler<React.ComponentRef<typeof ToggleGroupPrimitive.Item>> = (event) => {\n onFocus?.(event)\n\n if (!selection || selection.activationMode !== 'automatic') {\n return\n }\n\n if (selection.disabled || disabled || value === selection.selectedValue) {\n return\n }\n\n selection.requestSelect(value)\n }\n\n return (\n <ToggleGroupPrimitive.Item\n {...props}\n ref={forwardedRef}\n value={value}\n className={classNames('dsx-segmented-control__item', className)}\n disabled={disabled}\n data-disabled={disabled || undefined}\n data-icon-only={iconOnly || undefined}\n onFocus={handleItemFocus}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n})\nSegmentedControlItem.displayName = 'SegmentedControlItem'\n\nconst SegmentedControl: typeof SegmentedControlRoot & {\n Item: typeof SegmentedControlItem\n} = Object.assign(SegmentedControlRoot, {\n Item: SegmentedControlItem,\n})\n\nexport { SegmentedControl, SegmentedControlItem, SegmentedControlRoot }\nexport type { SegmentedControlItemProps, SegmentedControlRootProps }\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["classNames"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControl.d.cts","sourceRoot":"","sources":["../../../src/components/segmentedControl/SegmentedControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AAGpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,KAAK,4BAA4B,GAAG,eAAe,CAAC,OAAO,wBAAwB,CAAC,GAAG;IACrF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC,CAAA;AAED,KAAK,yBAAyB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GAC7F,4BAA4B,CAAA;AAgChC,QAAA,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"SegmentedControl.d.cts","sourceRoot":"","sources":["../../../src/components/segmentedControl/SegmentedControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AAGpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,KAAK,4BAA4B,GAAG,eAAe,CAAC,OAAO,wBAAwB,CAAC,GAAG;IACrF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC,CAAA;AAED,KAAK,yBAAyB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GAC7F,4BAA4B,CAAA;AAgChC,QAAA,MAAM,oBAAoB,kGA0JxB,CAAA;AAGF,UAAU,yBACR,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,QAAA,MAAM,oBAAoB,qGAkCxB,CAAA;AAGF,QAAA,MAAM,gBAAgB,EAAE,OAAO,oBAAoB,GAAG;IACpD,IAAI,EAAE,OAAO,oBAAoB,CAAA;CAGjC,CAAA;AAEF,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAA;AACvE,YAAY,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControl.d.mts","sourceRoot":"","sources":["../../../src/components/segmentedControl/SegmentedControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AAGpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,KAAK,4BAA4B,GAAG,eAAe,CAAC,OAAO,wBAAwB,CAAC,GAAG;IACrF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC,CAAA;AAED,KAAK,yBAAyB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GAC7F,4BAA4B,CAAA;AAgChC,QAAA,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"SegmentedControl.d.mts","sourceRoot":"","sources":["../../../src/components/segmentedControl/SegmentedControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AAGpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,KAAK,4BAA4B,GAAG,eAAe,CAAC,OAAO,wBAAwB,CAAC,GAAG;IACrF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC,CAAA;AAED,KAAK,yBAAyB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GAC7F,4BAA4B,CAAA;AAgChC,QAAA,MAAM,oBAAoB,kGA0JxB,CAAA;AAGF,UAAU,yBACR,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,QAAA,MAAM,oBAAoB,qGAkCxB,CAAA;AAGF,QAAA,MAAM,gBAAgB,EAAE,OAAO,oBAAoB,GAAG;IACpD,IAAI,EAAE,OAAO,oBAAoB,CAAA;CAGjC,CAAA;AAEF,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAA;AACvE,YAAY,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../src/components/segmentedControl/SegmentedControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AAGpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,KAAK,4BAA4B,GAAG,eAAe,CAAC,OAAO,wBAAwB,CAAC,GAAG;IACrF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC,CAAA;AAED,KAAK,yBAAyB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GAC7F,4BAA4B,CAAA;AAgChC,QAAA,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../src/components/segmentedControl/SegmentedControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AAGpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,KAAK,4BAA4B,GAAG,eAAe,CAAC,OAAO,wBAAwB,CAAC,GAAG;IACrF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC,CAAA;AAED,KAAK,yBAAyB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GAC7F,4BAA4B,CAAA;AAgChC,QAAA,MAAM,oBAAoB,kGA0JxB,CAAA;AAGF,UAAU,yBACR,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,QAAA,MAAM,oBAAoB,qGAkCxB,CAAA;AAGF,QAAA,MAAM,gBAAgB,EAAE,OAAO,oBAAoB,GAAG;IACpD,IAAI,EAAE,OAAO,oBAAoB,CAAA;CAGjC,CAAA;AAEF,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAA;AACvE,YAAY,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,CAAA"}
|
|
@@ -40,8 +40,8 @@ const SegmentedControlRoot = React.forwardRef(({ className, children, disabled =
|
|
|
40
40
|
const rootRect = root.getBoundingClientRect();
|
|
41
41
|
const activeRect = active.getBoundingClientRect();
|
|
42
42
|
setIndicator({
|
|
43
|
-
x: activeRect.left - rootRect.left - root.clientLeft,
|
|
44
|
-
y: activeRect.top - rootRect.top - root.clientTop,
|
|
43
|
+
x: activeRect.left - rootRect.left - root.clientLeft + root.scrollLeft,
|
|
44
|
+
y: activeRect.top - rootRect.top - root.clientTop + root.scrollTop,
|
|
45
45
|
width: activeRect.width,
|
|
46
46
|
height: activeRect.height
|
|
47
47
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/segmentedControl/SegmentedControl.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react'\nimport classNames from 'classnames'\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group'\n\nimport { extractProps } from '../../_internal/helpers/extractProps'\nimport { segmentedControlPropDefs } from './segmentedControl.props'\n\nimport type { GetPropDefTypes } from '../../_internal/props/propDef'\n\ntype SegmentedControlRootOwnProps = GetPropDefTypes<typeof segmentedControlPropDefs> & {\n value?: string\n defaultValue?: string\n onValueChange?(value: string): void\n}\n\ntype SegmentedControlRootProps = React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>\n & SegmentedControlRootOwnProps\n\ntype SegmentedControlRootElement = React.ComponentRef<typeof ToggleGroupPrimitive.Root>\n\nfunction composeRefs<T>(...refs: Array<React.Ref<T> | undefined>) {\n return (node: T | null) => {\n for (const ref of refs) {\n if (!ref) {\n continue\n }\n\n if (typeof ref === 'function') {\n ref(node)\n continue\n }\n\n ;(ref as { current: T | null }).current = node\n }\n }\n}\n\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\ninterface SegmentedControlSelection {\n activationMode: 'manual' | 'automatic'\n disabled: boolean\n selectedValue: string | undefined\n requestSelect(value: string): void\n}\n\nconst SegmentedControlSelectionContext = React.createContext<SegmentedControlSelection | null>(null)\n\nconst SegmentedControlRoot = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive.Root>,\n SegmentedControlRootProps\n>(({ className, children, disabled = false, size = 'md', variant = 'default', orientation = 'horizontal', activationMode = 'manual', fill = false, value, defaultValue, onValueChange, ...props }, forwardedRef) => {\n const rootProps = extractProps(\n { className, disabled, orientation, size },\n segmentedControlPropDefs,\n )\n const innerRootRef = React.useRef<SegmentedControlRootElement | null>(null)\n const mergedRef = composeRefs(forwardedRef, innerRootRef)\n\n // Deselect guard (disallowEmptySelection): own the selection so the control\n // can never render with no active item. Radix fires \"\" when the active item\n // is clicked; the handler below swallows it and keeps the last value, and\n // the resolved value below keeps Radix controlled so its internal state can\n // never clear either.\n const [uncontrolledValue, setUncontrolledValue] = React.useState<string | undefined>(defaultValue)\n const resolvedValue = value ?? uncontrolledValue\n\n // Sliding indicator: Mantine-style measured pill rendered behind the active\n // item. The offset is a physical-pixel diff (active.left - root.left), which\n // is direction-agnostic and therefore RTL-correct without special-casing.\n // Measuring in layout effect positions the pill before first paint, and the\n // `indicatorLive` gate keeps `transition: none` until that first positioned\n // frame so mount never animates from the origin.\n const [indicator, setIndicator] = React.useState({ x: 0, y: 0, width: 0, height: 0 })\n const [indicatorLive, setIndicatorLive] = React.useState(false)\n\n const measureActive = React.useCallback((root: HTMLElement) => {\n const active = root.querySelector<HTMLElement>('[data-state=\"on\"]')\n\n if (!active) {\n return\n }\n\n const rootRect = root.getBoundingClientRect()\n const activeRect = active.getBoundingClientRect()\n // Border-box diffs are padding-box positioned: subtract the frame so the\n // wrapper never overshoots the content box (1-2px overflow summoned a\n // horizontal scrollbar on bordered variants).\n setIndicator({\n x: activeRect.left - rootRect.left - root.clientLeft,\n y: activeRect.top - rootRect.top - root.clientTop,\n width: activeRect.width,\n height: activeRect.height,\n })\n }, [])\n\n useIsomorphicLayoutEffect(() => {\n const root = innerRootRef.current\n\n if (!root) {\n return undefined\n }\n\n const measure = () => measureActive(root)\n\n measure()\n setIndicatorLive(true)\n\n if (typeof ResizeObserver === 'undefined') {\n return undefined\n }\n\n const observer = new ResizeObserver(measure)\n observer.observe(root)\n\n const active = root.querySelector('[data-state=\"on\"]')\n\n if (active) {\n observer.observe(active)\n }\n\n return () => observer.disconnect()\n }, [resolvedValue, measureActive])\n\n const handleValueChange = (nextValue: string) => {\n if (!nextValue) {\n return\n }\n\n if (value === undefined) {\n setUncontrolledValue(nextValue)\n }\n\n onValueChange?.(nextValue)\n }\n\n // Automatic activation: selection follows focus, so arrow-key navigation\n // selects without Enter. The focused value goes through the same guarded\n // setter, so focus can never empty the selection; landing on the\n // already-selected item is a no-op. Manual mode (default) ignores focus\n // and only selects on activation \u2014 use it when onValueChange drives side\n // effects that must not fire on focus. Each item reads this context in its\n // own onFocus (Radix strips the value prop from the DOM, so the root\n // cannot recover the focused value from the event target).\n const selection = React.useMemo<SegmentedControlSelection>(\n () => ({\n activationMode,\n disabled,\n selectedValue: resolvedValue,\n requestSelect: handleValueChange,\n }),\n [activationMode, disabled, resolvedValue, handleValueChange],\n )\n\n return (\n <ToggleGroupPrimitive.Root\n {...props}\n {...rootProps}\n ref={mergedRef}\n className={classNames(\n 'dsx-segmented-control',\n `dsx-segmented-control--${size}`,\n `dsx-segmented-control--${variant}`,\n fill && 'dsx-segmented-control--fill',\n className,\n )}\n type=\"single\"\n value={resolvedValue}\n onValueChange={handleValueChange}\n disabled={disabled}\n orientation={orientation}\n data-disabled={disabled || undefined}\n data-fill={fill || undefined}\n data-size={size}\n data-variant={variant}\n data-orientation={orientation}\n data-activation-mode={activationMode}\n >\n <SegmentedControlSelectionContext.Provider value={selection}>\n {children}\n </SegmentedControlSelectionContext.Provider>\n <span\n aria-hidden=\"true\"\n className=\"dsx-segmented-control__indicator\"\n style={\n orientation === 'vertical'\n ? {\n transform: `translateY(${indicator.y}px)`,\n height: indicator.height,\n transition: indicatorLive ? undefined : 'none',\n }\n : {\n transform: `translateX(${indicator.x}px)`,\n width: indicator.width,\n transition: indicatorLive ? undefined : 'none',\n }\n }\n />\n </ToggleGroupPrimitive.Root>\n )\n})\nSegmentedControlRoot.displayName = 'SegmentedControl'\n\ninterface SegmentedControlItemProps\n extends React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> {\n iconOnly?: boolean\n value: string\n}\n\nconst SegmentedControlItem = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive.Item>,\n SegmentedControlItemProps\n>(({ children, className, disabled, iconOnly = false, value, onFocus, ...props }, forwardedRef) => {\n const selection = React.useContext(SegmentedControlSelectionContext)\n\n const handleItemFocus: React.FocusEventHandler<React.ComponentRef<typeof ToggleGroupPrimitive.Item>> = (event) => {\n onFocus?.(event)\n\n if (!selection || selection.activationMode !== 'automatic') {\n return\n }\n\n if (selection.disabled || disabled || value === selection.selectedValue) {\n return\n }\n\n selection.requestSelect(value)\n }\n\n return (\n <ToggleGroupPrimitive.Item\n {...props}\n ref={forwardedRef}\n value={value}\n className={classNames('dsx-segmented-control__item', className)}\n disabled={disabled}\n data-disabled={disabled || undefined}\n data-icon-only={iconOnly || undefined}\n onFocus={handleItemFocus}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n})\nSegmentedControlItem.displayName = 'SegmentedControlItem'\n\nconst SegmentedControl: typeof SegmentedControlRoot & {\n Item: typeof SegmentedControlItem\n} = Object.assign(SegmentedControlRoot, {\n Item: SegmentedControlItem,\n})\n\nexport { SegmentedControl, SegmentedControlItem, SegmentedControlRoot }\nexport type { SegmentedControlItemProps, SegmentedControlRootProps }\n"],
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;AACvB,OAAO,gBAAgB;AACvB,YAAY,0BAA0B;AAEtC,SAAS,oBAAoB;AAC7B,SAAS,gCAAgC;
|
|
4
|
+
"sourcesContent": ["import * as React from 'react'\nimport classNames from 'classnames'\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group'\n\nimport { extractProps } from '../../_internal/helpers/extractProps'\nimport { segmentedControlPropDefs } from './segmentedControl.props'\n\nimport type { GetPropDefTypes } from '../../_internal/props/propDef'\n\ntype SegmentedControlRootOwnProps = GetPropDefTypes<typeof segmentedControlPropDefs> & {\n value?: string\n defaultValue?: string\n onValueChange?(value: string): void\n}\n\ntype SegmentedControlRootProps = React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>\n & SegmentedControlRootOwnProps\n\ntype SegmentedControlRootElement = React.ComponentRef<typeof ToggleGroupPrimitive.Root>\n\nfunction composeRefs<T>(...refs: Array<React.Ref<T> | undefined>) {\n return (node: T | null) => {\n for (const ref of refs) {\n if (!ref) {\n continue\n }\n\n if (typeof ref === 'function') {\n ref(node)\n continue\n }\n\n ;(ref as { current: T | null }).current = node\n }\n }\n}\n\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\ninterface SegmentedControlSelection {\n activationMode: 'manual' | 'automatic'\n disabled: boolean\n selectedValue: string | undefined\n requestSelect(value: string): void\n}\n\nconst SegmentedControlSelectionContext = React.createContext<SegmentedControlSelection | null>(null)\n\nconst SegmentedControlRoot = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive.Root>,\n SegmentedControlRootProps\n>(({ className, children, disabled = false, size = 'md', variant = 'default', orientation = 'horizontal', activationMode = 'manual', fill = false, value, defaultValue, onValueChange, ...props }, forwardedRef) => {\n const rootProps = extractProps(\n { className, disabled, orientation, size },\n segmentedControlPropDefs,\n )\n const innerRootRef = React.useRef<SegmentedControlRootElement | null>(null)\n const mergedRef = composeRefs(forwardedRef, innerRootRef)\n\n // Deselect guard (disallowEmptySelection): own the selection so the control\n // can never render with no active item. Radix fires \"\" when the active item\n // is clicked; the handler below swallows it and keeps the last value, and\n // the resolved value below keeps Radix controlled so its internal state can\n // never clear either.\n const [uncontrolledValue, setUncontrolledValue] = React.useState<string | undefined>(defaultValue)\n const resolvedValue = value ?? uncontrolledValue\n\n // Sliding indicator: Mantine-style measured pill rendered behind the active\n // item. The offset is a physical-pixel diff (active.left - root.left), which\n // is direction-agnostic and therefore RTL-correct without special-casing.\n // Measuring in layout effect positions the pill before first paint, and the\n // `indicatorLive` gate keeps `transition: none` until that first positioned\n // frame so mount never animates from the origin.\n const [indicator, setIndicator] = React.useState({ x: 0, y: 0, width: 0, height: 0 })\n const [indicatorLive, setIndicatorLive] = React.useState(false)\n\n const measureActive = React.useCallback((root: HTMLElement) => {\n const active = root.querySelector<HTMLElement>('[data-state=\"on\"]')\n\n if (!active) {\n return\n }\n\n const rootRect = root.getBoundingClientRect()\n const activeRect = active.getBoundingClientRect()\n // Border-box diffs are padding-box positioned: subtract the frame so the\n // wrapper never overshoots the content box (1-2px overflow summoned a\n // horizontal scrollbar on bordered variants). Add scroll offsets to convert\n // viewport coordinates into the indicator's content coordinates; otherwise\n // a scrolled selection paints behind the preceding item.\n setIndicator({\n x: activeRect.left - rootRect.left - root.clientLeft + root.scrollLeft,\n y: activeRect.top - rootRect.top - root.clientTop + root.scrollTop,\n width: activeRect.width,\n height: activeRect.height,\n })\n }, [])\n\n useIsomorphicLayoutEffect(() => {\n const root = innerRootRef.current\n\n if (!root) {\n return undefined\n }\n\n const measure = () => measureActive(root)\n\n measure()\n setIndicatorLive(true)\n\n if (typeof ResizeObserver === 'undefined') {\n return undefined\n }\n\n const observer = new ResizeObserver(measure)\n observer.observe(root)\n\n const active = root.querySelector('[data-state=\"on\"]')\n\n if (active) {\n observer.observe(active)\n }\n\n return () => observer.disconnect()\n }, [resolvedValue, measureActive])\n\n const handleValueChange = (nextValue: string) => {\n if (!nextValue) {\n return\n }\n\n if (value === undefined) {\n setUncontrolledValue(nextValue)\n }\n\n onValueChange?.(nextValue)\n }\n\n // Automatic activation: selection follows focus, so arrow-key navigation\n // selects without Enter. The focused value goes through the same guarded\n // setter, so focus can never empty the selection; landing on the\n // already-selected item is a no-op. Manual mode (default) ignores focus\n // and only selects on activation \u2014 use it when onValueChange drives side\n // effects that must not fire on focus. Each item reads this context in its\n // own onFocus (Radix strips the value prop from the DOM, so the root\n // cannot recover the focused value from the event target).\n const selection = React.useMemo<SegmentedControlSelection>(\n () => ({\n activationMode,\n disabled,\n selectedValue: resolvedValue,\n requestSelect: handleValueChange,\n }),\n [activationMode, disabled, resolvedValue, handleValueChange],\n )\n\n return (\n <ToggleGroupPrimitive.Root\n {...props}\n {...rootProps}\n ref={mergedRef}\n className={classNames(\n 'dsx-segmented-control',\n `dsx-segmented-control--${size}`,\n `dsx-segmented-control--${variant}`,\n fill && 'dsx-segmented-control--fill',\n className,\n )}\n type=\"single\"\n value={resolvedValue}\n onValueChange={handleValueChange}\n disabled={disabled}\n orientation={orientation}\n data-disabled={disabled || undefined}\n data-fill={fill || undefined}\n data-size={size}\n data-variant={variant}\n data-orientation={orientation}\n data-activation-mode={activationMode}\n >\n <SegmentedControlSelectionContext.Provider value={selection}>\n {children}\n </SegmentedControlSelectionContext.Provider>\n <span\n aria-hidden=\"true\"\n className=\"dsx-segmented-control__indicator\"\n style={\n orientation === 'vertical'\n ? {\n transform: `translateY(${indicator.y}px)`,\n height: indicator.height,\n transition: indicatorLive ? undefined : 'none',\n }\n : {\n transform: `translateX(${indicator.x}px)`,\n width: indicator.width,\n transition: indicatorLive ? undefined : 'none',\n }\n }\n />\n </ToggleGroupPrimitive.Root>\n )\n})\nSegmentedControlRoot.displayName = 'SegmentedControl'\n\ninterface SegmentedControlItemProps\n extends React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> {\n iconOnly?: boolean\n value: string\n}\n\nconst SegmentedControlItem = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive.Item>,\n SegmentedControlItemProps\n>(({ children, className, disabled, iconOnly = false, value, onFocus, ...props }, forwardedRef) => {\n const selection = React.useContext(SegmentedControlSelectionContext)\n\n const handleItemFocus: React.FocusEventHandler<React.ComponentRef<typeof ToggleGroupPrimitive.Item>> = (event) => {\n onFocus?.(event)\n\n if (!selection || selection.activationMode !== 'automatic') {\n return\n }\n\n if (selection.disabled || disabled || value === selection.selectedValue) {\n return\n }\n\n selection.requestSelect(value)\n }\n\n return (\n <ToggleGroupPrimitive.Item\n {...props}\n ref={forwardedRef}\n value={value}\n className={classNames('dsx-segmented-control__item', className)}\n disabled={disabled}\n data-disabled={disabled || undefined}\n data-icon-only={iconOnly || undefined}\n onFocus={handleItemFocus}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n})\nSegmentedControlItem.displayName = 'SegmentedControlItem'\n\nconst SegmentedControl: typeof SegmentedControlRoot & {\n Item: typeof SegmentedControlItem\n} = Object.assign(SegmentedControlRoot, {\n Item: SegmentedControlItem,\n})\n\nexport { SegmentedControl, SegmentedControlItem, SegmentedControlRoot }\nexport type { SegmentedControlItemProps, SegmentedControlRootProps }\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -19,18 +19,12 @@
|
|
|
19
19
|
margin-inline: var(--dsx-space-xs);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
.dsx-separator[data-orientation='horizontal'][data-size='sm'] { height: var(--dsx-border-width-sm); }
|
|
23
|
-
.dsx-separator[data-orientation='horizontal'][data-size='lg'] { height: var(--dsx-border-width-lg); }
|
|
24
|
-
|
|
25
|
-
.dsx-separator[data-orientation='vertical'][data-size='sm'] { width: var(--dsx-border-width-sm); }
|
|
26
|
-
.dsx-separator[data-orientation='vertical'][data-size='lg'] { width: var(--dsx-border-width-lg); }
|
|
27
|
-
|
|
28
22
|
.dsx-separator--decorative {
|
|
29
23
|
background: var(--dsx-color-separator-muted);
|
|
30
24
|
}
|
|
31
25
|
|
|
32
|
-
/*
|
|
33
|
-
|
|
26
|
+
/* Explicit accent rules use the decorative role; readable ink and selected
|
|
27
|
+
control indicators retain their own accent-indicator role. */
|
|
34
28
|
.dsx-separator[data-accent-color] {
|
|
35
|
-
background: var(--dsx-color-accent-
|
|
29
|
+
background: var(--dsx-color-accent-border);
|
|
36
30
|
}
|
|
@@ -174,7 +174,8 @@ function useSidebar() {
|
|
|
174
174
|
recoveryRailRef: { current: null },
|
|
175
175
|
rootRef: { current: null },
|
|
176
176
|
defaultSubmenuMode: "click",
|
|
177
|
-
submenuOpenOnActive: true
|
|
177
|
+
submenuOpenOnActive: true,
|
|
178
|
+
variant: "default"
|
|
178
179
|
};
|
|
179
180
|
}
|
|
180
181
|
function useMergedRef(...refs) {
|
|
@@ -256,6 +257,7 @@ const SidebarProvider = React.forwardRef((props, forwardedRef) => {
|
|
|
256
257
|
mobile = "sheet",
|
|
257
258
|
mobileBreakpoint = 768,
|
|
258
259
|
collapsible = "offcanvas",
|
|
260
|
+
variant = "default",
|
|
259
261
|
hoverExpand = false,
|
|
260
262
|
previewOpen = false,
|
|
261
263
|
nested = false,
|
|
@@ -338,6 +340,7 @@ const SidebarProvider = React.forwardRef((props, forwardedRef) => {
|
|
|
338
340
|
}
|
|
339
341
|
}, [isMobile]);
|
|
340
342
|
const isMobileMode = mobile !== "none" && isMobile;
|
|
343
|
+
const effectiveVariant = variant === "floating" && !isMobileMode ? "floating" : "default";
|
|
341
344
|
const canPreview = hoverExpand && collapsible === "icon" && !isMobileMode;
|
|
342
345
|
const effectivePreviewExpanded = canPreview && (previewExpanded || previewOpen);
|
|
343
346
|
const effectiveExpanded = persisted.expanded || effectivePreviewExpanded;
|
|
@@ -370,9 +373,10 @@ const SidebarProvider = React.forwardRef((props, forwardedRef) => {
|
|
|
370
373
|
recoveryRailRef,
|
|
371
374
|
rootRef,
|
|
372
375
|
defaultSubmenuMode,
|
|
373
|
-
submenuOpenOnActive
|
|
376
|
+
submenuOpenOnActive,
|
|
377
|
+
variant: effectiveVariant
|
|
374
378
|
}),
|
|
375
|
-
[effectiveExpanded, persisted.expanded, persisted.setExpanded, effectivePreviewExpanded, canPreview, mobileSheetOpen, isMobileMode, mobile, sidebarId, collapsible, defaultSubmenuMode, submenuOpenOnActive]
|
|
379
|
+
[effectiveExpanded, persisted.expanded, persisted.setExpanded, effectivePreviewExpanded, canPreview, mobileSheetOpen, isMobileMode, mobile, sidebarId, collapsible, defaultSubmenuMode, submenuOpenOnActive, effectiveVariant]
|
|
376
380
|
);
|
|
377
381
|
const nestedCounterRef = React.useRef(0);
|
|
378
382
|
const desktopChildren = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarNestedContext.Provider, { value: { counter: nestedCounterRef, isActive: nested }, children });
|
|
@@ -387,6 +391,7 @@ const SidebarProvider = React.forwardRef((props, forwardedRef) => {
|
|
|
387
391
|
"data-preview-expanded": effectivePreviewExpanded ? "true" : "false",
|
|
388
392
|
"data-pinned-state": getSidebarState(persisted.expanded),
|
|
389
393
|
"data-transitions-ready": transitionsReady ? "true" : "false",
|
|
394
|
+
"data-variant": effectiveVariant,
|
|
390
395
|
...providerProps,
|
|
391
396
|
suppressHydrationWarning: true,
|
|
392
397
|
children: [
|
|
@@ -440,7 +445,8 @@ const SidebarRoot = React.forwardRef((props, forwardedRef) => {
|
|
|
440
445
|
recoveryRailRef: { current: null },
|
|
441
446
|
rootRef: { current: null },
|
|
442
447
|
defaultSubmenuMode: "click",
|
|
443
|
-
submenuOpenOnActive: true
|
|
448
|
+
submenuOpenOnActive: true,
|
|
449
|
+
variant: "default"
|
|
444
450
|
};
|
|
445
451
|
const { className, ...sidebarProps } = (0, import_extractProps.extractProps)(
|
|
446
452
|
{
|
|
@@ -568,6 +574,7 @@ const SidebarRoot = React.forwardRef((props, forwardedRef) => {
|
|
|
568
574
|
"data-preview-expanded": "false",
|
|
569
575
|
"data-pinned-state": getSidebarState(value.pinnedExpanded),
|
|
570
576
|
"data-effect": effect,
|
|
577
|
+
"data-variant": value.variant,
|
|
571
578
|
"data-nested": isNestedInstance ? "true" : void 0,
|
|
572
579
|
"data-slot": "sidebar",
|
|
573
580
|
"aria-label": "Sidebar",
|
|
@@ -588,6 +595,7 @@ const SidebarRoot = React.forwardRef((props, forwardedRef) => {
|
|
|
588
595
|
"data-preview-expanded": value.previewExpanded ? "true" : "false",
|
|
589
596
|
"data-pinned-state": getSidebarState(value.pinnedExpanded),
|
|
590
597
|
"data-effect": effect,
|
|
598
|
+
"data-variant": value.variant,
|
|
591
599
|
"data-nested": isNestedInstance ? "true" : void 0,
|
|
592
600
|
"data-slot": "sidebar",
|
|
593
601
|
"aria-label": "Sidebar",
|