@smwb/ui-solid 0.11.2 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -22
- package/dist/assets/styles/less/components/accordion/accordion.entry.css +1 -1
- package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
- package/dist/assets/styles/less/components/descriptionList/descriptionList.entry.css +1 -0
- package/dist/assets/styles/less/components/emptyState/emptyState.entry.css +1 -0
- package/dist/assets/styles/less/components/kanban/kanban.entry.css +1 -0
- package/dist/assets/styles/less/components/meter/meter.entry.css +1 -0
- package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -0
- package/dist/assets/styles/less/components/progressIndicator/progressIndicator.entry.css +1 -1
- package/dist/assets/styles/less/components/sectionHeader/sectionHeader.entry.css +1 -0
- package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
- package/dist/assets/styles/less/components/stat/stat.entry.css +1 -0
- package/dist/assets/styles/less/components/stepper/stepper.entry.css +1 -1
- package/dist/assets/styles/less/components/table/table.entry.css +1 -1
- package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
- 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/timeline/timeline.entry.css +1 -0
- package/dist/assets/styles/less/components/tooltip/tooltip.entry.css +1 -1
- package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
- package/dist/assets/styles/less/tokens.entry.css +1 -0
- package/dist/components/base/icon/icon.js +4 -3
- package/dist/components/base/icon/icon.js.map +1 -1
- package/dist/components/base/ripple/ripple.js +4 -3
- package/dist/components/base/ripple/ripple.js.map +1 -1
- package/dist/components/dataDisplay/accordion/accordion.d.ts +18 -1
- package/dist/components/dataDisplay/accordion/accordion.js +91 -48
- package/dist/components/dataDisplay/accordion/accordion.js.map +1 -1
- package/dist/components/dataDisplay/assetGrid/assetGrid.js +14 -13
- package/dist/components/dataDisplay/assetGrid/assetGrid.js.map +1 -1
- package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
- package/dist/components/dataDisplay/avatar/avatar.js +56 -40
- package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/components/dataDisplay/badge/badge.js +24 -20
- package/dist/components/dataDisplay/badge/badge.js.map +1 -1
- package/dist/components/dataDisplay/card/card.js +24 -23
- package/dist/components/dataDisplay/card/card.js.map +1 -1
- package/dist/components/dataDisplay/carousel/carousel.js +4 -3
- package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/components/dataDisplay/chart/chart.d.ts +65 -0
- package/dist/components/dataDisplay/chart/chartTheme.d.ts +35 -0
- package/dist/components/dataDisplay/chart/index.d.ts +4 -0
- package/dist/components/dataDisplay/chat/chat.js +52 -51
- package/dist/components/dataDisplay/chat/chat.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatHeader.js +29 -29
- package/dist/components/dataDisplay/chat/chatHeader.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatMessageBubble.js +28 -28
- package/dist/components/dataDisplay/chat/chatMessageBubble.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatShell.js +54 -51
- package/dist/components/dataDisplay/chat/chatShell.js.map +1 -1
- package/dist/components/dataDisplay/chip/chip.js +79 -70
- package/dist/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/components/dataDisplay/chipGroup/chipGroup.js +9 -8
- package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
- package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +32 -0
- package/dist/components/dataDisplay/descriptionList/descriptionList.js +60 -0
- package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -0
- package/dist/components/dataDisplay/descriptionList/index.d.ts +2 -0
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +4 -3
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
- package/dist/components/dataDisplay/imagesList/imagesList.js +8 -7
- package/dist/components/dataDisplay/imagesList/imagesList.js.map +1 -1
- package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js +29 -24
- package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js.map +1 -1
- package/dist/components/dataDisplay/kanban/index.d.ts +2 -0
- package/dist/components/dataDisplay/kanban/kanban.d.ts +42 -0
- package/dist/components/dataDisplay/kanban/kanban.js +133 -0
- package/dist/components/dataDisplay/kanban/kanban.js.map +1 -0
- package/dist/components/dataDisplay/lazyImage/lazyImage.js +30 -29
- package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
- package/dist/components/dataDisplay/list/list.js +17 -16
- package/dist/components/dataDisplay/list/list.js.map +1 -1
- package/dist/components/dataDisplay/meter/index.d.ts +2 -0
- package/dist/components/dataDisplay/meter/meter.d.ts +34 -0
- package/dist/components/dataDisplay/meter/meter.js +84 -0
- package/dist/components/dataDisplay/meter/meter.js.map +1 -0
- package/dist/components/dataDisplay/personChip/index.d.ts +2 -0
- package/dist/components/dataDisplay/personChip/personChip.d.ts +32 -0
- package/dist/components/dataDisplay/personChip/personChip.js +104 -0
- package/dist/components/dataDisplay/personChip/personChip.js.map +1 -0
- package/dist/components/dataDisplay/stat/index.d.ts +2 -0
- package/dist/components/dataDisplay/stat/stat.d.ts +33 -0
- package/dist/components/dataDisplay/stat/stat.js +101 -0
- package/dist/components/dataDisplay/stat/stat.js.map +1 -0
- package/dist/components/dataDisplay/table/table.d.ts +7 -0
- package/dist/components/dataDisplay/table/table.js +22 -21
- package/dist/components/dataDisplay/table/table.js.map +1 -1
- package/dist/components/dataDisplay/table/tableCell.d.ts +2 -0
- package/dist/components/dataDisplay/table/tableCell.js +9 -6
- package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tableHeadCell.d.ts +11 -1
- package/dist/components/dataDisplay/table/tableHeadCell.js +26 -23
- package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tablePagination/tablePagination.js +4 -3
- package/dist/components/dataDisplay/table/tablePagination/tablePagination.js.map +1 -1
- package/dist/components/dataDisplay/thumbCard/thumbCard.js +54 -53
- package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
- package/dist/components/dataDisplay/timeline/index.d.ts +2 -0
- package/dist/components/dataDisplay/timeline/timeline.d.ts +38 -0
- package/dist/components/dataDisplay/timeline/timeline.js +89 -0
- package/dist/components/dataDisplay/timeline/timeline.js.map +1 -0
- package/dist/components/dataDisplay/treeView/treeView.js +4 -3
- package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/components/dataDisplay/typography/typography.d.ts +4 -0
- package/dist/components/dataDisplay/typography/typography.js +36 -22
- package/dist/components/dataDisplay/typography/typography.js.map +1 -1
- package/dist/components/feedBack/confirmDialog/confirmDialog.js +9 -8
- package/dist/components/feedBack/confirmDialog/confirmDialog.js.map +1 -1
- package/dist/components/feedBack/emptyState/emptyState.d.ts +25 -0
- package/dist/components/feedBack/emptyState/emptyState.js +86 -0
- package/dist/components/feedBack/emptyState/emptyState.js.map +1 -0
- package/dist/components/feedBack/emptyState/index.d.ts +2 -0
- package/dist/components/feedBack/message/message.js +4 -3
- package/dist/components/feedBack/message/message.js.map +1 -1
- package/dist/components/feedBack/modal/modal.js +4 -3
- package/dist/components/feedBack/modal/modal.js.map +1 -1
- package/dist/components/feedBack/progressIndicator/progressIndicator.d.ts +13 -0
- package/dist/components/feedBack/progressIndicator/progressIndicator.js +79 -46
- package/dist/components/feedBack/progressIndicator/progressIndicator.js.map +1 -1
- package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js +18 -14
- package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -1
- package/dist/components/feedBack/skeleton/skeleton.js +4 -3
- package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
- package/dist/components/feedBack/snackbar/snackbar.js +18 -17
- package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
- package/dist/components/feedBack/tooltip/tooltip.js +41 -33
- package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/components/inputs/button/button.js +32 -30
- package/dist/components/inputs/button/button.js.map +1 -1
- package/dist/components/inputs/buttonGroups/buttonGroup.js +9 -8
- package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
- package/dist/components/inputs/checkbox/checkbox.js +4 -3
- package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
- package/dist/components/inputs/datePicker/dataPickerInput.js +23 -23
- package/dist/components/inputs/datePicker/dataPickerInput.js.map +1 -1
- package/dist/components/inputs/datePicker/datePicker.js +84 -83
- package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/components/inputs/fileDrop/fileDrop.js +4 -3
- package/dist/components/inputs/fileDrop/fileDrop.js.map +1 -1
- package/dist/components/inputs/fileInput/fileInput.js +11 -10
- package/dist/components/inputs/fileInput/fileInput.js.map +1 -1
- package/dist/components/inputs/floatingButton/floatingButton.js +9 -8
- package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
- package/dist/components/inputs/radioButton/radioButton.js +9 -8
- package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
- package/dist/components/inputs/rating/rating.js +41 -40
- package/dist/components/inputs/rating/rating.js.map +1 -1
- package/dist/components/inputs/selectField/selectField.d.ts +2 -0
- package/dist/components/inputs/selectField/selectField.js +55 -51
- package/dist/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/components/inputs/slider/slider.js +4 -3
- package/dist/components/inputs/slider/slider.js.map +1 -1
- package/dist/components/inputs/textField/textField.js +38 -37
- package/dist/components/inputs/textField/textField.js.map +1 -1
- package/dist/components/inputs/textField/textFieldAdornment.js +9 -9
- package/dist/components/inputs/textField/textFieldAdornment.js.map +1 -1
- package/dist/components/inputs/textField/textFieldWrapper.js +41 -41
- package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
- package/dist/components/inputs/timePicker/timePicker.js +12 -11
- package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/components/inputs/toggle/toggle.js +4 -3
- package/dist/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/components/inputs/valueSlider/valueSlider.js +26 -25
- package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
- package/dist/components/layout/appLayout/appLayout.js +39 -38
- package/dist/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/components/layout/divider/divider.js +26 -22
- package/dist/components/layout/divider/divider.js.map +1 -1
- package/dist/components/layout/floatingWindow/floatingWindow.js +74 -73
- package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
- package/dist/components/layout/grid/grid.js +10 -9
- package/dist/components/layout/grid/grid.js.map +1 -1
- package/dist/components/layout/page/page.js +4 -3
- package/dist/components/layout/page/page.js.map +1 -1
- package/dist/components/layout/pageHeader/pageHeader.js +36 -35
- package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
- package/dist/components/layout/screenDivider/screenDivider.js +9 -8
- package/dist/components/layout/screenDivider/screenDivider.js.map +1 -1
- package/dist/components/layout/sectionHeader/index.d.ts +2 -0
- package/dist/components/layout/sectionHeader/sectionHeader.d.ts +30 -0
- package/dist/components/layout/sectionHeader/sectionHeader.js +100 -0
- package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -0
- package/dist/components/layout/sheet/sheet.js +4 -3
- package/dist/components/layout/sheet/sheet.js.map +1 -1
- package/dist/components/layout/stack/stack.js +31 -27
- package/dist/components/layout/stack/stack.js.map +1 -1
- package/dist/components/navigation/appBar/appBar.js +24 -23
- package/dist/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/components/navigation/bottomBar/bottomBar.js +57 -56
- package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js +4 -3
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/components/navigation/menu/menu.js +10 -9
- package/dist/components/navigation/menu/menu.js.map +1 -1
- package/dist/components/navigation/overflowMenu/overflowMenu.js +4 -3
- package/dist/components/navigation/overflowMenu/overflowMenu.js.map +1 -1
- package/dist/components/navigation/pagination/pagination.js +14 -13
- package/dist/components/navigation/pagination/pagination.js.map +1 -1
- package/dist/components/navigation/sidebar/sidebar.js +4 -3
- package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/components/navigation/stepper/stepper.d.ts +10 -2
- package/dist/components/navigation/stepper/stepper.js +63 -47
- package/dist/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/components/navigation/tabs/tab/tab.d.ts +2 -0
- package/dist/components/navigation/tabs/tab/tab.js +45 -44
- package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/components/navigation/tabs/tabs.d.ts +12 -0
- package/dist/components/navigation/tabs/tabs.js +142 -86
- package/dist/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/connects/rt/table/table.d.ts +2 -0
- package/dist/headless/components/dataDisplay/accordion/accordion.js +89 -47
- package/dist/headless/components/dataDisplay/accordion/accordion.js.map +1 -1
- package/dist/headless/components/dataDisplay/avatar/avatar.js +54 -39
- package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/headless/components/dataDisplay/badge/badge.js +22 -19
- package/dist/headless/components/dataDisplay/badge/badge.js.map +1 -1
- package/dist/headless/components/dataDisplay/card/card.js +22 -22
- package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chat.js +50 -50
- package/dist/headless/components/dataDisplay/chat/chat.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatHeader.js +29 -29
- package/dist/headless/components/dataDisplay/chat/chatHeader.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatMessageBubble.js +28 -28
- package/dist/headless/components/dataDisplay/chat/chatMessageBubble.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatShell.js +54 -51
- package/dist/headless/components/dataDisplay/chat/chatShell.js.map +1 -1
- package/dist/headless/components/dataDisplay/chip/chip.js +77 -69
- package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js +58 -0
- package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -0
- package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js +28 -24
- package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js.map +1 -1
- package/dist/headless/components/dataDisplay/kanban/kanban.js +131 -0
- package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -0
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +28 -28
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
- package/dist/headless/components/dataDisplay/list/list.js +15 -15
- package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
- package/dist/headless/components/dataDisplay/meter/meter.js +82 -0
- package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -0
- package/dist/headless/components/dataDisplay/personChip/personChip.js +102 -0
- package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -0
- package/dist/headless/components/dataDisplay/stat/stat.js +99 -0
- package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/table.js +20 -20
- package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableCell.js +9 -6
- package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js +26 -23
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +53 -53
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
- package/dist/headless/components/dataDisplay/timeline/timeline.js +87 -0
- package/dist/headless/components/dataDisplay/timeline/timeline.js.map +1 -0
- package/dist/headless/components/dataDisplay/typography/typography.js +34 -21
- package/dist/headless/components/dataDisplay/typography/typography.js.map +1 -1
- package/dist/headless/components/feedBack/emptyState/emptyState.js +84 -0
- package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -0
- package/dist/headless/components/feedBack/progressIndicator/progressIndicator.js +77 -45
- package/dist/headless/components/feedBack/progressIndicator/progressIndicator.js.map +1 -1
- package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js +16 -13
- package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -1
- package/dist/headless/components/feedBack/tooltip/tooltip.js +33 -26
- package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/headless/components/inputs/button/button.js +33 -32
- package/dist/headless/components/inputs/button/button.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/dataPickerInput.js +23 -23
- package/dist/headless/components/inputs/datePicker/dataPickerInput.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePicker.js +79 -79
- package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/headless/components/inputs/rating/rating.js +39 -39
- package/dist/headless/components/inputs/rating/rating.js.map +1 -1
- package/dist/headless/components/inputs/selectField/selectField.js +61 -58
- package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/headless/components/inputs/textField/textField.js +36 -36
- package/dist/headless/components/inputs/textField/textField.js.map +1 -1
- package/dist/headless/components/inputs/textField/textFieldAdornment.js +9 -9
- package/dist/headless/components/inputs/textField/textFieldAdornment.js.map +1 -1
- package/dist/headless/components/inputs/textField/textFieldWrapper.js +41 -41
- package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
- package/dist/headless/components/inputs/valueSlider/valueSlider.js +24 -24
- package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
- package/dist/headless/components/layout/appLayout/appLayout.js +39 -39
- package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/headless/components/layout/divider/divider.js +24 -21
- package/dist/headless/components/layout/divider/divider.js.map +1 -1
- package/dist/headless/components/layout/pageHeader/pageHeader.js +34 -34
- package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js +98 -0
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -0
- package/dist/headless/components/layout/stack/stack.js +29 -26
- package/dist/headless/components/layout/stack/stack.js.map +1 -1
- package/dist/headless/components/navigation/appBar/appBar.js +22 -22
- package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/headless/components/navigation/bottomBar/bottomBar.js +51 -51
- package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/headless/components/navigation/stepper/stepper.js +61 -46
- package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tab/tab.js +44 -44
- package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabs.js +140 -85
- package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/headless/icons/catalog.js +78 -1
- package/dist/headless/icons/catalog.js.map +1 -1
- package/dist/headless/icons/index.js +596 -574
- package/dist/headless/icons/index.js.map +1 -1
- package/dist/headless/icons/svg/accountTree.js +9 -0
- package/dist/headless/icons/svg/accountTree.js.map +1 -0
- package/dist/headless/icons/svg/callSplit.js +9 -0
- package/dist/headless/icons/svg/callSplit.js.map +1 -0
- package/dist/headless/icons/svg/deviceHub.js +8 -0
- package/dist/headless/icons/svg/deviceHub.js.map +1 -0
- package/dist/headless/icons/svg/editNote.js +9 -0
- package/dist/headless/icons/svg/editNote.js.map +1 -0
- package/dist/headless/icons/svg/filterList.js +9 -0
- package/dist/headless/icons/svg/filterList.js.map +1 -0
- package/dist/headless/icons/svg/forkRight.js +8 -0
- package/dist/headless/icons/svg/forkRight.js.map +1 -0
- package/dist/headless/icons/svg/groups.js +9 -0
- package/dist/headless/icons/svg/groups.js.map +1 -0
- package/dist/headless/icons/svg/hub.js +8 -0
- package/dist/headless/icons/svg/hub.js.map +1 -0
- package/dist/headless/icons/svg/index.js +598 -576
- package/dist/headless/icons/svg/index.js.map +1 -1
- package/dist/headless/icons/svg/lan.js +9 -0
- package/dist/headless/icons/svg/lan.js.map +1 -0
- package/dist/headless/icons/svg/personOff.js +9 -0
- package/dist/headless/icons/svg/personOff.js.map +1 -0
- package/dist/headless/icons/svg/schema.js +9 -0
- package/dist/headless/icons/svg/schema.js.map +1 -0
- package/dist/headless/index.js +281 -255
- package/dist/headless/index.js.map +1 -1
- package/dist/headless/primitives/createCssTransition.js +31 -28
- package/dist/headless/primitives/createCssTransition.js.map +1 -1
- package/dist/headless/source/components/dataDisplay/accordion/accordion.jsx +60 -18
- package/dist/headless/source/components/dataDisplay/accordion/accordion.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx +28 -3
- package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/badge/badge.jsx +8 -4
- package/dist/headless/source/components/dataDisplay/badge/badge.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/card/card.jsx +4 -3
- package/dist/headless/source/components/dataDisplay/card/card.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chart/chart.jsx +168 -0
- package/dist/headless/source/components/dataDisplay/chart/chart.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/chart/chartTheme.js +78 -0
- package/dist/headless/source/components/dataDisplay/chart/chartTheme.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/chart/index.js +9 -0
- package/dist/headless/source/components/dataDisplay/chart/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/chat/chat.jsx +4 -3
- package/dist/headless/source/components/dataDisplay/chat/chat.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatHeader.jsx +7 -5
- package/dist/headless/source/components/dataDisplay/chat/chatHeader.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatMessageBubble.jsx +4 -3
- package/dist/headless/source/components/dataDisplay/chat/chatMessageBubble.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatShell.jsx +30 -26
- package/dist/headless/source/components/dataDisplay/chat/chatShell.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chip/chip.jsx +11 -6
- package/dist/headless/source/components/dataDisplay/chip/chip.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx +42 -0
- package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/descriptionList/index.js +7 -0
- package/dist/headless/source/components/dataDisplay/descriptionList/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx +10 -4
- package/dist/headless/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/kanban/index.js +8 -0
- package/dist/headless/source/components/dataDisplay/kanban/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx +99 -0
- package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx +4 -3
- package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/list/list.jsx +4 -3
- package/dist/headless/source/components/dataDisplay/list/list.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/meter/index.js +8 -0
- package/dist/headless/source/components/dataDisplay/meter/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/meter/meter.jsx +80 -0
- package/dist/headless/source/components/dataDisplay/meter/meter.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/personChip/index.js +8 -0
- package/dist/headless/source/components/dataDisplay/personChip/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx +71 -0
- package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/stat/index.js +7 -0
- package/dist/headless/source/components/dataDisplay/stat/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/stat/stat.jsx +72 -0
- package/dist/headless/source/components/dataDisplay/stat/stat.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/table/table.jsx +11 -4
- package/dist/headless/source/components/dataDisplay/table/table.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableCell.jsx +8 -2
- package/dist/headless/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx +37 -3
- package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx +10 -7
- package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/timeline/index.js +8 -0
- package/dist/headless/source/components/dataDisplay/timeline/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/timeline/timeline.jsx +64 -0
- package/dist/headless/source/components/dataDisplay/timeline/timeline.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/typography/typography.jsx +17 -3
- package/dist/headless/source/components/dataDisplay/typography/typography.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx +47 -0
- package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx.map +1 -0
- package/dist/headless/source/components/feedBack/emptyState/index.js +6 -0
- package/dist/headless/source/components/feedBack/emptyState/index.js.map +7 -0
- package/dist/headless/source/components/feedBack/progressIndicator/progressIndicator.jsx +52 -10
- package/dist/headless/source/components/feedBack/progressIndicator/progressIndicator.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx +3 -2
- package/dist/headless/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx +4 -2
- package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
- package/dist/headless/source/components/inputs/button/button.jsx +7 -3
- package/dist/headless/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/headless/source/components/inputs/datePicker/dataPickerInput.jsx +4 -3
- package/dist/headless/source/components/inputs/datePicker/dataPickerInput.jsx.map +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePicker.jsx +4 -6
- package/dist/headless/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
- package/dist/headless/source/components/inputs/rating/rating.jsx +4 -3
- package/dist/headless/source/components/inputs/rating/rating.jsx.map +1 -1
- package/dist/headless/source/components/inputs/selectField/selectField.jsx +8 -2
- package/dist/headless/source/components/inputs/selectField/selectField.jsx.map +1 -1
- package/dist/headless/source/components/inputs/textField/textField.jsx +8 -6
- package/dist/headless/source/components/inputs/textField/textField.jsx.map +1 -1
- package/dist/headless/source/components/inputs/textField/textFieldAdornment.jsx +4 -3
- package/dist/headless/source/components/inputs/textField/textFieldAdornment.jsx.map +1 -1
- package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx +9 -6
- package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
- package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx +4 -3
- package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
- package/dist/headless/source/components/layout/appLayout/appLayout.jsx +3 -2
- package/dist/headless/source/components/layout/appLayout/appLayout.jsx.map +1 -1
- package/dist/headless/source/components/layout/divider/divider.jsx +10 -6
- package/dist/headless/source/components/layout/divider/divider.jsx.map +1 -1
- package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx +14 -10
- package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
- package/dist/headless/source/components/layout/sectionHeader/index.js +6 -0
- package/dist/headless/source/components/layout/sectionHeader/index.js.map +7 -0
- package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx +80 -0
- package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -0
- package/dist/headless/source/components/layout/stack/stack.jsx +3 -2
- package/dist/headless/source/components/layout/stack/stack.jsx.map +1 -1
- package/dist/headless/source/components/navigation/appBar/appBar.jsx +7 -5
- package/dist/headless/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx +4 -3
- package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/stepper/stepper.jsx +14 -7
- package/dist/headless/source/components/navigation/stepper/stepper.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +7 -5
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tabs.jsx +84 -4
- package/dist/headless/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/headless/source/connects/rt/table/table.jsx +9 -1
- package/dist/headless/source/connects/rt/table/table.jsx.map +1 -1
- package/dist/headless/source/icons/catalog.js +78 -1
- package/dist/headless/source/icons/catalog.js.map +2 -2
- package/dist/headless/source/icons/svg/accountTree.js +11 -0
- package/dist/headless/source/icons/svg/accountTree.js.map +7 -0
- package/dist/headless/source/icons/svg/callSplit.js +11 -0
- package/dist/headless/source/icons/svg/callSplit.js.map +7 -0
- package/dist/headless/source/icons/svg/deviceHub.js +10 -0
- package/dist/headless/source/icons/svg/deviceHub.js.map +7 -0
- package/dist/headless/source/icons/svg/editNote.js +11 -0
- package/dist/headless/source/icons/svg/editNote.js.map +7 -0
- package/dist/headless/source/icons/svg/filterList.js +11 -0
- package/dist/headless/source/icons/svg/filterList.js.map +7 -0
- package/dist/headless/source/icons/svg/forkRight.js +10 -0
- package/dist/headless/source/icons/svg/forkRight.js.map +7 -0
- package/dist/headless/source/icons/svg/groups.js +11 -0
- package/dist/headless/source/icons/svg/groups.js.map +7 -0
- package/dist/headless/source/icons/svg/hub.js +10 -0
- package/dist/headless/source/icons/svg/hub.js.map +7 -0
- package/dist/headless/source/icons/svg/index.js +22 -0
- package/dist/headless/source/icons/svg/index.js.map +2 -2
- package/dist/headless/source/icons/svg/lan.js +11 -0
- package/dist/headless/source/icons/svg/lan.js.map +7 -0
- package/dist/headless/source/icons/svg/personOff.js +11 -0
- package/dist/headless/source/icons/svg/personOff.js.map +7 -0
- package/dist/headless/source/icons/svg/schema.js +11 -0
- package/dist/headless/source/icons/svg/schema.js.map +7 -0
- package/dist/headless/source/index.js +33 -1
- package/dist/headless/source/index.js.map +2 -2
- package/dist/headless/source/primitives/createCssTransition.js +10 -1
- package/dist/headless/source/primitives/createCssTransition.js.map +2 -2
- package/dist/icons/catalog.d.ts +1 -1
- package/dist/icons/catalog.js +78 -1
- package/dist/icons/catalog.js.map +1 -1
- package/dist/icons/index.js +596 -574
- package/dist/icons/index.js.map +1 -1
- package/dist/icons/svg/accountTree.d.ts +4 -0
- package/dist/icons/svg/accountTree.js +9 -0
- package/dist/icons/svg/accountTree.js.map +1 -0
- package/dist/icons/svg/callSplit.d.ts +4 -0
- package/dist/icons/svg/callSplit.js +9 -0
- package/dist/icons/svg/callSplit.js.map +1 -0
- package/dist/icons/svg/deviceHub.d.ts +4 -0
- package/dist/icons/svg/deviceHub.js +8 -0
- package/dist/icons/svg/deviceHub.js.map +1 -0
- package/dist/icons/svg/editNote.d.ts +4 -0
- package/dist/icons/svg/editNote.js +9 -0
- package/dist/icons/svg/editNote.js.map +1 -0
- package/dist/icons/svg/filterList.d.ts +4 -0
- package/dist/icons/svg/filterList.js +9 -0
- package/dist/icons/svg/filterList.js.map +1 -0
- package/dist/icons/svg/forkRight.d.ts +4 -0
- package/dist/icons/svg/forkRight.js +8 -0
- package/dist/icons/svg/forkRight.js.map +1 -0
- package/dist/icons/svg/groups.d.ts +4 -0
- package/dist/icons/svg/groups.js +9 -0
- package/dist/icons/svg/groups.js.map +1 -0
- package/dist/icons/svg/hub.d.ts +4 -0
- package/dist/icons/svg/hub.js +8 -0
- package/dist/icons/svg/hub.js.map +1 -0
- package/dist/icons/svg/index.d.ts +11 -0
- package/dist/icons/svg/index.js +598 -576
- package/dist/icons/svg/index.js.map +1 -1
- package/dist/icons/svg/lan.d.ts +4 -0
- package/dist/icons/svg/lan.js +9 -0
- package/dist/icons/svg/lan.js.map +1 -0
- package/dist/icons/svg/personOff.d.ts +4 -0
- package/dist/icons/svg/personOff.js +9 -0
- package/dist/icons/svg/personOff.js.map +1 -0
- package/dist/icons/svg/schema.d.ts +4 -0
- package/dist/icons/svg/schema.js +9 -0
- package/dist/icons/svg/schema.js.map +1 -0
- package/dist/index.d.ts +21 -5
- package/dist/index.js +281 -255
- package/dist/index.js.map +1 -1
- package/dist/primitives/createCssTransition.d.ts +6 -0
- package/dist/primitives/createCssTransition.js +31 -28
- package/dist/primitives/createCssTransition.js.map +1 -1
- package/dist/source/components/base/icon/icon.jsx +1 -0
- package/dist/source/components/base/icon/icon.jsx.map +1 -1
- package/dist/source/components/base/ripple/ripple.jsx +1 -0
- package/dist/source/components/base/ripple/ripple.jsx.map +1 -1
- package/dist/source/components/dataDisplay/accordion/accordion.jsx +61 -18
- package/dist/source/components/dataDisplay/accordion/accordion.jsx.map +1 -1
- package/dist/source/components/dataDisplay/assetGrid/assetGrid.jsx +1 -0
- package/dist/source/components/dataDisplay/assetGrid/assetGrid.jsx.map +1 -1
- package/dist/source/components/dataDisplay/avatar/avatar.jsx +29 -3
- package/dist/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
- package/dist/source/components/dataDisplay/badge/badge.jsx +9 -4
- package/dist/source/components/dataDisplay/badge/badge.jsx.map +1 -1
- package/dist/source/components/dataDisplay/card/card.jsx +5 -3
- package/dist/source/components/dataDisplay/card/card.jsx.map +1 -1
- package/dist/source/components/dataDisplay/carousel/carousel.jsx +1 -0
- package/dist/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chart/chart.jsx +170 -0
- package/dist/source/components/dataDisplay/chart/chart.jsx.map +1 -0
- package/dist/source/components/dataDisplay/chart/chartTheme.js +78 -0
- package/dist/source/components/dataDisplay/chart/chartTheme.js.map +7 -0
- package/dist/source/components/dataDisplay/chart/index.js +9 -0
- package/dist/source/components/dataDisplay/chart/index.js.map +7 -0
- package/dist/source/components/dataDisplay/chat/chat.jsx +5 -3
- package/dist/source/components/dataDisplay/chat/chat.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatHeader.jsx +7 -5
- package/dist/source/components/dataDisplay/chat/chatHeader.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatMessageBubble.jsx +4 -3
- package/dist/source/components/dataDisplay/chat/chatMessageBubble.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatShell.jsx +30 -26
- package/dist/source/components/dataDisplay/chat/chatShell.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chip/chip.jsx +12 -6
- package/dist/source/components/dataDisplay/chip/chip.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx +1 -0
- package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -1
- package/dist/source/components/dataDisplay/descriptionList/descriptionList.jsx +44 -0
- package/dist/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -0
- package/dist/source/components/dataDisplay/descriptionList/index.js +7 -0
- package/dist/source/components/dataDisplay/descriptionList/index.js.map +7 -0
- package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +1 -0
- package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
- package/dist/source/components/dataDisplay/imagesList/imagesList.jsx +1 -0
- package/dist/source/components/dataDisplay/imagesList/imagesList.jsx.map +1 -1
- package/dist/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx +11 -4
- package/dist/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx.map +1 -1
- package/dist/source/components/dataDisplay/kanban/index.js +8 -0
- package/dist/source/components/dataDisplay/kanban/index.js.map +7 -0
- package/dist/source/components/dataDisplay/kanban/kanban.jsx +101 -0
- package/dist/source/components/dataDisplay/kanban/kanban.jsx.map +1 -0
- package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx +5 -3
- package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
- package/dist/source/components/dataDisplay/list/list.jsx +5 -3
- package/dist/source/components/dataDisplay/list/list.jsx.map +1 -1
- package/dist/source/components/dataDisplay/meter/index.js +8 -0
- package/dist/source/components/dataDisplay/meter/index.js.map +7 -0
- package/dist/source/components/dataDisplay/meter/meter.jsx +82 -0
- package/dist/source/components/dataDisplay/meter/meter.jsx.map +1 -0
- package/dist/source/components/dataDisplay/personChip/index.js +8 -0
- package/dist/source/components/dataDisplay/personChip/index.js.map +7 -0
- package/dist/source/components/dataDisplay/personChip/personChip.jsx +73 -0
- package/dist/source/components/dataDisplay/personChip/personChip.jsx.map +1 -0
- package/dist/source/components/dataDisplay/stat/index.js +7 -0
- package/dist/source/components/dataDisplay/stat/index.js.map +7 -0
- package/dist/source/components/dataDisplay/stat/stat.jsx +74 -0
- package/dist/source/components/dataDisplay/stat/stat.jsx.map +1 -0
- package/dist/source/components/dataDisplay/table/table.jsx +12 -4
- package/dist/source/components/dataDisplay/table/table.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableCell.jsx +8 -2
- package/dist/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableHeadCell.jsx +37 -3
- package/dist/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tablePagination/tablePagination.jsx +1 -0
- package/dist/source/components/dataDisplay/table/tablePagination/tablePagination.jsx.map +1 -1
- package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx +11 -7
- package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
- package/dist/source/components/dataDisplay/timeline/index.js +8 -0
- package/dist/source/components/dataDisplay/timeline/index.js.map +7 -0
- package/dist/source/components/dataDisplay/timeline/timeline.jsx +66 -0
- package/dist/source/components/dataDisplay/timeline/timeline.jsx.map +1 -0
- package/dist/source/components/dataDisplay/treeView/treeView.jsx +1 -0
- package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
- package/dist/source/components/dataDisplay/typography/typography.jsx +18 -3
- package/dist/source/components/dataDisplay/typography/typography.jsx.map +1 -1
- package/dist/source/components/feedBack/confirmDialog/confirmDialog.jsx +1 -0
- package/dist/source/components/feedBack/confirmDialog/confirmDialog.jsx.map +1 -1
- package/dist/source/components/feedBack/emptyState/emptyState.jsx +49 -0
- package/dist/source/components/feedBack/emptyState/emptyState.jsx.map +1 -0
- package/dist/source/components/feedBack/emptyState/index.js +6 -0
- package/dist/source/components/feedBack/emptyState/index.js.map +7 -0
- package/dist/source/components/feedBack/message/message.jsx +1 -0
- package/dist/source/components/feedBack/message/message.jsx.map +1 -1
- package/dist/source/components/feedBack/modal/modal.jsx +1 -0
- package/dist/source/components/feedBack/modal/modal.jsx.map +1 -1
- package/dist/source/components/feedBack/progressIndicator/progressIndicator.jsx +53 -10
- package/dist/source/components/feedBack/progressIndicator/progressIndicator.jsx.map +1 -1
- package/dist/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx +4 -2
- package/dist/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx.map +1 -1
- package/dist/source/components/feedBack/skeleton/skeleton.jsx +1 -0
- package/dist/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
- package/dist/source/components/feedBack/snackbar/snackbar.jsx +1 -0
- package/dist/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
- package/dist/source/components/feedBack/tooltip/tooltip.jsx +5 -2
- package/dist/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
- package/dist/source/components/inputs/button/button.jsx +8 -3
- package/dist/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx +1 -0
- package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
- package/dist/source/components/inputs/checkbox/checkbox.jsx +1 -0
- package/dist/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/dataPickerInput.jsx +4 -3
- package/dist/source/components/inputs/datePicker/dataPickerInput.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/datePicker.jsx +5 -6
- package/dist/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
- package/dist/source/components/inputs/fileDrop/fileDrop.jsx +1 -0
- package/dist/source/components/inputs/fileDrop/fileDrop.jsx.map +1 -1
- package/dist/source/components/inputs/fileInput/fileInput.jsx +1 -0
- package/dist/source/components/inputs/fileInput/fileInput.jsx.map +1 -1
- package/dist/source/components/inputs/floatingButton/floatingButton.jsx +1 -0
- package/dist/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
- package/dist/source/components/inputs/radioButton/radioButton.jsx +1 -0
- package/dist/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
- package/dist/source/components/inputs/rating/rating.jsx +5 -3
- package/dist/source/components/inputs/rating/rating.jsx.map +1 -1
- package/dist/source/components/inputs/selectField/selectField.jsx +9 -2
- package/dist/source/components/inputs/selectField/selectField.jsx.map +1 -1
- package/dist/source/components/inputs/slider/slider.jsx +1 -0
- package/dist/source/components/inputs/slider/slider.jsx.map +1 -1
- package/dist/source/components/inputs/textField/textField.jsx +9 -6
- package/dist/source/components/inputs/textField/textField.jsx.map +1 -1
- package/dist/source/components/inputs/textField/textFieldAdornment.jsx +4 -3
- package/dist/source/components/inputs/textField/textFieldAdornment.jsx.map +1 -1
- package/dist/source/components/inputs/textField/textFieldWrapper.jsx +9 -6
- package/dist/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
- package/dist/source/components/inputs/timePicker/timePicker.jsx +1 -0
- package/dist/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
- package/dist/source/components/inputs/toggle/toggle.jsx +1 -0
- package/dist/source/components/inputs/toggle/toggle.jsx.map +1 -1
- package/dist/source/components/inputs/valueSlider/valueSlider.jsx +5 -3
- package/dist/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
- package/dist/source/components/layout/appLayout/appLayout.jsx +4 -2
- package/dist/source/components/layout/appLayout/appLayout.jsx.map +1 -1
- package/dist/source/components/layout/divider/divider.jsx +11 -6
- package/dist/source/components/layout/divider/divider.jsx.map +1 -1
- package/dist/source/components/layout/floatingWindow/floatingWindow.jsx +1 -0
- package/dist/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -1
- package/dist/source/components/layout/grid/grid.jsx +1 -0
- package/dist/source/components/layout/grid/grid.jsx.map +1 -1
- package/dist/source/components/layout/page/page.jsx +1 -0
- package/dist/source/components/layout/page/page.jsx.map +1 -1
- package/dist/source/components/layout/pageHeader/pageHeader.jsx +15 -10
- package/dist/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
- package/dist/source/components/layout/screenDivider/screenDivider.jsx +1 -0
- package/dist/source/components/layout/screenDivider/screenDivider.jsx.map +1 -1
- package/dist/source/components/layout/sectionHeader/index.js +6 -0
- package/dist/source/components/layout/sectionHeader/index.js.map +7 -0
- package/dist/source/components/layout/sectionHeader/sectionHeader.jsx +82 -0
- package/dist/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -0
- package/dist/source/components/layout/sheet/sheet.jsx +1 -0
- package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
- package/dist/source/components/layout/stack/stack.jsx +4 -2
- package/dist/source/components/layout/stack/stack.jsx.map +1 -1
- package/dist/source/components/navigation/appBar/appBar.jsx +8 -5
- package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/source/components/navigation/bottomBar/bottomBar.jsx +5 -3
- package/dist/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
- package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx +1 -0
- package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menu.jsx +1 -0
- package/dist/source/components/navigation/menu/menu.jsx.map +1 -1
- package/dist/source/components/navigation/overflowMenu/overflowMenu.jsx +1 -0
- package/dist/source/components/navigation/overflowMenu/overflowMenu.jsx.map +1 -1
- package/dist/source/components/navigation/pagination/pagination.jsx +1 -0
- package/dist/source/components/navigation/pagination/pagination.jsx.map +1 -1
- package/dist/source/components/navigation/sidebar/sidebar.jsx +1 -0
- package/dist/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
- package/dist/source/components/navigation/stepper/stepper.jsx +15 -7
- package/dist/source/components/navigation/stepper/stepper.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tab/tab.jsx +8 -5
- package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabs.jsx +85 -4
- package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/source/connects/rt/table/table.jsx +9 -1
- package/dist/source/connects/rt/table/table.jsx.map +1 -1
- package/dist/source/icons/catalog.js +78 -1
- package/dist/source/icons/catalog.js.map +2 -2
- package/dist/source/icons/svg/accountTree.js +11 -0
- package/dist/source/icons/svg/accountTree.js.map +7 -0
- package/dist/source/icons/svg/callSplit.js +11 -0
- package/dist/source/icons/svg/callSplit.js.map +7 -0
- package/dist/source/icons/svg/deviceHub.js +10 -0
- package/dist/source/icons/svg/deviceHub.js.map +7 -0
- package/dist/source/icons/svg/editNote.js +11 -0
- package/dist/source/icons/svg/editNote.js.map +7 -0
- package/dist/source/icons/svg/filterList.js +11 -0
- package/dist/source/icons/svg/filterList.js.map +7 -0
- package/dist/source/icons/svg/forkRight.js +10 -0
- package/dist/source/icons/svg/forkRight.js.map +7 -0
- package/dist/source/icons/svg/groups.js +11 -0
- package/dist/source/icons/svg/groups.js.map +7 -0
- package/dist/source/icons/svg/hub.js +10 -0
- package/dist/source/icons/svg/hub.js.map +7 -0
- package/dist/source/icons/svg/index.js +22 -0
- package/dist/source/icons/svg/index.js.map +2 -2
- package/dist/source/icons/svg/lan.js +11 -0
- package/dist/source/icons/svg/lan.js.map +7 -0
- package/dist/source/icons/svg/personOff.js +11 -0
- package/dist/source/icons/svg/personOff.js.map +7 -0
- package/dist/source/icons/svg/schema.js +11 -0
- package/dist/source/icons/svg/schema.js.map +7 -0
- package/dist/source/index.js +33 -1
- package/dist/source/index.js.map +2 -2
- package/dist/source/primitives/createCssTransition.js +10 -1
- package/dist/source/primitives/createCssTransition.js.map +2 -2
- package/package.json +79 -8
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -32,5 +32,11 @@ export interface CssTransitionState {
|
|
|
32
32
|
* dependency-free replacement for react-transition-group's CSSTransition. Uses
|
|
33
33
|
* a double rAF to flush the start class before the active class so the CSS
|
|
34
34
|
* transition runs, and a timeout to advance to the done/unmounted phase.
|
|
35
|
+
*
|
|
36
|
+
* Each phase settles once: when the timeout fires, the pending rAFs are
|
|
37
|
+
* cancelled and can no longer rewrite the classes. At a low frame rate the
|
|
38
|
+
* second rAF can land after the timeout, and it used to overwrite the done
|
|
39
|
+
* class with the start/active classes, parking the node in its off-screen
|
|
40
|
+
* state.
|
|
35
41
|
*/
|
|
36
42
|
export declare function createCssTransition(options: CreateCssTransitionOptions): CssTransitionState;
|
|
@@ -1,40 +1,43 @@
|
|
|
1
|
-
import { createSignal as
|
|
2
|
-
const
|
|
3
|
-
function
|
|
4
|
-
const [
|
|
5
|
-
let
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
},
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import { createSignal as A, createEffect as F, onCleanup as T } from "solid-js";
|
|
2
|
+
const C = (...t) => t.filter(Boolean).join(" ");
|
|
3
|
+
function j(t) {
|
|
4
|
+
const [f, u] = A(t.in()), [x, r] = A("");
|
|
5
|
+
let l = !0, o, n, a, s = 0;
|
|
6
|
+
const m = () => {
|
|
7
|
+
s++, o !== void 0 && clearTimeout(o), n !== void 0 && cancelAnimationFrame(n), a !== void 0 && cancelAnimationFrame(a), o = void 0, n = void 0, a = void 0;
|
|
8
|
+
}, v = (c, e, i, D, d) => {
|
|
9
|
+
const p = s;
|
|
10
|
+
r(c ?? ""), n = requestAnimationFrame(() => {
|
|
11
|
+
n = void 0, p === s && (a = requestAnimationFrame(() => {
|
|
12
|
+
a = void 0, p === s && r(C(c, e));
|
|
13
|
+
}));
|
|
14
|
+
}), o = setTimeout(() => {
|
|
15
|
+
m(), d ? d() : r(i ?? "");
|
|
16
|
+
}, D);
|
|
14
17
|
};
|
|
15
|
-
return
|
|
18
|
+
return F(() => {
|
|
16
19
|
const c = t.in();
|
|
17
|
-
|
|
20
|
+
m();
|
|
18
21
|
const e = t.classNames;
|
|
19
22
|
if (c)
|
|
20
|
-
if (
|
|
21
|
-
|
|
23
|
+
if (u(!0), l && !t.appear)
|
|
24
|
+
r(e.enterDone ?? "");
|
|
22
25
|
else {
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
const i = l && !!t.appear;
|
|
27
|
+
v(
|
|
28
|
+
i ? e.appear : e.enter,
|
|
29
|
+
i ? e.appearActive : e.enterActive,
|
|
30
|
+
i ? e.appearDone ?? e.enterDone : e.enterDone,
|
|
31
|
+
i ? t.timeout.appear ?? t.timeout.enter : t.timeout.enter
|
|
29
32
|
);
|
|
30
33
|
}
|
|
31
|
-
else
|
|
32
|
-
|
|
34
|
+
else f() && v(e.exit, e.exitActive, e.exitDone, t.timeout.exit, () => {
|
|
35
|
+
u(!1), r("");
|
|
33
36
|
});
|
|
34
|
-
|
|
35
|
-
}),
|
|
37
|
+
l = !1;
|
|
38
|
+
}), T(m), { mounted: f, classes: x };
|
|
36
39
|
}
|
|
37
40
|
export {
|
|
38
|
-
|
|
41
|
+
j as createCssTransition
|
|
39
42
|
};
|
|
40
43
|
//# sourceMappingURL=createCssTransition.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCssTransition.js","sources":["../../src/primitives/createCssTransition.ts"],"sourcesContent":["import { type Accessor, createEffect, createSignal, onCleanup } from \"solid-js\";\n\nexport interface CssTransitionClassNames {\n appear?: string;\n appearActive?: string;\n appearDone?: string;\n enter?: string;\n enterActive?: string;\n enterDone?: string;\n exit?: string;\n exitActive?: string;\n exitDone?: string;\n}\n\nexport interface CreateCssTransitionOptions {\n in: Accessor<boolean>;\n timeout: { appear?: number; enter: number; exit: number };\n classNames: CssTransitionClassNames;\n /** Animate the very first mount when `in` is already true. */\n appear?: boolean;\n}\n\nexport interface CssTransitionState {\n /** Whether the node should be in the DOM (mountOnEnter + unmountOnExit). */\n mounted: Accessor<boolean>;\n /** Transition classes to apply to the node for the current phase. */\n classes: Accessor<string>;\n}\n\nconst join = (...parts: Array<string | undefined>): string => parts.filter(Boolean).join(\" \");\n\n/**\n * Single-node CSS transition with mountOnEnter + unmountOnExit semantics — a\n * dependency-free replacement for react-transition-group's CSSTransition. Uses\n * a double rAF to flush the start class before the active class so the CSS\n * transition runs, and a timeout to advance to the done/unmounted phase.\n */\nexport function createCssTransition(options: CreateCssTransitionOptions): CssTransitionState {\n const [mounted, setMounted] = createSignal(options.in());\n const [classes, setClasses] = createSignal(\"\");\n\n let first = true;\n let timer: ReturnType<typeof setTimeout> | undefined;\n let raf1: number | undefined;\n let raf2: number | undefined;\n\n const clearTimers = (): void => {\n if (timer !== undefined) clearTimeout(timer);\n if (raf1 !== undefined) cancelAnimationFrame(raf1);\n if (raf2 !== undefined) cancelAnimationFrame(raf2);\n timer = undefined;\n raf1 = undefined;\n raf2 = undefined;\n };\n\n const run = (start: string | undefined, active: string | undefined, done: string | undefined, duration: number, onEnd?: () => void): void => {\n setClasses(start ?? \"\");\n raf1 = requestAnimationFrame(() => {\n raf2 = requestAnimationFrame(() => setClasses(join(start, active)));\n });\n timer = setTimeout(() => {\n if (onEnd) onEnd();\n else setClasses(done ?? \"\");\n }, duration);\n };\n\n createEffect(() => {\n const show = options.in();\n clearTimers();\n const cls = options.classNames;\n\n if (show) {\n setMounted(true);\n if (first && !options.appear) {\n setClasses(cls.enterDone ?? \"\");\n } else {\n const useAppear = first && !!options.appear;\n run(\n useAppear ? cls.appear : cls.enter,\n useAppear ? cls.appearActive : cls.enterActive,\n useAppear ? (cls.appearDone ?? cls.enterDone) : cls.enterDone,\n useAppear ? (options.timeout.appear ?? options.timeout.enter) : options.timeout.enter\n );\n }\n } else if (mounted()) {\n run(cls.exit, cls.exitActive, cls.exitDone, options.timeout.exit, () => {\n setMounted(false);\n setClasses(\"\");\n });\n }\n first = false;\n });\n\n onCleanup(clearTimers);\n\n return { mounted, classes };\n}\n"],"names":["join","parts","createCssTransition","options","mounted","setMounted","createSignal","classes","setClasses","first","timer","raf1","raf2","clearTimers","run","start","active","done","duration","onEnd","createEffect","show","cls","useAppear","onCleanup"],"mappings":";AA6BA,MAAMA,IAAO,IAAIC,MAA6CA,EAAM,OAAO,OAAO,EAAE,KAAK,GAAG;
|
|
1
|
+
{"version":3,"file":"createCssTransition.js","sources":["../../src/primitives/createCssTransition.ts"],"sourcesContent":["import { type Accessor, createEffect, createSignal, onCleanup } from \"solid-js\";\n\nexport interface CssTransitionClassNames {\n appear?: string;\n appearActive?: string;\n appearDone?: string;\n enter?: string;\n enterActive?: string;\n enterDone?: string;\n exit?: string;\n exitActive?: string;\n exitDone?: string;\n}\n\nexport interface CreateCssTransitionOptions {\n in: Accessor<boolean>;\n timeout: { appear?: number; enter: number; exit: number };\n classNames: CssTransitionClassNames;\n /** Animate the very first mount when `in` is already true. */\n appear?: boolean;\n}\n\nexport interface CssTransitionState {\n /** Whether the node should be in the DOM (mountOnEnter + unmountOnExit). */\n mounted: Accessor<boolean>;\n /** Transition classes to apply to the node for the current phase. */\n classes: Accessor<string>;\n}\n\nconst join = (...parts: Array<string | undefined>): string => parts.filter(Boolean).join(\" \");\n\n/**\n * Single-node CSS transition with mountOnEnter + unmountOnExit semantics — a\n * dependency-free replacement for react-transition-group's CSSTransition. Uses\n * a double rAF to flush the start class before the active class so the CSS\n * transition runs, and a timeout to advance to the done/unmounted phase.\n *\n * Each phase settles once: when the timeout fires, the pending rAFs are\n * cancelled and can no longer rewrite the classes. At a low frame rate the\n * second rAF can land after the timeout, and it used to overwrite the done\n * class with the start/active classes, parking the node in its off-screen\n * state.\n */\nexport function createCssTransition(options: CreateCssTransitionOptions): CssTransitionState {\n const [mounted, setMounted] = createSignal(options.in());\n const [classes, setClasses] = createSignal(\"\");\n\n let first = true;\n let timer: ReturnType<typeof setTimeout> | undefined;\n let raf1: number | undefined;\n let raf2: number | undefined;\n // Bumped whenever a phase settles or is replaced; a frame callback from an\n // older phase sees a different value and does nothing.\n let generation = 0;\n\n const clearTimers = (): void => {\n generation++;\n if (timer !== undefined) clearTimeout(timer);\n if (raf1 !== undefined) cancelAnimationFrame(raf1);\n if (raf2 !== undefined) cancelAnimationFrame(raf2);\n timer = undefined;\n raf1 = undefined;\n raf2 = undefined;\n };\n\n const run = (start: string | undefined, active: string | undefined, done: string | undefined, duration: number, onEnd?: () => void): void => {\n const own = generation;\n setClasses(start ?? \"\");\n raf1 = requestAnimationFrame(() => {\n raf1 = undefined;\n if (own !== generation) return;\n raf2 = requestAnimationFrame(() => {\n raf2 = undefined;\n if (own === generation) setClasses(join(start, active));\n });\n });\n timer = setTimeout(() => {\n clearTimers();\n if (onEnd) onEnd();\n else setClasses(done ?? \"\");\n }, duration);\n };\n\n createEffect(() => {\n const show = options.in();\n clearTimers();\n const cls = options.classNames;\n\n if (show) {\n setMounted(true);\n if (first && !options.appear) {\n setClasses(cls.enterDone ?? \"\");\n } else {\n const useAppear = first && !!options.appear;\n run(\n useAppear ? cls.appear : cls.enter,\n useAppear ? cls.appearActive : cls.enterActive,\n useAppear ? (cls.appearDone ?? cls.enterDone) : cls.enterDone,\n useAppear ? (options.timeout.appear ?? options.timeout.enter) : options.timeout.enter\n );\n }\n } else if (mounted()) {\n run(cls.exit, cls.exitActive, cls.exitDone, options.timeout.exit, () => {\n setMounted(false);\n setClasses(\"\");\n });\n }\n first = false;\n });\n\n onCleanup(clearTimers);\n\n return { mounted, classes };\n}\n"],"names":["join","parts","createCssTransition","options","mounted","setMounted","createSignal","classes","setClasses","first","timer","raf1","raf2","generation","clearTimers","run","start","active","done","duration","onEnd","own","createEffect","show","cls","useAppear","onCleanup"],"mappings":";AA6BA,MAAMA,IAAO,IAAIC,MAA6CA,EAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AAcrF,SAASC,EAAoBC,GAAyD;AAC3F,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAaH,EAAQ,IAAI,GACjD,CAACI,GAASC,CAAU,IAAIF,EAAa,EAAE;AAE7C,MAAIG,IAAQ,IACRC,GACAC,GACAC,GAGAC,IAAa;AAEjB,QAAMC,IAAc,MAAY;AAC9B,IAAAD,KACIH,MAAU,UAAW,aAAaA,CAAK,GACvCC,MAAS,UAAW,qBAAqBA,CAAI,GAC7CC,MAAS,UAAW,qBAAqBA,CAAI,GACjDF,IAAQ,QACRC,IAAO,QACPC,IAAO;AAAA,EACT,GAEMG,IAAM,CAACC,GAA2BC,GAA4BC,GAA0BC,GAAkBC,MAA6B;AAC3I,UAAMC,IAAMR;AACZ,IAAAL,EAAWQ,KAAS,EAAE,GACtBL,IAAO,sBAAsB,MAAM;AAEjC,MADAA,IAAO,QACHU,MAAQR,MACZD,IAAO,sBAAsB,MAAM;AACjC,QAAAA,IAAO,QACHS,MAAQR,KAAYL,EAAWR,EAAKgB,GAAOC,CAAM,CAAC;AAAA,MACxD,CAAC;AAAA,IACH,CAAC,GACDP,IAAQ,WAAW,MAAM;AACvB,MAAAI,EAAA,GACIM,IAAOA,EAAA,IACNZ,EAAWU,KAAQ,EAAE;AAAA,IAC5B,GAAGC,CAAQ;AAAA,EACb;AAEA,SAAAG,EAAa,MAAM;AACjB,UAAMC,IAAOpB,EAAQ,GAAA;AACrB,IAAAW,EAAA;AACA,UAAMU,IAAMrB,EAAQ;AAEpB,QAAIoB;AAEF,UADAlB,EAAW,EAAI,GACXI,KAAS,CAACN,EAAQ;AACpB,QAAAK,EAAWgB,EAAI,aAAa,EAAE;AAAA,WACzB;AACL,cAAMC,IAAYhB,KAAS,CAAC,CAACN,EAAQ;AACrC,QAAAY;AAAA,UACEU,IAAYD,EAAI,SAASA,EAAI;AAAA,UAC7BC,IAAYD,EAAI,eAAeA,EAAI;AAAA,UACnCC,IAAaD,EAAI,cAAcA,EAAI,YAAaA,EAAI;AAAA,UACpDC,IAAatB,EAAQ,QAAQ,UAAUA,EAAQ,QAAQ,QAASA,EAAQ,QAAQ;AAAA,QAAA;AAAA,MAEpF;AAAA,QACF,CAAWC,OACTW,EAAIS,EAAI,MAAMA,EAAI,YAAYA,EAAI,UAAUrB,EAAQ,QAAQ,MAAM,MAAM;AACtE,MAAAE,EAAW,EAAK,GAChBG,EAAW,EAAE;AAAA,IACf,CAAC;AAEH,IAAAC,IAAQ;AAAA,EACV,CAAC,GAEDiB,EAAUZ,CAAW,GAEd,EAAE,SAAAV,GAAS,SAAAG,EAAA;AACpB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/base/icon/icon.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/icon/icon.entry.less\";\n/* eslint-disable solid/no-innerhtml -- icon bodies are static SVG geometry\n generated from icons/data into src/icons/svg; nothing user-supplied reaches\n this attribute, and an <svg> assembled from JSX children cannot be handed to\n a consumer as plain data. */\nimport { type JSX, mergeProps, splitProps, useContext } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { getIcon } from \"../../../icons/registry\";\nimport { getIconConfig } from \"../../../icons/config\";\nimport type { IconDefinition, IconSource } from \"../../../icons/types\";\nimport { createIconVersion, IconContext } from \"./iconProvider\";\n\nexport type IconColor = \"inherit\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\" | \"disabled\";\n\nconst COLOR_TOKENS: ReadonlyArray<string> = [\n \"primary\",\n \"secondary\",\n \"error\",\n \"success\",\n \"warning\",\n \"info\",\n \"disabled\",\n];\n\nconst warned = new Set<string>();\n\nfunction warnMissing(name: string): void {\n if (!getIconConfig().warnOnMissing || warned.has(name)) return;\n warned.add(name);\n console.warn(\n `[smwb] Icon \"${name}\" is not registered. Register it (import { ${name} } from \"@smwb/ui-solid/icons\") ` +\n `or use source=\"auto\" to fall back to Material Symbols.`\n );\n}\n\nexport interface IconProps extends JSX.HTMLAttributes<HTMLSpanElement> {\n /**\n * Icon name — the Google Material Symbols name, e.g. `\"arrow_right_alt\"`.\n * Lookup is forgiving: `arrowRightAlt` and `arrow-right-alt` resolve too, as\n * do an icon's aliases.\n *\n * An {@link IconDefinition} may be passed instead, which skips the registry\n * entirely and is the most bundle-friendly form:\n *\n * ```tsx\n * import { arrowRightAlt } from \"@smwb/ui-solid/icons\";\n * <Icon name={arrowRightAlt} />\n * ```\n */\n name: string | IconDefinition;\n /**\n * Material Symbols weight axis (100-700). For the smwb SVG set it maps to the\n * stroke width: 400 → 2px, 700 → 3px, 100 → 1px.\n */\n weight?: number;\n /** Material Symbols FILL axis. Not used by the smwb SVG set (it is a contour set). */\n fill?: 0 | 1;\n /** Pixel number or any CSS length (e.g. \"1.5rem\"). */\n size?: number | string;\n /** Material Symbols GRAD axis. Not used by the smwb SVG set. */\n grade?: number;\n /**\n * Semantic color token; `inherit` (default) keeps the text color. Any string\n * is accepted for backward compatibility, but only known {@link IconColor}\n * tokens emit a color class.\n */\n color?: IconColor | (string & {});\n /**\n * Accessible name. When provided the icon is exposed as `role=\"img\"`;\n * otherwise it is `aria-hidden` (decorative).\n */\n title?: string;\n /** Overrides the icon source for this icon only. See {@link IconSource}. */\n source?: IconSource;\n ref?: Ref<HTMLSpanElement>;\n}\n\nexport function Icon(props: IconProps): JSX.Element {\n const merged = mergeProps(\n { weight: 400, fill: 0 as 0 | 1, size: 20 as number | string, grade: 100, color: \"inherit\" as IconProps[\"color\"] },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"weight\",\n \"fill\",\n \"size\",\n \"grade\",\n \"name\",\n \"color\",\n \"title\",\n \"style\",\n \"source\",\n \"ref\",\n ]);\n\n const context = useContext(IconContext);\n // Re-reads the registry when icons are registered late (lazy chunks, HMR).\n const version = createIconVersion();\n\n const source = (): IconSource => {\n version();\n return local.source ?? context?.source ?? getIconConfig().source;\n };\n const definition = (): IconDefinition | undefined => {\n version();\n return typeof local.name === \"object\" ? local.name : getIcon(local.name);\n };\n const glyph = (): string => (typeof local.name === \"string\" ? local.name : local.name.name);\n\n const mode = (): \"google\" | \"smwb\" | \"missing\" => {\n const resolved = source();\n if (resolved === \"google\") return \"google\";\n if (definition()) return \"smwb\";\n if (resolved === \"smwb\") {\n warnMissing(glyph());\n return \"missing\";\n }\n return \"google\";\n };\n\n const decorative = (): boolean => local.title === undefined;\n const colorClass = (): string | undefined =>\n typeof local.color === \"string\" && COLOR_TOKENS.includes(local.color) ? `smwb-icon_color-${local.color}` : undefined;\n const styleObject = (): JSX.CSSProperties => (typeof local.style === \"object\" && local.style ? local.style : {});\n const cssSize = (): string => (typeof local.size === \"number\" ? `${local.size}px` : local.size);\n const strokeWidth = (): number => Math.round(Math.min(3, Math.max(1, local.weight / 200)) * 100) / 100;\n\n return (\n <span\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"icon\"\n data-icon-source={mode()}\n role={decorative() ? undefined : \"img\"}\n aria-hidden={decorative() ? true : undefined}\n aria-label={local.title}\n title={local.title}\n style={{\n ...styleObject(),\n ...(mode() === \"google\"\n ? {\n \"font-variation-settings\": `'FILL' ${local.fill}, 'wght' ${local.weight}, 'GRAD' ${local.grade}, 'opsz' 48`,\n }\n : null),\n }}\n class={cn(\"smwb-icon__wrapper\", colorClass(), local.class)}\n >\n {mode() === \"google\" ? (\n <span class=\"material-symbols-outlined\" style={{ \"font-size\": cssSize() }}>\n {glyph()}\n </span>\n ) : (\n <svg\n class=\"smwb-icon__svg\"\n viewBox={definition()?.viewBox ?? \"0 0 24 24\"}\n style={{ width: cssSize(), height: cssSize() }}\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width={strokeWidth()}\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n innerHTML={definition()?.body ?? \"\"}\n />\n )}\n </span>\n );\n}\n\nexport default Icon;\n"],"mappings":"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","names":[],"file":"icon.jsx"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/base/icon/icon.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/icon/icon.entry.less\";\n/* eslint-disable solid/no-innerhtml -- icon bodies are static SVG geometry\n generated from icons/data into src/icons/svg; nothing user-supplied reaches\n this attribute, and an <svg> assembled from JSX children cannot be handed to\n a consumer as plain data. */\nimport { type JSX, mergeProps, splitProps, useContext } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { getIcon } from \"../../../icons/registry\";\nimport { getIconConfig } from \"../../../icons/config\";\nimport type { IconDefinition, IconSource } from \"../../../icons/types\";\nimport { createIconVersion, IconContext } from \"./iconProvider\";\n\nexport type IconColor = \"inherit\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\" | \"disabled\";\n\nconst COLOR_TOKENS: ReadonlyArray<string> = [\n \"primary\",\n \"secondary\",\n \"error\",\n \"success\",\n \"warning\",\n \"info\",\n \"disabled\",\n];\n\nconst warned = new Set<string>();\n\nfunction warnMissing(name: string): void {\n if (!getIconConfig().warnOnMissing || warned.has(name)) return;\n warned.add(name);\n console.warn(\n `[smwb] Icon \"${name}\" is not registered. Register it (import { ${name} } from \"@smwb/ui-solid/icons\") ` +\n `or use source=\"auto\" to fall back to Material Symbols.`\n );\n}\n\nexport interface IconProps extends JSX.HTMLAttributes<HTMLSpanElement> {\n /**\n * Icon name — the Google Material Symbols name, e.g. `\"arrow_right_alt\"`.\n * Lookup is forgiving: `arrowRightAlt` and `arrow-right-alt` resolve too, as\n * do an icon's aliases.\n *\n * An {@link IconDefinition} may be passed instead, which skips the registry\n * entirely and is the most bundle-friendly form:\n *\n * ```tsx\n * import { arrowRightAlt } from \"@smwb/ui-solid/icons\";\n * <Icon name={arrowRightAlt} />\n * ```\n */\n name: string | IconDefinition;\n /**\n * Material Symbols weight axis (100-700). For the smwb SVG set it maps to the\n * stroke width: 400 → 2px, 700 → 3px, 100 → 1px.\n */\n weight?: number;\n /** Material Symbols FILL axis. Not used by the smwb SVG set (it is a contour set). */\n fill?: 0 | 1;\n /** Pixel number or any CSS length (e.g. \"1.5rem\"). */\n size?: number | string;\n /** Material Symbols GRAD axis. Not used by the smwb SVG set. */\n grade?: number;\n /**\n * Semantic color token; `inherit` (default) keeps the text color. Any string\n * is accepted for backward compatibility, but only known {@link IconColor}\n * tokens emit a color class.\n */\n color?: IconColor | (string & {});\n /**\n * Accessible name. When provided the icon is exposed as `role=\"img\"`;\n * otherwise it is `aria-hidden` (decorative).\n */\n title?: string;\n /** Overrides the icon source for this icon only. See {@link IconSource}. */\n source?: IconSource;\n ref?: Ref<HTMLSpanElement>;\n}\n\nexport function Icon(props: IconProps): JSX.Element {\n const merged = mergeProps(\n { weight: 400, fill: 0 as 0 | 1, size: 20 as number | string, grade: 100, color: \"inherit\" as IconProps[\"color\"] },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"weight\",\n \"fill\",\n \"size\",\n \"grade\",\n \"name\",\n \"color\",\n \"title\",\n \"style\",\n \"source\",\n \"ref\",\n ]);\n\n const context = useContext(IconContext);\n // Re-reads the registry when icons are registered late (lazy chunks, HMR).\n const version = createIconVersion();\n\n const source = (): IconSource => {\n version();\n return local.source ?? context?.source ?? getIconConfig().source;\n };\n const definition = (): IconDefinition | undefined => {\n version();\n return typeof local.name === \"object\" ? local.name : getIcon(local.name);\n };\n const glyph = (): string => (typeof local.name === \"string\" ? local.name : local.name.name);\n\n const mode = (): \"google\" | \"smwb\" | \"missing\" => {\n const resolved = source();\n if (resolved === \"google\") return \"google\";\n if (definition()) return \"smwb\";\n if (resolved === \"smwb\") {\n warnMissing(glyph());\n return \"missing\";\n }\n return \"google\";\n };\n\n const decorative = (): boolean => local.title === undefined;\n const colorClass = (): string | undefined =>\n typeof local.color === \"string\" && COLOR_TOKENS.includes(local.color) ? `smwb-icon_color-${local.color}` : undefined;\n const styleObject = (): JSX.CSSProperties => (typeof local.style === \"object\" && local.style ? local.style : {});\n const cssSize = (): string => (typeof local.size === \"number\" ? `${local.size}px` : local.size);\n const strokeWidth = (): number => Math.round(Math.min(3, Math.max(1, local.weight / 200)) * 100) / 100;\n\n return (\n <span\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"icon\"\n data-icon-source={mode()}\n role={decorative() ? undefined : \"img\"}\n aria-hidden={decorative() ? true : undefined}\n aria-label={local.title}\n title={local.title}\n style={{\n ...styleObject(),\n ...(mode() === \"google\"\n ? {\n \"font-variation-settings\": `'FILL' ${local.fill}, 'wght' ${local.weight}, 'GRAD' ${local.grade}, 'opsz' 48`,\n }\n : null),\n }}\n class={cn(\"smwb-icon__wrapper\", colorClass(), local.class)}\n >\n {mode() === \"google\" ? (\n <span class=\"material-symbols-outlined\" style={{ \"font-size\": cssSize() }}>\n {glyph()}\n </span>\n ) : (\n <svg\n class=\"smwb-icon__svg\"\n viewBox={definition()?.viewBox ?? \"0 0 24 24\"}\n style={{ width: cssSize(), height: cssSize() }}\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width={strokeWidth()}\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n innerHTML={definition()?.body ?? \"\"}\n />\n )}\n </span>\n );\n}\n\nexport default Icon;\n"],"mappings":"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","names":[],"file":"icon.jsx"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/base/ripple/ripple.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/ripple/ripple.entry.less\";\nimport { type JSX, For, createSignal, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface RippleActionsRef {\n onRipple: (event: MouseEvent) => void;\n}\n\nexport interface RippleClasses {\n ripple?: string;\n child?: string;\n}\n\nexport interface RippleProps extends JSX.HTMLAttributes<HTMLSpanElement> {\n /** Receives the imperative API once on mount. */\n actionRef?: (actions: RippleActionsRef) => void;\n classes?: RippleClasses;\n center?: boolean | undefined;\n /** Ripple lifetime in ms. */\n duration?: number;\n /** Ripple color (any CSS color). Defaults to inherited currentColor. */\n color?: string | undefined;\n ref?: Ref<HTMLSpanElement>;\n}\n\ninterface RippleEntry {\n key: number;\n x: number;\n y: number;\n size: number;\n}\n\n/**\n * ⚠️ For this effect to work, the parent element must have CSS\n * `position: relative;`.\n */\nexport function Ripple(props: RippleProps): JSX.Element {\n const merged = mergeProps({ duration: 600 }, props);\n const [local, rest] = splitProps(merged, [\n \"actionRef\",\n \"class\",\n \"classes\",\n \"center\",\n \"duration\",\n \"color\",\n \"ref\",\n \"style\",\n ]);\n\n const [ripples, setRipples] = createSignal<RippleEntry[]>([]);\n let nextKey = 0;\n\n const onRipple = (event: MouseEvent): void => {\n const target = event.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const diameter = Math.max(rect.width, rect.height);\n const radius = diameter / 2;\n\n let coordX: number;\n let coordY: number;\n if (local.center) {\n coordX = rect.width > rect.height ? 0 : rect.width / 2 - radius;\n coordY = rect.height > rect.width ? 0 : rect.height / 2 - radius;\n } else {\n coordX = event.clientX - rect.left - radius;\n coordY = event.clientY - rect.top - radius;\n }\n\n const key = nextKey++;\n setRipples((prev) => [...prev, { key, x: coordX, y: coordY, size: diameter }]);\n setTimeout(() => setRipples((prev) => prev.slice(1)), local.duration);\n };\n\n local.actionRef?.({ onRipple });\n\n return (\n <span\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-ripple\", local.class, local.classes?.ripple)}\n data-testid=\"ripple\"\n aria-hidden=\"true\"\n >\n <For each={ripples()}>\n {(ripple) => (\n <span\n class={cn(\"smwb-ripple__child\", local.classes?.child)}\n style={{\n left: `${ripple.x}px`,\n top: `${ripple.y}px`,\n width: `${ripple.size}px`,\n height: `${ripple.size}px`,\n \"background-color\": local.color,\n }}\n />\n )}\n </For>\n </span>\n );\n}\n\nexport default Ripple;\n"],"mappings":"AAAA,OAAO;AACP,SAAmB,KAAK,cAAc,YAAY,kBAAkB;AACpE,OAAO,QAAQ;AACf,SAAS,iBAA2B;AAkC7B,SAAS,OAAO,OAAiC;AACtD,QAAM,SAAS,WAAW,EAAE,UAAU,IAAI,GAAG,KAAK;AAClD,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,CAAC,SAAS,UAAU,IAAI,aAA4B,CAAC,CAAC;AAC5D,MAAI,UAAU;AAEd,QAAM,WAAW,CAAC,UAA4B;AAC5C,UAAM,SAAS,MAAM;AACrB,UAAM,OAAO,OAAO,sBAAsB;AAC1C,UAAM,WAAW,KAAK,IAAI,KAAK,OAAO,KAAK,MAAM;AACjD,UAAM,SAAS,WAAW;AAE1B,QAAI;AACJ,QAAI;AACJ,QAAI,MAAM,QAAQ;AAChB,eAAS,KAAK,QAAQ,KAAK,SAAS,IAAI,KAAK,QAAQ,IAAI;AACzD,eAAS,KAAK,SAAS,KAAK,QAAQ,IAAI,KAAK,SAAS,IAAI;AAAA,IAC5D,OAAO;AACL,eAAS,MAAM,UAAU,KAAK,OAAO;AACrC,eAAS,MAAM,UAAU,KAAK,MAAM;AAAA,IACtC;AAEA,UAAM,MAAM;AACZ,eAAW,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,MAAM,SAAS,CAAC,CAAC;AAC7E,eAAW,MAAM,WAAW,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,GAAG,MAAM,QAAQ;AAAA,EACtE;AAEA,QAAM,YAAY,EAAE,SAAS,CAAC;AAE9B,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO,GAAG,eAAe,MAAM,OAAO,MAAM,SAAS,MAAM;AAAA,IAC3D,YAAY;AAAA,IACZ,YAAY;AAAA,GACb;AAAA,MACC,CAAC,IAAI,MAAM,QAAQ,GAAG;AAAA,SACnB,CAAC,WACA,CAAC;AAAA,IACC,OAAO,GAAG,sBAAsB,MAAM,SAAS,KAAK;AAAA,IACpD,OAAO;AAAA,MACL,MAAM,GAAG,OAAO,CAAC;AAAA,MACjB,KAAK,GAAG,OAAO,CAAC;AAAA,MAChB,OAAO,GAAG,OAAO,IAAI;AAAA,MACrB,QAAQ,GAAG,OAAO,IAAI;AAAA,MACtB,oBAAoB,MAAM;AAAA,IAC5B;AAAA,EACF,GACA;AAAA,MACJ,EAbC,IAaK;AAAA,IACR,EArBC;AAuBL;AAEA,IAAO,iBAAQ;","names":[],"file":"ripple.jsx"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/base/ripple/ripple.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/ripple/ripple.entry.less\";\nimport { type JSX, For, createSignal, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface RippleActionsRef {\n onRipple: (event: MouseEvent) => void;\n}\n\nexport interface RippleClasses {\n ripple?: string;\n child?: string;\n}\n\nexport interface RippleProps extends JSX.HTMLAttributes<HTMLSpanElement> {\n /** Receives the imperative API once on mount. */\n actionRef?: (actions: RippleActionsRef) => void;\n classes?: RippleClasses;\n center?: boolean | undefined;\n /** Ripple lifetime in ms. */\n duration?: number;\n /** Ripple color (any CSS color). Defaults to inherited currentColor. */\n color?: string | undefined;\n ref?: Ref<HTMLSpanElement>;\n}\n\ninterface RippleEntry {\n key: number;\n x: number;\n y: number;\n size: number;\n}\n\n/**\n * ⚠️ For this effect to work, the parent element must have CSS\n * `position: relative;`.\n */\nexport function Ripple(props: RippleProps): JSX.Element {\n const merged = mergeProps({ duration: 600 }, props);\n const [local, rest] = splitProps(merged, [\n \"actionRef\",\n \"class\",\n \"classes\",\n \"center\",\n \"duration\",\n \"color\",\n \"ref\",\n \"style\",\n ]);\n\n const [ripples, setRipples] = createSignal<RippleEntry[]>([]);\n let nextKey = 0;\n\n const onRipple = (event: MouseEvent): void => {\n const target = event.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const diameter = Math.max(rect.width, rect.height);\n const radius = diameter / 2;\n\n let coordX: number;\n let coordY: number;\n if (local.center) {\n coordX = rect.width > rect.height ? 0 : rect.width / 2 - radius;\n coordY = rect.height > rect.width ? 0 : rect.height / 2 - radius;\n } else {\n coordX = event.clientX - rect.left - radius;\n coordY = event.clientY - rect.top - radius;\n }\n\n const key = nextKey++;\n setRipples((prev) => [...prev, { key, x: coordX, y: coordY, size: diameter }]);\n setTimeout(() => setRipples((prev) => prev.slice(1)), local.duration);\n };\n\n local.actionRef?.({ onRipple });\n\n return (\n <span\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-ripple\", local.class, local.classes?.ripple)}\n data-testid=\"ripple\"\n aria-hidden=\"true\"\n >\n <For each={ripples()}>\n {(ripple) => (\n <span\n class={cn(\"smwb-ripple__child\", local.classes?.child)}\n style={{\n left: `${ripple.x}px`,\n top: `${ripple.y}px`,\n width: `${ripple.size}px`,\n height: `${ripple.size}px`,\n \"background-color\": local.color,\n }}\n />\n )}\n </For>\n </span>\n );\n}\n\nexport default Ripple;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAmB,KAAK,cAAc,YAAY,kBAAkB;AACpE,OAAO,QAAQ;AACf,SAAS,iBAA2B;AAkC7B,SAAS,OAAO,OAAiC;AACtD,QAAM,SAAS,WAAW,EAAE,UAAU,IAAI,GAAG,KAAK;AAClD,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,CAAC,SAAS,UAAU,IAAI,aAA4B,CAAC,CAAC;AAC5D,MAAI,UAAU;AAEd,QAAM,WAAW,CAAC,UAA4B;AAC5C,UAAM,SAAS,MAAM;AACrB,UAAM,OAAO,OAAO,sBAAsB;AAC1C,UAAM,WAAW,KAAK,IAAI,KAAK,OAAO,KAAK,MAAM;AACjD,UAAM,SAAS,WAAW;AAE1B,QAAI;AACJ,QAAI;AACJ,QAAI,MAAM,QAAQ;AAChB,eAAS,KAAK,QAAQ,KAAK,SAAS,IAAI,KAAK,QAAQ,IAAI;AACzD,eAAS,KAAK,SAAS,KAAK,QAAQ,IAAI,KAAK,SAAS,IAAI;AAAA,IAC5D,OAAO;AACL,eAAS,MAAM,UAAU,KAAK,OAAO;AACrC,eAAS,MAAM,UAAU,KAAK,MAAM;AAAA,IACtC;AAEA,UAAM,MAAM;AACZ,eAAW,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,MAAM,SAAS,CAAC,CAAC;AAC7E,eAAW,MAAM,WAAW,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,GAAG,MAAM,QAAQ;AAAA,EACtE;AAEA,QAAM,YAAY,EAAE,SAAS,CAAC;AAE9B,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO,GAAG,eAAe,MAAM,OAAO,MAAM,SAAS,MAAM;AAAA,IAC3D,YAAY;AAAA,IACZ,YAAY;AAAA,GACb;AAAA,MACC,CAAC,IAAI,MAAM,QAAQ,GAAG;AAAA,SACnB,CAAC,WACA,CAAC;AAAA,IACC,OAAO,GAAG,sBAAsB,MAAM,SAAS,KAAK;AAAA,IACpD,OAAO;AAAA,MACL,MAAM,GAAG,OAAO,CAAC;AAAA,MACjB,KAAK,GAAG,OAAO,CAAC;AAAA,MAChB,OAAO,GAAG,OAAO,IAAI;AAAA,MACrB,QAAQ,GAAG,OAAO,IAAI;AAAA,MACtB,oBAAoB,MAAM;AAAA,IAC5B;AAAA,EACF,GACA;AAAA,MACJ,EAbC,IAaK;AAAA,IACR,EArBC;AAuBL;AAEA,IAAO,iBAAQ;","names":[],"file":"ripple.jsx"}
|
|
@@ -1,16 +1,39 @@
|
|
|
1
|
+
import "@smwb/ui-styles/less/tokens.entry.less";
|
|
1
2
|
import "@smwb/ui-styles/less/components/accordion/accordion.entry.less";
|
|
2
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
Show,
|
|
5
|
+
children,
|
|
6
|
+
createComputed,
|
|
7
|
+
createSignal,
|
|
8
|
+
mergeProps,
|
|
9
|
+
splitProps
|
|
10
|
+
} from "solid-js";
|
|
3
11
|
import cn from "clsx";
|
|
4
12
|
import { AnimateHeight } from "../../base/animateHeight/animateHeight";
|
|
5
13
|
import { Icon } from "../../base/icon";
|
|
6
14
|
import { createControllableState } from "../../../primitives/createControllableState";
|
|
7
15
|
import { createId } from "../../../primitives/createId";
|
|
8
16
|
import { mergeRefs } from "../../../primitives/mergeRefs";
|
|
17
|
+
function ExpandIcon(props) {
|
|
18
|
+
const icon = children(() => props.icon);
|
|
19
|
+
return <Show
|
|
20
|
+
when={icon()}
|
|
21
|
+
fallback={<Icon
|
|
22
|
+
class={cn("smwb-accordion__arrow-icon", { "smwb-accordion__arrow-icon_opened": props.open })}
|
|
23
|
+
name="expand_more"
|
|
24
|
+
size={24}
|
|
25
|
+
/>}
|
|
26
|
+
>
|
|
27
|
+
{icon()}
|
|
28
|
+
</Show>;
|
|
29
|
+
}
|
|
9
30
|
function Accordion(props) {
|
|
10
|
-
const merged = mergeProps({ isOpenByDefault: false }, props);
|
|
31
|
+
const merged = mergeProps({ isOpenByDefault: false, variant: "filled" }, props);
|
|
11
32
|
const [local] = splitProps(merged, [
|
|
12
33
|
"class",
|
|
13
34
|
"title",
|
|
35
|
+
"subtitle",
|
|
36
|
+
"variant",
|
|
14
37
|
"isOpenByDefault",
|
|
15
38
|
"open",
|
|
16
39
|
"disabled",
|
|
@@ -18,7 +41,10 @@ function Accordion(props) {
|
|
|
18
41
|
"id",
|
|
19
42
|
"children",
|
|
20
43
|
"startAdornment",
|
|
44
|
+
"endAdornment",
|
|
21
45
|
"noIcon",
|
|
46
|
+
"lazy",
|
|
47
|
+
"unmountOnExit",
|
|
22
48
|
"onToggleClick",
|
|
23
49
|
"onChange",
|
|
24
50
|
"ref"
|
|
@@ -31,6 +57,18 @@ function Accordion(props) {
|
|
|
31
57
|
const baseId = createId(local.id);
|
|
32
58
|
const contentId = `${baseId}-content`;
|
|
33
59
|
const headerId = `${baseId}-header`;
|
|
60
|
+
const title = children(() => local.title);
|
|
61
|
+
const subtitle = children(() => local.subtitle);
|
|
62
|
+
const deferred = Boolean(local.lazy || local.unmountOnExit);
|
|
63
|
+
const content = deferred ? void 0 : children(() => local.children);
|
|
64
|
+
const hasContent = () => content ? Boolean(content()) : "children" in local;
|
|
65
|
+
const [present, setPresent] = createSignal(isOpen());
|
|
66
|
+
createComputed(() => {
|
|
67
|
+
if (isOpen()) setPresent(true);
|
|
68
|
+
});
|
|
69
|
+
const onCollapsed = (height) => {
|
|
70
|
+
if (height === 0 && local.unmountOnExit && !isOpen()) setPresent(false);
|
|
71
|
+
};
|
|
34
72
|
const toggle = (event) => {
|
|
35
73
|
if (local.disabled) return;
|
|
36
74
|
setIsOpen(!isOpen());
|
|
@@ -38,7 +76,7 @@ function Accordion(props) {
|
|
|
38
76
|
};
|
|
39
77
|
return <div
|
|
40
78
|
ref={mergeRefs(local.ref)}
|
|
41
|
-
class={cn("smwb-accordion", { "smwb-disabled": local.disabled }, local.class)}
|
|
79
|
+
class={cn("smwb-accordion", `smwb-accordion_${local.variant}`, { "smwb-disabled": local.disabled }, local.class)}
|
|
42
80
|
data-testid="accordion"
|
|
43
81
|
>
|
|
44
82
|
<button
|
|
@@ -48,28 +86,33 @@ function Accordion(props) {
|
|
|
48
86
|
type="button"
|
|
49
87
|
disabled={local.disabled}
|
|
50
88
|
aria-expanded={isOpen()}
|
|
51
|
-
aria-controls={
|
|
89
|
+
aria-controls={hasContent() ? contentId : void 0}
|
|
52
90
|
>
|
|
53
91
|
{local.startAdornment?.(isOpen())}
|
|
54
|
-
<span class="smwb-
|
|
55
|
-
|
|
56
|
-
<Show
|
|
57
|
-
|
|
58
|
-
fallback={<Icon
|
|
59
|
-
class={cn("smwb-accordion__arrow-icon", { "smwb-accordion__arrow-icon_opened": isOpen() })}
|
|
60
|
-
name="expand_more"
|
|
61
|
-
size={24}
|
|
62
|
-
/>}
|
|
63
|
-
>
|
|
64
|
-
{local.icon}
|
|
92
|
+
<span class="smwb-accordion__heading">
|
|
93
|
+
<span class="smwb-accordion__title">{title()}</span>
|
|
94
|
+
<Show when={subtitle()}>
|
|
95
|
+
<span class="smwb-accordion__subtitle">{subtitle()}</span>
|
|
65
96
|
</Show>
|
|
97
|
+
</span>
|
|
98
|
+
<Show when={local.endAdornment}>
|
|
99
|
+
<span class="smwb-accordion__end">{local.endAdornment?.(isOpen())}</span>
|
|
100
|
+
</Show>
|
|
101
|
+
<Show when={!local.noIcon}>
|
|
102
|
+
<ExpandIcon icon={local.icon} open={isOpen()} />
|
|
66
103
|
</Show>
|
|
67
104
|
</button>
|
|
68
105
|
|
|
69
|
-
<Show when={
|
|
106
|
+
<Show when={hasContent()}>
|
|
70
107
|
<div id={contentId} role="region" aria-labelledby={headerId}>
|
|
71
|
-
<AnimateHeight
|
|
72
|
-
|
|
108
|
+
<AnimateHeight
|
|
109
|
+
height={isOpen() ? "auto" : 0}
|
|
110
|
+
animateOpacity
|
|
111
|
+
duration={300}
|
|
112
|
+
class="smwb-accordion__content"
|
|
113
|
+
onHeightAnimationEnd={onCollapsed}
|
|
114
|
+
>
|
|
115
|
+
{content ? content() : <Show when={present()}>{local.children}</Show>}
|
|
73
116
|
</AnimateHeight>
|
|
74
117
|
</div>
|
|
75
118
|
</Show>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/accordion/accordion.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/accordion/accordion.entry.less\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/accordion/accordion.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/accordion/accordion.entry.less\";\nimport {\n type JSX,\n type ParentProps,\n Show,\n children,\n createComputed,\n createSignal,\n mergeProps,\n splitProps,\n} from \"solid-js\";\nimport cn from \"clsx\";\nimport { AnimateHeight, type Height } from \"../../base/animateHeight/animateHeight\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { createId } from \"../../../primitives/createId\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\n/**\n * `filled` — the header is an app-bar strip on a raised panel (the original look).\n * `outlined` — a bordered card with a flat header: for feeds of records.\n * `plain` — no frame, a divider under each panel: for FAQ-style lists.\n * The flat variants stretch to the container and wrap long titles.\n */\nexport type AccordionVariant = \"filled\" | \"outlined\" | \"plain\";\n\nexport interface AccordionProps {\n class?: string;\n /** Header text or markup (a date, an author, a badge…). */\n title?: JSX.Element;\n /** Secondary line under the title. */\n subtitle?: JSX.Element;\n variant?: AccordionVariant;\n isOpenByDefault?: boolean;\n /** Controlled open state. When set, the component is controlled. */\n open?: boolean;\n /** Disable toggling. */\n disabled?: boolean;\n /** Custom expand icon (replaces the default chevron). */\n icon?: JSX.Element;\n id?: string;\n startAdornment?: (isOpen: boolean) => JSX.Element;\n /** Rendered after the title, before the expand icon. */\n endAdornment?: (isOpen: boolean) => JSX.Element;\n noIcon?: boolean;\n /** Create the content on first open instead of up front. */\n lazy?: boolean;\n /** Remove the content once the panel has collapsed (created again on open). */\n unmountOnExit?: boolean;\n onToggleClick?: (e: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => void;\n /** Fired with the next open state on toggle. */\n onChange?: (open: boolean) => void;\n ref?: Ref<HTMLDivElement>;\n}\n\n/** The custom expand icon, read once where it renders, or the rotating chevron. */\nfunction ExpandIcon(props: { icon: JSX.Element; open: boolean }): JSX.Element {\n const icon = children(() => props.icon);\n return (\n <Show\n when={icon()}\n fallback={\n <Icon\n class={cn(\"smwb-accordion__arrow-icon\", { \"smwb-accordion__arrow-icon_opened\": props.open })}\n name=\"expand_more\"\n size={24}\n />\n }\n >\n {icon()}\n </Show>\n );\n}\n\nexport function Accordion(props: ParentProps<AccordionProps>): JSX.Element {\n const merged = mergeProps({ isOpenByDefault: false, variant: \"filled\" as AccordionVariant }, props);\n const [local] = splitProps(merged, [\n \"class\",\n \"title\",\n \"subtitle\",\n \"variant\",\n \"isOpenByDefault\",\n \"open\",\n \"disabled\",\n \"icon\",\n \"id\",\n \"children\",\n \"startAdornment\",\n \"endAdornment\",\n \"noIcon\",\n \"lazy\",\n \"unmountOnExit\",\n \"onToggleClick\",\n \"onChange\",\n \"ref\",\n ]);\n\n const [isOpen, setIsOpen] = createControllableState<boolean>({\n value: () => local.open,\n defaultValue: local.isOpenByDefault,\n onChange: (next) => local.onChange?.(next),\n });\n\n const baseId = createId(local.id);\n const contentId = `${baseId}-content`;\n const headerId = `${baseId}-header`;\n\n // Read each JSX prop once. A prop written as markup is created anew on every\n // read, and during hydration a copy the server did not render where this one\n // lands (or rendered only to test it, as a <Show> condition does) has no DOM\n // node to adopt: hydrate() throws \"Unable to find DOM nodes for hydration key\".\n // The icon is read by ExpandIcon, which renders only without noIcon.\n const title = children(() => local.title);\n const subtitle = children(() => local.subtitle);\n\n // Deferred content (lazy / unmountOnExit) is created only while it is shown, so\n // it can't be read up front to see whether there is any: the region is kept\n // whenever children are passed. Otherwise the content is resolved right away.\n const deferred = Boolean(local.lazy || local.unmountOnExit);\n const content = deferred ? undefined : children(() => local.children);\n const hasContent = (): boolean => (content ? Boolean(content()) : \"children\" in local);\n\n const [present, setPresent] = createSignal(isOpen());\n // Mount deferred content in the same update that opens the panel, so the\n // height animation measures it.\n createComputed(() => {\n if (isOpen()) setPresent(true);\n });\n const onCollapsed = (height: Height): void => {\n if (height === 0 && local.unmountOnExit && !isOpen()) setPresent(false);\n };\n\n const toggle: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (event) => {\n if (local.disabled) return;\n setIsOpen(!isOpen());\n local.onToggleClick?.(event);\n };\n\n return (\n <div\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-accordion\", `smwb-accordion_${local.variant}`, { \"smwb-disabled\": local.disabled }, local.class)}\n data-testid=\"accordion\"\n >\n <button\n id={headerId}\n class=\"smwb-accordion__header\"\n onClick={toggle}\n type=\"button\"\n disabled={local.disabled}\n aria-expanded={isOpen()}\n aria-controls={hasContent() ? contentId : undefined}\n >\n {local.startAdornment?.(isOpen())}\n <span class=\"smwb-accordion__heading\">\n <span class=\"smwb-accordion__title\">{title()}</span>\n <Show when={subtitle()}>\n <span class=\"smwb-accordion__subtitle\">{subtitle()}</span>\n </Show>\n </span>\n <Show when={local.endAdornment}>\n <span class=\"smwb-accordion__end\">{local.endAdornment?.(isOpen())}</span>\n </Show>\n <Show when={!local.noIcon}>\n <ExpandIcon icon={local.icon} open={isOpen()} />\n </Show>\n </button>\n\n <Show when={hasContent()}>\n <div id={contentId} role=\"region\" aria-labelledby={headerId}>\n <AnimateHeight\n height={isOpen() ? \"auto\" : 0}\n animateOpacity\n duration={300}\n class=\"smwb-accordion__content\"\n onHeightAnimationEnd={onCollapsed}\n >\n {content ? content() : <Show when={present()}>{local.children}</Show>}\n </AnimateHeight>\n </div>\n </Show>\n </div>\n );\n}\n\nexport default Accordion;\n"],"mappings":"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","names":[],"file":"accordion.jsx"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/assetGrid/assetGrid.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/assetGrid/assetGrid.entry.less\";\nimport { type JSX, For, Show, createMemo, createSignal, mergeProps, onCleanup, onMount, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { createVirtualList } from \"../../../primitives/createVirtualList\";\n\nexport interface AssetGridProps<T> {\n items: T[];\n /** Render one cell. `index` is the absolute index into `items`. */\n renderItem: (item: T, index: number) => JSX.Element;\n /** Minimum column width (px); drives the column count from the measured width. Default 160. */\n minColumn?: number;\n /** Fixed cell height (px). */\n rowHeight: number;\n /** Gap (px) between cells on both axes. Default 8. */\n gap?: number;\n /** Extra rows rendered above/below the viewport. Default 2. */\n overscan?: number;\n loading?: boolean;\n /** Skeleton tile count while loading. Default 12. */\n loadingCount?: number;\n emptyLabel?: JSX.Element;\n class?: string;\n style?: JSX.CSSProperties | string;\n}\n\n/**\n * A virtualized, data-shape-agnostic asset grid: measures its own width to pick a\n * column count, windows rows via `createVirtualList`, and renders only the visible\n * cells through a `renderItem` slot — with loading skeletons + an empty state. The\n * windowing math every catalog app reimplements, upstreamed. SSR-safe: before it\n * can measure (server + first paint) it renders a plain auto-fill grid of all\n * items, then virtualizes after mount.\n */\nexport function AssetGrid<T>(props: AssetGridProps<T>): JSX.Element {\n const merged = mergeProps({ minColumn: 160, gap: 8, overscan: 2, loadingCount: 12 }, props);\n const [local] = splitProps(merged, [\n \"items\",\n \"renderItem\",\n \"minColumn\",\n \"rowHeight\",\n \"gap\",\n \"overscan\",\n \"loading\",\n \"loadingCount\",\n \"emptyLabel\",\n \"class\",\n \"style\",\n ]);\n\n let viewportEl: HTMLDivElement | undefined;\n const [width, setWidth] = createSignal(0);\n const [height, setHeight] = createSignal(0);\n const [ready, setReady] = createSignal(false);\n\n onMount(() => {\n if (!viewportEl || typeof ResizeObserver === \"undefined\") return;\n const ro = new ResizeObserver(() => {\n if (!viewportEl) return;\n setWidth(viewportEl.clientWidth);\n setHeight(viewportEl.clientHeight);\n setReady(true);\n });\n ro.observe(viewportEl);\n onCleanup(() => ro.disconnect());\n });\n\n const cols = createMemo(() => {\n const w = width();\n if (w <= 0) return 1;\n return Math.max(1, Math.floor((w + local.gap) / (local.minColumn + local.gap)));\n });\n const rowCount = createMemo(() => Math.ceil(local.items.length / cols()));\n const rowStride = (): number => local.rowHeight + local.gap;\n\n const vl = createVirtualList({\n itemCount: rowCount,\n itemHeight: rowStride,\n viewportHeight: () => height() || 1,\n overscan: local.overscan,\n });\n\n const visibleRows = createMemo(() => {\n const out: number[] = [];\n for (let row = vl.startIndex(); row < vl.endIndex(); row++) out.push(row);\n return out;\n });\n\n const rowStyle = (): JSX.CSSProperties => ({\n display: \"grid\",\n \"grid-template-columns\": `repeat(${cols()}, minmax(0, 1fr))`,\n gap: `${local.gap}px`,\n height: `${local.rowHeight}px`,\n \"margin-bottom\": `${local.gap}px`,\n });\n\n const plainStyle = (): JSX.CSSProperties => ({\n display: \"grid\",\n \"grid-template-columns\": `repeat(auto-fill, minmax(${local.minColumn}px, 1fr))`,\n gap: `${local.gap}px`,\n \"grid-auto-rows\": `${local.rowHeight}px`,\n });\n\n return (\n <div\n ref={(el) => (viewportEl = el)}\n class={cn(\"smwb-asset-grid\", local.class)}\n style={local.style}\n onScroll={vl.onScroll}\n >\n <Show\n when={!local.loading}\n fallback={\n <div class=\"smwb-asset-grid__plain\" style={plainStyle()}>\n <For each={Array.from({ length: local.loadingCount })}>\n {() => <div class=\"smwb-asset-grid__skeleton\" style={{ height: `${local.rowHeight}px` }} />}\n </For>\n </div>\n }\n >\n <Show\n when={local.items.length > 0}\n fallback={<div class=\"smwb-asset-grid__empty\">{local.emptyLabel}</div>}\n >\n <Show\n when={ready()}\n fallback={\n <div class=\"smwb-asset-grid__plain\" style={plainStyle()}>\n <For each={local.items}>{(item, index) => local.renderItem(item, index())}</For>\n </div>\n }\n >\n <div class=\"smwb-asset-grid__sizer\" style={{ height: `${vl.totalHeight()}px`, position: \"relative\" }}>\n <div\n class=\"smwb-asset-grid__band\"\n style={{ position: \"absolute\", top: \"0\", left: \"0\", right: \"0\", transform: `translateY(${vl.offsetY()}px)` }}\n >\n <For each={visibleRows()}>\n {(row) => (\n <div class=\"smwb-asset-grid__row\" style={rowStyle()}>\n <For each={Array.from({ length: cols() }, (_, c) => row * cols() + c)}>\n {(index) => (\n <Show when={index < local.items.length}>\n {local.renderItem(local.items[index] as T, index)}\n </Show>\n )}\n </For>\n </div>\n )}\n </For>\n </div>\n </div>\n </Show>\n </Show>\n </Show>\n </div>\n );\n}\n\nexport default AssetGrid;\n"],"mappings":"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","names":[],"file":"assetGrid.jsx"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/assetGrid/assetGrid.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/assetGrid/assetGrid.entry.less\";\nimport { type JSX, For, Show, createMemo, createSignal, mergeProps, onCleanup, onMount, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { createVirtualList } from \"../../../primitives/createVirtualList\";\n\nexport interface AssetGridProps<T> {\n items: T[];\n /** Render one cell. `index` is the absolute index into `items`. */\n renderItem: (item: T, index: number) => JSX.Element;\n /** Minimum column width (px); drives the column count from the measured width. Default 160. */\n minColumn?: number;\n /** Fixed cell height (px). */\n rowHeight: number;\n /** Gap (px) between cells on both axes. Default 8. */\n gap?: number;\n /** Extra rows rendered above/below the viewport. Default 2. */\n overscan?: number;\n loading?: boolean;\n /** Skeleton tile count while loading. Default 12. */\n loadingCount?: number;\n emptyLabel?: JSX.Element;\n class?: string;\n style?: JSX.CSSProperties | string;\n}\n\n/**\n * A virtualized, data-shape-agnostic asset grid: measures its own width to pick a\n * column count, windows rows via `createVirtualList`, and renders only the visible\n * cells through a `renderItem` slot — with loading skeletons + an empty state. The\n * windowing math every catalog app reimplements, upstreamed. SSR-safe: before it\n * can measure (server + first paint) it renders a plain auto-fill grid of all\n * items, then virtualizes after mount.\n */\nexport function AssetGrid<T>(props: AssetGridProps<T>): JSX.Element {\n const merged = mergeProps({ minColumn: 160, gap: 8, overscan: 2, loadingCount: 12 }, props);\n const [local] = splitProps(merged, [\n \"items\",\n \"renderItem\",\n \"minColumn\",\n \"rowHeight\",\n \"gap\",\n \"overscan\",\n \"loading\",\n \"loadingCount\",\n \"emptyLabel\",\n \"class\",\n \"style\",\n ]);\n\n let viewportEl: HTMLDivElement | undefined;\n const [width, setWidth] = createSignal(0);\n const [height, setHeight] = createSignal(0);\n const [ready, setReady] = createSignal(false);\n\n onMount(() => {\n if (!viewportEl || typeof ResizeObserver === \"undefined\") return;\n const ro = new ResizeObserver(() => {\n if (!viewportEl) return;\n setWidth(viewportEl.clientWidth);\n setHeight(viewportEl.clientHeight);\n setReady(true);\n });\n ro.observe(viewportEl);\n onCleanup(() => ro.disconnect());\n });\n\n const cols = createMemo(() => {\n const w = width();\n if (w <= 0) return 1;\n return Math.max(1, Math.floor((w + local.gap) / (local.minColumn + local.gap)));\n });\n const rowCount = createMemo(() => Math.ceil(local.items.length / cols()));\n const rowStride = (): number => local.rowHeight + local.gap;\n\n const vl = createVirtualList({\n itemCount: rowCount,\n itemHeight: rowStride,\n viewportHeight: () => height() || 1,\n overscan: local.overscan,\n });\n\n const visibleRows = createMemo(() => {\n const out: number[] = [];\n for (let row = vl.startIndex(); row < vl.endIndex(); row++) out.push(row);\n return out;\n });\n\n const rowStyle = (): JSX.CSSProperties => ({\n display: \"grid\",\n \"grid-template-columns\": `repeat(${cols()}, minmax(0, 1fr))`,\n gap: `${local.gap}px`,\n height: `${local.rowHeight}px`,\n \"margin-bottom\": `${local.gap}px`,\n });\n\n const plainStyle = (): JSX.CSSProperties => ({\n display: \"grid\",\n \"grid-template-columns\": `repeat(auto-fill, minmax(${local.minColumn}px, 1fr))`,\n gap: `${local.gap}px`,\n \"grid-auto-rows\": `${local.rowHeight}px`,\n });\n\n return (\n <div\n ref={(el) => (viewportEl = el)}\n class={cn(\"smwb-asset-grid\", local.class)}\n style={local.style}\n onScroll={vl.onScroll}\n >\n <Show\n when={!local.loading}\n fallback={\n <div class=\"smwb-asset-grid__plain\" style={plainStyle()}>\n <For each={Array.from({ length: local.loadingCount })}>\n {() => <div class=\"smwb-asset-grid__skeleton\" style={{ height: `${local.rowHeight}px` }} />}\n </For>\n </div>\n }\n >\n <Show\n when={local.items.length > 0}\n fallback={<div class=\"smwb-asset-grid__empty\">{local.emptyLabel}</div>}\n >\n <Show\n when={ready()}\n fallback={\n <div class=\"smwb-asset-grid__plain\" style={plainStyle()}>\n <For each={local.items}>{(item, index) => local.renderItem(item, index())}</For>\n </div>\n }\n >\n <div class=\"smwb-asset-grid__sizer\" style={{ height: `${vl.totalHeight()}px`, position: \"relative\" }}>\n <div\n class=\"smwb-asset-grid__band\"\n style={{ position: \"absolute\", top: \"0\", left: \"0\", right: \"0\", transform: `translateY(${vl.offsetY()}px)` }}\n >\n <For each={visibleRows()}>\n {(row) => (\n <div class=\"smwb-asset-grid__row\" style={rowStyle()}>\n <For each={Array.from({ length: cols() }, (_, c) => row * cols() + c)}>\n {(index) => (\n <Show when={index < local.items.length}>\n {local.renderItem(local.items[index] as T, index)}\n </Show>\n )}\n </For>\n </div>\n )}\n </For>\n </div>\n </div>\n </Show>\n </Show>\n </Show>\n </div>\n );\n}\n\nexport default AssetGrid;\n"],"mappings":"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","names":[],"file":"assetGrid.jsx"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import "@smwb/ui-styles/less/tokens.entry.less";
|
|
1
2
|
import "@smwb/ui-styles/less/components/avatar/avatar.entry.less";
|
|
2
3
|
import {
|
|
3
4
|
Show,
|
|
@@ -66,25 +67,50 @@ function Avatar(props) {
|
|
|
66
67
|
</div>;
|
|
67
68
|
}
|
|
68
69
|
function AvatarGroup(props) {
|
|
69
|
-
const merged = mergeProps(
|
|
70
|
-
|
|
70
|
+
const merged = mergeProps(
|
|
71
|
+
{ max: 5, surplusAriaLabel: (count) => `${count} more` },
|
|
72
|
+
props
|
|
73
|
+
);
|
|
74
|
+
const [local, rest] = splitProps(merged, [
|
|
75
|
+
"class",
|
|
76
|
+
"max",
|
|
77
|
+
"total",
|
|
78
|
+
"onSurplusClick",
|
|
79
|
+
"surplusAriaLabel",
|
|
80
|
+
"size",
|
|
81
|
+
"children",
|
|
82
|
+
"ref"
|
|
83
|
+
]);
|
|
71
84
|
const resolved = resolveChildren(() => local.children);
|
|
72
85
|
const items = () => resolved.toArray();
|
|
73
86
|
const totalCount = () => local.total ?? items().length;
|
|
74
87
|
const clampedMax = () => Math.max(local.max, 1);
|
|
75
88
|
const visible = () => items().slice(0, clampedMax());
|
|
89
|
+
const hidden = () => items().slice(clampedMax());
|
|
76
90
|
const surplus = () => totalCount() - visible().length;
|
|
77
91
|
return <div {...rest} ref={mergeRefs(local.ref)} data-testid="avatar-group" class={cn("smwb-avatar-group", local.class)}>
|
|
92
|
+
{visible()}
|
|
78
93
|
<Show when={surplus() > 0}>
|
|
79
94
|
<Avatar
|
|
80
95
|
class="smwb-avatar-group__surplus"
|
|
96
|
+
size={local.size ?? "medium"}
|
|
97
|
+
alt={local.surplusAriaLabel(surplus())}
|
|
81
98
|
onClick={local.onSurplusClick}
|
|
82
99
|
style={local.onSurplusClick ? { cursor: "pointer" } : void 0}
|
|
83
100
|
>
|
|
84
101
|
{`+${surplus()}`}
|
|
85
102
|
</Avatar>
|
|
86
103
|
</Show>
|
|
87
|
-
{
|
|
104
|
+
{
|
|
105
|
+
/* Avatars past max are created with the rest (the children resolve at
|
|
106
|
+
once), so they are rendered, hidden: a server that left them out would
|
|
107
|
+
leave the browser without nodes to hydrate them from. */
|
|
108
|
+
}
|
|
109
|
+
<Show when={hidden().length > 0}>
|
|
110
|
+
<span class="smwb-avatar-group__hidden" hidden>
|
|
111
|
+
{hidden()}
|
|
112
|
+
</span>
|
|
113
|
+
</Show>
|
|
88
114
|
</div>;
|
|
89
115
|
}
|
|
90
116
|
var avatar_default = Avatar;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/avatar/avatar.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/avatar/avatar.entry.less\";\nimport {\n type JSX,\n type ParentProps,\n Show,\n children as resolveChildren,\n createSignal,\n mergeProps,\n splitProps,\n} from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\n\nexport type AvatarSize = \"small\" | \"medium\" | \"large\";\n\nexport interface AvatarProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Image source. Falls back to children (initials / icon) on error or when absent. */\n src?: string | undefined;\n alt?: string | undefined;\n /** Preset size or an explicit pixel value. */\n size?: AvatarSize | number;\n variant?: \"circular\" | \"rounded\" | \"square\";\n /** Background color for the fallback (initials / icon). */\n color?: string;\n /** Extra attributes forwarded to the underlying <img> (srcSet, loading…). */\n imgProps?: JSX.ImgHTMLAttributes<HTMLImageElement>;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst isPresetSize = (size: AvatarSize | number): size is AvatarSize => typeof size === \"string\";\n\nexport function Avatar(props: ParentProps<AvatarProps>): JSX.Element {\n const merged = mergeProps({ size: \"medium\" as AvatarSize | number, variant: \"circular\" as const }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"src\",\n \"alt\",\n \"size\",\n \"variant\",\n \"color\",\n \"style\",\n \"imgProps\",\n \"children\",\n \"ref\",\n ]);\n\n const [imgFailed, setImgFailed] = createSignal(false);\n const showImage = (): boolean => Boolean(local.src) && !imgFailed();\n\n const inlineStyle = (): JSX.CSSProperties => {\n const size = local.size;\n return {\n ...(typeof local.style === \"object\" && local.style ? local.style : {}),\n ...(isPresetSize(size) ? {} : { width: `${size}px`, height: `${size}px`, \"font-size\": `${size / 2.5}px` }),\n ...(local.color && !showImage() ? { \"background-color\": local.color } : {}),\n };\n };\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"avatar\"\n class={cn(\n \"smwb-avatar\",\n `smwb-avatar_${local.variant}`,\n isPresetSize(local.size) ? `smwb-avatar_${local.size}` : undefined,\n local.class\n )}\n style={inlineStyle()}\n >\n <Show\n when={showImage()}\n fallback={\n <span class=\"smwb-avatar__fallback\" role=\"img\" aria-label={local.alt}>\n {local.children}\n </span>\n }\n >\n <img\n {...(local.imgProps ?? {})}\n class={cn(\"smwb-avatar__img\", local.imgProps?.class)}\n src={local.src}\n alt={local.alt}\n onError={(event) => {\n setImgFailed(true);\n callHandler(local.imgProps?.onError, event);\n }}\n />\n </Show>\n </div>\n );\n}\n\nexport interface AvatarGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Maximum avatars to show before collapsing the rest into a \"+N\" surplus. */\n max?: number;\n /** Override the total count used for the surplus label (defaults to children count). */\n total?: number;\n /** Click handler for the \"+N\" surplus chip. */\n onSurplusClick?: () => void;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function AvatarGroup(props: ParentProps<AvatarGroupProps>): JSX.Element {\n const merged = mergeProps({ max: 5 }
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/avatar/avatar.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/avatar/avatar.entry.less\";\nimport {\n type JSX,\n type ParentProps,\n Show,\n children as resolveChildren,\n createSignal,\n mergeProps,\n splitProps,\n} from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\n\nexport type AvatarSize = \"small\" | \"medium\" | \"large\";\n\nexport interface AvatarProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Image source. Falls back to children (initials / icon) on error or when absent. */\n src?: string | undefined;\n alt?: string | undefined;\n /** Preset size or an explicit pixel value. */\n size?: AvatarSize | number;\n variant?: \"circular\" | \"rounded\" | \"square\";\n /** Background color for the fallback (initials / icon). */\n color?: string;\n /** Extra attributes forwarded to the underlying <img> (srcSet, loading…). */\n imgProps?: JSX.ImgHTMLAttributes<HTMLImageElement>;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst isPresetSize = (size: AvatarSize | number): size is AvatarSize => typeof size === \"string\";\n\nexport function Avatar(props: ParentProps<AvatarProps>): JSX.Element {\n const merged = mergeProps({ size: \"medium\" as AvatarSize | number, variant: \"circular\" as const }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"src\",\n \"alt\",\n \"size\",\n \"variant\",\n \"color\",\n \"style\",\n \"imgProps\",\n \"children\",\n \"ref\",\n ]);\n\n const [imgFailed, setImgFailed] = createSignal(false);\n const showImage = (): boolean => Boolean(local.src) && !imgFailed();\n\n const inlineStyle = (): JSX.CSSProperties => {\n const size = local.size;\n return {\n ...(typeof local.style === \"object\" && local.style ? local.style : {}),\n ...(isPresetSize(size) ? {} : { width: `${size}px`, height: `${size}px`, \"font-size\": `${size / 2.5}px` }),\n ...(local.color && !showImage() ? { \"background-color\": local.color } : {}),\n };\n };\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"avatar\"\n class={cn(\n \"smwb-avatar\",\n `smwb-avatar_${local.variant}`,\n isPresetSize(local.size) ? `smwb-avatar_${local.size}` : undefined,\n local.class\n )}\n style={inlineStyle()}\n >\n <Show\n when={showImage()}\n fallback={\n <span class=\"smwb-avatar__fallback\" role=\"img\" aria-label={local.alt}>\n {local.children}\n </span>\n }\n >\n <img\n {...(local.imgProps ?? {})}\n class={cn(\"smwb-avatar__img\", local.imgProps?.class)}\n src={local.src}\n alt={local.alt}\n onError={(event) => {\n setImgFailed(true);\n callHandler(local.imgProps?.onError, event);\n }}\n />\n </Show>\n </div>\n );\n}\n\nexport interface AvatarGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Maximum avatars to show before collapsing the rest into a \"+N\" surplus. */\n max?: number;\n /** Override the total count used for the surplus label (defaults to children count). */\n total?: number;\n /** Click handler for the \"+N\" surplus chip. */\n onSurplusClick?: () => void;\n /** Accessible name of the \"+N\" surplus chip. */\n surplusAriaLabel?: (count: number) => string;\n /** Size of the \"+N\" surplus chip: match the avatars in the group. */\n size?: AvatarSize | number;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function AvatarGroup(props: ParentProps<AvatarGroupProps>): JSX.Element {\n const merged = mergeProps(\n { max: 5, surplusAriaLabel: (count: number) => `${count} more` },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"max\",\n \"total\",\n \"onSurplusClick\",\n \"surplusAriaLabel\",\n \"size\",\n \"children\",\n \"ref\",\n ]);\n\n const resolved = resolveChildren(() => local.children);\n const items = (): unknown[] => resolved.toArray();\n const totalCount = (): number => local.total ?? items().length;\n const clampedMax = (): number => Math.max(local.max, 1);\n const visible = (): unknown[] => items().slice(0, clampedMax());\n const hidden = (): unknown[] => items().slice(clampedMax());\n const surplus = (): number => totalCount() - visible().length;\n\n // In order, the first avatar first; the \"+N\" chip ends the row.\n return (\n <div {...rest} ref={mergeRefs(local.ref)} data-testid=\"avatar-group\" class={cn(\"smwb-avatar-group\", local.class)}>\n {visible() as JSX.Element}\n <Show when={surplus() > 0}>\n <Avatar\n class=\"smwb-avatar-group__surplus\"\n size={local.size ?? \"medium\"}\n alt={local.surplusAriaLabel(surplus())}\n onClick={local.onSurplusClick}\n style={local.onSurplusClick ? { cursor: \"pointer\" } : undefined}\n >\n {`+${surplus()}`}\n </Avatar>\n </Show>\n {/* Avatars past max are created with the rest (the children resolve at\n once), so they are rendered, hidden: a server that left them out would\n leave the browser without nodes to hydrate them from. */}\n <Show when={hidden().length > 0}>\n <span class=\"smwb-avatar-group__hidden\" hidden>\n {hidden() as JSX.Element}\n </span>\n </Show>\n </div>\n );\n}\n\nexport default Avatar;\n"],"mappings":"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","names":[],"file":"avatar.jsx"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import "@smwb/ui-styles/less/tokens.entry.less";
|
|
1
2
|
import "@smwb/ui-styles/less/components/badge/badge.entry.less";
|
|
2
|
-
import { Show, mergeProps, splitProps } from "solid-js";
|
|
3
|
+
import { Show, children, mergeProps, splitProps } from "solid-js";
|
|
3
4
|
import cn from "clsx";
|
|
4
5
|
import { mergeRefs } from "../../../primitives/mergeRefs";
|
|
5
6
|
function Badge(props) {
|
|
@@ -26,9 +27,13 @@ function Badge(props) {
|
|
|
26
27
|
"children",
|
|
27
28
|
"ref"
|
|
28
29
|
]);
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
30
|
+
const content = children(() => local.badgeContent);
|
|
31
|
+
const isZero = () => content() === 0 || content() === "0";
|
|
32
|
+
const hidden = () => content() === void 0 || content() === null || isZero() && !local.showZero;
|
|
33
|
+
const display = () => {
|
|
34
|
+
const value = content();
|
|
35
|
+
return typeof value === "number" && local.max !== void 0 && value > local.max ? `${local.max}+` : value;
|
|
36
|
+
};
|
|
32
37
|
return <span class="smwb-badge__wrapper" data-testid="badge">
|
|
33
38
|
{local.children}
|
|
34
39
|
<span
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/badge/badge.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/badge/badge.entry.less\";\nimport { type JSX, type ParentProps, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface BadgeProps extends JSX.HTMLAttributes<HTMLSpanElement> {\n badgeContent?: JSX.Element | number | string;\n color?: \"primary\" | \"success\" | \"danger\";\n variant?: \"inside\" | \"outside\";\n vertical?: \"top\" | \"bottom\";\n horizontal?: \"right\" | \"left\";\n /** Cap numeric content, rendering `{max}+` when exceeded. */\n max?: number;\n /** Render the badge even when content is 0. */\n showZero?: boolean;\n /** Accessible label for the badge value. */\n badgeAriaLabel?: string;\n ref?: Ref<HTMLSpanElement>;\n}\n\nexport function Badge(props: ParentProps<BadgeProps>): JSX.Element {\n const merged = mergeProps(\n {\n color: \"primary\" as const,\n variant: \"outside\" as const,\n vertical: \"top\" as const,\n horizontal: \"right\" as const,\n showZero: false,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"color\",\n \"badgeContent\",\n \"variant\",\n \"vertical\",\n \"horizontal\",\n \"max\",\n \"showZero\",\n \"badgeAriaLabel\",\n \"children\",\n \"ref\",\n ]);\n\n const isZero = (): boolean =>
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/badge/badge.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/badge/badge.entry.less\";\nimport { type JSX, type ParentProps, Show, children, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface BadgeProps extends JSX.HTMLAttributes<HTMLSpanElement> {\n badgeContent?: JSX.Element | number | string;\n color?: \"primary\" | \"success\" | \"danger\";\n variant?: \"inside\" | \"outside\";\n vertical?: \"top\" | \"bottom\";\n horizontal?: \"right\" | \"left\";\n /** Cap numeric content, rendering `{max}+` when exceeded. */\n max?: number;\n /** Render the badge even when content is 0. */\n showZero?: boolean;\n /** Accessible label for the badge value. */\n badgeAriaLabel?: string;\n ref?: Ref<HTMLSpanElement>;\n}\n\nexport function Badge(props: ParentProps<BadgeProps>): JSX.Element {\n const merged = mergeProps(\n {\n color: \"primary\" as const,\n variant: \"outside\" as const,\n vertical: \"top\" as const,\n horizontal: \"right\" as const,\n showZero: false,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"color\",\n \"badgeContent\",\n \"variant\",\n \"vertical\",\n \"horizontal\",\n \"max\",\n \"showZero\",\n \"badgeAriaLabel\",\n \"children\",\n \"ref\",\n ]);\n\n // Read the content once: markup passed as a prop is created anew on every\n // read, and during hydration a copy the server never rendered has no DOM node.\n const content = children(() => local.badgeContent);\n const isZero = (): boolean => content() === 0 || content() === \"0\";\n const hidden = (): boolean => content() === undefined || content() === null || (isZero() && !local.showZero);\n\n const display = (): JSX.Element => {\n const value = content();\n return typeof value === \"number\" && local.max !== undefined && value > local.max ? `${local.max}+` : value;\n };\n\n return (\n <span class=\"smwb-badge__wrapper\" data-testid=\"badge\">\n {local.children}\n <span\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\n \"smwb-badge\",\n `smwb-badge_${local.color}`,\n `smwb-badge_${local.variant}`,\n `smwb-badge_${local.variant}_${local.vertical}`,\n `smwb-badge_${local.variant}_${local.vertical}_${local.horizontal}`,\n local.class,\n { \"smwb-badge_no-content\": hidden() }\n )}\n aria-label={local.badgeAriaLabel}\n >\n <Show when={!hidden()}>{display()}</Show>\n </span>\n </span>\n );\n}\n\nexport default Badge;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAqC,MAAM,UAAU,YAAY,kBAAkB;AACnF,OAAO,QAAQ;AACf,SAAS,iBAA2B;AAiB7B,SAAS,MAAM,OAA6C;AACjE,QAAM,SAAS;AAAA,IACb;AAAA,MACE,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,UAAU;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AACA,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;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,YAAY;AACjD,QAAM,SAAS,MAAe,QAAQ,MAAM,KAAK,QAAQ,MAAM;AAC/D,QAAM,SAAS,MAAe,QAAQ,MAAM,UAAa,QAAQ,MAAM,QAAS,OAAO,KAAK,CAAC,MAAM;AAEnG,QAAM,UAAU,MAAmB;AACjC,UAAM,QAAQ,QAAQ;AACtB,WAAO,OAAO,UAAU,YAAY,MAAM,QAAQ,UAAa,QAAQ,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM;AAAA,EACvG;AAEA,SACE,CAAC,KAAK,MAAM,sBAAsB,YAAY,QAAQ;AAAA,OACnD,MAAM,SAAS;AAAA,MAChB,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO;AAAA,MACL;AAAA,MACA,cAAc,MAAM,KAAK;AAAA,MACzB,cAAc,MAAM,OAAO;AAAA,MAC3B,cAAc,MAAM,OAAO,IAAI,MAAM,QAAQ;AAAA,MAC7C,cAAc,MAAM,OAAO,IAAI,MAAM,QAAQ,IAAI,MAAM,UAAU;AAAA,MACjE,MAAM;AAAA,MACN,EAAE,yBAAyB,OAAO,EAAE;AAAA,IACtC;AAAA,IACA,YAAY,MAAM;AAAA,GACnB;AAAA,QACC,CAAC,KAAK,MAAM,CAAC,OAAO,IAAI,QAAQ,EAAE,EAAjC,KAAwC;AAAA,MAC3C,EAfC,KAeM;AAAA,IACT,EAlBC;AAoBL;AAEA,IAAO,gBAAQ;","names":[],"file":"badge.jsx"}
|