@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
|
@@ -29,15 +29,15 @@ An inbox-style notification surface that groups header, list, and footer regions
|
|
|
29
29
|
| `NotificationCenter.List` | `<div>` (or `Slot` host) | `dsx-notification-center__list` | Vertical list of items. Capped at `max-height: 400px` with `overflow-y: auto`. |
|
|
30
30
|
| `NotificationCenter.Footer` | `<div>` (or `Slot` host) | `dsx-notification-center__footer` | Footer row (typically a "View all" link or button). |
|
|
31
31
|
| `NotificationCenter.Item` | `<div>` (or `Slot` host) | `dsx-notification-center__item` (with `--unread` modifier when `unread` is true) | A single notification row. The CSS file ships helper classes `dsx-notification-center__item-title`, `dsx-notification-center__item-description`, and `dsx-notification-center__item-time` for the typical layout. |
|
|
32
|
-
| `NotificationCenter.Trigger` | `IconButton` +
|
|
32
|
+
| `NotificationCenter.Trigger` | `IconButton` containing Icon + Badge | `dsx-notification-center__trigger` and `dsx-notification-center__badge` | Bell-style trigger (size `sm`, variant `ghost`) with an accessible unread-count name. The badge sits at the bell's upper trailing corner (capped at `'99+'`); the host reserves the count's width and asChild preserves child/ref composition. |
|
|
33
33
|
|
|
34
34
|
**Internal layout:**
|
|
35
35
|
|
|
36
36
|
- The root is a flex column. The header sits at the top, the list fills the middle, the footer sits at the bottom.
|
|
37
|
-
- In the `popover` variant (the default), the root is sized `width:
|
|
37
|
+
- In the `popover` variant (the default), the root is sized `width: var(--dsx-sheet-width-sm), max-width: 100%`, has a `var(--dsx-rounded-lg)` radius, a 1px outline, an `var(--dsx-color-panel-translucent)` background, and a `var(--dsx-shadow-card-md)` shadow.
|
|
38
38
|
- In the `sidebar` variant, the root is full-width / full-height with a flat `var(--dsx-color-surface)` background and no border or shadow.
|
|
39
39
|
- `NotificationCenter.Item` rows have a `var(--dsx-space-md)` padding and a 1px bottom border. The last item drops the bottom border. The item background switches to `var(--dsx-color-surface-raised)` with a 1px primary left border when `unread` is true.
|
|
40
|
-
- `NotificationCenter.Trigger` is
|
|
40
|
+
- `NotificationCenter.Trigger` is an `inline-flex` button with intrinsic width and a 44px minimum width/height (`size-xl + space-xs`). The 16px badge is raised by 8px at the bell's trailing corner, with a 4px horizontal overlap and 8px host padding. Normal flow reserves the badge width; increasing counts grow toward the trailing edge rather than covering the bell. The badge uses rounded-full and label-small typography.
|
|
41
41
|
|
|
42
42
|
## Props contract
|
|
43
43
|
|
|
@@ -101,7 +101,7 @@ The trigger is a thin wrapper around `IconButton`; it forwards all of `IconButto
|
|
|
101
101
|
|
|
102
102
|
**Responsive behavior:**
|
|
103
103
|
|
|
104
|
-
- The component does not write
|
|
104
|
+
- The component does not write width media queries. The popover variant prefers `--dsx-sheet-width-sm` (320px) and caps to its parent width. Header actions wrap intrinsically; the list shrinks and scrolls. Use sidebar to fill a containing panel.
|
|
105
105
|
|
|
106
106
|
**Reduced motion:**
|
|
107
107
|
|
|
@@ -113,7 +113,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
113
113
|
|
|
114
114
|
| Property | Token | Role |
|
|
115
115
|
|---|---|---|
|
|
116
|
-
| Popover width | `
|
|
116
|
+
| Popover width | `var(--dsx-sheet-width-sm)` with max-width=100% | Preferred width, parent-contained |
|
|
117
117
|
| Popover border-radius | `var(--dsx-rounded-lg)` | Popover roundness |
|
|
118
118
|
| Popover border | `var(--dsx-border-width-sm) solid var(--dsx-color-outline)` | Popover edge |
|
|
119
119
|
| Popover background | `var(--dsx-color-panel-translucent)` | Popover surface |
|
|
@@ -138,10 +138,11 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
138
138
|
| Item time type ramp | `var(--dsx-typography-label-small-*)` | Item time text |
|
|
139
139
|
| Footer padding | `var(--dsx-space-sm)` | Footer gutter |
|
|
140
140
|
| Footer border-top | `var(--dsx-border-width-sm) solid var(--dsx-color-outline-variant)` | Footer separator |
|
|
141
|
-
| Trigger
|
|
142
|
-
|
|
|
143
|
-
| Badge
|
|
144
|
-
| Badge
|
|
141
|
+
| Trigger width / minimum dimensions | `auto` / `calc(var(--dsx-size-xl) + var(--dsx-space-xs))` | Count expands the 44px button |
|
|
142
|
+
| Trigger gap / inline padding | `0` / `var(--dsx-space-sm)` | Count corner containment |
|
|
143
|
+
| Badge placement | relative, raised by space-sm, negative space-xs inline margin | Upper trailing corner; reserves count width |
|
|
144
|
+
| Badge min-width | `var(--dsx-size-sm)` | Badge min width |
|
|
145
|
+
| Badge height | `var(--dsx-size-sm)` | Badge height |
|
|
145
146
|
| Badge radius | `var(--dsx-rounded-full)` | Badge roundness |
|
|
146
147
|
| Badge type ramp | `var(--dsx-typography-label-small-*)` | Badge text |
|
|
147
148
|
|
|
@@ -159,7 +160,7 @@ The component has no motion. The panel itself is static; transitions on open / c
|
|
|
159
160
|
|
|
160
161
|
- The root renders as a `<div>` without an explicit `role`. The canonical pattern is to wrap the panel in a `Popover` or `Sheet`; the wrapping surface is responsible for the modal / non-modal role and focus management.
|
|
161
162
|
- `NotificationCenter.List` is a plain `<div>`. If the consumer wants to expose the list as an `aria-live` region (e.g. for incoming notifications), they can add the `aria-live` and `aria-relevant` attributes manually.
|
|
162
|
-
- `NotificationCenter.Trigger` renders an
|
|
163
|
+
- `NotificationCenter.Trigger` renders an IconButton named “Notifications” at zero, or “Notifications, N unread” when positive. An explicit aria-label overrides this fallback. The visual badge is aria-hidden; it stays at the bell's upper trailing corner inside the trigger host.
|
|
163
164
|
|
|
164
165
|
**Keyboard:**
|
|
165
166
|
|
|
@@ -171,7 +172,7 @@ The component has no motion. The panel itself is static; transitions on open / c
|
|
|
171
172
|
**Focus:**
|
|
172
173
|
|
|
173
174
|
- The component does not render a focus ring on items or panels. Interactive content provides its own ring.
|
|
174
|
-
- The trigger button gets the standard `IconButton` focus ring.
|
|
175
|
+
- The trigger button gets the standard `IconButton` focus ring and a minimum 44px target containing both the bell and count.
|
|
175
176
|
|
|
176
177
|
**Reduced motion:**
|
|
177
178
|
|
|
@@ -180,7 +181,7 @@ The component has no motion. The panel itself is static; transitions on open / c
|
|
|
180
181
|
**Color and meaning:**
|
|
181
182
|
|
|
182
183
|
- Unread state is communicated by both the left border accent and the background lift. The text is unchanged; consumers can add an `aria-label="Unread"` to make the state screen-reader-accessible.
|
|
183
|
-
- The trigger badge is
|
|
184
|
+
- The trigger badge is an accent `Badge` (`variant="primary"`), using accent-track and accent-contrast from the inherited Theme. The label is the numeric count.
|
|
184
185
|
|
|
185
186
|
**Naming:**
|
|
186
187
|
|
|
@@ -210,7 +211,7 @@ The component has no motion. The panel itself is static; transitions on open / c
|
|
|
210
211
|
|
|
211
212
|
**Token story:**
|
|
212
213
|
|
|
213
|
-
- Renders the default panel inside a `Theme` wrapper with `accentColor="
|
|
214
|
+
- Renders the default panel inside a `Theme` wrapper with `accentColor="astral"` and `accentColor="spark"`. Asserts the unread item border tracks `--dsx-color-primary` and is not affected by the accent token.
|
|
214
215
|
|
|
215
216
|
**A11y story:**
|
|
216
217
|
|
|
@@ -228,7 +229,7 @@ The component has no motion. The panel itself is static; transitions on open / c
|
|
|
228
229
|
**Composes from:**
|
|
229
230
|
|
|
230
231
|
- `IconButton` (`src/components/iconButton`): the trigger renders a small ghost `IconButton`. The trigger forwards all `IconButton` props and defaults `aria-label="Notifications"`.
|
|
231
|
-
- `Badge` (`src/components/badge`): the trigger badge is a `Badge` with `variant="
|
|
232
|
+
- `Badge` (`src/components/badge`): the trigger badge is a `Badge` with `variant="primary"`, `size="sm"`. The count is rendered as plain text and is capped at `'99+'` for counts greater than 99.
|
|
232
233
|
- `@radix-ui/react-slot`: enables `asChild` on the root and on the named slots.
|
|
233
234
|
|
|
234
235
|
**Used by:**
|
|
@@ -244,3 +245,12 @@ The component has no motion. The panel itself is static; transitions on open / c
|
|
|
244
245
|
|
|
245
246
|
- App-owned data: notification text, timestamps, action handlers, and the unread count source.
|
|
246
247
|
- DS-owned visuals: token bindings, slot classes, unread state styling, and the trigger badge geometry.
|
|
248
|
+
|
|
249
|
+
## Overlay review fixture
|
|
250
|
+
|
|
251
|
+
`/docs/notification-center` shows native button rows that mark themselves read,
|
|
252
|
+
Mark all read, Reset inbox, a real Popover and trigger counts 0/1/5/150. Item
|
|
253
|
+
button hosts have width=100%, inherited typography, start-aligned wrapping text,
|
|
254
|
+
and hover/focus/pressed feedback. The list is min-height=0 and flexes; header
|
|
255
|
+
and footer remain nonshrinking. Payload, routing and read persistence are
|
|
256
|
+
consumer-owned. Trigger asChild preserves host/ref/click composition.
|
|
@@ -119,6 +119,8 @@ Rules:
|
|
|
119
119
|
|
|
120
120
|
## Playground demo spec
|
|
121
121
|
|
|
122
|
+
The live example uses a compact named icon action so the title remains readable in a 320px review frame, plus a title-only header. Header height and title ellipsis behavior remain canonical.
|
|
123
|
+
|
|
122
124
|
`PageHeader` is registered in `apps/playground/lib/registry/display.tsx` under the `page-header` key.
|
|
123
125
|
|
|
124
126
|
**Default story:**
|
|
@@ -363,3 +363,7 @@ Rules:
|
|
|
363
363
|
|
|
364
364
|
- App-owned data: the pagination strategy (offset / limit vs cursor), the page-size policy, the link generation, and the total count.
|
|
365
365
|
- DS-owned visuals: the `dsx-pagination` root class, the slot classes, the token bindings, and the `data-*` and ARIA attribute contract.
|
|
366
|
+
|
|
367
|
+
## Reconciliation stories
|
|
368
|
+
|
|
369
|
+
The live PaginationBar owns page and limit state, commits first/last/previous/next and page input, resets to page 1 when the limit changes, and shows a dense single-page boundary reference. Controls remain visible and wrap within narrow hosts.
|
|
@@ -15,7 +15,7 @@ depends_on:
|
|
|
15
15
|
|
|
16
16
|
## Purpose
|
|
17
17
|
|
|
18
|
-
A compact cluster of selectable pills rendered as a horizontal flex list. Use Pills for filter chips, multi-select chip rows, and segmented status indicators. For a single label surface, use `Badge`. For a lone removable label, use `Tag`. For mutually exclusive options rendered as a segmented control, use `SegmentedControl` or `ToggleGroup`. Cardinality rule (F6 brief): a row of chips with selection state is Pills; one chip with a remove action is a Tag.
|
|
18
|
+
A compact cluster of selectable pills rendered as a horizontal flex list. Use Pills for filter chips, multi-select chip rows, and segmented status indicators. For a single label surface, use `Badge`. For a lone removable label, use `Tag`. For mutually exclusive options rendered as a segmented control, use `SegmentedControl` or `ToggleGroup`. Cardinality rule (F6 brief): a row of chips with selection state is Pills; one chip with a remove action is a Tag. Selection is consumer-owned: a plain `Pill` is a list item, not an interactive selection control. Compose a button with `aria-pressed` or an existing Toggle inside the item when selection is required.
|
|
19
19
|
|
|
20
20
|
## Anatomy & slots
|
|
21
21
|
|
|
@@ -97,7 +97,7 @@ Each pill also accepts the standard HTML attributes for its host element. The `c
|
|
|
97
97
|
|
|
98
98
|
**Responsive behavior:**
|
|
99
99
|
|
|
100
|
-
- The component does not write `@media` rules. `size`, `variant`, `color`, and `radius` are single-value only.
|
|
100
|
+
- The component does not write `@media` rules. `size`, `variant`, `color`, and `radius` are single-value only. The cluster always wraps; each item is capped to the available width and breaks long labels. The remove button reserves a non-shrinking 24px square (`size-md`).
|
|
101
101
|
|
|
102
102
|
**Reduced motion:**
|
|
103
103
|
|
|
@@ -179,7 +179,7 @@ The component is static. Hover and focus states are instant.
|
|
|
179
179
|
|
|
180
180
|
**Naming:**
|
|
181
181
|
|
|
182
|
-
- The pill's `children` are the accessible name. The remove button has a
|
|
182
|
+
- The pill's `children` are the accessible name. The built-in remove button has a fixed `aria-label="Remove"`. Attributes on the `Pill` host do not override this child button. A consumer needing a contextual action name can compose its own labelled button inside `Pill` instead of using `removable`.
|
|
183
183
|
|
|
184
184
|
## Playground demo spec
|
|
185
185
|
|
|
@@ -205,7 +205,7 @@ The component is static. Hover and focus states are instant.
|
|
|
205
205
|
|
|
206
206
|
**Token story:**
|
|
207
207
|
|
|
208
|
-
- Renders inside a `Theme` wrapper with `accentColor="
|
|
208
|
+
- Renders inside a `Theme` wrapper with `accentColor="warp"` and `accentColor="ray"`. Pills with a `color` prop track `data-accent-color`; the story asserts the destructive and link pills do not flip color because they read from the error and primary palettes.
|
|
209
209
|
|
|
210
210
|
**A11y story:**
|
|
211
211
|
|
|
@@ -244,3 +244,12 @@ The component is static. Hover and focus states are instant.
|
|
|
244
244
|
|
|
245
245
|
- App-owned data: the cluster items, the per-pill labels, the selection state (for filter chips), and the dismiss callbacks.
|
|
246
246
|
- DS-owned visuals: token bindings, the modifier classes, the per-pill surface palette, and the remove button.
|
|
247
|
+
|
|
248
|
+
## Reconciliation stories
|
|
249
|
+
|
|
250
|
+
`Pill asChild` slots a single consumer host and appends its built-in removal
|
|
251
|
+
button inside that host. The host remains responsible for valid list semantics;
|
|
252
|
+
use a list item when placing it directly in `Pills`. Slotted selection controls
|
|
253
|
+
and removable slotted items must mount without a multiple-child Slot error.
|
|
254
|
+
|
|
255
|
+
The live example removes and resets actual filter labels, includes a long wrapping label, and demonstrates consumer-owned selection with labelled aria-pressed buttons inside list items. Static variants are labelled as visual references.
|
|
@@ -82,7 +82,7 @@ An interactive floating surface anchored to a trigger. `Popover` is more interac
|
|
|
82
82
|
|
|
83
83
|
**Close props:**
|
|
84
84
|
|
|
85
|
-
`Popover.Close` accepts the standard Radix `Close` props.
|
|
85
|
+
`Popover.Close` accepts the standard Radix `Close` props. It is an inline dismissal action, normally composed with `asChild` over a Button. It has no fixed corner position or icon-only dimensions; consumers own the label and placement. When composed over Button, its rest palette and border are preserved; Button state selectors own hover, pressed, disabled and high-contrast behavior.
|
|
86
86
|
|
|
87
87
|
Rules:
|
|
88
88
|
|
|
@@ -137,8 +137,7 @@ Rules:
|
|
|
137
137
|
| Description color | `var(--dsx-color-on-surface-variant)` | Body copy. |
|
|
138
138
|
| Content z-index | `calc(var(--dsx-z-index-modal, 90) + 1)` | Keeps portaled content above both sticky chrome and a modal-tier surface that owns its trigger. |
|
|
139
139
|
| Positioner z-index | `var(--dsx-z-index-popover, 60)` | Stacking for an explicitly composed positioner. |
|
|
140
|
-
| Close
|
|
141
|
-
| Close button radius | `var(--dsx-rounded-full)` | Round close. |
|
|
140
|
+
| Close minimum dimensions | `var(--dsx-size-md)` | 24px floor; composed Button supplies its own dimensions and radius. |
|
|
142
141
|
| Motion duration | `var(--dsx-motion-duration-*)` | Mount and exit. |
|
|
143
142
|
| Motion easing | `var(--dsx-motion-easing-*)` | Mount and exit. |
|
|
144
143
|
|
|
@@ -306,3 +305,11 @@ Rules:
|
|
|
306
305
|
- [ ] Token bindings resolve at the values `DESIGN.md` describes.
|
|
307
306
|
- [ ] Component is promoted to Main Component under `Components`.
|
|
308
307
|
- [ ] `penpotUtils.shapeStructure(board, 3)` matches the expected hierarchy.
|
|
308
|
+
|
|
309
|
+
## Overlay review containment
|
|
310
|
+
|
|
311
|
+
Content has one minmax(0, 1fr) grid track and wraps long words. This prevents
|
|
312
|
+
a child panel’s preferred width from enlarging an implicit track beyond the
|
|
313
|
+
viewport-capped surface and being clipped by overflow=hidden. The live example
|
|
314
|
+
sets and applies a real density preference; NotificationCenter also composes
|
|
315
|
+
inside this surface with proper Title and Description.
|
|
@@ -21,6 +21,15 @@ Consumers preserve heading order, stable IDs, meaningful image alt text, caption
|
|
|
21
21
|
|
|
22
22
|
The root can shrink within its parent. Long words, URLs, and identifiers wrap inside the reading measure; preformatted code and tables retain their explicit horizontal scrolling.
|
|
23
23
|
|
|
24
|
+
## Color roles
|
|
25
|
+
|
|
26
|
+
Inline code and preformatted blocks use `--dsx-code-soft-background`, the
|
|
27
|
+
same contextual neutral wash as soft Code (existing gray-alpha-3 effect).
|
|
28
|
+
A `pre > code` child stays transparent to avoid painting the wash twice.
|
|
29
|
+
Blockquotes use the 1px boundary-divider width with decorative accent-border
|
|
30
|
+
(light step 8 / dark step 11). Links retain readable accent-indicator ink.
|
|
31
|
+
Local Theme and gray changes recompute these paint aliases.
|
|
32
|
+
|
|
24
33
|
## Playground demo spec
|
|
25
34
|
|
|
26
35
|
Render all supported semantic elements, sanitized HTML, a wide table at mobile width, and authored blocks in the separate ArticleNodes stream.
|
|
@@ -13,7 +13,7 @@ depends_on:
|
|
|
13
13
|
|
|
14
14
|
## Purpose
|
|
15
15
|
|
|
16
|
-
A token-aligned QR code surface that renders a scannable `QRCodeSVG` from `qrcode.react` inside a styled container, with a size scale and high-contrast
|
|
16
|
+
A token-aligned QR code surface that renders a scannable `QRCodeSVG` from `qrcode.react` inside a styled container, with a fixed matrix size scale and a legacy CSS high-contrast hook. The component owns the shell and token binding; the app owns the encoded payload, error-correction level, and any persistence.
|
|
17
17
|
|
|
18
18
|
## Anatomy & slots
|
|
19
19
|
|
|
@@ -21,7 +21,7 @@ A token-aligned QR code surface that renders a scannable `QRCodeSVG` from `qrcod
|
|
|
21
21
|
|
|
22
22
|
**Slots:**
|
|
23
23
|
|
|
24
|
-
No slots: flat export. The component renders a single `<div>` host element (or a slotted child when `asChild` is set) that wraps the `QRCodeSVG` adapter output. The encoded value, the error-correction level, the margin, and the module colors are all props on the host. The component does not own a label, caption, or download action; consumers compose those around the surface.
|
|
24
|
+
No slots: flat export. The component renders a single role=img `<div>` host element (or a consumer-supplied slotted child when `asChild` is set) that wraps the `QRCodeSVG` adapter output. The encoded value, the error-correction level, the margin, and the module colors are all props on the host. The component does not own a label, caption, or download action; consumers compose those around the surface.
|
|
25
25
|
|
|
26
26
|
**Adapter host:** `QRCodeSVG` from `qrcode.react`. The adapter is wrapped in a styled container; the adapter is a `peerDependency` and the package does not own the rendered SVG paths.
|
|
27
27
|
|
|
@@ -30,9 +30,9 @@ No slots: flat export. The component renders a single `<div>` host element (or a
|
|
|
30
30
|
| Prop | Type | Default | Required | Description | Responsive |
|
|
31
31
|
|---|---|---|---|---|---|
|
|
32
32
|
| `value` | `string` | `undefined` | yes | String payload encoded into the QR modules. Required by `QRCodeSVG`; the host element also omits the native `value` attribute. | no |
|
|
33
|
-
| `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Painted size; selects one of the internal `sizeMap` values (`sm: 128`, `md: 192`, `lg: 256` px) and writes `data-size` plus the matching `dsx-qr-code-size-*` class. The SVG
|
|
33
|
+
| `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Painted size; selects one of the internal `sizeMap` values (`sm: 128`, `md: 192`, `lg: 256` px) and writes `data-size` plus the matching `dsx-qr-code-size-*` class. The SVG retains sizeMap dimensions, never flex-shrinks and overrides generic SVG max-width rules. Hosts narrower than the matrix must supply scrolling. | no |
|
|
34
34
|
| `level` | `'L' \| 'M' \| 'Q' \| 'H'` | `'M'` | no | Error-correction level passed through to `QRCodeSVG`. `L` is ~7%, `M` is ~15%, `Q` is ~25%, `H` is ~30% recovery. | no |
|
|
35
|
-
| `marginSize` | `number` | `0` | no | Quiet-zone margin passed through to `QRCodeSVG`. Default
|
|
35
|
+
| `marginSize` | `number` | `0` | no | Quiet-zone margin passed through to `QRCodeSVG`. Default 0 matches the adapter baseline; scan/share examples explicitly set 4 modules of quiet zone. | no |
|
|
36
36
|
| `fgColor` | `string` | `var(--dsx-color-on-surface)` | no | Module (foreground) color. Default falls back to the token CSS variable; pass an explicit value to override. | no |
|
|
37
37
|
| `bgColor` | `string` | `var(--dsx-color-surface-raised)` | no | Quiet-zone (background) color. Default falls back to the token CSS variable; pass an explicit value to override. | no |
|
|
38
38
|
| `asChild` | `boolean` | `false` | no | Renders the QR code container through `Slot` from `@radix-ui/react-slot`; consumer supplies the host element. | no |
|
|
@@ -60,7 +60,7 @@ Rules that apply to this row:
|
|
|
60
60
|
| `data-slot` | `qr-code` | (CSS hook only) | n/a |
|
|
61
61
|
| `data-high-contrast` | `true` | `.dsx-qr-code[data-high-contrast='true']` (hook only; runtime does not currently emit) | `qr-code.css` |
|
|
62
62
|
|
|
63
|
-
**Slot classes:** none. The inner
|
|
63
|
+
**Slot classes:** none. The inner svg is targeted by .dsx-qr-code svg; the legacy high-contrast hook targets first/last paths from qrcode.react 4.2. These are CSS hooks, not public slots.
|
|
64
64
|
|
|
65
65
|
**Responsive behavior:**
|
|
66
66
|
|
|
@@ -95,8 +95,8 @@ Every CSS value the component paints is a `var(--dsx-*)` token, with runtime fal
|
|
|
95
95
|
Rules:
|
|
96
96
|
|
|
97
97
|
- The runtime SVG dimensions (`128`, `192`, `256`) are NOT tokens; they are the adapter's own pixel size used to compute the QR matrix, painted verbatim. The CSS must never override the visible width and height with sizing tokens — that revision shipped 16/24/40px unscannable codes.
|
|
98
|
-
- The `fgColor` and `bgColor` props are passed as CSS variable references (`'var(--dsx-color-on-surface)'`, `'var(--dsx-color-surface-raised)'`) when the consumer does not pass explicit values. The adapter forwards
|
|
99
|
-
- The high-contrast
|
|
98
|
+
- The `fgColor` and `bgColor` props are passed as CSS variable references (`'var(--dsx-color-on-surface)'`, `'var(--dsx-color-surface-raised)'`) when the consumer does not pass explicit values. The adapter forwards CSS variable references into SVG fill attributes; ordinary theme inheritance resolves them. The legacy high-contrast CSS hook overrides paths when an app explicitly supplies its attribute.
|
|
99
|
+
- The high-contrast hook colors the first path as background and last path as modules, matching the installed adapter output. Adapter output changes require a fresh paint check.
|
|
100
100
|
|
|
101
101
|
## Motion contract
|
|
102
102
|
|
|
@@ -113,7 +113,7 @@ Rules:
|
|
|
113
113
|
|
|
114
114
|
**Roles:**
|
|
115
115
|
|
|
116
|
-
- `img` (QR code). The component renders a non-text graphic; consumers must supply an accessible name via `aria-label`, an `aria-labelledby` reference, or a sibling label. The runtime
|
|
116
|
+
- `img` (QR code). The component renders a non-text graphic; consumers must supply an accessible name via `aria-label`, an `aria-labelledby` reference, or a sibling label. The runtime sets role=img and forwards the consumer accessible name.
|
|
117
117
|
|
|
118
118
|
**Keyboard:**
|
|
119
119
|
|
|
@@ -129,7 +129,7 @@ Rules:
|
|
|
129
129
|
|
|
130
130
|
**Color and meaning:**
|
|
131
131
|
|
|
132
|
-
- The QR modules carry the data; the rendered colors are decorative. A high-contrast CSS hook is available
|
|
132
|
+
- The QR modules carry the data; the rendered colors are decorative. A legacy high-contrast CSS hook is available through a native data-high-contrast attribute; there is no highContrast prop. Apps own scanner compatibility and may explicitly select positive dark-on-light fgColor/bgColor for physical scan contexts.
|
|
133
133
|
|
|
134
134
|
**Naming:**
|
|
135
135
|
|
|
@@ -137,7 +137,7 @@ Rules:
|
|
|
137
137
|
|
|
138
138
|
## Playground demo spec
|
|
139
139
|
|
|
140
|
-
The
|
|
140
|
+
The /docs/qr-code registry supplies wrapped comparisons and a scrollable host for matrices wider than their container. It never shrinks the SVG to fit.
|
|
141
141
|
|
|
142
142
|
**Default story:**
|
|
143
143
|
|
|
@@ -157,11 +157,11 @@ The demo file at `demo_path` exposes the component to the playground. The playgr
|
|
|
157
157
|
|
|
158
158
|
**Token story:**
|
|
159
159
|
|
|
160
|
-
- Renders inside a `Theme` wrapper with
|
|
160
|
+
- Renders inside a `Theme` wrapper with the five supported accents (Rift, Warp, Ray, Astral, Spark). The QR module color is token-driven via the `fgColor` runtime default; the story asserts the modules track the `on-surface` token across all five accents.
|
|
161
161
|
|
|
162
162
|
**A11y story:**
|
|
163
163
|
|
|
164
|
-
- Uses `vitest-axe` against the rendered default QR code wrapped in a labelled element. Asserts there are no axe violations only when the host carries an accessible name.
|
|
164
|
+
- Uses `vitest-axe` against the rendered default QR code wrapped in a labelled element. Asserts there are no axe violations only when the host carries an accessible name. Unlabelled caller output does not satisfy the naming contract.
|
|
165
165
|
|
|
166
166
|
**Props exposed in the playground controls:**
|
|
167
167
|
|
|
@@ -56,18 +56,23 @@ Rules that apply to this row:
|
|
|
56
56
|
|
|
57
57
|
## Token mapping
|
|
58
58
|
|
|
59
|
-
Every CSS value the component paints is a CSS keyword or hard-code; there are no `var(--dsx-*)` tokens in `quote.css`.
|
|
59
|
+
Every CSS value the component paints is a CSS keyword or hard-code; there are no `var(--dsx-*)` tokens in `quote.css`. Italics are this package's visual choice; HTML quotation semantics come from `<q>` and its generated quotation marks.
|
|
60
60
|
|
|
61
61
|
| Property | Token | Role |
|
|
62
62
|
|---|---|---|
|
|
63
63
|
| `quotes` | `auto` (CSS keyword) | Lets the browser pick the right opening and closing quote glyphs from the document language. |
|
|
64
|
-
| Font style | `italic` (hard-coded) |
|
|
64
|
+
| Font style | `italic` (hard-coded) | Package convention for inline quotation, not an HTML requirement; consumer style can override it. |
|
|
65
65
|
|
|
66
66
|
Rules:
|
|
67
67
|
|
|
68
|
-
- `DESIGN.md` and the generated `tokens.css` do not define a `quotes` or italic typography token.
|
|
68
|
+
- `DESIGN.md` and the generated `tokens.css` do not define a `quotes` or italic typography token. Language-aware quotation marks follow native `<q>` behavior; the italic treatment is authored by this package.
|
|
69
69
|
- No raw color, spacing, or motion values are introduced by this component.
|
|
70
70
|
|
|
71
|
+
Large opening/closing quotation glyphs, icons and source captions belong to a
|
|
72
|
+
consumer's block quotation composition using `Blockquote`, not an inline
|
|
73
|
+
Quote variant. Em marks stress emphasis; Quote marks words quoted from a
|
|
74
|
+
source even though both share an italic treatment.
|
|
75
|
+
|
|
71
76
|
## Motion contract
|
|
72
77
|
|
|
73
78
|
| Region | Token | Default | Reduced |
|
|
@@ -108,7 +113,7 @@ Rules:
|
|
|
108
113
|
|
|
109
114
|
## Playground demo spec
|
|
110
115
|
|
|
111
|
-
`Quote` is registered in `apps/playground/lib/registry/typography.tsx` under the `quote` key. The registry entry imports `quotePropDefs` and renders the component with a sample inline quotation. Per-component route: `/docs/quote`.
|
|
116
|
+
`Quote` is registered in `apps/playground/lib/registry/typography.tsx` under the `quote` key. The registry entry imports `quotePropDefs` and renders the component with a sample inline quotation. Per-component route: `/docs/quote`. The live example uses English and Russian quotations, a nested quote and a slotted span.
|
|
112
117
|
|
|
113
118
|
**Default story:**
|
|
114
119
|
|
|
@@ -17,25 +17,25 @@ A resizable panel group with draggable handles. The package owns the shell, the
|
|
|
17
17
|
|
|
18
18
|
## Anatomy & slots
|
|
19
19
|
|
|
20
|
-
**Parent:** `Resizable` (alias of `
|
|
20
|
+
**Parent:** `Resizable` (alias of `ResizablePanelGroup`).
|
|
21
21
|
|
|
22
22
|
**Slots:**
|
|
23
23
|
|
|
24
24
|
| Slot | Element | Renders | Notes |
|
|
25
25
|
|---|---|---|---|
|
|
26
|
-
| `
|
|
26
|
+
| `ResizablePanelGroup` (alias `Resizable`) | `<div>` (the `Group` from `react-resizable-panels`) | `dsx-resizable-group` | Hosts the orientation attribute and the panel layout. Carries `data-orientation` and `data-slot="resizable-group"`. |
|
|
27
27
|
| `Resizable.Panel` | `<div>` (the `Panel` from `react-resizable-panels`) | `dsx-resizable-panel` | One resizable child. Carries `data-slot="resizable-panel"`. |
|
|
28
28
|
| `Resizable.Handle` | `<div>` (the `Separator` from `react-resizable-panels`) | `dsx-resizable-handle` | The draggable separator between two panels. Carries `data-slot="resizable-handle"` and `data-grip="true"` when `withGrip` is set. When `withGrip` is set, a child `<div>` with `dsx-resizable-handle__grip` is rendered. |
|
|
29
29
|
|
|
30
30
|
**Adapter host:**
|
|
31
31
|
|
|
32
|
-
`
|
|
32
|
+
`ResizablePanelGroup` wraps the `Group` from `react-resizable-panels`. The package translates the DS `direction` prop (`'horizontal'` or `'vertical'`) into the adapter's `orientation` prop. The package also passes `elementRef` through `composeRefs` so the `forwardRef` and any app-supplied ref both see the host element.
|
|
33
33
|
|
|
34
34
|
`Resizable.Handle` wraps the `Separator` from `react-resizable-panels`. `withGrip` adds a visual grip indicator inside the handle; the adapter still owns the drag interaction and the keyboard arrow support.
|
|
35
35
|
|
|
36
36
|
## Props contract
|
|
37
37
|
|
|
38
|
-
### `
|
|
38
|
+
### `ResizablePanelGroup` props
|
|
39
39
|
|
|
40
40
|
| Prop | Type | Default | Required | Description | Responsive |
|
|
41
41
|
|---|---|---|---|---|---|
|
|
@@ -43,7 +43,7 @@ A resizable panel group with draggable handles. The package owns the shell, the
|
|
|
43
43
|
| `direction` | `'horizontal' \| 'vertical'` | `'horizontal'` | no | Drives `data-orientation` on the group. Mapped to the adapter's `orientation` prop. The CSS file uses the inline `[data-orientation='…']` selectors and the modifier `dsx-resizable-group-direction-horizontal` / `dsx-resizable-group-direction-vertical` class. | no |
|
|
44
44
|
| `className` | `string` | `undefined` | no | Extra classes appended to `dsx-resizable-group`. | no |
|
|
45
45
|
|
|
46
|
-
The group also accepts the full `GroupProps` from `react-resizable-panels` minus `orientation` (which is replaced by the DS `direction` prop) and `elementRef` (which the package routes through `composeRefs`). `
|
|
46
|
+
The group also accepts the full `GroupProps` from `react-resizable-panels` minus `orientation` (which is replaced by the DS `direction` prop) and `elementRef` (which the package routes through `composeRefs`). `id`, `defaultLayout`, `onLayoutChange`, `onLayoutChanged`, `disabled`, `groupRef` and `resizeTargetMinimumSize` follow the installed v4 adapter contract. Persistence belongs to the app; v3-only props are not promised.
|
|
47
47
|
|
|
48
48
|
### `Resizable.Panel` props
|
|
49
49
|
|
|
@@ -52,7 +52,7 @@ The group also accepts the full `GroupProps` from `react-resizable-panels` minus
|
|
|
52
52
|
| `asChild` | `boolean` | `false` | no | Extracted from prop defs but the `Panel` host always renders a `<div>`. The prop is reserved for future use. | no |
|
|
53
53
|
| `className` | `string` | `undefined` | no | Extra classes appended to `dsx-resizable-panel`. | no |
|
|
54
54
|
|
|
55
|
-
The panel also accepts the full `PanelProps` from `react-resizable-panels` minus `elementRef`. `defaultSize`, `minSize`, `maxSize`, `collapsible`, `collapsedSize`, `
|
|
55
|
+
The panel also accepts the full `PanelProps` from `react-resizable-panels` minus `elementRef`. `defaultSize`, `minSize`, `maxSize`, `collapsible`, `collapsedSize`, `onResize`, `id`, `panelRef` and `groupResizeBehavior` follow the installed v4 adapter contract. Use explicit percentage strings such as "50%"; numeric sizes represent pixels.
|
|
56
56
|
|
|
57
57
|
### `Resizable.Handle` props
|
|
58
58
|
|
|
@@ -62,7 +62,7 @@ The panel also accepts the full `PanelProps` from `react-resizable-panels` minus
|
|
|
62
62
|
| `withGrip` | `boolean` | `false` | no | When `true`, renders a `dsx-resizable-handle__grip` indicator inside the handle and sets `data-grip="true"`. The CSS file uses the `data-grip` attribute and the `dsx-resizable-handle-grip` modifier class to color the indicator. | no |
|
|
63
63
|
| `className` | `string` | `undefined` | no | Extra classes appended to `dsx-resizable-handle`. | no |
|
|
64
64
|
|
|
65
|
-
The handle also accepts the full `SeparatorProps` from `react-resizable-panels` minus `elementRef` and `withGrip`. `id`, `disabled
|
|
65
|
+
The handle also accepts the full `SeparatorProps` from `react-resizable-panels` minus `elementRef` and `withGrip`. `id`, `disabled` and native attributes follow SeparatorProps. Group resizeTargetMinimumSize controls adapter hit geometry; v3 hitAreaMargins is not promised.
|
|
66
66
|
|
|
67
67
|
## CSS class contract
|
|
68
68
|
|
|
@@ -96,12 +96,12 @@ The handle also accepts the full `SeparatorProps` from `react-resizable-panels`
|
|
|
96
96
|
|
|
97
97
|
**Responsive behavior:**
|
|
98
98
|
|
|
99
|
-
- The component
|
|
99
|
+
- The component has no viewport-width media rules. None of its prop defs are `responsive: true`.
|
|
100
100
|
- The component's CSS file is breakpoint-agnostic.
|
|
101
101
|
|
|
102
102
|
**Reduced motion:**
|
|
103
103
|
|
|
104
|
-
- The handle background and the grip indicator transitions use `var(--dsx-motion-duration-fast)` and `var(--dsx-motion-easing-standard)`.
|
|
104
|
+
- The handle background and the grip indicator transitions use `var(--dsx-motion-duration-fast)` and `var(--dsx-motion-easing-standard)`. Its own `prefers-reduced-motion` gate disables handle and track transitions. The adapter's drag interaction is layout-only and does not animate.
|
|
105
105
|
|
|
106
106
|
## Token mapping
|
|
107
107
|
|
|
@@ -119,7 +119,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
119
119
|
| Handle active background | `var(--dsx-color-high-contrast-container)` | Active affordance. |
|
|
120
120
|
| Handle cursor | `col-resize` (horizontal), `row-resize` (vertical) | Cursor. |
|
|
121
121
|
| Handle touch action | `none` | Prevent browser scroll on touch. |
|
|
122
|
-
| Handle thickness | `var(--dsx-resizable-handle-thickness-active)` |
|
|
122
|
+
| Handle thickness | `max(var(--dsx-size-md), var(--dsx-resizable-handle-thickness-active))` | Actual hit box, at least 24px; the painted line stays thin. |
|
|
123
123
|
| Handle track | `var(--dsx-border-width-md, var(--dsx-resizable-handle-thickness))` | Inactive track thickness. |
|
|
124
124
|
| Handle track color | `var(--dsx-control-separator-color-strong)` | Track color. |
|
|
125
125
|
| Handle track hover color | `var(--dsx-color-high-contrast)` | Hover color. |
|
|
@@ -127,6 +127,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
127
127
|
| Grip width | `var(--dsx-resizable-grip-width)` | Grip indicator width. |
|
|
128
128
|
| Grip height | `var(--dsx-resizable-grip-height)` | Grip indicator height. |
|
|
129
129
|
| Grip radius | `var(--dsx-resizable-grip-radius)` | Grip indicator roundness. |
|
|
130
|
+
| Handle z-index | `var(--dsx-z-index-elevated)` | Preserve the entire target above pane content. |
|
|
130
131
|
| Grip z-index | `var(--dsx-z-index-elevated)` | Grip stack order. |
|
|
131
132
|
| Grip horizontal size | `var(--dsx-space-xs)` × `var(--dsx-size-xs)` | Horizontal handle grip dimensions. |
|
|
132
133
|
| Grip vertical size | `var(--dsx-size-xs)` × `var(--dsx-space-xs)` | Vertical handle grip dimensions. |
|
|
@@ -136,8 +137,8 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
136
137
|
|
|
137
138
|
| Region | Token | Default | Reduced |
|
|
138
139
|
|---|---|---|---|
|
|
139
|
-
| Handle background | `var(--dsx-motion-duration-fast)` + `var(--dsx-motion-easing-standard)` | Hover and active background transition. |
|
|
140
|
-
| Handle track and grip | `var(--dsx-motion-duration-fast)` + `var(--dsx-motion-easing-standard)` | Track color, grip background, and transform transition. |
|
|
140
|
+
| Handle background | `var(--dsx-motion-duration-fast)` + `var(--dsx-motion-easing-standard)` | Hover and active background transition. | Own CSS disables handle transitions under prefers-reduced-motion. |
|
|
141
|
+
| Handle track and grip | `var(--dsx-motion-duration-fast)` + `var(--dsx-motion-easing-standard)` | Track color, grip background, and transform transition. | Own CSS disables handle transitions under prefers-reduced-motion. |
|
|
141
142
|
|
|
142
143
|
## Accessibility
|
|
143
144
|
|
|
@@ -152,20 +153,20 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
152
153
|
|---|---|
|
|
153
154
|
| `Tab` | Moves focus to the next focusable element. The handle is focusable by default. |
|
|
154
155
|
| `Enter`, `Space` | Toggles the panel state when the handle supports collapsing. |
|
|
155
|
-
| `Arrow keys` | The adapter handles arrow-key
|
|
156
|
+
| `Arrow keys` | The installed v4 adapter handles arrow-key resizing. |
|
|
156
157
|
| `Home`, `End` | The adapter collapses or expands the panel to its minimum or maximum size when supported. |
|
|
157
158
|
|
|
158
159
|
**Focus:**
|
|
159
160
|
|
|
160
|
-
- The
|
|
161
|
+
- The DS paints `var(--dsx-shadow-focus-ring)` on `.dsx-resizable-handle:focus-visible`. The handle stays above adjacent pane content so its full target receives input.
|
|
161
162
|
|
|
162
163
|
**Reduced motion:**
|
|
163
164
|
|
|
164
|
-
- The handle transitions
|
|
165
|
+
- The handle and track transitions are disabled by their own `prefers-reduced-motion` rules. The drag interaction is layout-only and does not animate.
|
|
165
166
|
|
|
166
167
|
**Color and meaning:**
|
|
167
168
|
|
|
168
|
-
- The handle and the grip use semantic tokens (`var(--dsx-color-high-contrast-container)` and `var(--dsx-color-on-surface-variant)`) so light and dark themes are covered. The track
|
|
169
|
+
- The handle and the grip use semantic tokens (`var(--dsx-color-high-contrast-container)` and `var(--dsx-color-on-surface-variant)`) so light and dark themes are covered. The thin track keeps its thickness on hover; semantic color changes communicate the drag affordance.
|
|
169
170
|
|
|
170
171
|
**Naming:**
|
|
171
172
|
|
|
@@ -198,6 +199,13 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
198
199
|
|
|
199
200
|
`withGrip` is wired through the composition story rather than the prop table.
|
|
200
201
|
|
|
202
|
+
## Review examples
|
|
203
|
+
|
|
204
|
+
The horizontal workspace preserves scrollable outline and draft panes, minimum
|
|
205
|
+
20% panel sizes and a live proportions summary. The vertical example exercises
|
|
206
|
+
its own resize axis. Handles have visible keyboard focus; both directions
|
|
207
|
+
retain a 24px minimum box while the visual divider remains thin.
|
|
208
|
+
|
|
201
209
|
## Wiring notes
|
|
202
210
|
|
|
203
211
|
**Composes from:**
|
|
@@ -212,8 +220,8 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
212
220
|
**State boundaries:**
|
|
213
221
|
|
|
214
222
|
- Owned by this component: the DS shell class wiring, the `direction` to `orientation` translation, the `withGrip` rendering, the `data-orientation` and `data-slot` attributes, and the `composeRefs` helper.
|
|
215
|
-
- Owned by the adapter: panel math, drag interaction, keyboard arrow resize, the
|
|
216
|
-
- Owned by the consumer: the number of panels, the `defaultSize`, `minSize`, `maxSize`, and `collapsible` configuration, the content of each panel, the
|
|
223
|
+
- Owned by the adapter: panel math, drag interaction, keyboard arrow resize, the percentage bookkeeping, and the `role="separator"` semantics.
|
|
224
|
+
- Owned by the consumer: the number of panels, the `defaultSize`, `minSize`, `maxSize`, and `collapsible` configuration, the content of each panel, the adapter layout callbacks, and any business policy that wraps the layout state.
|
|
217
225
|
|
|
218
226
|
**Boundary rules:**
|
|
219
227
|
|