@smwb/ui-solid 0.13.0 → 0.14.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 +564 -0
- package/dist/assets/styles/less/components/appBar/appBar.entry.css +1 -1
- package/dist/assets/styles/less/components/button/button.entry.css +1 -1
- package/dist/assets/styles/less/components/checkbox/checkbox.entry.css +1 -1
- package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
- package/dist/assets/styles/less/components/commandPalette/commandPalette.entry.css +1 -0
- package/dist/assets/styles/less/components/composer/composer.entry.css +1 -0
- package/dist/assets/styles/less/components/diffStat/diffStat.entry.css +1 -0
- package/dist/assets/styles/less/components/kbd/kbd.entry.css +1 -0
- package/dist/assets/styles/less/components/list/list.entry.css +1 -1
- package/dist/assets/styles/less/components/qrCode/qrCode.entry.css +1 -0
- package/dist/assets/styles/less/components/radioButton/radioButton.entry.css +1 -1
- package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
- package/dist/assets/styles/less/components/sidebar/sidebar.entry.css +1 -1
- package/dist/assets/styles/less/components/statusDot/statusDot.entry.css +1 -0
- package/dist/assets/styles/less/components/swimlanes/swimlanes.entry.css +1 -0
- package/dist/assets/styles/less/components/tabGroups/tabGroups.entry.css +1 -0
- package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
- package/dist/assets/styles/less/components/tabs/tabPanel/tabPanel.entry.css +1 -0
- package/dist/assets/styles/less/components/tabs/tabs.entry.css +1 -1
- package/dist/assets/styles/less/components/textField/textField.entry.css +1 -1
- package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
- package/dist/assets/styles/less/components/treeView/treeView.entry.css +1 -1
- package/dist/assets/styles/less/tokens.entry.css +1 -1
- package/dist/components/dataDisplay/chat/chat.d.ts +42 -0
- package/dist/components/dataDisplay/chat/chat.js +116 -57
- package/dist/components/dataDisplay/chat/chat.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatComposer.d.ts +17 -0
- package/dist/components/dataDisplay/chat/chatComposer.js +21 -19
- package/dist/components/dataDisplay/chat/chatComposer.js.map +1 -1
- package/dist/components/dataDisplay/chat/index.d.ts +1 -1
- package/dist/components/dataDisplay/chat/utils.d.ts +14 -0
- package/dist/components/dataDisplay/chat/utils.js.map +1 -1
- package/dist/components/dataDisplay/dagView/dagView.js +238 -223
- package/dist/components/dataDisplay/dagView/dagView.js.map +1 -1
- package/dist/components/dataDisplay/diffStat/diffStat.d.ts +55 -0
- package/dist/components/dataDisplay/diffStat/diffStat.js +70 -0
- package/dist/components/dataDisplay/diffStat/diffStat.js.map +1 -0
- package/dist/components/dataDisplay/diffStat/index.d.ts +2 -0
- package/dist/components/dataDisplay/kbd/index.d.ts +4 -0
- package/dist/components/dataDisplay/kbd/kbd.d.ts +41 -0
- package/dist/components/dataDisplay/kbd/kbd.js +47 -0
- package/dist/components/dataDisplay/kbd/kbd.js.map +1 -0
- package/dist/components/dataDisplay/kbd/kbdKeys.d.ts +18 -0
- package/dist/components/dataDisplay/kbd/kbdKeys.js +70 -0
- package/dist/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
- package/dist/components/dataDisplay/list/listItem.d.ts +34 -0
- package/dist/components/dataDisplay/list/listItem.js +57 -20
- package/dist/components/dataDisplay/list/listItem.js.map +1 -1
- package/dist/components/dataDisplay/qrCode/index.d.ts +2 -0
- package/dist/components/dataDisplay/qrCode/qrCode.d.ts +30 -0
- package/dist/components/dataDisplay/qrCode/qrCode.js +88 -0
- package/dist/components/dataDisplay/qrCode/qrCode.js.map +1 -0
- package/dist/components/dataDisplay/qrCode/qrCodePath.d.ts +7 -0
- package/dist/components/dataDisplay/qrCode/qrCodePath.js +20 -0
- package/dist/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
- package/dist/components/dataDisplay/statusDot/index.d.ts +2 -0
- package/dist/components/dataDisplay/statusDot/statusDot.d.ts +35 -0
- package/dist/components/dataDisplay/statusDot/statusDot.js +31 -0
- package/dist/components/dataDisplay/statusDot/statusDot.js.map +1 -0
- package/dist/components/dataDisplay/swimlanes/index.d.ts +2 -0
- package/dist/components/dataDisplay/swimlanes/swimlanes.d.ts +75 -0
- package/dist/components/dataDisplay/swimlanes/swimlanes.js +361 -0
- package/dist/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
- package/dist/components/dataDisplay/treeView/treeView.d.ts +20 -0
- package/dist/components/dataDisplay/treeView/treeView.js +161 -95
- package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/components/feedBack/modal/modal.d.ts +9 -0
- package/dist/components/feedBack/modal/modal.js +68 -54
- package/dist/components/feedBack/modal/modal.js.map +1 -1
- package/dist/components/inputs/button/button.d.ts +12 -0
- package/dist/components/inputs/button/button.js +44 -37
- package/dist/components/inputs/button/button.js.map +1 -1
- package/dist/components/inputs/composer/composer.d.ts +148 -0
- package/dist/components/inputs/composer/composer.js +276 -0
- package/dist/components/inputs/composer/composer.js.map +1 -0
- package/dist/components/inputs/composer/composerFiles.d.ts +26 -0
- package/dist/components/inputs/composer/composerFiles.js +18 -0
- package/dist/components/inputs/composer/composerFiles.js.map +1 -0
- package/dist/components/inputs/composer/composerKeys.d.ts +29 -0
- package/dist/components/inputs/composer/composerKeys.js +7 -0
- package/dist/components/inputs/composer/composerKeys.js.map +1 -0
- package/dist/components/inputs/composer/index.d.ts +3 -0
- package/dist/components/layout/sheet/sheet.d.ts +12 -0
- package/dist/components/layout/sheet/sheet.js +100 -86
- package/dist/components/layout/sheet/sheet.js.map +1 -1
- package/dist/components/layout/tabGroups/index.d.ts +4 -0
- package/dist/components/layout/tabGroups/tabGroups.d.ts +102 -0
- package/dist/components/layout/tabGroups/tabGroups.js +895 -0
- package/dist/components/layout/tabGroups/tabGroups.js.map +1 -0
- package/dist/components/layout/tabGroups/tabGroupsFocus.d.ts +55 -0
- package/dist/components/layout/tabGroups/tabGroupsFocus.js +192 -0
- package/dist/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
- package/dist/components/layout/tabGroups/tabGroupsLayout.d.ts +250 -0
- package/dist/components/layout/tabGroups/tabGroupsLayout.js +480 -0
- package/dist/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
- package/dist/components/navigation/appBar/appBar.d.ts +22 -0
- package/dist/components/navigation/appBar/appBar.js +60 -22
- package/dist/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/components/navigation/commandPalette/commandPalette.d.ts +126 -0
- package/dist/components/navigation/commandPalette/commandPalette.js +457 -0
- package/dist/components/navigation/commandPalette/commandPalette.js.map +1 -0
- package/dist/components/navigation/commandPalette/commandPaletteFilter.d.ts +11 -0
- package/dist/components/navigation/commandPalette/commandPaletteFilter.js +15 -0
- package/dist/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
- package/dist/components/navigation/commandPalette/commandPaletteNavigation.d.ts +13 -0
- package/dist/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
- package/dist/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
- package/dist/components/navigation/commandPalette/commandPaletteTypes.d.ts +39 -0
- package/dist/components/navigation/commandPalette/index.d.ts +6 -0
- package/dist/components/navigation/sidebar/sidebar.d.ts +10 -0
- package/dist/components/navigation/sidebar/sidebar.js +12 -10
- package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/components/navigation/tabs/index.d.ts +3 -1
- package/dist/components/navigation/tabs/tab/tab.d.ts +89 -2
- package/dist/components/navigation/tabs/tab/tab.js +164 -44
- package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/components/navigation/tabs/tabPanel/tabPanel.d.ts +20 -0
- package/dist/components/navigation/tabs/tabPanel/tabPanel.js +34 -0
- package/dist/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
- package/dist/components/navigation/tabs/tabs.d.ts +73 -3
- package/dist/components/navigation/tabs/tabs.js +387 -160
- package/dist/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/components/navigation/tabs/tabs.utils.d.ts +20 -0
- package/dist/components/navigation/tabs/tabs.utils.js +11 -0
- package/dist/components/navigation/tabs/tabs.utils.js.map +1 -0
- package/dist/components/navigation/tabs/tabsContext.d.ts +31 -1
- package/dist/components/navigation/tabs/tabsContext.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chat.js +116 -57
- package/dist/headless/components/dataDisplay/chat/chat.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatComposer.js +21 -19
- package/dist/headless/components/dataDisplay/chat/chatComposer.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/utils.js.map +1 -1
- package/dist/headless/components/dataDisplay/dagView/dagView.js +238 -223
- package/dist/headless/components/dataDisplay/dagView/dagView.js.map +1 -1
- package/dist/headless/components/dataDisplay/diffStat/diffStat.js +68 -0
- package/dist/headless/components/dataDisplay/diffStat/diffStat.js.map +1 -0
- package/dist/headless/components/dataDisplay/kbd/kbd.js +45 -0
- package/dist/headless/components/dataDisplay/kbd/kbd.js.map +1 -0
- package/dist/headless/components/dataDisplay/kbd/kbdKeys.js +70 -0
- package/dist/headless/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
- package/dist/headless/components/dataDisplay/list/listItem.js +57 -20
- package/dist/headless/components/dataDisplay/list/listItem.js.map +1 -1
- package/dist/headless/components/dataDisplay/qrCode/qrCode.js +86 -0
- package/dist/headless/components/dataDisplay/qrCode/qrCode.js.map +1 -0
- package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js +20 -0
- package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
- package/dist/headless/components/dataDisplay/statusDot/statusDot.js +29 -0
- package/dist/headless/components/dataDisplay/statusDot/statusDot.js.map +1 -0
- package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js +359 -0
- package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
- package/dist/headless/components/dataDisplay/treeView/treeView.js +161 -95
- package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/headless/components/feedBack/modal/modal.js +68 -54
- package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
- package/dist/headless/components/inputs/button/button.js +42 -35
- package/dist/headless/components/inputs/button/button.js.map +1 -1
- package/dist/headless/components/inputs/composer/composer.js +274 -0
- package/dist/headless/components/inputs/composer/composer.js.map +1 -0
- package/dist/headless/components/inputs/composer/composerFiles.js +18 -0
- package/dist/headless/components/inputs/composer/composerFiles.js.map +1 -0
- package/dist/headless/components/inputs/composer/composerKeys.js +7 -0
- package/dist/headless/components/inputs/composer/composerKeys.js.map +1 -0
- package/dist/headless/components/layout/sheet/sheet.js +100 -86
- package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
- package/dist/headless/components/layout/tabGroups/tabGroups.js +893 -0
- package/dist/headless/components/layout/tabGroups/tabGroups.js.map +1 -0
- package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js +192 -0
- package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
- package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js +480 -0
- package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
- package/dist/headless/components/navigation/appBar/appBar.js +64 -26
- package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/headless/components/navigation/commandPalette/commandPalette.js +455 -0
- package/dist/headless/components/navigation/commandPalette/commandPalette.js.map +1 -0
- package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js +15 -0
- package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
- package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
- package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
- package/dist/headless/components/navigation/sidebar/sidebar.js +28 -26
- package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tab/tab.js +164 -44
- package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js +32 -0
- package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
- package/dist/headless/components/navigation/tabs/tabs.js +387 -160
- package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabs.utils.js +11 -0
- package/dist/headless/components/navigation/tabs/tabs.utils.js.map +1 -0
- package/dist/headless/components/navigation/tabs/tabsContext.js.map +1 -1
- package/dist/headless/index.js +405 -367
- package/dist/headless/index.js.map +1 -1
- package/dist/headless/primitives/createFocusTrap.js +17 -17
- package/dist/headless/primitives/createFocusTrap.js.map +1 -1
- package/dist/headless/primitives/createKeyboardShortcut.js +16 -0
- package/dist/headless/primitives/createKeyboardShortcut.js.map +1 -0
- package/dist/headless/primitives/restoreFocus.js +10 -0
- package/dist/headless/primitives/restoreFocus.js.map +1 -0
- package/dist/headless/source/components/dataDisplay/chat/chat.jsx +38 -4
- package/dist/headless/source/components/dataDisplay/chat/chat.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatComposer.jsx +1 -0
- package/dist/headless/source/components/dataDisplay/chat/chatComposer.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/index.js.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/utils.js.map +2 -2
- package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx +30 -21
- package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/diffStat/diffStat.jsx +76 -0
- package/dist/headless/source/components/dataDisplay/diffStat/diffStat.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/diffStat/index.js +19 -0
- package/dist/headless/source/components/dataDisplay/diffStat/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/kbd/index.js +9 -0
- package/dist/headless/source/components/dataDisplay/kbd/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/kbd/kbd.jsx +48 -0
- package/dist/headless/source/components/dataDisplay/kbd/kbd.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/kbd/kbdKeys.js +79 -0
- package/dist/headless/source/components/dataDisplay/kbd/kbdKeys.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/list/listItem.jsx +37 -7
- package/dist/headless/source/components/dataDisplay/list/listItem.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/qrCode/index.js +6 -0
- package/dist/headless/source/components/dataDisplay/qrCode/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/qrCode/qrCode.jsx +94 -0
- package/dist/headless/source/components/dataDisplay/qrCode/qrCode.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/qrCode/qrCodePath.js +24 -0
- package/dist/headless/source/components/dataDisplay/qrCode/qrCodePath.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/statusDot/index.js +6 -0
- package/dist/headless/source/components/dataDisplay/statusDot/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/statusDot/statusDot.jsx +28 -0
- package/dist/headless/source/components/dataDisplay/statusDot/statusDot.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/swimlanes/index.js +15 -0
- package/dist/headless/source/components/dataDisplay/swimlanes/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/swimlanes/swimlanes.jsx +450 -0
- package/dist/headless/source/components/dataDisplay/swimlanes/swimlanes.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx +118 -37
- package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/modal/modal.jsx +34 -4
- package/dist/headless/source/components/feedBack/modal/modal.jsx.map +1 -1
- package/dist/headless/source/components/inputs/button/button.jsx +6 -2
- package/dist/headless/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/headless/source/components/inputs/composer/composer.jsx +319 -0
- package/dist/headless/source/components/inputs/composer/composer.jsx.map +1 -0
- package/dist/headless/source/components/inputs/composer/composerFiles.js +27 -0
- package/dist/headless/source/components/inputs/composer/composerFiles.js.map +7 -0
- package/dist/headless/source/components/inputs/composer/composerKeys.js +11 -0
- package/dist/headless/source/components/inputs/composer/composerKeys.js.map +7 -0
- package/dist/headless/source/components/inputs/composer/index.js +5 -0
- package/dist/headless/source/components/inputs/composer/index.js.map +7 -0
- package/dist/headless/source/components/layout/sheet/sheet.jsx +33 -11
- package/dist/headless/source/components/layout/sheet/sheet.jsx.map +1 -1
- package/dist/headless/source/components/layout/tabGroups/index.js +8 -0
- package/dist/headless/source/components/layout/tabGroups/index.js.map +7 -0
- package/dist/headless/source/components/layout/tabGroups/tabGroups.jsx +1117 -0
- package/dist/headless/source/components/layout/tabGroups/tabGroups.jsx.map +1 -0
- package/dist/headless/source/components/layout/tabGroups/tabGroupsFocus.js +222 -0
- package/dist/headless/source/components/layout/tabGroups/tabGroupsFocus.js.map +7 -0
- package/dist/headless/source/components/layout/tabGroups/tabGroupsLayout.js +629 -0
- package/dist/headless/source/components/layout/tabGroups/tabGroupsLayout.js.map +7 -0
- package/dist/headless/source/components/navigation/appBar/appBar.jsx +27 -3
- package/dist/headless/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/commandPalette/commandPalette.jsx +506 -0
- package/dist/headless/source/components/navigation/commandPalette/commandPalette.jsx.map +1 -0
- package/dist/headless/source/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
- package/dist/headless/source/components/navigation/commandPalette/commandPaletteFilter.js.map +7 -0
- package/dist/headless/source/components/navigation/commandPalette/commandPaletteNavigation.js +54 -0
- package/dist/headless/source/components/navigation/commandPalette/commandPaletteNavigation.js.map +7 -0
- package/dist/headless/source/components/navigation/commandPalette/commandPaletteTypes.js +1 -0
- package/dist/headless/source/components/navigation/commandPalette/commandPaletteTypes.js.map +7 -0
- package/dist/headless/source/components/navigation/commandPalette/index.js +11 -0
- package/dist/headless/source/components/navigation/commandPalette/index.js.map +7 -0
- package/dist/headless/source/components/navigation/sidebar/sidebar.jsx +5 -2
- package/dist/headless/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/index.js +2 -0
- package/dist/headless/source/components/navigation/tabs/index.js.map +2 -2
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +135 -8
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tabPanel/tabPanel.jsx +28 -0
- package/dist/headless/source/components/navigation/tabs/tabPanel/tabPanel.jsx.map +1 -0
- package/dist/headless/source/components/navigation/tabs/tabs.jsx +361 -13
- package/dist/headless/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tabs.utils.js +18 -0
- package/dist/headless/source/components/navigation/tabs/tabs.utils.js.map +7 -0
- package/dist/headless/source/components/navigation/tabs/tabsContext.js.map +2 -2
- package/dist/headless/source/index.js +41 -1
- package/dist/headless/source/index.js.map +2 -2
- package/dist/headless/source/primitives/createFocusTrap.js +8 -3
- package/dist/headless/source/primitives/createFocusTrap.js.map +2 -2
- package/dist/headless/source/primitives/createKeyboardShortcut.js +23 -0
- package/dist/headless/source/primitives/createKeyboardShortcut.js.map +7 -0
- package/dist/headless/source/primitives/restoreFocus.js +14 -0
- package/dist/headless/source/primitives/restoreFocus.js.map +7 -0
- package/dist/headless/source/utils/keyboardShortcut.js +74 -0
- package/dist/headless/source/utils/keyboardShortcut.js.map +7 -0
- package/dist/headless/source/utils/linkAttrs.js +16 -0
- package/dist/headless/source/utils/linkAttrs.js.map +7 -0
- package/dist/headless/utils/keyboardShortcut.js +48 -0
- package/dist/headless/utils/keyboardShortcut.js.map +1 -0
- package/dist/headless/utils/linkAttrs.js +13 -0
- package/dist/headless/utils/linkAttrs.js.map +1 -0
- package/dist/index.d.ts +24 -3
- package/dist/index.js +405 -367
- package/dist/index.js.map +1 -1
- package/dist/primitives/createFocusTrap.d.ts +5 -0
- package/dist/primitives/createFocusTrap.js +17 -17
- package/dist/primitives/createFocusTrap.js.map +1 -1
- package/dist/primitives/createKeyboardShortcut.d.ts +23 -0
- package/dist/primitives/createKeyboardShortcut.js +16 -0
- package/dist/primitives/createKeyboardShortcut.js.map +1 -0
- package/dist/primitives/restoreFocus.d.ts +8 -0
- package/dist/primitives/restoreFocus.js +10 -0
- package/dist/primitives/restoreFocus.js.map +1 -0
- package/dist/source/components/dataDisplay/chat/chat.jsx +38 -4
- package/dist/source/components/dataDisplay/chat/chat.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatComposer.jsx +1 -0
- package/dist/source/components/dataDisplay/chat/chatComposer.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/index.js.map +1 -1
- package/dist/source/components/dataDisplay/chat/utils.js.map +2 -2
- package/dist/source/components/dataDisplay/dagView/dagView.jsx +30 -21
- package/dist/source/components/dataDisplay/dagView/dagView.jsx.map +1 -1
- package/dist/source/components/dataDisplay/diffStat/diffStat.jsx +78 -0
- package/dist/source/components/dataDisplay/diffStat/diffStat.jsx.map +1 -0
- package/dist/source/components/dataDisplay/diffStat/index.js +19 -0
- package/dist/source/components/dataDisplay/diffStat/index.js.map +7 -0
- package/dist/source/components/dataDisplay/kbd/index.js +9 -0
- package/dist/source/components/dataDisplay/kbd/index.js.map +7 -0
- package/dist/source/components/dataDisplay/kbd/kbd.jsx +50 -0
- package/dist/source/components/dataDisplay/kbd/kbd.jsx.map +1 -0
- package/dist/source/components/dataDisplay/kbd/kbdKeys.js +79 -0
- package/dist/source/components/dataDisplay/kbd/kbdKeys.js.map +7 -0
- package/dist/source/components/dataDisplay/list/listItem.jsx +37 -7
- package/dist/source/components/dataDisplay/list/listItem.jsx.map +1 -1
- package/dist/source/components/dataDisplay/qrCode/index.js +6 -0
- package/dist/source/components/dataDisplay/qrCode/index.js.map +7 -0
- package/dist/source/components/dataDisplay/qrCode/qrCode.jsx +96 -0
- package/dist/source/components/dataDisplay/qrCode/qrCode.jsx.map +1 -0
- package/dist/source/components/dataDisplay/qrCode/qrCodePath.js +24 -0
- package/dist/source/components/dataDisplay/qrCode/qrCodePath.js.map +7 -0
- package/dist/source/components/dataDisplay/statusDot/index.js +6 -0
- package/dist/source/components/dataDisplay/statusDot/index.js.map +7 -0
- package/dist/source/components/dataDisplay/statusDot/statusDot.jsx +30 -0
- package/dist/source/components/dataDisplay/statusDot/statusDot.jsx.map +1 -0
- package/dist/source/components/dataDisplay/swimlanes/index.js +15 -0
- package/dist/source/components/dataDisplay/swimlanes/index.js.map +7 -0
- package/dist/source/components/dataDisplay/swimlanes/swimlanes.jsx +452 -0
- package/dist/source/components/dataDisplay/swimlanes/swimlanes.jsx.map +1 -0
- package/dist/source/components/dataDisplay/treeView/treeView.jsx +118 -37
- package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
- package/dist/source/components/feedBack/modal/modal.jsx +34 -4
- package/dist/source/components/feedBack/modal/modal.jsx.map +1 -1
- package/dist/source/components/inputs/button/button.jsx +6 -2
- package/dist/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/source/components/inputs/composer/composer.jsx +321 -0
- package/dist/source/components/inputs/composer/composer.jsx.map +1 -0
- package/dist/source/components/inputs/composer/composerFiles.js +27 -0
- package/dist/source/components/inputs/composer/composerFiles.js.map +7 -0
- package/dist/source/components/inputs/composer/composerKeys.js +11 -0
- package/dist/source/components/inputs/composer/composerKeys.js.map +7 -0
- package/dist/source/components/inputs/composer/index.js +5 -0
- package/dist/source/components/inputs/composer/index.js.map +7 -0
- package/dist/source/components/layout/sheet/sheet.jsx +33 -11
- package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
- package/dist/source/components/layout/tabGroups/index.js +8 -0
- package/dist/source/components/layout/tabGroups/index.js.map +7 -0
- package/dist/source/components/layout/tabGroups/tabGroups.jsx +1119 -0
- package/dist/source/components/layout/tabGroups/tabGroups.jsx.map +1 -0
- package/dist/source/components/layout/tabGroups/tabGroupsFocus.js +222 -0
- package/dist/source/components/layout/tabGroups/tabGroupsFocus.js.map +7 -0
- package/dist/source/components/layout/tabGroups/tabGroupsLayout.js +629 -0
- package/dist/source/components/layout/tabGroups/tabGroupsLayout.js.map +7 -0
- package/dist/source/components/navigation/appBar/appBar.jsx +27 -3
- package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/source/components/navigation/commandPalette/commandPalette.jsx +508 -0
- package/dist/source/components/navigation/commandPalette/commandPalette.jsx.map +1 -0
- package/dist/source/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
- package/dist/source/components/navigation/commandPalette/commandPaletteFilter.js.map +7 -0
- package/dist/source/components/navigation/commandPalette/commandPaletteNavigation.js +54 -0
- package/dist/source/components/navigation/commandPalette/commandPaletteNavigation.js.map +7 -0
- package/dist/source/components/navigation/commandPalette/commandPaletteTypes.js +1 -0
- package/dist/source/components/navigation/commandPalette/commandPaletteTypes.js.map +7 -0
- package/dist/source/components/navigation/commandPalette/index.js +11 -0
- package/dist/source/components/navigation/commandPalette/index.js.map +7 -0
- package/dist/source/components/navigation/sidebar/sidebar.jsx +5 -2
- package/dist/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/index.js +2 -0
- package/dist/source/components/navigation/tabs/index.js.map +2 -2
- package/dist/source/components/navigation/tabs/tab/tab.jsx +135 -8
- package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabPanel/tabPanel.jsx +30 -0
- package/dist/source/components/navigation/tabs/tabPanel/tabPanel.jsx.map +1 -0
- package/dist/source/components/navigation/tabs/tabs.jsx +361 -13
- package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabs.utils.js +18 -0
- package/dist/source/components/navigation/tabs/tabs.utils.js.map +7 -0
- package/dist/source/components/navigation/tabs/tabsContext.js.map +2 -2
- package/dist/source/index.js +41 -1
- package/dist/source/index.js.map +2 -2
- package/dist/source/primitives/createFocusTrap.js +8 -3
- package/dist/source/primitives/createFocusTrap.js.map +2 -2
- package/dist/source/primitives/createKeyboardShortcut.js +23 -0
- package/dist/source/primitives/createKeyboardShortcut.js.map +7 -0
- package/dist/source/primitives/restoreFocus.js +14 -0
- package/dist/source/primitives/restoreFocus.js.map +7 -0
- package/dist/source/utils/keyboardShortcut.js +74 -0
- package/dist/source/utils/keyboardShortcut.js.map +7 -0
- package/dist/source/utils/linkAttrs.js +16 -0
- package/dist/source/utils/linkAttrs.js.map +7 -0
- package/dist/utils/keyboardShortcut.d.ts +12 -0
- package/dist/utils/keyboardShortcut.js +48 -0
- package/dist/utils/keyboardShortcut.js.map +1 -0
- package/dist/utils/linkAttrs.d.ts +13 -0
- package/dist/utils/linkAttrs.js +13 -0
- package/dist/utils/linkAttrs.js.map +1 -0
- package/package.json +66 -3
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { splitProps } from "solid-js";
|
|
1
|
+
import { Show, splitProps } from "solid-js";
|
|
2
2
|
import cn from "clsx";
|
|
3
3
|
import { mergeRefs } from "../../../primitives/mergeRefs";
|
|
4
4
|
import { callHandler } from "../../../primitives/callHandler";
|
|
5
|
+
import { resolveLinkRel, resolveLinkTarget } from "../../../utils/linkAttrs";
|
|
5
6
|
function ListItem(props) {
|
|
6
7
|
const [local] = splitProps(props, [
|
|
7
8
|
"class",
|
|
@@ -12,12 +13,23 @@ function ListItem(props) {
|
|
|
12
13
|
"divider",
|
|
13
14
|
"startAdornment",
|
|
14
15
|
"endAdornment",
|
|
16
|
+
"href",
|
|
17
|
+
"target",
|
|
18
|
+
"rel",
|
|
15
19
|
"onClick",
|
|
16
20
|
"ref"
|
|
17
21
|
]);
|
|
18
|
-
const interactive = () => !!local.onClick && !local.disabled;
|
|
22
|
+
const interactive = () => !!local.onClick && !local.disabled && !local.href;
|
|
23
|
+
const linkTarget = () => resolveLinkTarget(local.target);
|
|
24
|
+
let linkEl;
|
|
25
|
+
const content = () => <>
|
|
26
|
+
<span class="smwb-list__item__start">{local.startAdornment}</span>
|
|
27
|
+
<span class="smwb-list__item__main">{local.children}</span>
|
|
28
|
+
</>;
|
|
19
29
|
const onClick = (event) => {
|
|
20
|
-
if (
|
|
30
|
+
if (local.disabled) return;
|
|
31
|
+
if (local.href && !linkEl?.contains(event.target)) return;
|
|
32
|
+
callHandler(local.onClick, event);
|
|
21
33
|
};
|
|
22
34
|
const onKeyDown = (event) => {
|
|
23
35
|
if (interactive() && (event.key === "Enter" || event.key === " ")) {
|
|
@@ -30,20 +42,38 @@ function ListItem(props) {
|
|
|
30
42
|
role="listitem"
|
|
31
43
|
tabindex={interactive() ? 0 : void 0}
|
|
32
44
|
aria-disabled={local.disabled || void 0}
|
|
33
|
-
aria-selected={local.selected || void 0}
|
|
45
|
+
aria-selected={!local.href && local.selected || void 0}
|
|
34
46
|
onClick={onClick}
|
|
35
47
|
onKeyDown={onKeyDown}
|
|
36
48
|
class={cn("smwb-list__item", local.class, {
|
|
37
49
|
"smwb-disabled": local.disabled,
|
|
38
50
|
"smwb-selected": local.selected,
|
|
51
|
+
"smwb-list__item_link": !!local.href,
|
|
39
52
|
"smwb-list__item_dense": local.dense,
|
|
40
53
|
"smwb-list__item_divider": local.divider
|
|
41
54
|
})}
|
|
42
55
|
data-testid="list-item"
|
|
43
56
|
>
|
|
44
|
-
<
|
|
45
|
-
|
|
46
|
-
|
|
57
|
+
<Show
|
|
58
|
+
when={local.href}
|
|
59
|
+
fallback={<>
|
|
60
|
+
{content()}
|
|
61
|
+
<span class="smwb-list__item__end">{local.endAdornment}</span>
|
|
62
|
+
</>}
|
|
63
|
+
>
|
|
64
|
+
<a
|
|
65
|
+
ref={linkEl}
|
|
66
|
+
class="smwb-list__item__link"
|
|
67
|
+
data-testid="list-item-link"
|
|
68
|
+
aria-current={local.selected ? "page" : void 0}
|
|
69
|
+
href={local.disabled ? void 0 : local.href}
|
|
70
|
+
target={linkTarget()}
|
|
71
|
+
rel={resolveLinkRel(local.rel, linkTarget())}
|
|
72
|
+
>
|
|
73
|
+
{content()}
|
|
74
|
+
</a>
|
|
75
|
+
<span class="smwb-list__item__end">{local.endAdornment}</span>
|
|
76
|
+
</Show>
|
|
47
77
|
</li>;
|
|
48
78
|
}
|
|
49
79
|
var listItem_default = ListItem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/list/listItem.tsx"],"sourcesContent":["import { type JSX, type ParentProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\n\nexport interface ListItemProps {\n disabled?: boolean;\n class?: string;\n selected?: boolean;\n /** Compact row. */\n dense?: boolean;\n /** Render a bottom divider. */\n divider?: boolean;\n startAdornment?: JSX.Element;\n endAdornment?: JSX.Element;\n onClick?: JSX.EventHandlerUnion<HTMLLIElement, MouseEvent>;\n ref?: Ref<HTMLLIElement>;\n}\n\nexport function ListItem(props: ParentProps<ListItemProps>): JSX.Element {\n const [local] = splitProps(props, [\n \"class\",\n \"children\",\n \"disabled\",\n \"selected\",\n \"dense\",\n \"divider\",\n \"startAdornment\",\n \"endAdornment\",\n \"onClick\",\n \"ref\",\n ]);\n\n const interactive = (): boolean => !!local.onClick && !local.disabled;\n\n // Solid binds event handlers once, so both are always attached and read the\n // props themselves: an item can be disabled, or get another onClick, after it\n // renders.\n const onClick: JSX.EventHandler<HTMLLIElement, MouseEvent> = (event) => {\n if (
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/list/listItem.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\nimport { resolveLinkRel, resolveLinkTarget } from \"../../../utils/linkAttrs\";\n\nexport interface ListItemProps {\n disabled?: boolean;\n class?: string;\n /**\n * Paints the row as the current one. On a link row (with `href`) it also marks the link as the current page\n * with `aria-current=\"page\"`, because `aria-selected` is not a state a list item can have; on another row it\n * stays `aria-selected`.\n */\n selected?: boolean;\n /** Compact row. */\n dense?: boolean;\n /** Render a bottom divider. */\n divider?: boolean;\n startAdornment?: JSX.Element;\n /**\n * Trailing content. On a link row (with `href`) it sits beside the link, not inside it, so it can hold a control\n * (a pin button, a toggle) without nesting it in the `<a>`; a click on it does not reach `onClick`.\n */\n endAdornment?: JSX.Element;\n /**\n * Makes the row a link: the `startAdornment` and the children sit in an `<a href>` that fills the row, so it can be\n * focused with Tab, opened with middle click or copied. Keep the `startAdornment` non-interactive; a control\n * belongs in the `endAdornment`. A disabled row has no `href`. A router takes the\n * plain click in `onClick` with `event.preventDefault()`, and leaves a modified one (Ctrl, Meta, Shift,\n * Alt, or a button other than the main one) to the browser, as a router's `Link` does.\n */\n href?: string;\n /**\n * Where the link (with `href`) opens. By default `\"_blank\"`: a new tab, as for `Button`. Pass `null` for an\n * internal link: the `target` attribute is left out and the link opens in place. An empty string does the same; any other\n * string is used as is.\n */\n target?: string | null | undefined;\n /**\n * The `rel` of the link (with `href`). By default `\"noreferrer\"` for a link that opens another tab or window,\n * and none for one that opens in place. Your own value replaces the default, so add `noreferrer` yourself\n * if you still want it; an empty string drops the attribute.\n */\n rel?: string | undefined;\n /**\n * Click handler of the row. With an `href` it runs for a click on the link (not on the `endAdornment`), before the\n * browser follows it, so `event.preventDefault()` cancels the navigation; the row then is not a Tab stop of its\n * own, the link is.\n */\n onClick?: JSX.EventHandlerUnion<HTMLLIElement, MouseEvent>;\n ref?: Ref<HTMLLIElement>;\n}\n\nexport function ListItem(props: ParentProps<ListItemProps>): JSX.Element {\n const [local] = splitProps(props, [\n \"class\",\n \"children\",\n \"disabled\",\n \"selected\",\n \"dense\",\n \"divider\",\n \"startAdornment\",\n \"endAdornment\",\n \"href\",\n \"target\",\n \"rel\",\n \"onClick\",\n \"ref\",\n ]);\n\n // A link row is focused through its anchor, which Enter follows by itself.\n const interactive = (): boolean => !!local.onClick && !local.disabled && !local.href;\n const linkTarget = (): string | undefined => resolveLinkTarget(local.target);\n\n let linkEl: HTMLAnchorElement | undefined;\n\n // The start and the main part, which a link row puts in the anchor.\n const content = (): JSX.Element => (\n <>\n <span class=\"smwb-list__item__start\">{local.startAdornment}</span>\n <span class=\"smwb-list__item__main\">{local.children}</span>\n </>\n );\n\n // Solid binds event handlers once, so both are always attached and read the\n // props themselves: an item can be disabled, or get another onClick, after it\n // renders.\n const onClick: JSX.EventHandler<HTMLLIElement, MouseEvent> = (event) => {\n if (local.disabled) return;\n // The end adornment of a link row is beside the link, and its own clicks are not the row's.\n if (local.href && !linkEl?.contains(event.target as Node)) return;\n callHandler(local.onClick, event);\n };\n const onKeyDown: JSX.EventHandler<HTMLLIElement, KeyboardEvent> = (event) => {\n if (interactive() && (event.key === \"Enter\" || event.key === \" \")) {\n event.preventDefault();\n callHandler(local.onClick, event as unknown as MouseEvent & { currentTarget: HTMLLIElement; target: Element });\n }\n };\n\n return (\n <li\n ref={mergeRefs(local.ref)}\n role=\"listitem\"\n tabindex={interactive() ? 0 : undefined}\n aria-disabled={local.disabled || undefined}\n aria-selected={(!local.href && local.selected) || undefined}\n onClick={onClick}\n onKeyDown={onKeyDown}\n class={cn(\"smwb-list__item\", local.class, {\n \"smwb-disabled\": local.disabled,\n \"smwb-selected\": local.selected,\n \"smwb-list__item_link\": !!local.href,\n \"smwb-list__item_dense\": local.dense,\n \"smwb-list__item_divider\": local.divider,\n })}\n data-testid=\"list-item\"\n >\n <Show\n when={local.href}\n fallback={\n <>\n {content()}\n <span class=\"smwb-list__item__end\">{local.endAdornment}</span>\n </>\n }\n >\n <a\n ref={linkEl}\n class=\"smwb-list__item__link\"\n data-testid=\"list-item-link\"\n aria-current={local.selected ? \"page\" : undefined}\n // A disabled link has no href, so it is no link to follow or to focus.\n href={local.disabled ? undefined : local.href}\n target={linkTarget()}\n rel={resolveLinkRel(local.rel, linkTarget())}\n >\n {content()}\n </a>\n <span class=\"smwb-list__item__end\">{local.endAdornment}</span>\n </Show>\n </li>\n );\n}\n\nexport default ListItem;\n"],"mappings":"AAAA,SAAqC,MAAM,kBAAkB;AAC7D,OAAO,QAAQ;AACf,SAAS,iBAA2B;AACpC,SAAS,mBAAmB;AAC5B,SAAS,gBAAgB,yBAAyB;AAkD3C,SAAS,SAAS,OAAgD;AACvE,QAAM,CAAC,KAAK,IAAI,WAAW,OAAO;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAGD,QAAM,cAAc,MAAe,CAAC,CAAC,MAAM,WAAW,CAAC,MAAM,YAAY,CAAC,MAAM;AAChF,QAAM,aAAa,MAA0B,kBAAkB,MAAM,MAAM;AAE3E,MAAI;AAGJ,QAAM,UAAU,MACd,EAAE;AAAA,MACA,CAAC,KAAK,MAAM,0BAA0B,MAAM,eAAe,EAA1D,KAAiE;AAAA,MAClE,CAAC,KAAK,MAAM,yBAAyB,MAAM,SAAS,EAAnD,KAA0D;AAAA,IAC7D;AAMF,QAAM,UAAuD,CAAC,UAAU;AACtE,QAAI,MAAM,SAAU;AAEpB,QAAI,MAAM,QAAQ,CAAC,QAAQ,SAAS,MAAM,MAAc,EAAG;AAC3D,gBAAY,MAAM,SAAS,KAAK;AAAA,EAClC;AACA,QAAM,YAA4D,CAAC,UAAU;AAC3E,QAAI,YAAY,MAAM,MAAM,QAAQ,WAAW,MAAM,QAAQ,MAAM;AACjE,YAAM,eAAe;AACrB,kBAAY,MAAM,SAAS,KAAkF;AAAA,IAC/G;AAAA,EACF;AAEA,SACE,CAAC;AAAA,IACC,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,KAAK;AAAA,IACL,UAAU,YAAY,IAAI,IAAI;AAAA,IAC9B,eAAe,MAAM,YAAY;AAAA,IACjC,eAAgB,CAAC,MAAM,QAAQ,MAAM,YAAa;AAAA,IAClD,SAAS;AAAA,IACT,WAAW;AAAA,IACX,OAAO,GAAG,mBAAmB,MAAM,OAAO;AAAA,MACxC,iBAAiB,MAAM;AAAA,MACvB,iBAAiB,MAAM;AAAA,MACvB,wBAAwB,CAAC,CAAC,MAAM;AAAA,MAChC,yBAAyB,MAAM;AAAA,MAC/B,2BAA2B,MAAM;AAAA,IACnC,CAAC;AAAA,IACD,YAAY;AAAA,GACb;AAAA,MACC,CAAC;AAAA,IACC,MAAM,MAAM;AAAA,IACZ,UACE,EAAE;AAAA,aACC,QAAQ,EAAE;AAAA,YACX,CAAC,KAAK,MAAM,wBAAwB,MAAM,aAAa,EAAtD,KAA6D;AAAA,UAChE;AAAA,GAEH;AAAA,QACC,CAAC;AAAA,IACC,KAAK;AAAA,IACL,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,cAAc,MAAM,WAAW,SAAS;AAAA,IAExC,MAAM,MAAM,WAAW,SAAY,MAAM;AAAA,IACzC,QAAQ,WAAW;AAAA,IACnB,KAAK,eAAe,MAAM,KAAK,WAAW,CAAC;AAAA,GAC5C;AAAA,WACE,QAAQ,EAAE;AAAA,QACb,EAXC,EAWG;AAAA,QACJ,CAAC,KAAK,MAAM,wBAAwB,MAAM,aAAa,EAAtD,KAA6D;AAAA,MAChE,EAtBC,KAsBM;AAAA,IACT,EAxCC;AA0CL;AAEA,IAAO,mBAAQ;","names":[],"file":"listItem.jsx"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/components/dataDisplay/qrCode/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { QrCode, default } from \"./qrCode\";\nexport type { QrCodeProps, QrCodeErrorCorrection } from \"./qrCode\";\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,QAAQ,WAAAA,gBAAe;",
|
|
6
|
+
"names": ["default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import "@smwb/ui-styles/less/tokens.entry.less";
|
|
2
|
+
import "@smwb/ui-styles/less/components/qrCode/qrCode.entry.less";
|
|
3
|
+
import { Show, children, createMemo, splitProps } from "solid-js";
|
|
4
|
+
import cn from "clsx";
|
|
5
|
+
import { encode } from "uqr";
|
|
6
|
+
import { mergeRefs } from "../../../primitives/mergeRefs";
|
|
7
|
+
import { qrCodePath } from "./qrCodePath";
|
|
8
|
+
const FAILURE_LABEL = {
|
|
9
|
+
"too-long": "QR code: value too long",
|
|
10
|
+
"encode-failed": "QR code: value could not be encoded"
|
|
11
|
+
};
|
|
12
|
+
const MAX_WARNED_CAUSES = 32;
|
|
13
|
+
const CAPACITY_BAND = 256;
|
|
14
|
+
const warnedCauses = globalThis.__smwbQrCodeWarnings ?? (globalThis.__smwbQrCodeWarnings = /* @__PURE__ */ new Set());
|
|
15
|
+
const warnOnce = (cause, message) => {
|
|
16
|
+
if (warnedCauses.has(cause) || warnedCauses.size >= MAX_WARNED_CAUSES) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
warnedCauses.add(cause);
|
|
20
|
+
console.error(`[smwb] QrCode: ${message}`);
|
|
21
|
+
};
|
|
22
|
+
const noteEncodeFailure = (error, value) => {
|
|
23
|
+
if (error instanceof RangeError && /too long/i.test(error.message)) {
|
|
24
|
+
const band = Math.ceil(value.length / CAPACITY_BAND);
|
|
25
|
+
warnOnce(
|
|
26
|
+
`too-long:${band}`,
|
|
27
|
+
`value is too long to encode as a QR code (${value.length} characters; this notice is once per ${CAPACITY_BAND}-character band)`
|
|
28
|
+
);
|
|
29
|
+
return "too-long";
|
|
30
|
+
}
|
|
31
|
+
const reason = error instanceof Error ? `${error.name}: ${error.message}` : String(error);
|
|
32
|
+
warnOnce(`failed:${reason}`, `value could not be encoded as a QR code (${reason})`);
|
|
33
|
+
return "encode-failed";
|
|
34
|
+
};
|
|
35
|
+
function QrCode(props) {
|
|
36
|
+
const [local, rest] = splitProps(props, [
|
|
37
|
+
"class",
|
|
38
|
+
"value",
|
|
39
|
+
"size",
|
|
40
|
+
"caption",
|
|
41
|
+
"label",
|
|
42
|
+
"errorCorrection",
|
|
43
|
+
"quietZone",
|
|
44
|
+
"ref",
|
|
45
|
+
"data-testid"
|
|
46
|
+
]);
|
|
47
|
+
const caption = children(() => local.caption);
|
|
48
|
+
const encoded = createMemo(() => {
|
|
49
|
+
try {
|
|
50
|
+
return { modules: encode(local.value, { ecc: local.errorCorrection ?? "M", border: 0 }).data, failure: null };
|
|
51
|
+
} catch (error) {
|
|
52
|
+
return { modules: null, failure: noteEncodeFailure(error, local.value) };
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const moduleCount = () => encoded().modules?.length ?? 0;
|
|
56
|
+
const canvas = () => moduleCount() + 2 * (local.quietZone ?? 4);
|
|
57
|
+
const path = () => {
|
|
58
|
+
const modules = encoded().modules;
|
|
59
|
+
return modules ? qrCodePath(modules, local.quietZone ?? 4) : "";
|
|
60
|
+
};
|
|
61
|
+
const failure = createMemo(() => encoded().failure);
|
|
62
|
+
const imageLabel = createMemo(() => {
|
|
63
|
+
const failed = failure();
|
|
64
|
+
return failed === null ? local.label ?? "QR code" : FAILURE_LABEL[failed];
|
|
65
|
+
});
|
|
66
|
+
return <figure
|
|
67
|
+
{...rest}
|
|
68
|
+
ref={mergeRefs(local.ref)}
|
|
69
|
+
data-testid={local["data-testid"] ?? "qr-code"}
|
|
70
|
+
data-error={failure() ?? void 0}
|
|
71
|
+
class={cn("smwb-qr-code", local.class)}
|
|
72
|
+
>
|
|
73
|
+
<svg
|
|
74
|
+
class="smwb-qr-code__image"
|
|
75
|
+
role="img"
|
|
76
|
+
aria-label={imageLabel()}
|
|
77
|
+
viewBox={`0 0 ${canvas()} ${canvas()}`}
|
|
78
|
+
width={local.size ?? 192}
|
|
79
|
+
height={local.size ?? 192}
|
|
80
|
+
shape-rendering="crispEdges"
|
|
81
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
82
|
+
>
|
|
83
|
+
<rect class="smwb-qr-code__light" width={canvas()} height={canvas()} fill="rgb(255,255,255)" />
|
|
84
|
+
{path() && <path class="smwb-qr-code__dark" d={path()} fill="rgb(0,0,0)" />}
|
|
85
|
+
</svg>
|
|
86
|
+
<Show when={caption()}>
|
|
87
|
+
<figcaption class="smwb-qr-code__caption">{caption()}</figcaption>
|
|
88
|
+
</Show>
|
|
89
|
+
</figure>;
|
|
90
|
+
}
|
|
91
|
+
var qrCode_default = QrCode;
|
|
92
|
+
export {
|
|
93
|
+
QrCode,
|
|
94
|
+
qrCode_default as default
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=qrCode.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/qrCode/qrCode.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/qrCode/qrCode.entry.less\";\nimport type { JSX } from \"solid-js\";\nimport { Show, children, createMemo, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { encode } from \"uqr\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { qrCodePath } from \"./qrCodePath\";\n\n/** Error-correction level: L 7%, M 15%, Q 25%, H 30% of the code may be damaged or covered. */\nexport type QrCodeErrorCorrection = \"L\" | \"M\" | \"Q\" | \"H\";\n\nexport interface QrCodeProps extends Omit<JSX.HTMLAttributes<HTMLElement>, \"children\" | \"role\"> {\n /** Text encoded in the code (a URL, a pairing token). Encoded as UTF-8 bytes. */\n value: string;\n /** Side of the code, quiet zone included, in pixels. Default 192. */\n size?: number | undefined;\n /** Shown under the code (a `<figcaption>`), e.g. \"Scan with the phone app\". */\n caption?: JSX.Element;\n /** Accessible name of the image. Default \"QR code\". */\n label?: string | undefined;\n /** Error-correction level: L 7%, M 15% (default), Q 25%, H 30% of the code may be damaged or covered. */\n errorCorrection?: QrCodeErrorCorrection | undefined;\n /** Light margin around the code in modules. Default 4, the minimum the QR spec asks for; smaller values hurt scanning. */\n quietZone?: number | undefined;\n /** Test id of the root; `qr-code` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLElement>;\n}\n\n// Why the encoding failed, as the root's `data-error`, and the name the image takes then.\ntype QrCodeFailure = \"too-long\" | \"encode-failed\";\nconst FAILURE_LABEL: Record<QrCodeFailure, string> = {\n \"too-long\": \"QR code: value too long\",\n \"encode-failed\": \"QR code: value could not be encoded\",\n};\n\n// Warns once per distinct cause, never per value: the registry keys on the cause the\n// message reports — a capacity band, or the error text — not on the value, so a\n// `QrCode` bound to a text field neither keeps a multi-KB string alive per keystroke nor\n// logs a new line for every character typed. The cap bounds the registry itself: past it\n// the warning stays quiet instead of growing. It lives on globalThis so the server bundle\n// and the client module of one SSR runtime share it: the cause logs once per runtime, not\n// once per bundle. A process.env guard is deliberately not used — like dagView.tsx it\n// would silence only dev SSR.\nconst MAX_WARNED_CAUSES = 32;\nconst CAPACITY_BAND = 256; // characters: one notice per band, not per length\nconst warnedCauses = ((globalThis as { __smwbQrCodeWarnings?: Set<string> }).__smwbQrCodeWarnings ??= new Set());\nconst warnOnce = (cause: string, message: string): void => {\n if (warnedCauses.has(cause) || warnedCauses.size >= MAX_WARNED_CAUSES) {\n return;\n }\n warnedCauses.add(cause);\n console.error(`[smwb] QrCode: ${message}`);\n};\n\n// `uqr` reports a value past the QR capacity as a RangeError(\"Data too long\"); it throws\n// other errors for other inputs (a lone surrogate fails in `encodeURI`, an untyped\n// `errorCorrection` fails in its own lookup). Only the first of those is \"too long\", so\n// the failure is read off the error instead of assumed, and the rest are named as what\n// they are.\nconst noteEncodeFailure = (error: unknown, value: string): QrCodeFailure => {\n if (error instanceof RangeError && /too long/i.test(error.message)) {\n const band = Math.ceil(value.length / CAPACITY_BAND);\n warnOnce(\n `too-long:${band}`,\n `value is too long to encode as a QR code (${value.length} characters; this notice is once per ` +\n `${CAPACITY_BAND}-character band)`\n );\n return \"too-long\";\n }\n const reason = error instanceof Error ? `${error.name}: ${error.message}` : String(error);\n warnOnce(`failed:${reason}`, `value could not be encoded as a QR code (${reason})`);\n return \"encode-failed\";\n};\n\n/**\n * A QR code of `value` as an SVG image (role=img): dark modules on a white square —\n * including the quiet zone — in every theme, so a phone camera reads it in dark mode\n * too. With `caption` the code sits in a `<figure>` named by the caption. A `value`\n * past the QR capacity renders an empty white square with `data-error=\"too-long\"`,\n * any other encode failure with `data-error=\"encode-failed\"`, instead of throwing.\n */\nexport function QrCode(props: QrCodeProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"class\",\n \"value\",\n \"size\",\n \"caption\",\n \"label\",\n \"errorCorrection\",\n \"quietZone\",\n \"ref\",\n \"data-testid\",\n ]);\n\n // Read the caption once: markup passed as a prop is created anew on every read,\n // and during hydration a copy the server never rendered has no DOM node.\n const caption = children(() => local.caption);\n\n // Encoding is pure and synchronous: the server and the client memoize the same\n // matrix, so the path string hydrates byte-identically.\n const encoded = createMemo((): { modules: boolean[][] | null; failure: QrCodeFailure | null } => {\n try {\n return { modules: encode(local.value, { ecc: local.errorCorrection ?? \"M\", border: 0 }).data, failure: null };\n } catch (error) {\n return { modules: null, failure: noteEncodeFailure(error, local.value) };\n }\n });\n\n // N: the whole canvas in modules — matrix plus the quiet zone on every side.\n const moduleCount = (): number => encoded().modules?.length ?? 0;\n const canvas = (): number => moduleCount() + 2 * (local.quietZone ?? 4);\n const path = (): string => {\n const modules = encoded().modules;\n return modules ? qrCodePath(modules, local.quietZone ?? 4) : \"\";\n };\n const failure = createMemo((): QrCodeFailure | null => encoded().failure);\n // The image is named after the failure, so an empty white square says why it is empty.\n const imageLabel = createMemo((): string => {\n const failed = failure();\n return failed === null ? (local.label ?? \"QR code\") : FAILURE_LABEL[failed];\n });\n\n return (\n <figure\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid={local[\"data-testid\"] ?? \"qr-code\"}\n data-error={failure() ?? undefined}\n class={cn(\"smwb-qr-code\", local.class)}\n >\n <svg\n class=\"smwb-qr-code__image\"\n role=\"img\"\n aria-label={imageLabel()}\n viewBox={`0 0 ${canvas()} ${canvas()}`}\n width={local.size ?? 192}\n height={local.size ?? 192}\n shape-rendering=\"crispEdges\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect class=\"smwb-qr-code__light\" width={canvas()} height={canvas()} fill=\"rgb(255,255,255)\" />\n {path() && <path class=\"smwb-qr-code__dark\" d={path()} fill=\"rgb(0,0,0)\" />}\n </svg>\n <Show when={caption()}>\n <figcaption class=\"smwb-qr-code__caption\">{caption()}</figcaption>\n </Show>\n </figure>\n );\n}\n\nexport default QrCode;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AAEP,SAAS,MAAM,UAAU,YAAY,kBAAkB;AACvD,OAAO,QAAQ;AACf,SAAS,cAAc;AACvB,SAAS,iBAA2B;AACpC,SAAS,kBAAkB;AAyB3B,MAAM,gBAA+C;AAAA,EACnD,YAAY;AAAA,EACZ,iBAAiB;AACnB;AAUA,MAAM,oBAAoB;AAC1B,MAAM,gBAAgB;AACtB,MAAM,eAAiB,WAAsD,yBAAtD,WAAsD,uBAAyB,oBAAI,IAAI;AAC9G,MAAM,WAAW,CAAC,OAAe,YAA0B;AACzD,MAAI,aAAa,IAAI,KAAK,KAAK,aAAa,QAAQ,mBAAmB;AACrE;AAAA,EACF;AACA,eAAa,IAAI,KAAK;AACtB,UAAQ,MAAM,kBAAkB,OAAO,EAAE;AAC3C;AAOA,MAAM,oBAAoB,CAAC,OAAgB,UAAiC;AAC1E,MAAI,iBAAiB,cAAc,YAAY,KAAK,MAAM,OAAO,GAAG;AAClE,UAAM,OAAO,KAAK,KAAK,MAAM,SAAS,aAAa;AACnD;AAAA,MACE,YAAY,IAAI;AAAA,MAChB,6CAA6C,MAAM,MAAM,wCACpD,aAAa;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AACA,QAAM,SAAS,iBAAiB,QAAQ,GAAG,MAAM,IAAI,KAAK,MAAM,OAAO,KAAK,OAAO,KAAK;AACxF,WAAS,UAAU,MAAM,IAAI,4CAA4C,MAAM,GAAG;AAClF,SAAO;AACT;AASO,SAAS,OAAO,OAAiC;AACtD,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,OAAO;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAID,QAAM,UAAU,SAAS,MAAM,MAAM,OAAO;AAI5C,QAAM,UAAU,WAAW,MAAsE;AAC/F,QAAI;AACF,aAAO,EAAE,SAAS,OAAO,MAAM,OAAO,EAAE,KAAK,MAAM,mBAAmB,KAAK,QAAQ,EAAE,CAAC,EAAE,MAAM,SAAS,KAAK;AAAA,IAC9G,SAAS,OAAO;AACd,aAAO,EAAE,SAAS,MAAM,SAAS,kBAAkB,OAAO,MAAM,KAAK,EAAE;AAAA,IACzE;AAAA,EACF,CAAC;AAGD,QAAM,cAAc,MAAc,QAAQ,EAAE,SAAS,UAAU;AAC/D,QAAM,SAAS,MAAc,YAAY,IAAI,KAAK,MAAM,aAAa;AACrE,QAAM,OAAO,MAAc;AACzB,UAAM,UAAU,QAAQ,EAAE;AAC1B,WAAO,UAAU,WAAW,SAAS,MAAM,aAAa,CAAC,IAAI;AAAA,EAC/D;AACA,QAAM,UAAU,WAAW,MAA4B,QAAQ,EAAE,OAAO;AAExE,QAAM,aAAa,WAAW,MAAc;AAC1C,UAAM,SAAS,QAAQ;AACvB,WAAO,WAAW,OAAQ,MAAM,SAAS,YAAa,cAAc,MAAM;AAAA,EAC5E,CAAC;AAED,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,aAAa,MAAM,aAAa,KAAK;AAAA,IACrC,YAAY,QAAQ,KAAK;AAAA,IACzB,OAAO,GAAG,gBAAgB,MAAM,KAAK;AAAA,GACtC;AAAA,MACC,CAAC;AAAA,IACC,MAAM;AAAA,IACN,KAAK;AAAA,IACL,YAAY,WAAW;AAAA,IACvB,SAAS,OAAO,OAAO,CAAC,IAAI,OAAO,CAAC;AAAA,IACpC,OAAO,MAAM,QAAQ;AAAA,IACrB,QAAQ,MAAM,QAAQ;AAAA,IACtB,gBAAgB;AAAA,IAChB,MAAM;AAAA,GACP;AAAA,QACC,CAAC,KAAK,MAAM,sBAAsB,OAAO,OAAO,GAAG,QAAQ,OAAO,GAAG,KAAK,mBAAmB,EAAE;AAAA,SAC9F,KAAK,KAAK,CAAC,KAAK,MAAM,qBAAqB,GAAG,KAAK,GAAG,KAAK,aAAa,GAAG;AAAA,MAC9E,EAZC,IAYK;AAAA,MACN,CAAC,KAAK,MAAM,QAAQ,GAAG;AAAA,QACrB,CAAC,WAAW,MAAM,yBAAyB,QAAQ,EAAE,EAApD,WAAiE;AAAA,MACpE,EAFC,KAEM;AAAA,IACT,EAvBC;AAyBL;AAEA,IAAO,iBAAQ;","names":[],"file":"qrCode.jsx"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
function qrCodePath(data, quietZone) {
|
|
2
|
+
const parts = [];
|
|
3
|
+
for (let y = 0; y < data.length; y += 1) {
|
|
4
|
+
const row = data[y];
|
|
5
|
+
let x = 0;
|
|
6
|
+
while (row !== void 0 && x < row.length) {
|
|
7
|
+
if (row[x]) {
|
|
8
|
+
let run = 1;
|
|
9
|
+
while (x + run < row.length && row[x + run]) {
|
|
10
|
+
run += 1;
|
|
11
|
+
}
|
|
12
|
+
parts.push(`M${x + quietZone} ${y + quietZone}h${run}v1h-${run}z`);
|
|
13
|
+
x += run;
|
|
14
|
+
} else {
|
|
15
|
+
x += 1;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return parts.join("");
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
qrCodePath
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=qrCodePath.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/components/dataDisplay/qrCode/qrCodePath.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * The `d` string of the QR code's dark modules: one run-length subpath per horizontal\n * run of dark modules (`M{x} {y}h{n}v1h-{n}z`), in row order and offset by the quiet\n * zone. Pure and deterministic \u2014 the same matrix always yields the same string, on the\n * server and in the browser, in ui-react and ui-solid.\n */\nexport function qrCodePath(data: readonly (readonly boolean[])[], quietZone: number): string {\n const parts: string[] = [];\n for (let y = 0; y < data.length; y += 1) {\n const row = data[y];\n let x = 0;\n while (row !== undefined && x < row.length) {\n if (row[x]) {\n let run = 1;\n while (x + run < row.length && row[x + run]) {\n run += 1;\n }\n parts.push(`M${x + quietZone} ${y + quietZone}h${run}v1h-${run}z`);\n x += run;\n } else {\n x += 1;\n }\n }\n }\n return parts.join(\"\");\n}\n"],
|
|
5
|
+
"mappings": "AAMO,SAAS,WAAW,MAAuC,WAA2B;AAC3F,QAAM,QAAkB,CAAC;AACzB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK,GAAG;AACvC,UAAM,MAAM,KAAK,CAAC;AAClB,QAAI,IAAI;AACR,WAAO,QAAQ,UAAa,IAAI,IAAI,QAAQ;AAC1C,UAAI,IAAI,CAAC,GAAG;AACV,YAAI,MAAM;AACV,eAAO,IAAI,MAAM,IAAI,UAAU,IAAI,IAAI,GAAG,GAAG;AAC3C,iBAAO;AAAA,QACT;AACA,cAAM,KAAK,IAAI,IAAI,SAAS,IAAI,IAAI,SAAS,IAAI,GAAG,OAAO,GAAG,GAAG;AACjE,aAAK;AAAA,MACP,OAAO;AACL,aAAK;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACA,SAAO,MAAM,KAAK,EAAE;AACtB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/components/dataDisplay/statusDot/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { StatusDot, default } from \"./statusDot\";\nexport type { StatusDotProps, StatusDotStatus, StatusDotColor, StatusDotSize } from \"./statusDot\";\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,WAAW,WAAAA,gBAAe;",
|
|
6
|
+
"names": ["default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import "@smwb/ui-styles/less/tokens.entry.less";
|
|
2
|
+
import "@smwb/ui-styles/less/components/statusDot/statusDot.entry.less";
|
|
3
|
+
import { splitProps } from "solid-js";
|
|
4
|
+
import cn from "clsx";
|
|
5
|
+
import { mergeRefs } from "../../../primitives/mergeRefs";
|
|
6
|
+
function StatusDot(props) {
|
|
7
|
+
const [local, rest] = splitProps(props, ["class", "status", "color", "size", "pulse", "label", "ref", "data-testid"]);
|
|
8
|
+
const shown = () => local.status ?? (local.color === void 0 ? "unknown" : void 0);
|
|
9
|
+
return <span
|
|
10
|
+
{...rest}
|
|
11
|
+
ref={mergeRefs(local.ref)}
|
|
12
|
+
role="img"
|
|
13
|
+
aria-label={local.label}
|
|
14
|
+
data-testid={local["data-testid"] ?? "status-dot"}
|
|
15
|
+
class={cn(
|
|
16
|
+
"smwb-status-dot",
|
|
17
|
+
`smwb-status-dot_size-${local.size ?? "md"}`,
|
|
18
|
+
shown() && `smwb-status-dot_status-${shown()}`,
|
|
19
|
+
local.color && `smwb-status-dot_color-${local.color}`,
|
|
20
|
+
{ "smwb-status-dot_pulse": local.pulse ?? local.status === "active" },
|
|
21
|
+
local.class
|
|
22
|
+
)}
|
|
23
|
+
/>;
|
|
24
|
+
}
|
|
25
|
+
var statusDot_default = StatusDot;
|
|
26
|
+
export {
|
|
27
|
+
StatusDot,
|
|
28
|
+
statusDot_default as default
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=statusDot.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/statusDot/statusDot.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/statusDot/statusDot.entry.less\";\nimport type { JSX } from \"solid-js\";\nimport { splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\n/** What the marker says: `active` is under way, `attention` waits for someone, `idle` rests, `done` is finished. */\nexport type StatusDotStatus = \"active\" | \"attention\" | \"idle\" | \"done\" | \"error\" | \"unknown\";\n\n/** The theme colour names `Chip` takes; `default` is the neutral on-surface colour. */\nexport type StatusDotColor = \"default\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport type StatusDotSize = \"sm\" | \"md\";\n\nexport interface StatusDotProps extends Omit<JSX.HTMLAttributes<HTMLSpanElement>, \"role\" | \"children\" | \"aria-label\"> {\n /**\n * What the dot says, and so its colour: `active` info, `attention` warning, `idle` neutral, `done` success,\n * `error` error. `unknown` is a ring in the outline colour. Without `status` (and without `color`) the dot is\n * `unknown`.\n */\n status?: StatusDotStatus | undefined;\n /**\n * A theme colour instead of the status's own, or on its own with no `status` (a plain disc). Given with a\n * `status`, the status still sets the shape.\n */\n color?: StatusDotColor | undefined;\n /** `md` (12px) unless given; `sm` is 8px. */\n size?: StatusDotSize | undefined;\n /**\n * A ring spreads from the dot. On unless given for `active`, off for every other status. Never drawn while the\n * user prefers reduced motion.\n */\n pulse?: boolean | undefined;\n /** What the dot means in words, e.g. \"Working\": the accessible name, read by assistive technology. */\n label: string;\n /** Test id of the root; `status-dot` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLSpanElement>;\n}\n\n/** A small status marker: a dot coloured and shaped by `status`, named by `label`. */\nexport function StatusDot(props: StatusDotProps): JSX.Element {\n const [local, rest] = splitProps(props, [\"class\", \"status\", \"color\", \"size\", \"pulse\", \"label\", \"ref\", \"data-testid\"]);\n\n // A bare colour is a plain disc; with neither, the dot is \"unknown\".\n const shown = (): StatusDotStatus | undefined => local.status ?? (local.color === undefined ? \"unknown\" : undefined);\n\n return (\n <span\n {...rest}\n ref={mergeRefs(local.ref)}\n role=\"img\"\n aria-label={local.label}\n data-testid={local[\"data-testid\"] ?? \"status-dot\"}\n class={cn(\n \"smwb-status-dot\",\n `smwb-status-dot_size-${local.size ?? \"md\"}`,\n shown() && `smwb-status-dot_status-${shown()}`,\n local.color && `smwb-status-dot_color-${local.color}`,\n { \"smwb-status-dot_pulse\": local.pulse ?? local.status === \"active\" },\n local.class\n )}\n />\n );\n}\n\nexport default StatusDot;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AAEP,SAAS,kBAAkB;AAC3B,OAAO,QAAQ;AACf,SAAS,iBAA2B;AAqC7B,SAAS,UAAU,OAAoC;AAC5D,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,OAAO,CAAC,SAAS,UAAU,SAAS,QAAQ,SAAS,SAAS,OAAO,aAAa,CAAC;AAGpH,QAAM,QAAQ,MAAmC,MAAM,WAAW,MAAM,UAAU,SAAY,YAAY;AAE1G,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,KAAK;AAAA,IACL,YAAY,MAAM;AAAA,IAClB,aAAa,MAAM,aAAa,KAAK;AAAA,IACrC,OAAO;AAAA,MACL;AAAA,MACA,wBAAwB,MAAM,QAAQ,IAAI;AAAA,MAC1C,MAAM,KAAK,0BAA0B,MAAM,CAAC;AAAA,MAC5C,MAAM,SAAS,yBAAyB,MAAM,KAAK;AAAA,MACnD,EAAE,yBAAyB,MAAM,SAAS,MAAM,WAAW,SAAS;AAAA,MACpE,MAAM;AAAA,IACR;AAAA,EACF;AAEJ;AAEA,IAAO,oBAAQ;","names":[],"file":"statusDot.jsx"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Swimlanes,
|
|
3
|
+
default as default2,
|
|
4
|
+
SWIMLANES_DEFAULT_ROW_HEIGHT,
|
|
5
|
+
SWIMLANES_DEFAULT_HEIGHT,
|
|
6
|
+
SWIMLANES_DEFAULT_OVERSCAN
|
|
7
|
+
} from "./swimlanes";
|
|
8
|
+
export {
|
|
9
|
+
SWIMLANES_DEFAULT_HEIGHT,
|
|
10
|
+
SWIMLANES_DEFAULT_OVERSCAN,
|
|
11
|
+
SWIMLANES_DEFAULT_ROW_HEIGHT,
|
|
12
|
+
Swimlanes,
|
|
13
|
+
default2 as default
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/components/dataDisplay/swimlanes/index.ts"],
|
|
4
|
+
"sourcesContent": ["export {\n Swimlanes,\n default,\n SWIMLANES_DEFAULT_ROW_HEIGHT,\n SWIMLANES_DEFAULT_HEIGHT,\n SWIMLANES_DEFAULT_OVERSCAN,\n} from \"./swimlanes\";\nexport type { SwimlanesProps, SwimlanesLane } from \"./swimlanes\";\n"],
|
|
5
|
+
"mappings": "AAAA;AAAA,EACE;AAAA,EACA,WAAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;",
|
|
6
|
+
"names": ["default"]
|
|
7
|
+
}
|