@d4gger/design-system 3.0.1 → 4.0.1
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/brand-effects.css +5 -3
- package/dist/components/accordion.css +9 -2
- package/dist/components/alert/Alert.cjs +27 -9
- package/dist/components/alert/Alert.cjs.map +2 -2
- package/dist/components/alert/Alert.d.cts +6 -0
- package/dist/components/alert/Alert.d.cts.map +1 -1
- package/dist/components/alert/Alert.d.mts +6 -0
- package/dist/components/alert/Alert.d.mts.map +1 -1
- package/dist/components/alert/Alert.d.ts +6 -0
- package/dist/components/alert/Alert.d.ts.map +1 -1
- package/dist/components/alert/Alert.js +28 -10
- package/dist/components/alert/Alert.js.map +2 -2
- package/dist/components/alert.css +73 -3
- 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 +140 -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 +9 -1
- package/dist/components/code.css +29 -13
- package/dist/components/collapsible/Collapsible.cjs +14 -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 +14 -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/dialog.css +1 -1
- 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/environment-ribbon.css +73 -0
- package/dist/components/environmentRibbon/EnvironmentRibbon.cjs +69 -0
- package/dist/components/environmentRibbon/EnvironmentRibbon.cjs.map +7 -0
- package/dist/components/environmentRibbon/EnvironmentRibbon.d.cts +15 -0
- package/dist/components/environmentRibbon/EnvironmentRibbon.d.cts.map +1 -0
- package/dist/components/environmentRibbon/EnvironmentRibbon.d.mts +15 -0
- package/dist/components/environmentRibbon/EnvironmentRibbon.d.mts.map +1 -0
- package/dist/components/environmentRibbon/EnvironmentRibbon.d.ts +15 -0
- package/dist/components/environmentRibbon/EnvironmentRibbon.d.ts.map +1 -0
- package/dist/components/environmentRibbon/EnvironmentRibbon.js +39 -0
- package/dist/components/environmentRibbon/EnvironmentRibbon.js.map +7 -0
- package/dist/components/environmentRibbon/environmentRibbon.props.cjs +39 -0
- package/dist/components/environmentRibbon/environmentRibbon.props.cjs.map +7 -0
- package/dist/components/environmentRibbon/environmentRibbon.props.d.cts +18 -0
- package/dist/components/environmentRibbon/environmentRibbon.props.d.cts.map +1 -0
- package/dist/components/environmentRibbon/environmentRibbon.props.d.mts +18 -0
- package/dist/components/environmentRibbon/environmentRibbon.props.d.mts.map +1 -0
- package/dist/components/environmentRibbon/environmentRibbon.props.d.ts +18 -0
- package/dist/components/environmentRibbon/environmentRibbon.props.d.ts.map +1 -0
- package/dist/components/environmentRibbon/environmentRibbon.props.js +19 -0
- package/dist/components/environmentRibbon/environmentRibbon.props.js.map +7 -0
- package/dist/components/field.css +5 -0
- 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 +19 -0
- package/dist/components/icon/Icon.cjs.map +2 -2
- package/dist/components/icon/Icon.d.cts +29 -1
- package/dist/components/icon/Icon.d.cts.map +1 -1
- package/dist/components/icon/Icon.d.mts +29 -1
- package/dist/components/icon/Icon.d.mts.map +1 -1
- package/dist/components/icon/Icon.d.ts +29 -1
- package/dist/components/icon/Icon.d.ts.map +1 -1
- package/dist/components/icon/Icon.js +25 -0
- package/dist/components/icon/Icon.js.map +2 -2
- package/dist/components/icon/icons.cjs +14 -0
- package/dist/components/icon/icons.cjs.map +2 -2
- package/dist/components/icon/icons.d.cts +35 -0
- package/dist/components/icon/icons.d.cts.map +1 -1
- package/dist/components/icon/icons.d.mts +35 -0
- package/dist/components/icon/icons.d.mts.map +1 -1
- package/dist/components/icon/icons.d.ts +35 -0
- package/dist/components/icon/icons.d.ts.map +1 -1
- package/dist/components/icon/icons.js +14 -0
- package/dist/components/icon/icons.js.map +2 -2
- package/dist/components/index.cjs +2 -0
- package/dist/components/index.cjs.map +2 -2
- package/dist/components/index.d.cts +2 -0
- package/dist/components/index.d.cts.map +1 -1
- package/dist/components/index.d.mts +2 -0
- package/dist/components/index.d.mts.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -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 +58 -10
- package/dist/components/notificationCenter/NotificationCenter.cjs +27 -17
- package/dist/components/notificationCenter/NotificationCenter.cjs.map +2 -2
- package/dist/components/notificationCenter/NotificationCenter.d.cts +2 -0
- package/dist/components/notificationCenter/NotificationCenter.d.cts.map +1 -1
- package/dist/components/notificationCenter/NotificationCenter.d.mts +2 -0
- package/dist/components/notificationCenter/NotificationCenter.d.mts.map +1 -1
- package/dist/components/notificationCenter/NotificationCenter.d.ts +2 -0
- package/dist/components/notificationCenter/NotificationCenter.d.ts.map +1 -1
- package/dist/components/notificationCenter/NotificationCenter.js +28 -18
- package/dist/components/notificationCenter/NotificationCenter.js.map +2 -2
- package/dist/components/page-header.css +21 -0
- package/dist/components/pageHeader/PageHeader.cjs +10 -2
- package/dist/components/pageHeader/PageHeader.cjs.map +2 -2
- package/dist/components/pageHeader/PageHeader.d.cts.map +1 -1
- package/dist/components/pageHeader/PageHeader.d.mts.map +1 -1
- package/dist/components/pageHeader/PageHeader.d.ts.map +1 -1
- package/dist/components/pageHeader/PageHeader.js +10 -2
- package/dist/components/pageHeader/PageHeader.js.map +2 -2
- package/dist/components/pageHeader/pageHeader.props.cjs +7 -1
- package/dist/components/pageHeader/pageHeader.props.cjs.map +2 -2
- package/dist/components/pageHeader/pageHeader.props.d.cts +5 -0
- package/dist/components/pageHeader/pageHeader.props.d.cts.map +1 -1
- package/dist/components/pageHeader/pageHeader.props.d.mts +5 -0
- package/dist/components/pageHeader/pageHeader.props.d.mts.map +1 -1
- package/dist/components/pageHeader/pageHeader.props.d.ts +5 -0
- package/dist/components/pageHeader/pageHeader.props.d.ts.map +1 -1
- package/dist/components/pageHeader/pageHeader.props.js +7 -1
- package/dist/components/pageHeader/pageHeader.props.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 +17 -5
- package/dist/components/sidebar/Sidebar.cjs.map +2 -2
- package/dist/components/sidebar/Sidebar.d.cts +12 -1
- package/dist/components/sidebar/Sidebar.d.cts.map +1 -1
- package/dist/components/sidebar/Sidebar.d.mts +12 -1
- package/dist/components/sidebar/Sidebar.d.mts.map +1 -1
- package/dist/components/sidebar/Sidebar.d.ts +12 -1
- package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
- package/dist/components/sidebar/Sidebar.js +17 -5
- 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 +86 -13
- 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 +2 -0
- package/dist/docs/README.md +2 -0
- package/dist/docs/component-contract.md +7 -4
- package/dist/docs/component-index.json +17 -1
- package/dist/docs/components/accordion.md +5 -36
- package/dist/docs/components/alert.md +44 -17
- 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 +10 -3
- package/dist/docs/components/code.md +33 -220
- package/dist/docs/components/collapsible.md +16 -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 +4 -2
- 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/environment-ribbon.md +126 -0
- package/dist/docs/components/field.md +2 -0
- 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/icon.md +1 -0
- 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 +30 -15
- package/dist/docs/components/page-header.md +20 -6
- 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 +34 -9
- 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/docs/consumer-guide.md +11 -4
- 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 +1921 -1349
- package/dist/tokens.css +346 -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 count hangs on the bell's upper trailing corner (capped at `'99+'`, or at `{max}+` when `max` is set) and the hover highlight covers the bell only; 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 ordinary `IconButton` (size `sm`, 32px, the same shape as every other header icon), so its hover highlight covers the bell only (G-20, 2026-10-05; it used to be a 59×44 pill that wrapped the count). The count is absolutely positioned on the bell's upper trailing corner: raised by `space-sm`, starting `space-xs` past the glyph's centre, so a constant 4px of it overlaps the bell and wider counts grow toward the trailing edge. The trigger reserves `space-md` after itself for the count, always, so the controls after it do not move when a count appears. A pseudo-element keeps the hit area at 44px (`size-xl + space-xs`) around the 32px highlight. The badge uses rounded-full and label-small typography.
|
|
41
41
|
|
|
42
42
|
## Props contract
|
|
43
43
|
|
|
@@ -64,7 +64,8 @@ These three slots accept only `asChild` plus the standard HTML attribute surface
|
|
|
64
64
|
|
|
65
65
|
| Prop | Type | Default | Required | Description | Responsive |
|
|
66
66
|
|---|---|---|---|---|---|
|
|
67
|
-
| `unreadCount` | `number` | `undefined` | no | Unread count rendered as a `Badge` (capped at `'99+'`). The badge is only rendered when the count is greater than zero. | no |
|
|
67
|
+
| `unreadCount` | `number` | `undefined` | no | Unread count rendered as a `Badge` (capped at `max`, `'99+'` by default). The badge is only rendered when the count is greater than zero. | no |
|
|
68
|
+
| `max` | `number` | `99` | no | Largest count the badge draws; above it the badge reads `{max}+` (core's bell uses `9`). A value that is not a positive whole number falls back to `99`. The accessible name keeps the real count (“Notifications, 12 unread”), and `max` is not written to the DOM. Follows MUI `Badge` `max` and Ant Design `overflowCount`. | no |
|
|
68
69
|
| `aria-label` | `string` | `'Notifications'` | no | Accessible name on the underlying `IconButton`. Override to localize or to disambiguate when more than one trigger is on the page. | no |
|
|
69
70
|
| `asChild` | `boolean` | `false` | no | Polymorphic host. | no |
|
|
70
71
|
|
|
@@ -101,7 +102,7 @@ The trigger is a thin wrapper around `IconButton`; it forwards all of `IconButto
|
|
|
101
102
|
|
|
102
103
|
**Responsive behavior:**
|
|
103
104
|
|
|
104
|
-
- The component does not write
|
|
105
|
+
- 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
106
|
|
|
106
107
|
**Reduced motion:**
|
|
107
108
|
|
|
@@ -113,7 +114,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
113
114
|
|
|
114
115
|
| Property | Token | Role |
|
|
115
116
|
|---|---|---|
|
|
116
|
-
| Popover width | `
|
|
117
|
+
| Popover width | `var(--dsx-sheet-width-sm)` with max-width=100% | Preferred width, parent-contained |
|
|
117
118
|
| Popover border-radius | `var(--dsx-rounded-lg)` | Popover roundness |
|
|
118
119
|
| Popover border | `var(--dsx-border-width-sm) solid var(--dsx-color-outline)` | Popover edge |
|
|
119
120
|
| Popover background | `var(--dsx-color-panel-translucent)` | Popover surface |
|
|
@@ -138,10 +139,12 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
138
139
|
| Item time type ramp | `var(--dsx-typography-label-small-*)` | Item time text |
|
|
139
140
|
| Footer padding | `var(--dsx-space-sm)` | Footer gutter |
|
|
140
141
|
| Footer border-top | `var(--dsx-border-width-sm) solid var(--dsx-color-outline-variant)` | Footer separator |
|
|
141
|
-
| Trigger
|
|
142
|
-
|
|
|
143
|
-
|
|
|
144
|
-
| Badge
|
|
142
|
+
| Trigger size | the `IconButton` `sm` size (32px), no override | An ordinary header icon button; the highlight covers the bell only (G-20) |
|
|
143
|
+
| Trigger inline-end margin | `var(--dsx-space-md)` | Reserves the room the hanging count needs, always, so the controls after the bell do not move when a count appears |
|
|
144
|
+
| Trigger hit area | `::after`, `inset: calc((100% - (var(--dsx-size-xl) + var(--dsx-space-xs))) / 2)` | A 44px target around the 32px highlight (the inset shrinks to nothing on a larger size) |
|
|
145
|
+
| Badge placement | absolute, `top: calc(-1 * var(--dsx-space-sm))`, `inset-inline-start: calc(50% + var(--dsx-space-xs))` | Upper trailing corner, a constant 4px overlap with the bell glyph; wider counts grow toward the trailing edge |
|
|
146
|
+
| Badge min-width | `var(--dsx-size-sm)` | Badge min width |
|
|
147
|
+
| Badge height | `var(--dsx-size-sm)` | Badge height |
|
|
145
148
|
| Badge radius | `var(--dsx-rounded-full)` | Badge roundness |
|
|
146
149
|
| Badge type ramp | `var(--dsx-typography-label-small-*)` | Badge text |
|
|
147
150
|
|
|
@@ -159,7 +162,7 @@ The component has no motion. The panel itself is static; transitions on open / c
|
|
|
159
162
|
|
|
160
163
|
- 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
164
|
- `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
|
|
165
|
+
- `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 hangs on the bell's upper trailing corner.
|
|
163
166
|
|
|
164
167
|
**Keyboard:**
|
|
165
168
|
|
|
@@ -171,7 +174,7 @@ The component has no motion. The panel itself is static; transitions on open / c
|
|
|
171
174
|
**Focus:**
|
|
172
175
|
|
|
173
176
|
- 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.
|
|
177
|
+
- The trigger button gets the standard `IconButton` focus ring. Its visible box is 32px; a pseudo-element extends the hit area to 44px around the bell. The count hangs outside the box and is not part of the target (it is aria-hidden; the accessible name carries the number).
|
|
175
178
|
|
|
176
179
|
**Reduced motion:**
|
|
177
180
|
|
|
@@ -180,7 +183,7 @@ The component has no motion. The panel itself is static; transitions on open / c
|
|
|
180
183
|
**Color and meaning:**
|
|
181
184
|
|
|
182
185
|
- 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
|
|
186
|
+
- 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
187
|
|
|
185
188
|
**Naming:**
|
|
186
189
|
|
|
@@ -203,6 +206,9 @@ The component has no motion. The panel itself is static; transitions on open / c
|
|
|
203
206
|
- Renders an `Item` with `unread`. Asserts `data-unread="true"` and the `--unread` modifier class.
|
|
204
207
|
- Renders a `Trigger` with `unreadCount={5}`. Asserts the badge text is `'5'`.
|
|
205
208
|
- Renders a `Trigger` with `unreadCount={150}`. Asserts the badge text is `'99+'`.
|
|
209
|
+
- Renders a `Trigger` with `unreadCount={12}` and `max={9}`. Asserts the badge text is `'9+'` and the accessible name still reads “Notifications, 12 unread”. A count equal to `max` draws the number; an invalid `max` (0, negative, fractional, NaN) falls back to `'99+'`.
|
|
210
|
+
|
|
211
|
+
- `src/test/styles/shell-look-pass.test.ts` guards the trigger's CSS contract (an ordinary icon button, a corner-anchored count, the 44px hit-area pseudo-element, the reserved margin); `apps/playground/tests/overlay-feedback-review.spec.ts` measures the geometry and the hit area at 1280 / 390 / 320px. They supersede the earlier contract (a control of at least 44×44 with the count contained in it) (G-20, 2026-10-05).
|
|
206
212
|
|
|
207
213
|
**Composition story:**
|
|
208
214
|
|
|
@@ -210,7 +216,7 @@ The component has no motion. The panel itself is static; transitions on open / c
|
|
|
210
216
|
|
|
211
217
|
**Token story:**
|
|
212
218
|
|
|
213
|
-
- Renders the default panel inside a `Theme` wrapper with `accentColor="
|
|
219
|
+
- 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
220
|
|
|
215
221
|
**A11y story:**
|
|
216
222
|
|
|
@@ -228,7 +234,7 @@ The component has no motion. The panel itself is static; transitions on open / c
|
|
|
228
234
|
**Composes from:**
|
|
229
235
|
|
|
230
236
|
- `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="
|
|
237
|
+
- `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+'` (or `{max}+` when `max` is set) for counts greater than the cap.
|
|
232
238
|
- `@radix-ui/react-slot`: enables `asChild` on the root and on the named slots.
|
|
233
239
|
|
|
234
240
|
**Used by:**
|
|
@@ -244,3 +250,12 @@ The component has no motion. The panel itself is static; transitions on open / c
|
|
|
244
250
|
|
|
245
251
|
- App-owned data: notification text, timestamps, action handlers, and the unread count source.
|
|
246
252
|
- DS-owned visuals: token bindings, slot classes, unread state styling, and the trigger badge geometry.
|
|
253
|
+
|
|
254
|
+
## Overlay review fixture
|
|
255
|
+
|
|
256
|
+
`/docs/notification-center` shows native button rows that mark themselves read,
|
|
257
|
+
Mark all read, Reset inbox, a real Popover and trigger counts 0/1/5/150. Item
|
|
258
|
+
button hosts have width=100%, inherited typography, start-aligned wrapping text,
|
|
259
|
+
and hover/focus/pressed feedback. The list is min-height=0 and flexes; header
|
|
260
|
+
and footer remain nonshrinking. Payload, routing and read persistence are
|
|
261
|
+
consumer-owned. Trigger asChild preserves host/ref/click composition.
|
|
@@ -13,7 +13,7 @@ depends_on:
|
|
|
13
13
|
|
|
14
14
|
## Purpose
|
|
15
15
|
|
|
16
|
-
A fixed-height header bar for the content area of a cabinet/shell layout: a title on the left, trailing actions on the right. Designed to be the first child inside `.dsx-sidebar__inset` (the content column `Sidebar` leaves for the app to fill), so every app screen shares one header height and padding scale instead of inventing its own.
|
|
16
|
+
A fixed-height header bar for the content area of a cabinet/shell layout: a title on the left, trailing actions on the right. Designed to be the first child inside `.dsx-sidebar__inset` (the content column `Sidebar` leaves for the app to fill), so every app screen shares one header height and padding scale instead of inventing its own. A `floating` variant draws the same bar as a glass panel with its own edge, for shells whose content column sits beside a floating sidebar (direction C of the `frontend` vision).
|
|
17
17
|
|
|
18
18
|
## Anatomy & slots
|
|
19
19
|
|
|
@@ -23,7 +23,7 @@ A fixed-height header bar for the content area of a cabinet/shell layout: a titl
|
|
|
23
23
|
|
|
24
24
|
| Slot | Element | Renders | Notes |
|
|
25
25
|
|---|---|---|---|
|
|
26
|
-
| `PageHeader.Root` | `<div>` | `dsx-page-header` | Fixed-height flex row, `justify-content: space-between`. Holds `Title` and `Actions`. |
|
|
26
|
+
| `PageHeader.Root` | `<div>` | `dsx-page-header` + `data-variant` | Fixed-height flex row, `justify-content: space-between`. Holds `Title` and `Actions`. |
|
|
27
27
|
| `PageHeader.Title` | `<h1>` | `dsx-page-header__title` | The page's h1. Single-line, truncates with ellipsis rather than wrapping. |
|
|
28
28
|
| `PageHeader.Actions` | `<div>` | `dsx-page-header__actions` | Trailing flex row for buttons/icon buttons. Optional — a header with only a title is valid (see empty-state test). |
|
|
29
29
|
|
|
@@ -31,6 +31,7 @@ A fixed-height header bar for the content area of a cabinet/shell layout: a titl
|
|
|
31
31
|
|
|
32
32
|
| Prop | Type | Default | Required | Description | Responsive |
|
|
33
33
|
|---|---|---|---|---|---|
|
|
34
|
+
| `variant` | `'default' \| 'floating'` | `'default'` | no | Surface treatment; writes `data-variant`. `default`: the flat opaque bar with a bottom rule. `floating`: a glass panel with its own edge, radius and shadow (the `Card variant="glass"` recipe). The height and the slots are the same in both. | no |
|
|
34
35
|
| `asChild` | `boolean` | `false` | no | Renders `Root` through `Slot`; consumer supplies the host element. | no |
|
|
35
36
|
| `className` | `string` | `undefined` | no | Extra classes appended to `dsx-page-header`. | no |
|
|
36
37
|
| `children` | `React.ReactNode` | `undefined` | no | Typically `PageHeader.Title` followed by an optional `PageHeader.Actions`. | no |
|
|
@@ -39,14 +40,14 @@ A fixed-height header bar for the content area of a cabinet/shell layout: a titl
|
|
|
39
40
|
|
|
40
41
|
Rules that apply to this row:
|
|
41
42
|
|
|
42
|
-
- `PageHeader`
|
|
43
|
+
- `PageHeader` has one height at every width and no `size` axis. Its only axis is `variant` (`default` / `floating`), which changes the surface, never the height. An unknown value falls back to `default`.
|
|
43
44
|
- `PageHeader.Title` renders `h1` by default. A page should have exactly one; nested `Theme`/route-level headings should not duplicate it.
|
|
44
45
|
|
|
45
46
|
## CSS class contract
|
|
46
47
|
|
|
47
48
|
**Root class:** `dsx-page-header`
|
|
48
49
|
|
|
49
|
-
**Modifier
|
|
50
|
+
**Modifier attributes:** `data-variant` (`default`, `floating`), written by the component; `.dsx-page-header:where([data-variant='floating'])` in `page-header.css` carries the glass surface. No `data-size` — the header has one fixed height.
|
|
50
51
|
|
|
51
52
|
**Slot classes:**
|
|
52
53
|
|
|
@@ -73,6 +74,12 @@ Rules that apply to this row:
|
|
|
73
74
|
| Gap | `var(--dsx-space-md)` | Gap between title and actions when both are near the edge. |
|
|
74
75
|
| Border (bottom) | `var(--dsx-border-width-sm)` + `var(--dsx-color-outline-variant)` | Separates the header from scrolled content below it. |
|
|
75
76
|
| Background | `var(--dsx-color-surface)` | Matches the surrounding shell surface. |
|
|
77
|
+
| Floating edge | `var(--dsx-border-width-sm)` + `var(--dsx-effect-panel-glass-border)` on all four sides | `variant="floating"`; replaces the bottom rule. |
|
|
78
|
+
| Floating radius | `var(--dsx-rounded-lg)` | `variant="floating"`; the same as `Card`'s default radius. |
|
|
79
|
+
| Floating surface | `var(--dsx-color-panel-translucent)` | `variant="floating"`; the glass fill. |
|
|
80
|
+
| Floating rim | `var(--dsx-effect-panel-glass-rim-highlight)`, `var(--dsx-effect-panel-glass-rim)` | `variant="floating"`; the same two inset layers as `Card variant="glass"`. |
|
|
81
|
+
| Floating shadow | `0 var(--dsx-shadow-offset-lg) var(--dsx-shadow-blur-md) calc(-1 * var(--dsx-shadow-offset-lg)) var(--dsx-effect-shadow-card-strong)` | `variant="floating"`; the shadow falls below the bar only (offset equals the negative spread, so it starts at the bar's bottom edge). The bar sits flush at the edge of a scroll container (`Sidebar.Inset`, `overflow: auto`) that clips what is painted past its left, right and top edges, so the full-ring `--dsx-shadow-panel-shadow` ended in a vertical cut at the bar's side in the light theme (G-21). This is the one place the floating bar differs from `Card variant="glass"`. Guarded by `src/test/styles/page-header-shadow.test.ts`. |
|
|
82
|
+
| Floating blur | `var(--dsx-effect-panel-glass-backdrop-filter)` | `variant="floating"`; declared as `-webkit-backdrop-filter` first, `backdrop-filter` last (see `card.md`). |
|
|
76
83
|
| Title font | `var(--dsx-typography-headline-medium-*)` family | 24px/600, the DS's headline-medium scale — sized for a 72px bar. |
|
|
77
84
|
| Title color | `var(--dsx-color-on-surface)` | Primary text. |
|
|
78
85
|
| Actions gap | `var(--dsx-space-sm)` | Gap between action buttons. |
|
|
@@ -80,6 +87,7 @@ Rules that apply to this row:
|
|
|
80
87
|
Rules:
|
|
81
88
|
|
|
82
89
|
- No raw px/color values in `page-header.css`. The 72px height is a `calc()` of two spacing tokens, not a hardcoded value.
|
|
90
|
+
- The floating blur only shows when content passes under the bar (a sticky header over a scrolling page). The DS does not make the bar sticky or give it a margin: the page decides where it sits.
|
|
83
91
|
|
|
84
92
|
## Motion contract
|
|
85
93
|
|
|
@@ -119,6 +127,8 @@ Rules:
|
|
|
119
127
|
|
|
120
128
|
## Playground demo spec
|
|
121
129
|
|
|
130
|
+
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.
|
|
131
|
+
|
|
122
132
|
`PageHeader` is registered in `apps/playground/lib/registry/display.tsx` under the `page-header` key.
|
|
123
133
|
|
|
124
134
|
**Default story:**
|
|
@@ -129,6 +139,10 @@ Rules:
|
|
|
129
139
|
|
|
130
140
|
- Renders `PageHeader` with both `Title` and `Actions` (one or two buttons). Asserts both slots render with their classes.
|
|
131
141
|
|
|
142
|
+
**Variant story:**
|
|
143
|
+
|
|
144
|
+
- Renders `PageHeader` with `variant="default"` and `variant="floating"`. Asserts the matching `data-variant` attribute; the floating bar keeps the title and actions slots and the same height.
|
|
145
|
+
|
|
132
146
|
**Empty-state story:**
|
|
133
147
|
|
|
134
148
|
- Renders `PageHeader` with only `Title`, no `Actions` — the header still renders correctly with no trailing content.
|
|
@@ -143,7 +157,7 @@ Rules:
|
|
|
143
157
|
|---|---|---|
|
|
144
158
|
| (not exposed) | n/a | n/a |
|
|
145
159
|
|
|
146
|
-
`PageHeader` has no
|
|
160
|
+
`PageHeader` has no size axis, and its `variant` is shown as two fixtures (default and floating) in one composition rather than a controls panel.
|
|
147
161
|
|
|
148
162
|
## Wiring notes
|
|
149
163
|
|
|
@@ -157,7 +171,7 @@ Rules:
|
|
|
157
171
|
|
|
158
172
|
**State boundaries:**
|
|
159
173
|
|
|
160
|
-
- Owned by `PageHeader`: the root class, fixed height, padding, and the two slot classes.
|
|
174
|
+
- Owned by `PageHeader`: the root class, `data-variant`, the fixed height, padding, the surface of each variant, and the two slot classes.
|
|
161
175
|
- Owned by the consumer: the title text, which actions render, and their handlers.
|
|
162
176
|
|
|
163
177
|
**Boundary rules:**
|
|
@@ -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
|
|