@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
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/articleNodes/articleNodeViews.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react'\nimport { NodeViewWrapper, NodeViewContent, type NodeViewProps } from '@tiptap/react'\nimport { Button } from '../button/Button'\nimport { TextField } from '../textField/TextField'\nimport { ArticleImage, ArticleEmbed, BeforeAfterComparison, ArticleVideo } from './ArticleNodes'\n\nconst fields: Record<string, Array<[string, string]>> = {\n image: [['src', 'Image URL'], ['alt', 'Alternative text'], ['caption', 'Caption'], ['mediaId', 'Media ID']],\n dsxVideo: [['src', 'Video URL'], ['caption', 'Caption'], ['mediaId', 'Media ID']],\n dsxEmbed: [['url', 'Embed URL']],\n dsxComparison: [['beforeSrc', 'Before image URL'], ['beforeAlt', 'Before alternative text'], ['afterSrc', 'After image URL'], ['afterAlt', 'After alternative text']],\n dsxCallout: [['title', 'Callout title'], ['tone', 'Tone']],\n dsxPoll: [['pollId', 'Poll ID'], ['question', 'Question']],\n dsxMaterialLink: [['materialId', 'Material ID'], ['label', 'Link label'], ['href', 'Resolved URL']],\n dsxTab: [['platform', 'Platform key'], ['label', 'Tab label']],\n}\nconst titles: Record<string, string> = { image: 'Image', dsxVideo: 'Video', dsxEmbed: 'Embed', dsxComparison: 'Comparison', dsxCallout: 'Callout', dsxPoll: 'Poll', dsxMaterialLink: 'Material reference', dsxTabs: 'Platform tabs', dsxTab: 'Platform' }\nexport function ArticleBlockView({ node, editor, getPos, updateAttributes, deleteNode, selected }: NodeViewProps) {\n const [editing, setEditing] = React.useState(false)\n const [draft, setDraft] = React.useState<Record<string, unknown>>(node.attrs)\n const [error, setError] = React.useState('')\n const fieldsId = React.useId()\n const name = node.type.name\n const pos = getPos()\n const $pos = typeof pos === 'number' ? editor.state.doc.resolve(pos) : null\n const index = $pos?.index() ?? 0\n const parent = $pos?.parent\n const [editable, setEditable] = React.useState(editor.isEditable)\n React.useEffect(() => {\n const refresh = () => {\n setEditable(editor.isEditable)\n if (!editor.isEditable) setEditing(false)\n }\n editor.on('update', refresh)\n editor.on('transaction', refresh)\n refresh()\n return () => { editor.off('update', refresh); editor.off('transaction', refresh) }\n }, [editor])\n const move = (direction: -1 | 1) => {\n if (!editor.isEditable || typeof pos !== 'number' || !parent) return\n const neighbor = parent.maybeChild(index + direction)\n if (!neighbor) return\n editor.commands.command(({ tr }) => {\n tr.delete(pos, pos + node.nodeSize).insert(direction === -1 ? pos - neighbor.nodeSize : pos + neighbor.nodeSize, node)\n return true\n })\n editor.commands.focus()\n }\n const save = () => {\n if (!editor.isEditable) return\n if (name === 'dsxPoll') {\n const options = draft.options as Array<{ id: string; label: string }>\n if (!String(draft.pollId ?? '').trim() || !String(draft.question ?? '').trim() || options.length < 2 || options.some(option => !option.id.trim() || !option.label.trim()) || new Set(options.map(option => option.id)).size !== options.length) { setError('Supply a poll ID, question and at least two options with unique IDs.'); return }\n }\n for (const key of ['src', 'url', 'href', 'beforeSrc', 'afterSrc']) {\n if (!draft[key]) continue\n try { const url = new URL(String(draft[key]), window.location.href); if (!['http:', 'https:'].includes(url.protocol)) throw new Error() } catch { setError('Use an http or https media/link URL.'); return }\n }\n updateAttributes(draft); setEditing(false); editor.commands.focus()\n }\n const preview = name === 'image' ? <ArticleImage src={node.attrs.src} alt={node.attrs.alt} caption={node.attrs.caption} />\n : name === 'dsxVideo' ? <ArticleVideo src={node.attrs.src} caption={node.attrs.caption} />\n : name === 'dsxEmbed' ? <ArticleEmbed url={node.attrs.url ?? ''} />\n : name === 'dsxComparison' ? <BeforeAfterComparison {...node.attrs as React.ComponentProps<typeof BeforeAfterComparison>} />\n : name === 'dsxPoll' ? <div><strong>{node.attrs.question || 'Untitled poll'}</strong><ul>{(node.attrs.options as Array<{ id: string; label: string }>).map(option => <li key={option.id}>{option.label}</li>)}</ul><small>{node.attrs.multiple ? 'Multiple choices' : 'Single choice'} \u00B7 {node.attrs.pollId || 'Missing poll ID'}</small></div>\n : name === 'dsxMaterialLink' ? <span>{node.attrs.label || node.attrs.materialId || 'Material reference'}</span> : null\n return <NodeViewWrapper className=\"dsx-article-editor-block\" aria-label={`${titles[name] ?? name} block`} aria-current={selected || undefined}>\n <div contentEditable={false} className=\"dsx-article-editor-block__controls\">\n <strong>{name === 'dsxTab' ? node.attrs.label || titles[name] : titles[name]}</strong>\n {editable ? <div className=\"dsx-article-editor-block__actions\">\n {fields[name] ? <Button type=\"button\" size=\"lg\" variant=\"ghost\" onClick={() => { setDraft({ ...node.attrs }); setError(''); setEditing(value => !value) }}>{editing ? 'Cancel' : 'Edit'}</Button> : null}\n <Button type=\"button\" size=\"lg\" variant=\"ghost\" aria-label={`Move ${titles[name]} up`} disabled={!parent?.maybeChild(index - 1)} onClick={() => move(-1)}>\u2191</Button>\n <Button type=\"button\" size=\"lg\" variant=\"ghost\" aria-label={`Move ${titles[name]} down`} disabled={!parent?.maybeChild(index + 1)} onClick={() => move(1)}>\u2193</Button>\n <Button type=\"button\" size=\"lg\" variant=\"ghost\" aria-label={`Remove ${titles[name]}`} onClick={() => { if (editor.isEditable) { deleteNode(); editor.commands.focus() } }}>Remove</Button>\n </div> : null}\n </div>\n {editing ? <div contentEditable={false} className=\"dsx-article-editor-block__fields\">\n {fields[name]?.map(([key, label]) => <TextField key={key} id={`${fieldsId}-${key}`} label={label}><TextField.Input value={String(draft[key] ?? '')} onChange={event => setDraft(current => ({ ...current, [key]: event.target.value }))} /></TextField>)}\n {name === 'dsxPoll' ? <>\n <label>Options \u2014 one stable ID | label per line<textarea className=\"dsx-article-editor-block__textarea\" value={(draft.options as Array<{ id: string; label: string }>).map(option => `${option.id}|${option.label}`).join('\\n')} onChange={event => setDraft(current => ({ ...current, options: event.target.value.split('\\n').map(line => { const divider = line.indexOf('|'); return { id: divider < 0 ? '' : line.slice(0, divider), label: divider < 0 ? line : line.slice(divider + 1) } }) }))} /></label>\n <Button type=\"button\" size=\"lg\" variant=\"outline\" aria-pressed={Boolean(draft.multiple)} onClick={() => setDraft(current => ({ ...current, multiple: !current.multiple }))}>Allow multiple choices</Button>\n </> : null}\n {error ? <span role=\"alert\">{error}</span> : null}\n <Button type=\"button\" size=\"lg\" onClick={save}>Save block</Button>\n </div> : null}\n {!node.isAtom ? <NodeViewContent className=\"dsx-article-editor-block__content\" /> : !editing ? <div contentEditable={false}>{preview}</div> : null}\n </NodeViewWrapper>\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"articleNodeViews.d.cts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodeViews.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAgBpF,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAsE/G"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"articleNodeViews.d.mts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodeViews.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAgBpF,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAsE/G"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"articleNodeViews.d.ts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodeViews.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAgBpF,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAsE/G"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { NodeViewWrapper, NodeViewContent } from "@tiptap/react";
|
|
3
|
+
import { Button } from "../button/Button.js";
|
|
4
|
+
import { TextField } from "../textField/TextField.js";
|
|
5
|
+
import { ArticleImage, ArticleEmbed, BeforeAfterComparison, ArticleVideo } from "./ArticleNodes.js";
|
|
6
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
const fields = {
|
|
8
|
+
image: [["src", "Image URL"], ["alt", "Alternative text"], ["caption", "Caption"], ["mediaId", "Media ID"]],
|
|
9
|
+
dsxVideo: [["src", "Video URL"], ["caption", "Caption"], ["mediaId", "Media ID"]],
|
|
10
|
+
dsxEmbed: [["url", "Embed URL"]],
|
|
11
|
+
dsxComparison: [["beforeSrc", "Before image URL"], ["beforeAlt", "Before alternative text"], ["afterSrc", "After image URL"], ["afterAlt", "After alternative text"]],
|
|
12
|
+
dsxCallout: [["title", "Callout title"], ["tone", "Tone"]],
|
|
13
|
+
dsxPoll: [["pollId", "Poll ID"], ["question", "Question"]],
|
|
14
|
+
dsxMaterialLink: [["materialId", "Material ID"], ["label", "Link label"], ["href", "Resolved URL"]],
|
|
15
|
+
dsxTab: [["platform", "Platform key"], ["label", "Tab label"]]
|
|
16
|
+
};
|
|
17
|
+
const titles = { image: "Image", dsxVideo: "Video", dsxEmbed: "Embed", dsxComparison: "Comparison", dsxCallout: "Callout", dsxPoll: "Poll", dsxMaterialLink: "Material reference", dsxTabs: "Platform tabs", dsxTab: "Platform" };
|
|
18
|
+
function ArticleBlockView({ node, editor, getPos, updateAttributes, deleteNode, selected }) {
|
|
19
|
+
const [editing, setEditing] = React.useState(false);
|
|
20
|
+
const [draft, setDraft] = React.useState(node.attrs);
|
|
21
|
+
const [error, setError] = React.useState("");
|
|
22
|
+
const fieldsId = React.useId();
|
|
23
|
+
const name = node.type.name;
|
|
24
|
+
const pos = getPos();
|
|
25
|
+
const $pos = typeof pos === "number" ? editor.state.doc.resolve(pos) : null;
|
|
26
|
+
const index = $pos?.index() ?? 0;
|
|
27
|
+
const parent = $pos?.parent;
|
|
28
|
+
const [editable, setEditable] = React.useState(editor.isEditable);
|
|
29
|
+
React.useEffect(() => {
|
|
30
|
+
const refresh = () => {
|
|
31
|
+
setEditable(editor.isEditable);
|
|
32
|
+
if (!editor.isEditable) setEditing(false);
|
|
33
|
+
};
|
|
34
|
+
editor.on("update", refresh);
|
|
35
|
+
editor.on("transaction", refresh);
|
|
36
|
+
refresh();
|
|
37
|
+
return () => {
|
|
38
|
+
editor.off("update", refresh);
|
|
39
|
+
editor.off("transaction", refresh);
|
|
40
|
+
};
|
|
41
|
+
}, [editor]);
|
|
42
|
+
const move = (direction) => {
|
|
43
|
+
if (!editor.isEditable || typeof pos !== "number" || !parent) return;
|
|
44
|
+
const neighbor = parent.maybeChild(index + direction);
|
|
45
|
+
if (!neighbor) return;
|
|
46
|
+
editor.commands.command(({ tr }) => {
|
|
47
|
+
tr.delete(pos, pos + node.nodeSize).insert(direction === -1 ? pos - neighbor.nodeSize : pos + neighbor.nodeSize, node);
|
|
48
|
+
return true;
|
|
49
|
+
});
|
|
50
|
+
editor.commands.focus();
|
|
51
|
+
};
|
|
52
|
+
const save = () => {
|
|
53
|
+
if (!editor.isEditable) return;
|
|
54
|
+
if (name === "dsxPoll") {
|
|
55
|
+
const options = draft.options;
|
|
56
|
+
if (!String(draft.pollId ?? "").trim() || !String(draft.question ?? "").trim() || options.length < 2 || options.some((option) => !option.id.trim() || !option.label.trim()) || new Set(options.map((option) => option.id)).size !== options.length) {
|
|
57
|
+
setError("Supply a poll ID, question and at least two options with unique IDs.");
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
for (const key of ["src", "url", "href", "beforeSrc", "afterSrc"]) {
|
|
62
|
+
if (!draft[key]) continue;
|
|
63
|
+
try {
|
|
64
|
+
const url = new URL(String(draft[key]), window.location.href);
|
|
65
|
+
if (!["http:", "https:"].includes(url.protocol)) throw new Error();
|
|
66
|
+
} catch {
|
|
67
|
+
setError("Use an http or https media/link URL.");
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
updateAttributes(draft);
|
|
72
|
+
setEditing(false);
|
|
73
|
+
editor.commands.focus();
|
|
74
|
+
};
|
|
75
|
+
const preview = name === "image" ? /* @__PURE__ */ jsx(ArticleImage, { src: node.attrs.src, alt: node.attrs.alt, caption: node.attrs.caption }) : name === "dsxVideo" ? /* @__PURE__ */ jsx(ArticleVideo, { src: node.attrs.src, caption: node.attrs.caption }) : name === "dsxEmbed" ? /* @__PURE__ */ jsx(ArticleEmbed, { url: node.attrs.url ?? "" }) : name === "dsxComparison" ? /* @__PURE__ */ jsx(BeforeAfterComparison, { ...node.attrs }) : name === "dsxPoll" ? /* @__PURE__ */ jsxs("div", { children: [
|
|
76
|
+
/* @__PURE__ */ jsx("strong", { children: node.attrs.question || "Untitled poll" }),
|
|
77
|
+
/* @__PURE__ */ jsx("ul", { children: node.attrs.options.map((option) => /* @__PURE__ */ jsx("li", { children: option.label }, option.id)) }),
|
|
78
|
+
/* @__PURE__ */ jsxs("small", { children: [
|
|
79
|
+
node.attrs.multiple ? "Multiple choices" : "Single choice",
|
|
80
|
+
" \xB7 ",
|
|
81
|
+
node.attrs.pollId || "Missing poll ID"
|
|
82
|
+
] })
|
|
83
|
+
] }) : name === "dsxMaterialLink" ? /* @__PURE__ */ jsx("span", { children: node.attrs.label || node.attrs.materialId || "Material reference" }) : null;
|
|
84
|
+
return /* @__PURE__ */ jsxs(NodeViewWrapper, { className: "dsx-article-editor-block", "aria-label": `${titles[name] ?? name} block`, "aria-current": selected || void 0, children: [
|
|
85
|
+
/* @__PURE__ */ jsxs("div", { contentEditable: false, className: "dsx-article-editor-block__controls", children: [
|
|
86
|
+
/* @__PURE__ */ jsx("strong", { children: name === "dsxTab" ? node.attrs.label || titles[name] : titles[name] }),
|
|
87
|
+
editable ? /* @__PURE__ */ jsxs("div", { className: "dsx-article-editor-block__actions", children: [
|
|
88
|
+
fields[name] ? /* @__PURE__ */ jsx(Button, { type: "button", size: "lg", variant: "ghost", onClick: () => {
|
|
89
|
+
setDraft({ ...node.attrs });
|
|
90
|
+
setError("");
|
|
91
|
+
setEditing((value) => !value);
|
|
92
|
+
}, children: editing ? "Cancel" : "Edit" }) : null,
|
|
93
|
+
/* @__PURE__ */ jsx(Button, { type: "button", size: "lg", variant: "ghost", "aria-label": `Move ${titles[name]} up`, disabled: !parent?.maybeChild(index - 1), onClick: () => move(-1), children: "\u2191" }),
|
|
94
|
+
/* @__PURE__ */ jsx(Button, { type: "button", size: "lg", variant: "ghost", "aria-label": `Move ${titles[name]} down`, disabled: !parent?.maybeChild(index + 1), onClick: () => move(1), children: "\u2193" }),
|
|
95
|
+
/* @__PURE__ */ jsx(Button, { type: "button", size: "lg", variant: "ghost", "aria-label": `Remove ${titles[name]}`, onClick: () => {
|
|
96
|
+
if (editor.isEditable) {
|
|
97
|
+
deleteNode();
|
|
98
|
+
editor.commands.focus();
|
|
99
|
+
}
|
|
100
|
+
}, children: "Remove" })
|
|
101
|
+
] }) : null
|
|
102
|
+
] }),
|
|
103
|
+
editing ? /* @__PURE__ */ jsxs("div", { contentEditable: false, className: "dsx-article-editor-block__fields", children: [
|
|
104
|
+
fields[name]?.map(([key, label]) => /* @__PURE__ */ jsx(TextField, { id: `${fieldsId}-${key}`, label, children: /* @__PURE__ */ jsx(TextField.Input, { value: String(draft[key] ?? ""), onChange: (event) => setDraft((current) => ({ ...current, [key]: event.target.value })) }) }, key)),
|
|
105
|
+
name === "dsxPoll" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
106
|
+
/* @__PURE__ */ jsxs("label", { children: [
|
|
107
|
+
"Options \u2014 one stable ID | label per line",
|
|
108
|
+
/* @__PURE__ */ jsx("textarea", { className: "dsx-article-editor-block__textarea", value: draft.options.map((option) => `${option.id}|${option.label}`).join("\n"), onChange: (event) => setDraft((current) => ({ ...current, options: event.target.value.split("\n").map((line) => {
|
|
109
|
+
const divider = line.indexOf("|");
|
|
110
|
+
return { id: divider < 0 ? "" : line.slice(0, divider), label: divider < 0 ? line : line.slice(divider + 1) };
|
|
111
|
+
}) })) })
|
|
112
|
+
] }),
|
|
113
|
+
/* @__PURE__ */ jsx(Button, { type: "button", size: "lg", variant: "outline", "aria-pressed": Boolean(draft.multiple), onClick: () => setDraft((current) => ({ ...current, multiple: !current.multiple })), children: "Allow multiple choices" })
|
|
114
|
+
] }) : null,
|
|
115
|
+
error ? /* @__PURE__ */ jsx("span", { role: "alert", children: error }) : null,
|
|
116
|
+
/* @__PURE__ */ jsx(Button, { type: "button", size: "lg", onClick: save, children: "Save block" })
|
|
117
|
+
] }) : null,
|
|
118
|
+
!node.isAtom ? /* @__PURE__ */ jsx(NodeViewContent, { className: "dsx-article-editor-block__content" }) : !editing ? /* @__PURE__ */ jsx("div", { contentEditable: false, children: preview }) : null
|
|
119
|
+
] });
|
|
120
|
+
}
|
|
121
|
+
export {
|
|
122
|
+
ArticleBlockView
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=articleNodeViews.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/articleNodes/articleNodeViews.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react'\nimport { NodeViewWrapper, NodeViewContent, type NodeViewProps } from '@tiptap/react'\nimport { Button } from '../button/Button'\nimport { TextField } from '../textField/TextField'\nimport { ArticleImage, ArticleEmbed, BeforeAfterComparison, ArticleVideo } from './ArticleNodes'\n\nconst fields: Record<string, Array<[string, string]>> = {\n image: [['src', 'Image URL'], ['alt', 'Alternative text'], ['caption', 'Caption'], ['mediaId', 'Media ID']],\n dsxVideo: [['src', 'Video URL'], ['caption', 'Caption'], ['mediaId', 'Media ID']],\n dsxEmbed: [['url', 'Embed URL']],\n dsxComparison: [['beforeSrc', 'Before image URL'], ['beforeAlt', 'Before alternative text'], ['afterSrc', 'After image URL'], ['afterAlt', 'After alternative text']],\n dsxCallout: [['title', 'Callout title'], ['tone', 'Tone']],\n dsxPoll: [['pollId', 'Poll ID'], ['question', 'Question']],\n dsxMaterialLink: [['materialId', 'Material ID'], ['label', 'Link label'], ['href', 'Resolved URL']],\n dsxTab: [['platform', 'Platform key'], ['label', 'Tab label']],\n}\nconst titles: Record<string, string> = { image: 'Image', dsxVideo: 'Video', dsxEmbed: 'Embed', dsxComparison: 'Comparison', dsxCallout: 'Callout', dsxPoll: 'Poll', dsxMaterialLink: 'Material reference', dsxTabs: 'Platform tabs', dsxTab: 'Platform' }\nexport function ArticleBlockView({ node, editor, getPos, updateAttributes, deleteNode, selected }: NodeViewProps) {\n const [editing, setEditing] = React.useState(false)\n const [draft, setDraft] = React.useState<Record<string, unknown>>(node.attrs)\n const [error, setError] = React.useState('')\n const fieldsId = React.useId()\n const name = node.type.name\n const pos = getPos()\n const $pos = typeof pos === 'number' ? editor.state.doc.resolve(pos) : null\n const index = $pos?.index() ?? 0\n const parent = $pos?.parent\n const [editable, setEditable] = React.useState(editor.isEditable)\n React.useEffect(() => {\n const refresh = () => {\n setEditable(editor.isEditable)\n if (!editor.isEditable) setEditing(false)\n }\n editor.on('update', refresh)\n editor.on('transaction', refresh)\n refresh()\n return () => { editor.off('update', refresh); editor.off('transaction', refresh) }\n }, [editor])\n const move = (direction: -1 | 1) => {\n if (!editor.isEditable || typeof pos !== 'number' || !parent) return\n const neighbor = parent.maybeChild(index + direction)\n if (!neighbor) return\n editor.commands.command(({ tr }) => {\n tr.delete(pos, pos + node.nodeSize).insert(direction === -1 ? pos - neighbor.nodeSize : pos + neighbor.nodeSize, node)\n return true\n })\n editor.commands.focus()\n }\n const save = () => {\n if (!editor.isEditable) return\n if (name === 'dsxPoll') {\n const options = draft.options as Array<{ id: string; label: string }>\n if (!String(draft.pollId ?? '').trim() || !String(draft.question ?? '').trim() || options.length < 2 || options.some(option => !option.id.trim() || !option.label.trim()) || new Set(options.map(option => option.id)).size !== options.length) { setError('Supply a poll ID, question and at least two options with unique IDs.'); return }\n }\n for (const key of ['src', 'url', 'href', 'beforeSrc', 'afterSrc']) {\n if (!draft[key]) continue\n try { const url = new URL(String(draft[key]), window.location.href); if (!['http:', 'https:'].includes(url.protocol)) throw new Error() } catch { setError('Use an http or https media/link URL.'); return }\n }\n updateAttributes(draft); setEditing(false); editor.commands.focus()\n }\n const preview = name === 'image' ? <ArticleImage src={node.attrs.src} alt={node.attrs.alt} caption={node.attrs.caption} />\n : name === 'dsxVideo' ? <ArticleVideo src={node.attrs.src} caption={node.attrs.caption} />\n : name === 'dsxEmbed' ? <ArticleEmbed url={node.attrs.url ?? ''} />\n : name === 'dsxComparison' ? <BeforeAfterComparison {...node.attrs as React.ComponentProps<typeof BeforeAfterComparison>} />\n : name === 'dsxPoll' ? <div><strong>{node.attrs.question || 'Untitled poll'}</strong><ul>{(node.attrs.options as Array<{ id: string; label: string }>).map(option => <li key={option.id}>{option.label}</li>)}</ul><small>{node.attrs.multiple ? 'Multiple choices' : 'Single choice'} \u00B7 {node.attrs.pollId || 'Missing poll ID'}</small></div>\n : name === 'dsxMaterialLink' ? <span>{node.attrs.label || node.attrs.materialId || 'Material reference'}</span> : null\n return <NodeViewWrapper className=\"dsx-article-editor-block\" aria-label={`${titles[name] ?? name} block`} aria-current={selected || undefined}>\n <div contentEditable={false} className=\"dsx-article-editor-block__controls\">\n <strong>{name === 'dsxTab' ? node.attrs.label || titles[name] : titles[name]}</strong>\n {editable ? <div className=\"dsx-article-editor-block__actions\">\n {fields[name] ? <Button type=\"button\" size=\"lg\" variant=\"ghost\" onClick={() => { setDraft({ ...node.attrs }); setError(''); setEditing(value => !value) }}>{editing ? 'Cancel' : 'Edit'}</Button> : null}\n <Button type=\"button\" size=\"lg\" variant=\"ghost\" aria-label={`Move ${titles[name]} up`} disabled={!parent?.maybeChild(index - 1)} onClick={() => move(-1)}>\u2191</Button>\n <Button type=\"button\" size=\"lg\" variant=\"ghost\" aria-label={`Move ${titles[name]} down`} disabled={!parent?.maybeChild(index + 1)} onClick={() => move(1)}>\u2193</Button>\n <Button type=\"button\" size=\"lg\" variant=\"ghost\" aria-label={`Remove ${titles[name]}`} onClick={() => { if (editor.isEditable) { deleteNode(); editor.commands.focus() } }}>Remove</Button>\n </div> : null}\n </div>\n {editing ? <div contentEditable={false} className=\"dsx-article-editor-block__fields\">\n {fields[name]?.map(([key, label]) => <TextField key={key} id={`${fieldsId}-${key}`} label={label}><TextField.Input value={String(draft[key] ?? '')} onChange={event => setDraft(current => ({ ...current, [key]: event.target.value }))} /></TextField>)}\n {name === 'dsxPoll' ? <>\n <label>Options \u2014 one stable ID | label per line<textarea className=\"dsx-article-editor-block__textarea\" value={(draft.options as Array<{ id: string; label: string }>).map(option => `${option.id}|${option.label}`).join('\\n')} onChange={event => setDraft(current => ({ ...current, options: event.target.value.split('\\n').map(line => { const divider = line.indexOf('|'); return { id: divider < 0 ? '' : line.slice(0, divider), label: divider < 0 ? line : line.slice(divider + 1) } }) }))} /></label>\n <Button type=\"button\" size=\"lg\" variant=\"outline\" aria-pressed={Boolean(draft.multiple)} onClick={() => setDraft(current => ({ ...current, multiple: !current.multiple }))}>Allow multiple choices</Button>\n </> : null}\n {error ? <span role=\"alert\">{error}</span> : null}\n <Button type=\"button\" size=\"lg\" onClick={save}>Save block</Button>\n </div> : null}\n {!node.isAtom ? <NodeViewContent className=\"dsx-article-editor-block__content\" /> : !editing ? <div contentEditable={false}>{preview}</div> : null}\n </NodeViewWrapper>\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/articleNodes/articleNodes.props.ts"],
|
|
4
|
-
"sourcesContent": ["import type * as React from 'react'\n\ninterface ArticleImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n caption?: React.ReactNode\n}\n\ninterface ArticleEmbedProps extends React.HTMLAttributes<HTMLDivElement> {\n url: string\n render?: (url: string) => React.ReactNode\n isAllowed?: (url: string) => boolean\n}\n\ninterface BeforeAfterComparisonProps extends React.HTMLAttributes<HTMLElement> {\n beforeSrc: string\n afterSrc: string\n beforeAlt: string\n afterAlt: string\n beforeLabel?: React.ReactNode\n afterLabel?: React.ReactNode\n}\n\ntype PollState = 'loading' | 'ready' | 'error' | 'voted'\n\ninterface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad'> {\n pollId: string\n question?: React.ReactNode\n options?: Array<{ id: string; label: React.ReactNode; votes?: number }>\n state?: PollState\n onLoad?: (pollId: string) => void\n onVote?: (pollId: string, optionId: string) => void\n}\n\nexport type {\n ArticleEmbedProps,\n ArticleImageProps,\n ArticlePollProps,\n BeforeAfterComparisonProps,\n PollState,\n}\n"],
|
|
4
|
+
"sourcesContent": ["import type * as React from 'react'\n\ninterface ArticleImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n caption?: React.ReactNode\n}\n\ninterface ArticleEmbedProps extends React.HTMLAttributes<HTMLDivElement> {\n url: string\n render?: (url: string) => React.ReactNode\n isAllowed?: (url: string) => boolean\n}\n\ninterface BeforeAfterComparisonProps extends React.HTMLAttributes<HTMLElement> {\n beforeSrc: string\n afterSrc: string\n beforeAlt: string\n afterAlt: string\n beforeLabel?: React.ReactNode\n afterLabel?: React.ReactNode\n}\n\ntype PollState = 'loading' | 'ready' | 'error' | 'voted' | 'closed'\n\ninterface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad' | 'onSubmit'> {\n pollId: string\n question?: React.ReactNode\n options?: Array<{ id: string; label: React.ReactNode; votes?: number }>\n state?: PollState\n onLoad?: (pollId: string) => void\n onVote?: (pollId: string, optionId: string) => void\n selection?: readonly string[]\n multiple?: boolean\n onSelectionChange?: (selection: string[]) => void\n onSubmit?: (pollId: string, selection: readonly string[]) => void\n onRetract?: (pollId: string) => void\n totalVotes?: number\n}\n\nexport type {\n ArticleEmbedProps,\n ArticleImageProps,\n ArticlePollProps,\n BeforeAfterComparisonProps,\n PollState,\n}\n\nexport interface ArticleVideoProps extends React.VideoHTMLAttributes<HTMLVideoElement> { caption?: React.ReactNode }\nexport interface ArticleMaterialLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> { materialId: string; href?: string; unavailableLabel?: React.ReactNode }\nexport interface ArticlePlatformTabsProps extends React.HTMLAttributes<HTMLDivElement> {\n tabs: readonly { platform: string; label: React.ReactNode; content: React.ReactNode }[]\n value?: string\n onValueChange?: (value: string) => void\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -15,8 +15,8 @@ interface BeforeAfterComparisonProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
15
15
|
beforeLabel?: React.ReactNode;
|
|
16
16
|
afterLabel?: React.ReactNode;
|
|
17
17
|
}
|
|
18
|
-
type PollState = 'loading' | 'ready' | 'error' | 'voted';
|
|
19
|
-
interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad'> {
|
|
18
|
+
type PollState = 'loading' | 'ready' | 'error' | 'voted' | 'closed';
|
|
19
|
+
interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad' | 'onSubmit'> {
|
|
20
20
|
pollId: string;
|
|
21
21
|
question?: React.ReactNode;
|
|
22
22
|
options?: Array<{
|
|
@@ -27,6 +27,29 @@ interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'o
|
|
|
27
27
|
state?: PollState;
|
|
28
28
|
onLoad?: (pollId: string) => void;
|
|
29
29
|
onVote?: (pollId: string, optionId: string) => void;
|
|
30
|
+
selection?: readonly string[];
|
|
31
|
+
multiple?: boolean;
|
|
32
|
+
onSelectionChange?: (selection: string[]) => void;
|
|
33
|
+
onSubmit?: (pollId: string, selection: readonly string[]) => void;
|
|
34
|
+
onRetract?: (pollId: string) => void;
|
|
35
|
+
totalVotes?: number;
|
|
30
36
|
}
|
|
31
37
|
export type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps, PollState, };
|
|
38
|
+
export interface ArticleVideoProps extends React.VideoHTMLAttributes<HTMLVideoElement> {
|
|
39
|
+
caption?: React.ReactNode;
|
|
40
|
+
}
|
|
41
|
+
export interface ArticleMaterialLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
|
|
42
|
+
materialId: string;
|
|
43
|
+
href?: string;
|
|
44
|
+
unavailableLabel?: React.ReactNode;
|
|
45
|
+
}
|
|
46
|
+
export interface ArticlePlatformTabsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
47
|
+
tabs: readonly {
|
|
48
|
+
platform: string;
|
|
49
|
+
label: React.ReactNode;
|
|
50
|
+
content: React.ReactNode;
|
|
51
|
+
}[];
|
|
52
|
+
value?: string;
|
|
53
|
+
onValueChange?: (value: string) => void;
|
|
54
|
+
}
|
|
32
55
|
//# sourceMappingURL=articleNodes.props.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"articleNodes.props.d.cts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodes.props.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAEnC,UAAU,iBAAkB,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;IAC3E,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,UAAU,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACtE,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IACzC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CACrC;AAED,UAAU,0BAA2B,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC7B;AAED,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"articleNodes.props.d.cts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodes.props.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,8 +15,8 @@ interface BeforeAfterComparisonProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
15
15
|
beforeLabel?: React.ReactNode;
|
|
16
16
|
afterLabel?: React.ReactNode;
|
|
17
17
|
}
|
|
18
|
-
type PollState = 'loading' | 'ready' | 'error' | 'voted';
|
|
19
|
-
interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad'> {
|
|
18
|
+
type PollState = 'loading' | 'ready' | 'error' | 'voted' | 'closed';
|
|
19
|
+
interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad' | 'onSubmit'> {
|
|
20
20
|
pollId: string;
|
|
21
21
|
question?: React.ReactNode;
|
|
22
22
|
options?: Array<{
|
|
@@ -27,6 +27,29 @@ interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'o
|
|
|
27
27
|
state?: PollState;
|
|
28
28
|
onLoad?: (pollId: string) => void;
|
|
29
29
|
onVote?: (pollId: string, optionId: string) => void;
|
|
30
|
+
selection?: readonly string[];
|
|
31
|
+
multiple?: boolean;
|
|
32
|
+
onSelectionChange?: (selection: string[]) => void;
|
|
33
|
+
onSubmit?: (pollId: string, selection: readonly string[]) => void;
|
|
34
|
+
onRetract?: (pollId: string) => void;
|
|
35
|
+
totalVotes?: number;
|
|
30
36
|
}
|
|
31
37
|
export type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps, PollState, };
|
|
38
|
+
export interface ArticleVideoProps extends React.VideoHTMLAttributes<HTMLVideoElement> {
|
|
39
|
+
caption?: React.ReactNode;
|
|
40
|
+
}
|
|
41
|
+
export interface ArticleMaterialLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
|
|
42
|
+
materialId: string;
|
|
43
|
+
href?: string;
|
|
44
|
+
unavailableLabel?: React.ReactNode;
|
|
45
|
+
}
|
|
46
|
+
export interface ArticlePlatformTabsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
47
|
+
tabs: readonly {
|
|
48
|
+
platform: string;
|
|
49
|
+
label: React.ReactNode;
|
|
50
|
+
content: React.ReactNode;
|
|
51
|
+
}[];
|
|
52
|
+
value?: string;
|
|
53
|
+
onValueChange?: (value: string) => void;
|
|
54
|
+
}
|
|
32
55
|
//# sourceMappingURL=articleNodes.props.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"articleNodes.props.d.mts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodes.props.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAEnC,UAAU,iBAAkB,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;IAC3E,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,UAAU,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACtE,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IACzC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CACrC;AAED,UAAU,0BAA2B,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC7B;AAED,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"articleNodes.props.d.mts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodes.props.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,8 +15,8 @@ interface BeforeAfterComparisonProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
15
15
|
beforeLabel?: React.ReactNode;
|
|
16
16
|
afterLabel?: React.ReactNode;
|
|
17
17
|
}
|
|
18
|
-
type PollState = 'loading' | 'ready' | 'error' | 'voted';
|
|
19
|
-
interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad'> {
|
|
18
|
+
type PollState = 'loading' | 'ready' | 'error' | 'voted' | 'closed';
|
|
19
|
+
interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad' | 'onSubmit'> {
|
|
20
20
|
pollId: string;
|
|
21
21
|
question?: React.ReactNode;
|
|
22
22
|
options?: Array<{
|
|
@@ -27,6 +27,29 @@ interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'o
|
|
|
27
27
|
state?: PollState;
|
|
28
28
|
onLoad?: (pollId: string) => void;
|
|
29
29
|
onVote?: (pollId: string, optionId: string) => void;
|
|
30
|
+
selection?: readonly string[];
|
|
31
|
+
multiple?: boolean;
|
|
32
|
+
onSelectionChange?: (selection: string[]) => void;
|
|
33
|
+
onSubmit?: (pollId: string, selection: readonly string[]) => void;
|
|
34
|
+
onRetract?: (pollId: string) => void;
|
|
35
|
+
totalVotes?: number;
|
|
30
36
|
}
|
|
31
37
|
export type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps, PollState, };
|
|
38
|
+
export interface ArticleVideoProps extends React.VideoHTMLAttributes<HTMLVideoElement> {
|
|
39
|
+
caption?: React.ReactNode;
|
|
40
|
+
}
|
|
41
|
+
export interface ArticleMaterialLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
|
|
42
|
+
materialId: string;
|
|
43
|
+
href?: string;
|
|
44
|
+
unavailableLabel?: React.ReactNode;
|
|
45
|
+
}
|
|
46
|
+
export interface ArticlePlatformTabsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
47
|
+
tabs: readonly {
|
|
48
|
+
platform: string;
|
|
49
|
+
label: React.ReactNode;
|
|
50
|
+
content: React.ReactNode;
|
|
51
|
+
}[];
|
|
52
|
+
value?: string;
|
|
53
|
+
onValueChange?: (value: string) => void;
|
|
54
|
+
}
|
|
32
55
|
//# sourceMappingURL=articleNodes.props.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"articleNodes.props.d.ts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodes.props.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAEnC,UAAU,iBAAkB,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;IAC3E,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,UAAU,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACtE,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IACzC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CACrC;AAED,UAAU,0BAA2B,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC7B;AAED,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"articleNodes.props.d.ts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodes.props.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,16 @@
|
|
|
4
4
|
gap: var(--dsx-space-xs);
|
|
5
5
|
padding: var(--dsx-space-lg);
|
|
6
6
|
border-radius: var(--dsx-rounded-lg);
|
|
7
|
-
background: var(--dsx-color-
|
|
7
|
+
background: var(--dsx-color-primary-container);
|
|
8
8
|
box-sizing: border-box;
|
|
9
9
|
min-width: 0;
|
|
10
10
|
overflow-wrap: anywhere;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
.dsx-banner :is(.dsx-banner__label, .dsx-banner__value, .dsx-banner__footnote) {
|
|
14
|
+
color: var(--dsx-color-on-primary-container);
|
|
15
|
+
}
|
|
16
|
+
|
|
13
17
|
/* Fill: solid accent mass reusing Button primary's solved compliance —
|
|
14
18
|
accent-track background with accent-contrast text (near-black on spark,
|
|
15
19
|
white elsewhere, per the token). Wash stays the default hero. */
|
|
@@ -32,7 +36,6 @@
|
|
|
32
36
|
font-variation-settings: var(--dsx-typography-label-small-font-variation-settings);
|
|
33
37
|
text-transform: var(--dsx-typography-label-small-text-transform);
|
|
34
38
|
text-decoration: var(--dsx-typography-label-small-text-decoration);
|
|
35
|
-
color: var(--dsx-color-on-surface-variant);
|
|
36
39
|
}
|
|
37
40
|
|
|
38
41
|
.dsx-banner__value {
|
|
@@ -44,7 +47,6 @@
|
|
|
44
47
|
font-variation-settings: var(--dsx-typography-display-medium-font-variation-settings);
|
|
45
48
|
text-transform: var(--dsx-typography-display-medium-text-transform);
|
|
46
49
|
text-decoration: var(--dsx-typography-display-medium-text-decoration);
|
|
47
|
-
color: var(--dsx-color-on-surface);
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
.dsx-banner__footnote {
|
|
@@ -56,5 +58,4 @@
|
|
|
56
58
|
font-variation-settings: var(--dsx-typography-body-small-font-variation-settings);
|
|
57
59
|
text-transform: var(--dsx-typography-body-small-text-transform);
|
|
58
60
|
text-decoration: var(--dsx-typography-body-small-text-decoration);
|
|
59
|
-
color: var(--dsx-color-on-surface-variant);
|
|
60
61
|
}
|
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
.dsx-blockquote {
|
|
4
4
|
box-sizing: border-box;
|
|
5
5
|
margin: 0;
|
|
6
|
-
padding-
|
|
7
|
-
border-
|
|
6
|
+
padding-inline-start: var(--dsx-space-lg);
|
|
7
|
+
border-inline-start: var(--dsx-boundary-divider-width) solid var(--dsx-color-accent-border);
|
|
8
8
|
font-family: var(--dsx-typography-body-large-font-family), sans-serif;
|
|
9
9
|
font-size: var(--dsx-typography-body-large-font-size);
|
|
10
|
+
font-weight: var(--dsx-typography-body-large-font-weight);
|
|
11
|
+
letter-spacing: var(--dsx-typography-body-large-letter-spacing);
|
|
12
|
+
font-variation-settings: var(--dsx-typography-body-large-font-variation-settings);
|
|
10
13
|
font-style: italic;
|
|
11
14
|
line-height: var(--dsx-typography-body-large-line-height);
|
|
12
15
|
color: var(--dsx-color-on-surface-variant);
|
|
@@ -14,10 +17,10 @@
|
|
|
14
17
|
|
|
15
18
|
.dsx-blockquote--muted {
|
|
16
19
|
color: var(--dsx-color-on-surface-variant);
|
|
17
|
-
border-
|
|
20
|
+
border-inline-start-color: var(--dsx-color-outline-variant);
|
|
18
21
|
}
|
|
19
22
|
|
|
20
23
|
.dsx-blockquote--inverse {
|
|
21
24
|
color: var(--dsx-color-on-inverse-background);
|
|
22
|
-
border-
|
|
25
|
+
border-inline-start-color: var(--dsx-color-on-inverse-background);
|
|
23
26
|
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/* BottomDock — a floating pill of primary destinations for phone widths.
|
|
2
|
+
Tokens only. No breakpoints: the app renders the dock at phone widths. */
|
|
3
|
+
|
|
4
|
+
.dsx-bottom-dock {
|
|
5
|
+
position: fixed;
|
|
6
|
+
inset-inline: var(--dsx-space-3);
|
|
7
|
+
inset-block-end: calc(var(--dsx-space-3) + var(--dsx-safe-area-inset-bottom, 0px));
|
|
8
|
+
z-index: var(--dsx-z-index-fixed);
|
|
9
|
+
display: flex;
|
|
10
|
+
align-items: center;
|
|
11
|
+
justify-content: space-around;
|
|
12
|
+
gap: var(--dsx-space-xs);
|
|
13
|
+
padding: var(--dsx-space-xs);
|
|
14
|
+
box-sizing: border-box;
|
|
15
|
+
border: var(--dsx-border-width-sm) solid var(--dsx-panel-border-color);
|
|
16
|
+
border-radius: var(--dsx-rounded-xl);
|
|
17
|
+
background: var(--dsx-color-panel-translucent);
|
|
18
|
+
backdrop-filter: var(--dsx-effect-panel-glass-backdrop-filter);
|
|
19
|
+
box-shadow: var(--dsx-panel-shadow);
|
|
20
|
+
color: var(--dsx-color-on-surface);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.dsx-bottom-dock:where([data-placement='contained']) {
|
|
24
|
+
position: absolute;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.dsx-bottom-dock__item {
|
|
28
|
+
position: relative;
|
|
29
|
+
display: inline-flex;
|
|
30
|
+
align-items: center;
|
|
31
|
+
justify-content: center;
|
|
32
|
+
gap: var(--dsx-space-xs);
|
|
33
|
+
min-block-size: calc(var(--dsx-size-xl) + var(--dsx-space-xs));
|
|
34
|
+
min-inline-size: calc(var(--dsx-size-xl) + var(--dsx-space-xs));
|
|
35
|
+
padding: 0 var(--dsx-space-3);
|
|
36
|
+
box-sizing: border-box;
|
|
37
|
+
border: 0;
|
|
38
|
+
border-radius: var(--dsx-rounded-lg);
|
|
39
|
+
background: transparent;
|
|
40
|
+
color: var(--dsx-color-on-surface-variant);
|
|
41
|
+
font: inherit;
|
|
42
|
+
text-decoration: none;
|
|
43
|
+
cursor: pointer;
|
|
44
|
+
transition:
|
|
45
|
+
background-color var(--dsx-motion-duration-fast) var(--dsx-motion-easing-standard),
|
|
46
|
+
color var(--dsx-motion-duration-fast) var(--dsx-motion-easing-standard);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* Hover only on inactive items, so an active item never loses its container to the ghost wash. */
|
|
50
|
+
.dsx-bottom-dock__item:where(:not([data-active='true'])):hover {
|
|
51
|
+
background: var(--dsx-effect-hover-ghost);
|
|
52
|
+
color: var(--dsx-color-on-surface);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.dsx-bottom-dock__item:focus-visible {
|
|
56
|
+
outline: none;
|
|
57
|
+
box-shadow: var(--dsx-shadow-focus-ring);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.dsx-bottom-dock__item:where([data-active='true']) {
|
|
61
|
+
background: var(--dsx-color-primary-container);
|
|
62
|
+
color: var(--dsx-color-on-primary-container);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* labels="always": icon over label, items share the width (Material 3 / HIG). */
|
|
66
|
+
.dsx-bottom-dock:where([data-labels='always']) .dsx-bottom-dock__item {
|
|
67
|
+
flex: 1 1 0;
|
|
68
|
+
flex-direction: column;
|
|
69
|
+
gap: 0;
|
|
70
|
+
padding: var(--dsx-space-xs) var(--dsx-space-sm);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.dsx-bottom-dock__icon {
|
|
74
|
+
position: relative;
|
|
75
|
+
display: inline-flex;
|
|
76
|
+
align-items: center;
|
|
77
|
+
justify-content: center;
|
|
78
|
+
inline-size: var(--dsx-size-md);
|
|
79
|
+
block-size: var(--dsx-size-md);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.dsx-bottom-dock__label {
|
|
83
|
+
font-family: var(--dsx-typography-label-small-font-family), sans-serif;
|
|
84
|
+
font-size: var(--dsx-typography-label-small-font-size);
|
|
85
|
+
font-weight: var(--dsx-typography-label-small-font-weight);
|
|
86
|
+
line-height: var(--dsx-typography-label-small-line-height);
|
|
87
|
+
letter-spacing: var(--dsx-typography-label-small-letter-spacing);
|
|
88
|
+
font-variation-settings: var(--dsx-typography-label-small-font-variation-settings);
|
|
89
|
+
text-transform: var(--dsx-typography-label-small-text-transform);
|
|
90
|
+
text-decoration: var(--dsx-typography-label-small-text-decoration);
|
|
91
|
+
white-space: nowrap;
|
|
92
|
+
/* A long label truncates inside its item instead of poking out of the pill on a narrow phone. */
|
|
93
|
+
min-inline-size: 0;
|
|
94
|
+
max-inline-size: 100%;
|
|
95
|
+
overflow: hidden;
|
|
96
|
+
text-overflow: ellipsis;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* Place the badge inside BottomDock.Icon to sit on the glyph; outside it, it sits on the item corner. */
|
|
100
|
+
.dsx-bottom-dock__badge {
|
|
101
|
+
position: absolute;
|
|
102
|
+
inset-block-start: calc(var(--dsx-space-xs) * -1);
|
|
103
|
+
inset-inline-end: calc(var(--dsx-space-xs) * -1);
|
|
104
|
+
display: inline-flex;
|
|
105
|
+
align-items: center;
|
|
106
|
+
justify-content: center;
|
|
107
|
+
min-inline-size: var(--dsx-space-md);
|
|
108
|
+
block-size: var(--dsx-space-md);
|
|
109
|
+
padding: 0 var(--dsx-space-xs);
|
|
110
|
+
box-sizing: border-box;
|
|
111
|
+
border-radius: var(--dsx-rounded-full);
|
|
112
|
+
background: var(--dsx-color-primary);
|
|
113
|
+
color: var(--dsx-color-on-primary);
|
|
114
|
+
font-family: var(--dsx-typography-label-small-font-family), sans-serif;
|
|
115
|
+
font-size: var(--dsx-typography-label-small-font-size);
|
|
116
|
+
font-weight: var(--dsx-typography-label-small-font-weight);
|
|
117
|
+
line-height: var(--dsx-typography-label-small-line-height);
|
|
118
|
+
pointer-events: none;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/* An empty badge is a dot. */
|
|
122
|
+
.dsx-bottom-dock__badge:empty {
|
|
123
|
+
min-inline-size: var(--dsx-space-sm);
|
|
124
|
+
block-size: var(--dsx-space-sm);
|
|
125
|
+
padding: 0;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
@media (prefers-reduced-motion: reduce) {
|
|
129
|
+
.dsx-bottom-dock__item {
|
|
130
|
+
transition: none;
|
|
131
|
+
}
|
|
132
|
+
}
|