@smwb/ui-solid 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/styles/less/components/appBar/appBar.entry.css +1 -1
- package/dist/assets/styles/less/components/assetGrid/assetGrid.entry.css +1 -0
- package/dist/assets/styles/less/components/chipGroup/chipGroup.entry.css +1 -0
- package/dist/assets/styles/less/components/lazyImage/lazyImage.entry.css +1 -0
- package/dist/assets/styles/less/components/overflowMenu/overflowMenu.entry.css +1 -0
- package/dist/assets/styles/less/components/saveAssetDialog/saveAssetDialog.entry.css +1 -0
- package/dist/assets/styles/less/components/sheet/sheet.entry.css +1 -1
- package/dist/assets/styles/less/components/thumbCard/thumbCard.entry.css +1 -0
- package/dist/assets/styles/less/components/valueSlider/valueSlider.entry.css +1 -0
- package/dist/components/dataDisplay/assetGrid/assetGrid.d.ts +30 -0
- package/dist/components/dataDisplay/assetGrid/assetGrid.js +144 -0
- package/dist/components/dataDisplay/assetGrid/assetGrid.js.map +1 -0
- package/dist/components/dataDisplay/assetGrid/index.d.ts +2 -0
- package/dist/components/dataDisplay/chipGroup/chipGroup.d.ts +27 -0
- package/dist/components/dataDisplay/chipGroup/chipGroup.js +58 -0
- package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -0
- package/dist/components/dataDisplay/chipGroup/index.d.ts +2 -0
- package/dist/components/dataDisplay/lazyImage/index.d.ts +2 -0
- package/dist/components/dataDisplay/lazyImage/lazyImage.d.ts +24 -0
- package/dist/components/dataDisplay/lazyImage/lazyImage.js +73 -0
- package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -0
- package/dist/components/dataDisplay/thumbCard/index.d.ts +2 -0
- package/dist/components/dataDisplay/thumbCard/thumbCard.d.ts +31 -0
- package/dist/components/dataDisplay/thumbCard/thumbCard.js +114 -0
- package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -0
- package/dist/components/feedBack/saveAssetDialog/index.d.ts +2 -0
- package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.d.ts +30 -0
- package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js +101 -0
- package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -0
- package/dist/components/inputs/valueSlider/index.d.ts +2 -0
- package/dist/components/inputs/valueSlider/valueSlider.d.ts +23 -0
- package/dist/components/inputs/valueSlider/valueSlider.js +57 -0
- package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -0
- package/dist/components/layout/appLayout/appLayout.js +43 -43
- package/dist/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/components/navigation/bottomBar/bottomBar.js +31 -30
- package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/components/navigation/overflowMenu/index.d.ts +2 -0
- package/dist/components/navigation/overflowMenu/overflowMenu.d.ts +27 -0
- package/dist/components/navigation/overflowMenu/overflowMenu.js +88 -0
- package/dist/components/navigation/overflowMenu/overflowMenu.js.map +1 -0
- package/dist/components/navigation/sidebar/sidebar.js +48 -47
- package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/headless/components/dataDisplay/assetGrid/assetGrid.js +143 -0
- package/dist/headless/components/dataDisplay/assetGrid/assetGrid.js.map +1 -0
- package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +57 -0
- package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -0
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +72 -0
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -0
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +113 -0
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -0
- package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js +100 -0
- package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -0
- package/dist/headless/components/inputs/valueSlider/valueSlider.js +56 -0
- package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -0
- package/dist/headless/components/layout/appLayout/appLayout.js +43 -43
- package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/headless/components/navigation/bottomBar/bottomBar.js +31 -30
- package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/headless/components/navigation/overflowMenu/overflowMenu.js +87 -0
- package/dist/headless/components/navigation/overflowMenu/overflowMenu.js.map +1 -0
- package/dist/headless/components/navigation/sidebar/sidebar.js +48 -47
- package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/headless/index.js +278 -264
- package/dist/headless/index.js.map +1 -1
- package/dist/headless/source/components/base/animateHeight/animateHeight.jsx +1 -1
- package/dist/headless/source/components/base/icon/icon.jsx +1 -1
- package/dist/headless/source/components/base/ripple/ripple.jsx +1 -1
- package/dist/headless/source/components/clickAwayListener/clickAwayListener.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/accordion/accordion.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/assetGrid/assetGrid.jsx +115 -0
- package/dist/headless/source/components/dataDisplay/assetGrid/assetGrid.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/assetGrid/index.js +5 -0
- package/dist/headless/source/components/dataDisplay/assetGrid/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/badge/badge.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/card/card.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/carousel/carousel.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chat.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatAttachmentImage.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatAttachments.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatComposer.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatHeader.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatIconButton.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatLayout.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatMessageAvatar.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatMessageBubble.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatMessageIncoming.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatMessageItem.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatMessageOutgoing.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatMessageSkeleton.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatMessageStatus.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatMessageSystem.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatMessages.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatOverlayLayout.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatShell.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chip/chip.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/chipGroup/chipGroup.jsx +50 -0
- package/dist/headless/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/chipGroup/index.js +5 -0
- package/dist/headless/source/components/dataDisplay/chipGroup/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/imagesList/imagesList.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/lazyImage/index.js +5 -0
- package/dist/headless/source/components/dataDisplay/lazyImage/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx +64 -0
- package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/list/list.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/list/listItem.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/table/table.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableBody.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableCell.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableHead.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/table/tablePagination/tablePagination.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableRow.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/thumbCard/index.js +5 -0
- package/dist/headless/source/components/dataDisplay/thumbCard/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx +93 -0
- package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/typography/typography.jsx +1 -1
- package/dist/headless/source/components/feedBack/message/message.jsx +1 -1
- package/dist/headless/source/components/feedBack/modal/modal.jsx +1 -1
- package/dist/headless/source/components/feedBack/progressIndicator/progressIndicator.jsx +1 -1
- package/dist/headless/source/components/feedBack/saveAssetDialog/index.js +5 -0
- package/dist/headless/source/components/feedBack/saveAssetDialog/index.js.map +7 -0
- package/dist/headless/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx +65 -0
- package/dist/headless/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx.map +1 -0
- package/dist/headless/source/components/feedBack/skeleton/skeleton.jsx +1 -1
- package/dist/headless/source/components/feedBack/snackbar/snackbar.jsx +1 -1
- package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx +1 -1
- package/dist/headless/source/components/inputs/button/button.jsx +1 -1
- package/dist/headless/source/components/inputs/buttonGroups/buttonGroup.jsx +1 -1
- package/dist/headless/source/components/inputs/checkbox/checkbox.jsx +1 -1
- package/dist/headless/source/components/inputs/datePicker/dataPickerDays.jsx +1 -1
- package/dist/headless/source/components/inputs/datePicker/dataPickerHeader.jsx +1 -1
- package/dist/headless/source/components/inputs/datePicker/dataPickerInput.jsx +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePicker.jsx +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerActionLabel.jsx +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerDay.jsx +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerIconButton.jsx +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerList.jsx +1 -1
- package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx +1 -1
- package/dist/headless/source/components/inputs/dateTimePicker/dateTimePickerInput.jsx +1 -1
- package/dist/headless/source/components/inputs/fileDrop/countPreview.jsx +1 -1
- package/dist/headless/source/components/inputs/fileDrop/fileDrop.jsx +1 -1
- package/dist/headless/source/components/inputs/fileDrop/preview.jsx +1 -1
- package/dist/headless/source/components/inputs/fileDrop/previewWrapper.jsx +1 -1
- package/dist/headless/source/components/inputs/fileInput/fileInput.jsx +1 -1
- package/dist/headless/source/components/inputs/floatingButton/floatingButton.jsx +1 -1
- package/dist/headless/source/components/inputs/radioButton/radioButton.jsx +1 -1
- package/dist/headless/source/components/inputs/rating/rating.jsx +1 -1
- package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx +1 -1
- package/dist/headless/source/components/inputs/selectField/selectField.jsx +1 -1
- package/dist/headless/source/components/inputs/slider/slider.jsx +1 -1
- package/dist/headless/source/components/inputs/textField/textField.jsx +1 -1
- package/dist/headless/source/components/inputs/textField/textFieldAdornment.jsx +1 -1
- package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx +1 -1
- package/dist/headless/source/components/inputs/timePicker/timePicker.jsx +1 -1
- package/dist/headless/source/components/inputs/timePicker/timePickerColumns.jsx +1 -1
- package/dist/headless/source/components/inputs/timePicker/timePickerInput.jsx +1 -1
- package/dist/headless/source/components/inputs/timePicker/timePickerList.jsx +1 -1
- package/dist/headless/source/components/inputs/toggle/toggle.jsx +1 -1
- package/dist/headless/source/components/inputs/valueSlider/index.js +5 -0
- package/dist/headless/source/components/inputs/valueSlider/index.js.map +7 -0
- package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx +54 -0
- package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -0
- package/dist/headless/source/components/layout/appLayout/appLayout.jsx +11 -8
- package/dist/headless/source/components/layout/appLayout/appLayout.jsx.map +1 -1
- package/dist/headless/source/components/layout/divider/divider.jsx +1 -1
- package/dist/headless/source/components/layout/grid/grid.jsx +1 -1
- package/dist/headless/source/components/layout/page/page.jsx +1 -1
- package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx +1 -1
- package/dist/headless/source/components/layout/screenDivider/screenDivider.jsx +1 -1
- package/dist/headless/source/components/layout/sheet/sheet.jsx +1 -1
- package/dist/headless/source/components/layout/stack/stack.jsx +1 -1
- package/dist/headless/source/components/navigation/appBar/appBar.jsx +1 -1
- package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx +5 -4
- package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx +1 -1
- package/dist/headless/source/components/navigation/menu/menu.jsx +1 -1
- package/dist/headless/source/components/navigation/menu/menuComponent.jsx +1 -1
- package/dist/headless/source/components/navigation/menu/menuDivider.jsx +1 -1
- package/dist/headless/source/components/navigation/menu/menuFloating.jsx +1 -1
- package/dist/headless/source/components/navigation/menu/menuItem.jsx +1 -1
- package/dist/headless/source/components/navigation/menu/menuItemIcon.jsx +1 -1
- package/dist/headless/source/components/navigation/menu/menuItemText.jsx +1 -1
- package/dist/headless/source/components/navigation/menu/menuList.jsx +1 -1
- package/dist/headless/source/components/navigation/menu/menuSubmenu.jsx +1 -1
- package/dist/headless/source/components/navigation/overflowMenu/index.js +5 -0
- package/dist/headless/source/components/navigation/overflowMenu/index.js.map +7 -0
- package/dist/headless/source/components/navigation/overflowMenu/overflowMenu.jsx +60 -0
- package/dist/headless/source/components/navigation/overflowMenu/overflowMenu.jsx.map +1 -0
- package/dist/headless/source/components/navigation/pagination/pagination.jsx +1 -1
- package/dist/headless/source/components/navigation/sidebar/sidebar.jsx +5 -4
- package/dist/headless/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/stepper/stepper.jsx +1 -1
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +1 -1
- package/dist/headless/source/components/navigation/tabs/tabs.jsx +1 -1
- package/dist/headless/source/index.js +14 -0
- package/dist/headless/source/index.js.map +2 -2
- package/dist/index.d.ts +14 -0
- package/dist/index.js +278 -264
- package/dist/index.js.map +1 -1
- package/dist/source/components/base/animateHeight/animateHeight.jsx +1 -1
- package/dist/source/components/base/icon/icon.jsx +2 -2
- package/dist/source/components/base/icon/icon.jsx.map +1 -1
- package/dist/source/components/base/ripple/ripple.jsx +2 -2
- package/dist/source/components/base/ripple/ripple.jsx.map +1 -1
- package/dist/source/components/clickAwayListener/clickAwayListener.jsx +1 -1
- package/dist/source/components/dataDisplay/accordion/accordion.jsx +2 -2
- package/dist/source/components/dataDisplay/accordion/accordion.jsx.map +1 -1
- package/dist/source/components/dataDisplay/assetGrid/assetGrid.jsx +116 -0
- package/dist/source/components/dataDisplay/assetGrid/assetGrid.jsx.map +1 -0
- package/dist/source/components/dataDisplay/assetGrid/index.js +5 -0
- package/dist/source/components/dataDisplay/assetGrid/index.js.map +7 -0
- package/dist/source/components/dataDisplay/avatar/avatar.jsx +2 -2
- package/dist/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
- package/dist/source/components/dataDisplay/badge/badge.jsx +2 -2
- package/dist/source/components/dataDisplay/badge/badge.jsx.map +1 -1
- package/dist/source/components/dataDisplay/card/card.jsx +2 -2
- package/dist/source/components/dataDisplay/card/card.jsx.map +1 -1
- package/dist/source/components/dataDisplay/carousel/carousel.jsx +2 -2
- package/dist/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chat.jsx +2 -2
- package/dist/source/components/dataDisplay/chat/chat.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatAttachmentImage.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatAttachments.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatComposer.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatHeader.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatIconButton.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatLayout.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatMessageAvatar.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatMessageBubble.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatMessageIncoming.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatMessageItem.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatMessageOutgoing.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatMessageSkeleton.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatMessageStatus.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatMessageSystem.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatMessages.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatOverlayLayout.jsx +1 -1
- package/dist/source/components/dataDisplay/chat/chatShell.jsx +1 -1
- package/dist/source/components/dataDisplay/chip/chip.jsx +2 -2
- package/dist/source/components/dataDisplay/chip/chip.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx +51 -0
- package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -0
- package/dist/source/components/dataDisplay/chipGroup/index.js +5 -0
- package/dist/source/components/dataDisplay/chipGroup/index.js.map +7 -0
- package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +2 -2
- package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
- package/dist/source/components/dataDisplay/imagesList/imagesList.jsx +2 -2
- package/dist/source/components/dataDisplay/imagesList/imagesList.jsx.map +1 -1
- package/dist/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx +2 -2
- package/dist/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx.map +1 -1
- package/dist/source/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.jsx +1 -1
- package/dist/source/components/dataDisplay/lazyImage/index.js +5 -0
- package/dist/source/components/dataDisplay/lazyImage/index.js.map +7 -0
- package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx +65 -0
- package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -0
- package/dist/source/components/dataDisplay/list/list.jsx +2 -2
- package/dist/source/components/dataDisplay/list/list.jsx.map +1 -1
- package/dist/source/components/dataDisplay/list/listItem.jsx +1 -1
- package/dist/source/components/dataDisplay/table/table.jsx +2 -2
- package/dist/source/components/dataDisplay/table/table.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableBody.jsx +1 -1
- package/dist/source/components/dataDisplay/table/tableCell.jsx +1 -1
- package/dist/source/components/dataDisplay/table/tableHead.jsx +1 -1
- package/dist/source/components/dataDisplay/table/tableHeadCell.jsx +1 -1
- package/dist/source/components/dataDisplay/table/tablePagination/tablePagination.jsx +2 -2
- package/dist/source/components/dataDisplay/table/tablePagination/tablePagination.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableRow.jsx +1 -1
- package/dist/source/components/dataDisplay/thumbCard/index.js +5 -0
- package/dist/source/components/dataDisplay/thumbCard/index.js.map +7 -0
- package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx +94 -0
- package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -0
- package/dist/source/components/dataDisplay/treeView/treeView.jsx +2 -2
- package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
- package/dist/source/components/dataDisplay/typography/typography.jsx +2 -2
- package/dist/source/components/dataDisplay/typography/typography.jsx.map +1 -1
- package/dist/source/components/feedBack/message/message.jsx +2 -2
- package/dist/source/components/feedBack/message/message.jsx.map +1 -1
- package/dist/source/components/feedBack/modal/modal.jsx +2 -2
- package/dist/source/components/feedBack/modal/modal.jsx.map +1 -1
- package/dist/source/components/feedBack/progressIndicator/progressIndicator.jsx +2 -2
- package/dist/source/components/feedBack/progressIndicator/progressIndicator.jsx.map +1 -1
- package/dist/source/components/feedBack/saveAssetDialog/index.js +5 -0
- package/dist/source/components/feedBack/saveAssetDialog/index.js.map +7 -0
- package/dist/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx +66 -0
- package/dist/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx.map +1 -0
- package/dist/source/components/feedBack/skeleton/skeleton.jsx +2 -2
- package/dist/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
- package/dist/source/components/feedBack/snackbar/snackbar.jsx +2 -2
- package/dist/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
- package/dist/source/components/feedBack/tooltip/tooltip.jsx +2 -2
- package/dist/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
- package/dist/source/components/inputs/button/button.jsx +2 -2
- package/dist/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx +2 -2
- package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
- package/dist/source/components/inputs/checkbox/checkbox.jsx +2 -2
- package/dist/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/dataPickerDays.jsx +1 -1
- package/dist/source/components/inputs/datePicker/dataPickerHeader.jsx +1 -1
- package/dist/source/components/inputs/datePicker/dataPickerInput.jsx +1 -1
- package/dist/source/components/inputs/datePicker/datePicker.jsx +2 -2
- package/dist/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/datePickerActionLabel.jsx +1 -1
- package/dist/source/components/inputs/datePicker/datePickerDay.jsx +1 -1
- package/dist/source/components/inputs/datePicker/datePickerIconButton.jsx +1 -1
- package/dist/source/components/inputs/datePicker/datePickerList.jsx +1 -1
- package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx +1 -1
- package/dist/source/components/inputs/dateTimePicker/dateTimePickerInput.jsx +1 -1
- package/dist/source/components/inputs/fileDrop/countPreview.jsx +1 -1
- package/dist/source/components/inputs/fileDrop/fileDrop.jsx +2 -2
- package/dist/source/components/inputs/fileDrop/fileDrop.jsx.map +1 -1
- package/dist/source/components/inputs/fileDrop/preview.jsx +1 -1
- package/dist/source/components/inputs/fileDrop/previewWrapper.jsx +1 -1
- package/dist/source/components/inputs/fileInput/fileInput.jsx +2 -2
- package/dist/source/components/inputs/fileInput/fileInput.jsx.map +1 -1
- package/dist/source/components/inputs/floatingButton/floatingButton.jsx +2 -2
- package/dist/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
- package/dist/source/components/inputs/radioButton/radioButton.jsx +2 -2
- package/dist/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
- package/dist/source/components/inputs/rating/rating.jsx +2 -2
- package/dist/source/components/inputs/rating/rating.jsx.map +1 -1
- package/dist/source/components/inputs/selectField/dropdownMenu.jsx +1 -1
- package/dist/source/components/inputs/selectField/selectField.jsx +2 -2
- package/dist/source/components/inputs/selectField/selectField.jsx.map +1 -1
- package/dist/source/components/inputs/slider/slider.jsx +2 -2
- package/dist/source/components/inputs/slider/slider.jsx.map +1 -1
- package/dist/source/components/inputs/textField/textField.jsx +2 -2
- package/dist/source/components/inputs/textField/textField.jsx.map +1 -1
- package/dist/source/components/inputs/textField/textFieldAdornment.jsx +1 -1
- package/dist/source/components/inputs/textField/textFieldWrapper.jsx +1 -1
- package/dist/source/components/inputs/timePicker/timePicker.jsx +2 -2
- package/dist/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
- package/dist/source/components/inputs/timePicker/timePickerColumns.jsx +1 -1
- package/dist/source/components/inputs/timePicker/timePickerInput.jsx +1 -1
- package/dist/source/components/inputs/timePicker/timePickerList.jsx +1 -1
- package/dist/source/components/inputs/toggle/toggle.jsx +2 -2
- package/dist/source/components/inputs/toggle/toggle.jsx.map +1 -1
- package/dist/source/components/inputs/valueSlider/index.js +5 -0
- package/dist/source/components/inputs/valueSlider/index.js.map +7 -0
- package/dist/source/components/inputs/valueSlider/valueSlider.jsx +55 -0
- package/dist/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -0
- package/dist/source/components/layout/appLayout/appLayout.jsx +12 -9
- package/dist/source/components/layout/appLayout/appLayout.jsx.map +1 -1
- package/dist/source/components/layout/divider/divider.jsx +2 -2
- package/dist/source/components/layout/divider/divider.jsx.map +1 -1
- package/dist/source/components/layout/grid/grid.jsx +2 -2
- package/dist/source/components/layout/grid/grid.jsx.map +1 -1
- package/dist/source/components/layout/page/page.jsx +2 -2
- package/dist/source/components/layout/page/page.jsx.map +1 -1
- package/dist/source/components/layout/pageHeader/pageHeader.jsx +2 -2
- package/dist/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
- package/dist/source/components/layout/screenDivider/screenDivider.jsx +2 -2
- package/dist/source/components/layout/screenDivider/screenDivider.jsx.map +1 -1
- package/dist/source/components/layout/sheet/sheet.jsx +2 -2
- package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
- package/dist/source/components/layout/stack/stack.jsx +2 -2
- package/dist/source/components/layout/stack/stack.jsx.map +1 -1
- package/dist/source/components/navigation/appBar/appBar.jsx +2 -2
- package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/source/components/navigation/bottomBar/bottomBar.jsx +6 -5
- package/dist/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
- package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx +2 -2
- package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menu.jsx +2 -2
- package/dist/source/components/navigation/menu/menu.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuComponent.jsx +1 -1
- package/dist/source/components/navigation/menu/menuDivider.jsx +1 -1
- package/dist/source/components/navigation/menu/menuFloating.jsx +1 -1
- package/dist/source/components/navigation/menu/menuItem.jsx +1 -1
- package/dist/source/components/navigation/menu/menuItemIcon.jsx +1 -1
- package/dist/source/components/navigation/menu/menuItemText.jsx +1 -1
- package/dist/source/components/navigation/menu/menuList.jsx +1 -1
- package/dist/source/components/navigation/menu/menuSubmenu.jsx +1 -1
- package/dist/source/components/navigation/overflowMenu/index.js +5 -0
- package/dist/source/components/navigation/overflowMenu/index.js.map +7 -0
- package/dist/source/components/navigation/overflowMenu/overflowMenu.jsx +61 -0
- package/dist/source/components/navigation/overflowMenu/overflowMenu.jsx.map +1 -0
- package/dist/source/components/navigation/pagination/pagination.jsx +2 -2
- package/dist/source/components/navigation/pagination/pagination.jsx.map +1 -1
- package/dist/source/components/navigation/sidebar/sidebar.jsx +6 -5
- package/dist/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
- package/dist/source/components/navigation/stepper/stepper.jsx +2 -2
- package/dist/source/components/navigation/stepper/stepper.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tab/tab.jsx +2 -2
- package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabs.jsx +2 -2
- package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/source/index.js +14 -0
- package/dist/source/index.js.map +2 -2
- package/package.json +9 -5
- package/dist/headless/source/ssr-published.ssr-spec.jsx +0 -35
- package/dist/headless/source/ssr-published.ssr-spec.jsx.map +0 -1
- package/dist/headless/source/ssr.ssr-spec.jsx +0 -113
- package/dist/headless/source/ssr.ssr-spec.jsx.map +0 -1
- package/dist/source/ssr-published.ssr-spec.jsx +0 -35
- package/dist/source/ssr-published.ssr-spec.jsx.map +0 -1
- package/dist/source/ssr.ssr-spec.jsx +0 -113
- package/dist/source/ssr.ssr-spec.jsx.map +0 -1
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { addEventListener as P, use as E, insert as g, createComponent as o, effect as m, style as h, setStyleProperty as w, className as O, template as c } from "solid-js/web";
|
|
2
|
+
import { mergeProps as W, splitProps as Y, createSignal as f, onMount as F, createMemo as _, Show as p, For as v, onCleanup as G } from "solid-js";
|
|
3
|
+
import N from "clsx";
|
|
4
|
+
import { createVirtualList as V } from "../../../primitives/createVirtualList.js";
|
|
5
|
+
var j = /* @__PURE__ */ c("<div class=smwb-asset-grid__sizer style=position:relative><div class=smwb-asset-grid__band style=position:absolute;top:0;left:0;right:0>"), q = /* @__PURE__ */ c("<div>"), b = /* @__PURE__ */ c("<div class=smwb-asset-grid__plain>"), B = /* @__PURE__ */ c("<div class=smwb-asset-grid__skeleton>"), D = /* @__PURE__ */ c("<div class=smwb-asset-grid__empty>"), J = /* @__PURE__ */ c("<div class=smwb-asset-grid__row>");
|
|
6
|
+
function Z(y) {
|
|
7
|
+
const x = W({
|
|
8
|
+
minColumn: 160,
|
|
9
|
+
gap: 8,
|
|
10
|
+
overscan: 2,
|
|
11
|
+
loadingCount: 12
|
|
12
|
+
}, y), [t] = Y(x, ["items", "renderItem", "minColumn", "rowHeight", "gap", "overscan", "loading", "loadingCount", "emptyLabel", "class", "style"]);
|
|
13
|
+
let l;
|
|
14
|
+
const [C, H] = f(0), [S, I] = f(0), [M, k] = f(!1);
|
|
15
|
+
F(() => {
|
|
16
|
+
if (!l || typeof ResizeObserver > "u") return;
|
|
17
|
+
const r = new ResizeObserver(() => {
|
|
18
|
+
l && (H(l.clientWidth), I(l.clientHeight), k(!0));
|
|
19
|
+
});
|
|
20
|
+
r.observe(l), G(() => r.disconnect());
|
|
21
|
+
});
|
|
22
|
+
const u = _(() => {
|
|
23
|
+
const r = C();
|
|
24
|
+
return r <= 0 ? 1 : Math.max(1, Math.floor((r + t.gap) / (t.minColumn + t.gap)));
|
|
25
|
+
}), L = _(() => Math.ceil(t.items.length / u())), d = V({
|
|
26
|
+
itemCount: L,
|
|
27
|
+
itemHeight: () => t.rowHeight + t.gap,
|
|
28
|
+
viewportHeight: () => S() || 1,
|
|
29
|
+
overscan: t.overscan
|
|
30
|
+
}), R = _(() => {
|
|
31
|
+
const r = [];
|
|
32
|
+
for (let e = d.startIndex(); e < d.endIndex(); e++) r.push(e);
|
|
33
|
+
return r;
|
|
34
|
+
}), z = () => ({
|
|
35
|
+
display: "grid",
|
|
36
|
+
"grid-template-columns": `repeat(${u()}, minmax(0, 1fr))`,
|
|
37
|
+
gap: `${t.gap}px`,
|
|
38
|
+
height: `${t.rowHeight}px`,
|
|
39
|
+
"margin-bottom": `${t.gap}px`
|
|
40
|
+
}), $ = () => ({
|
|
41
|
+
display: "grid",
|
|
42
|
+
"grid-template-columns": `repeat(auto-fill, minmax(${t.minColumn}px, 1fr))`,
|
|
43
|
+
gap: `${t.gap}px`,
|
|
44
|
+
"grid-auto-rows": `${t.rowHeight}px`
|
|
45
|
+
});
|
|
46
|
+
return (() => {
|
|
47
|
+
var r = q();
|
|
48
|
+
return P(r, "scroll", d.onScroll), E((e) => l = e, r), g(r, o(p, {
|
|
49
|
+
get when() {
|
|
50
|
+
return !t.loading;
|
|
51
|
+
},
|
|
52
|
+
get fallback() {
|
|
53
|
+
return (() => {
|
|
54
|
+
var e = b();
|
|
55
|
+
return g(e, o(v, {
|
|
56
|
+
get each() {
|
|
57
|
+
return Array.from({
|
|
58
|
+
length: t.loadingCount
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
children: () => (() => {
|
|
62
|
+
var n = B();
|
|
63
|
+
return m((s) => w(n, "height", `${t.rowHeight}px`)), n;
|
|
64
|
+
})()
|
|
65
|
+
})), m((n) => h(e, $(), n)), e;
|
|
66
|
+
})();
|
|
67
|
+
},
|
|
68
|
+
get children() {
|
|
69
|
+
return o(p, {
|
|
70
|
+
get when() {
|
|
71
|
+
return t.items.length > 0;
|
|
72
|
+
},
|
|
73
|
+
get fallback() {
|
|
74
|
+
return (() => {
|
|
75
|
+
var e = D();
|
|
76
|
+
return g(e, () => t.emptyLabel), e;
|
|
77
|
+
})();
|
|
78
|
+
},
|
|
79
|
+
get children() {
|
|
80
|
+
return o(p, {
|
|
81
|
+
get when() {
|
|
82
|
+
return M();
|
|
83
|
+
},
|
|
84
|
+
get fallback() {
|
|
85
|
+
return (() => {
|
|
86
|
+
var e = b();
|
|
87
|
+
return g(e, o(v, {
|
|
88
|
+
get each() {
|
|
89
|
+
return t.items;
|
|
90
|
+
},
|
|
91
|
+
children: (n, s) => t.renderItem(n, s())
|
|
92
|
+
})), m((n) => h(e, $(), n)), e;
|
|
93
|
+
})();
|
|
94
|
+
},
|
|
95
|
+
get children() {
|
|
96
|
+
var e = j(), n = e.firstChild;
|
|
97
|
+
return g(n, o(v, {
|
|
98
|
+
get each() {
|
|
99
|
+
return R();
|
|
100
|
+
},
|
|
101
|
+
children: (s) => (() => {
|
|
102
|
+
var a = J();
|
|
103
|
+
return g(a, o(v, {
|
|
104
|
+
get each() {
|
|
105
|
+
return Array.from({
|
|
106
|
+
length: u()
|
|
107
|
+
}, (i, A) => s * u() + A);
|
|
108
|
+
},
|
|
109
|
+
children: (i) => o(p, {
|
|
110
|
+
get when() {
|
|
111
|
+
return i < t.items.length;
|
|
112
|
+
},
|
|
113
|
+
get children() {
|
|
114
|
+
return t.renderItem(t.items[i], i);
|
|
115
|
+
}
|
|
116
|
+
})
|
|
117
|
+
})), m((i) => h(a, z(), i)), a;
|
|
118
|
+
})()
|
|
119
|
+
})), m((s) => {
|
|
120
|
+
var a = `${d.totalHeight()}px`, i = `translateY(${d.offsetY()}px)`;
|
|
121
|
+
return a !== s.e && w(e, "height", s.e = a), i !== s.t && w(n, "transform", s.t = i), s;
|
|
122
|
+
}, {
|
|
123
|
+
e: void 0,
|
|
124
|
+
t: void 0
|
|
125
|
+
}), e;
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
})), m((e) => {
|
|
132
|
+
var n = N("smwb-asset-grid", t.class), s = t.style;
|
|
133
|
+
return n !== e.e && O(r, e.e = n), e.t = h(r, s, e.t), e;
|
|
134
|
+
}, {
|
|
135
|
+
e: void 0,
|
|
136
|
+
t: void 0
|
|
137
|
+
}), r;
|
|
138
|
+
})();
|
|
139
|
+
}
|
|
140
|
+
export {
|
|
141
|
+
Z as AssetGrid
|
|
142
|
+
};
|
|
143
|
+
//# sourceMappingURL=assetGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assetGrid.js","sources":["../../../../../src/components/dataDisplay/assetGrid/assetGrid.tsx"],"sourcesContent":["import { 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"],"names":["AssetGrid","props","merged","mergeProps","minColumn","gap","overscan","loadingCount","local","splitProps","viewportEl","width","setWidth","createSignal","height","setHeight","ready","setReady","onMount","ResizeObserver","ro","clientWidth","clientHeight","observe","onCleanup","disconnect","cols","createMemo","w","Math","max","floor","rowCount","ceil","items","length","vl","createVirtualList","itemCount","itemHeight","rowStride","rowHeight","viewportHeight","visibleRows","out","row","startIndex","endIndex","push","rowStyle","display","plainStyle","_el$","_tmpl$2","_$addEventListener","onScroll","_$use","el","_$insert","_$createComponent","Show","when","loading","fallback","_el$4","_tmpl$3","For","each","Array","from","children","_el$5","_tmpl$4","_$effect","_$p","_$setStyleProperty","_$style","_el$6","_tmpl$5","emptyLabel","_el$7","item","index","renderItem","_el$2","_tmpl$","_el$3","firstChild","_el$8","_tmpl$6","_","c","_p$","_v$","totalHeight","_v$2","offsetY","e","t","undefined","_v$3","cn","class","_v$4","style","_$className"],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { spread as g, mergeProps as n, insert as p, createComponent as o, template as f } from "solid-js/web";
|
|
2
|
+
import { mergeProps as v, splitProps as h, For as b } from "solid-js";
|
|
3
|
+
import C from "clsx";
|
|
4
|
+
import { Chip as z } from "../chip/chip.js";
|
|
5
|
+
var P = /* @__PURE__ */ f("<div>");
|
|
6
|
+
function _(i) {
|
|
7
|
+
const a = v({
|
|
8
|
+
size: "medium",
|
|
9
|
+
color: "primary"
|
|
10
|
+
}, i), [e, c] = h(a, ["options", "value", "multiple", "onChange", "size", "color", "disabled", "class"]), l = () => e.value == null ? [] : Array.isArray(e.value) ? e.value : [e.value], s = (t) => l().includes(t), u = (t) => {
|
|
11
|
+
if (e.multiple) {
|
|
12
|
+
const r = l(), m = r.includes(t) ? r.filter((d) => d !== t) : [...r, t];
|
|
13
|
+
e.onChange?.(m);
|
|
14
|
+
} else
|
|
15
|
+
e.onChange?.(t);
|
|
16
|
+
};
|
|
17
|
+
return (() => {
|
|
18
|
+
var t = P();
|
|
19
|
+
return g(t, n(c, {
|
|
20
|
+
role: "group",
|
|
21
|
+
get class() {
|
|
22
|
+
return C("smwb-chip-group", e.class);
|
|
23
|
+
}
|
|
24
|
+
}), !1, !0), p(t, o(b, {
|
|
25
|
+
get each() {
|
|
26
|
+
return e.options;
|
|
27
|
+
},
|
|
28
|
+
children: (r) => o(z, n({
|
|
29
|
+
get label() {
|
|
30
|
+
return r.label;
|
|
31
|
+
},
|
|
32
|
+
get size() {
|
|
33
|
+
return e.size;
|
|
34
|
+
},
|
|
35
|
+
get color() {
|
|
36
|
+
return e.color;
|
|
37
|
+
},
|
|
38
|
+
get selected() {
|
|
39
|
+
return s(r.value);
|
|
40
|
+
},
|
|
41
|
+
get variant() {
|
|
42
|
+
return s(r.value) ? "filled" : "outlined";
|
|
43
|
+
},
|
|
44
|
+
get disabled() {
|
|
45
|
+
return !!(e.disabled || r.disabled);
|
|
46
|
+
},
|
|
47
|
+
onClick: () => u(r.value)
|
|
48
|
+
}, () => r.icon ? {
|
|
49
|
+
icon: r.icon
|
|
50
|
+
} : {}))
|
|
51
|
+
})), t;
|
|
52
|
+
})();
|
|
53
|
+
}
|
|
54
|
+
export {
|
|
55
|
+
_ as ChipGroup
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=chipGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chipGroup.js","sources":["../../../../../src/components/dataDisplay/chipGroup/chipGroup.tsx"],"sourcesContent":["import { type JSX, For, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Chip, type ChipColor } from \"../chip\";\n\nexport interface ChipGroupOption {\n value: string;\n label: string;\n icon?: JSX.Element;\n disabled?: boolean;\n}\n\nexport interface ChipGroupProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n options: ChipGroupOption[];\n /** Selected value (single) or values (when `multiple`). */\n value?: string | string[];\n /** Allow more than one selected chip (value becomes a string[]). */\n multiple?: boolean;\n onChange?: (value: string | string[]) => void;\n size?: \"small\" | \"medium\";\n color?: ChipColor;\n disabled?: boolean;\n}\n\n/**\n * A multi/single-select toggle group built on `Chip` — the \"chip as a toggle\"\n * loop (selected → filled, else outlined; `role=group`) that apps re-hand-roll\n * for filters / segmented controls. Pass an `options` array and a controlled\n * `value`; `onChange` returns the next value (string, or string[] when multiple).\n */\nexport function ChipGroup(props: ChipGroupProps): JSX.Element {\n const merged = mergeProps({ size: \"medium\" as const, color: \"primary\" as ChipColor }, props);\n const [local, rest] = splitProps(merged, [\n \"options\",\n \"value\",\n \"multiple\",\n \"onChange\",\n \"size\",\n \"color\",\n \"disabled\",\n \"class\",\n ]);\n\n const selectedValues = (): string[] => {\n if (local.value == null) return [];\n return Array.isArray(local.value) ? local.value : [local.value];\n };\n const isSelected = (value: string): boolean => selectedValues().includes(value);\n\n const toggle = (value: string): void => {\n if (local.multiple) {\n const current = selectedValues();\n const next = current.includes(value) ? current.filter((v) => v !== value) : [...current, value];\n local.onChange?.(next);\n } else {\n local.onChange?.(value);\n }\n };\n\n return (\n <div {...rest} role=\"group\" class={cn(\"smwb-chip-group\", local.class)}>\n <For each={local.options}>\n {(option) => (\n <Chip\n label={option.label}\n size={local.size}\n color={local.color}\n selected={isSelected(option.value)}\n variant={isSelected(option.value) ? \"filled\" : \"outlined\"}\n disabled={!!(local.disabled || option.disabled)}\n onClick={() => toggle(option.value)}\n {...(option.icon ? { icon: option.icon } : {})}\n />\n )}\n </For>\n </div>\n );\n}\n\nexport default ChipGroup;\n"],"names":["ChipGroup","props","merged","mergeProps","size","color","local","rest","splitProps","selectedValues","value","Array","isArray","isSelected","includes","toggle","multiple","current","next","filter","v","onChange","_el$","_tmpl$","_$spread","_$mergeProps","cn","class","_$insert","_$createComponent","For","each","options","children","option","Chip","label","selected","variant","disabled","onClick","icon"],"mappings":";;;;;AA6BO,SAASA,EAAUC,GAAoC;AAC5D,QAAMC,IAASC,EAAW;AAAA,IAAEC,MAAM;AAAA,IAAmBC,OAAO;AAAA,EAAA,GAA0BJ,CAAK,GACrF,CAACK,GAAOC,CAAI,IAAIC,EAAWN,GAAQ,CACvC,WACA,SACA,YACA,YACA,QACA,SACA,YACA,OAAO,CACR,GAEKO,IAAiBA,MACjBH,EAAMI,SAAS,OAAa,CAAA,IACzBC,MAAMC,QAAQN,EAAMI,KAAK,IAAIJ,EAAMI,QAAQ,CAACJ,EAAMI,KAAK,GAE1DG,IAAaA,CAACH,MAA2BD,EAAAA,EAAiBK,SAASJ,CAAK,GAExEK,IAASA,CAACL,MAAwB;AACtC,QAAIJ,EAAMU,UAAU;AAClB,YAAMC,IAAUR,EAAAA,GACVS,IAAOD,EAAQH,SAASJ,CAAK,IAAIO,EAAQE,OAAQC,CAAAA,MAAMA,MAAMV,CAAK,IAAI,CAAC,GAAGO,GAASP,CAAK;AAC9FJ,MAAAA,EAAMe,WAAWH,CAAI;AAAA,IACvB;AACEZ,MAAAA,EAAMe,WAAWX,CAAK;AAAA,EAE1B;AAEA,UAAA,MAAA;AAAA,QAAAY,IAAAC,EAAAA;AAAAC,WAAAA,EAAAF,GAAAG,EACWlB,GAAI;AAAA,MAAA,MAAO;AAAA,MAAO,IAAA,QAAA;AAAA,eAAQmB,EAAG,mBAAmBpB,EAAMqB,KAAK;AAAA,MAAC;AAAA,IAAA,CAAA,GAAA,IAAA,EAAA,GAAAC,EAAAN,GAAAO,EAClEC,GAAG;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEzB,EAAM0B;AAAAA,MAAO;AAAA,MAAAC,UACpBC,CAAAA,MAAML,EACLM,GAAIV,EAAA;AAAA,QAAA,IACHW,QAAK;AAAA,iBAAEF,EAAOE;AAAAA,QAAK;AAAA,QAAA,IACnBhC,OAAI;AAAA,iBAAEE,EAAMF;AAAAA,QAAI;AAAA,QAAA,IAChBC,QAAK;AAAA,iBAAEC,EAAMD;AAAAA,QAAK;AAAA,QAAA,IAClBgC,WAAQ;AAAA,iBAAExB,EAAWqB,EAAOxB,KAAK;AAAA,QAAC;AAAA,QAAA,IAClC4B,UAAO;AAAA,iBAAEzB,EAAWqB,EAAOxB,KAAK,IAAI,WAAW;AAAA,QAAU;AAAA,QAAA,IACzD6B,WAAQ;AAAA,iBAAE,CAAC,EAAEjC,EAAMiC,YAAYL,EAAOK;AAAAA,QAAS;AAAA,QAC/CC,SAASA,MAAMzB,EAAOmB,EAAOxB,KAAK;AAAA,MAAA,GAAC,MAC9BwB,EAAOO,OAAO;AAAA,QAAEA,MAAMP,EAAOO;AAAAA,MAAAA,IAAS,EAAE,CAAA;AAAA,IAAA,CAEhD,CAAA,GAAAnB;AAAAA,EAAA,GAAA;AAIT;"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { insert as o, createComponent as u, memo as $, use as h, spread as k, mergeProps as E, effect as I, className as P, style as R, template as i } from "solid-js/web";
|
|
2
|
+
import { mergeProps as S, splitProps as C, createSignal as g, onMount as F, Show as p, onCleanup as O } from "solid-js";
|
|
3
|
+
import x from "clsx";
|
|
4
|
+
import { mergeRefs as L } from "../../../primitives/mergeRefs.js";
|
|
5
|
+
var M = /* @__PURE__ */ i("<span class=smwb-lazy-image__fallback>"), N = /* @__PURE__ */ i("<img>", !0, !1, !1), V = /* @__PURE__ */ i("<span>");
|
|
6
|
+
function D(d) {
|
|
7
|
+
const c = S({
|
|
8
|
+
lazy: !0
|
|
9
|
+
}, d), [r, v] = C(c, ["src", "alt", "fallback", "lazy", "aspectRatio", "class", "onError", "ref"]), [y, b] = g(!1), [m, f] = g(!c.lazy);
|
|
10
|
+
let s;
|
|
11
|
+
F(() => {
|
|
12
|
+
if (!r.lazy || m() || !s) return;
|
|
13
|
+
if (typeof IntersectionObserver > "u") {
|
|
14
|
+
f(!0);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const t = new IntersectionObserver((e) => {
|
|
18
|
+
e.some((a) => a.isIntersecting) && (f(!0), t.disconnect());
|
|
19
|
+
});
|
|
20
|
+
t.observe(s), O(() => t.disconnect());
|
|
21
|
+
});
|
|
22
|
+
const z = (t) => {
|
|
23
|
+
b(!0), r.onError?.(t);
|
|
24
|
+
}, n = () => y() || !r.src, w = () => m() ? r.src : void 0, _ = () => r.aspectRatio != null ? {
|
|
25
|
+
"aspect-ratio": String(r.aspectRatio)
|
|
26
|
+
} : void 0;
|
|
27
|
+
return (() => {
|
|
28
|
+
var t = V();
|
|
29
|
+
return o(t, u(p, {
|
|
30
|
+
get when() {
|
|
31
|
+
return $(() => !!n())() && r.fallback;
|
|
32
|
+
},
|
|
33
|
+
get children() {
|
|
34
|
+
var e = M();
|
|
35
|
+
return o(e, () => r.fallback), e;
|
|
36
|
+
}
|
|
37
|
+
}), null), o(t, u(p, {
|
|
38
|
+
get when() {
|
|
39
|
+
return !n();
|
|
40
|
+
},
|
|
41
|
+
get children() {
|
|
42
|
+
var e = N(), a = L(r.ref, (l) => s = l);
|
|
43
|
+
return typeof a == "function" && h(a, e), k(e, E(v, {
|
|
44
|
+
class: "smwb-lazy-image__img",
|
|
45
|
+
get src() {
|
|
46
|
+
return w();
|
|
47
|
+
},
|
|
48
|
+
get alt() {
|
|
49
|
+
return r.alt ?? "";
|
|
50
|
+
},
|
|
51
|
+
get loading() {
|
|
52
|
+
return r.lazy ? "lazy" : void 0;
|
|
53
|
+
},
|
|
54
|
+
decoding: "async",
|
|
55
|
+
onError: z
|
|
56
|
+
}), !1, !1), e;
|
|
57
|
+
}
|
|
58
|
+
}), null), I((e) => {
|
|
59
|
+
var a = x("smwb-lazy-image", r.class, {
|
|
60
|
+
"smwb-lazy-image--empty": n()
|
|
61
|
+
}), l = _();
|
|
62
|
+
return a !== e.e && P(t, e.e = a), e.t = R(t, l, e.t), e;
|
|
63
|
+
}, {
|
|
64
|
+
e: void 0,
|
|
65
|
+
t: void 0
|
|
66
|
+
}), t;
|
|
67
|
+
})();
|
|
68
|
+
}
|
|
69
|
+
export {
|
|
70
|
+
D as LazyImage
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=lazyImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazyImage.js","sources":["../../../../../src/components/dataDisplay/lazyImage/lazyImage.tsx"],"sourcesContent":["import { type JSX, Show, createSignal, mergeProps, onCleanup, onMount, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface LazyImageProps extends Omit<JSX.ImgHTMLAttributes<HTMLImageElement>, \"onError\"> {\n /** Image URL. When absent (or after a load error) the `fallback` is shown. */\n src?: string | undefined;\n alt?: string | undefined;\n /** Rendered in place of the image when it is missing or fails to load. */\n fallback?: JSX.Element | undefined;\n /** Defer loading until the image scrolls into view (IntersectionObserver). Default true. */\n lazy?: boolean;\n /** CSS `aspect-ratio` for the wrapper (e.g. `1`, `\"4 / 3\"`) to reserve space before load. */\n aspectRatio?: string | number;\n /** Fires on a load error (after the fallback is swapped in). */\n onError?: (event: Event) => void;\n ref?: Ref<HTMLImageElement>;\n}\n\n/**\n * An `<img>` with a built-in `onError` fallback and optional in-viewport lazy\n * loading — the `<img decoding=async onError=…>` + `<Show>` dance hand-rolled in\n * every gallery, in one primitive. SSR-safe: renders the image markup on the\n * server; the IntersectionObserver only runs after mount on the client.\n */\nexport function LazyImage(props: LazyImageProps): JSX.Element {\n const merged = mergeProps({ lazy: true }, props);\n const [local, rest] = splitProps(merged, [\n \"src\",\n \"alt\",\n \"fallback\",\n \"lazy\",\n \"aspectRatio\",\n \"class\",\n \"onError\",\n \"ref\",\n ]);\n\n const [failed, setFailed] = createSignal(false);\n // When lazy, hold the real src back until the element scrolls into view.\n const [visible, setVisible] = createSignal(!merged.lazy);\n let imgEl: HTMLImageElement | undefined;\n\n onMount(() => {\n if (!local.lazy || visible() || !imgEl) return;\n if (typeof IntersectionObserver === \"undefined\") {\n setVisible(true);\n return;\n }\n const io = new IntersectionObserver((entries) => {\n if (entries.some((entry) => entry.isIntersecting)) {\n setVisible(true);\n io.disconnect();\n }\n });\n io.observe(imgEl);\n onCleanup(() => io.disconnect());\n });\n\n const onError = (event: Event): void => {\n setFailed(true);\n local.onError?.(event);\n };\n\n const showFallback = (): boolean => failed() || !local.src;\n const resolvedSrc = (): string | undefined => (visible() ? local.src : undefined);\n const style = (): JSX.CSSProperties | undefined =>\n local.aspectRatio != null ? { \"aspect-ratio\": String(local.aspectRatio) } : undefined;\n\n return (\n <span class={cn(\"smwb-lazy-image\", local.class, { \"smwb-lazy-image--empty\": showFallback() })} style={style()}>\n <Show when={showFallback() && local.fallback}>\n <span class=\"smwb-lazy-image__fallback\">{local.fallback}</span>\n </Show>\n <Show when={!showFallback()}>\n <img\n {...rest}\n ref={mergeRefs(local.ref, (el) => (imgEl = el as HTMLImageElement))}\n class=\"smwb-lazy-image__img\"\n src={resolvedSrc()}\n alt={local.alt ?? \"\"}\n loading={local.lazy ? \"lazy\" : undefined}\n decoding=\"async\"\n onError={onError}\n />\n </Show>\n </span>\n );\n}\n\nexport default LazyImage;\n"],"names":["LazyImage","props","merged","mergeProps","lazy","local","rest","splitProps","failed","setFailed","createSignal","visible","setVisible","imgEl","onMount","IntersectionObserver","io","entries","some","entry","isIntersecting","disconnect","observe","onCleanup","onError","event","showFallback","src","resolvedSrc","undefined","style","aspectRatio","String","_el$","_tmpl$3","_$insert","_$createComponent","Show","when","_$memo","fallback","children","_el$2","_tmpl$","_el$3","_tmpl$2","_ref$","mergeRefs","ref","el","_$use","_$spread","_$mergeProps","alt","loading","_$effect","_p$","_v$","cn","class","_v$2","e","_$className","t","_$style"],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { use as h, spread as D, mergeProps as E, memo as g, insert as l, createComponent as n, Portal as z, effect as f, setAttribute as C, style as T, isServer as L, template as a } from "solid-js/web";
|
|
2
|
+
import { mergeProps as x, splitProps as F, createSignal as K, onCleanup as M, Show as c } from "solid-js";
|
|
3
|
+
import O from "clsx";
|
|
4
|
+
import { createFloating as R } from "../../../primitives/createFloating.js";
|
|
5
|
+
import { mergeRefs as A } from "../../../primitives/mergeRefs.js";
|
|
6
|
+
import { LazyImage as I } from "../lazyImage/lazyImage.js";
|
|
7
|
+
var j = /* @__PURE__ */ a('<div class="smwb-thumb-card__slot smwb-thumb-card__slot--start">'), q = /* @__PURE__ */ a('<div class="smwb-thumb-card__slot smwb-thumb-card__slot--end">'), B = /* @__PURE__ */ a("<div class=smwb-thumb-card__caption>"), G = /* @__PURE__ */ a("<div class=smwb-thumb-card__preview>"), H = /* @__PURE__ */ a("<div><div class=smwb-thumb-card__media>"), J = /* @__PURE__ */ a("<img alt>");
|
|
8
|
+
function Y(_) {
|
|
9
|
+
const w = x({
|
|
10
|
+
lazy: !0,
|
|
11
|
+
hoverDelay: 350
|
|
12
|
+
}, _), [e, y] = F(w, ["src", "caption", "selected", "onSelect", "fallback", "hoverPreview", "topStart", "topEnd", "lazy", "disabled", "hoverDelay", "class", "ref"]), m = R({
|
|
13
|
+
placement: () => "right"
|
|
14
|
+
}), [$, v] = K(!1);
|
|
15
|
+
let i;
|
|
16
|
+
const d = () => {
|
|
17
|
+
i && (clearTimeout(i), i = void 0);
|
|
18
|
+
}, S = () => {
|
|
19
|
+
e.hoverPreview == null || e.disabled || (d(), i = setTimeout(() => v(!0), e.hoverDelay));
|
|
20
|
+
}, P = () => {
|
|
21
|
+
d(), v(!1);
|
|
22
|
+
};
|
|
23
|
+
M(d);
|
|
24
|
+
const o = () => !!e.onSelect && !e.disabled, k = (r) => {
|
|
25
|
+
o() && (r.key === "Enter" || r.key === " ") && (r.preventDefault(), e.onSelect?.());
|
|
26
|
+
};
|
|
27
|
+
return (() => {
|
|
28
|
+
var r = H(), u = r.firstChild, p = A(e.ref, (t) => m.setReference(t));
|
|
29
|
+
return typeof p == "function" && h(p, r), D(r, E(y, {
|
|
30
|
+
get class() {
|
|
31
|
+
return O("smwb-thumb-card", e.class, {
|
|
32
|
+
"smwb-thumb-card--selected": e.selected,
|
|
33
|
+
"smwb-thumb-card--disabled": e.disabled,
|
|
34
|
+
"smwb-thumb-card--interactive": o()
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
get role() {
|
|
38
|
+
return o() ? "button" : void 0;
|
|
39
|
+
},
|
|
40
|
+
get tabindex() {
|
|
41
|
+
return o() ? 0 : void 0;
|
|
42
|
+
},
|
|
43
|
+
get "aria-pressed"() {
|
|
44
|
+
return g(() => !!e.onSelect)() ? e.selected ?? !1 : void 0;
|
|
45
|
+
},
|
|
46
|
+
get "aria-disabled"() {
|
|
47
|
+
return e.disabled || void 0;
|
|
48
|
+
},
|
|
49
|
+
get onClick() {
|
|
50
|
+
return o() ? () => e.onSelect?.() : void 0;
|
|
51
|
+
},
|
|
52
|
+
onKeyDown: k,
|
|
53
|
+
onMouseEnter: S,
|
|
54
|
+
onMouseLeave: P
|
|
55
|
+
}), !1, !0), l(u, n(I, {
|
|
56
|
+
get src() {
|
|
57
|
+
return e.src;
|
|
58
|
+
},
|
|
59
|
+
get lazy() {
|
|
60
|
+
return e.lazy;
|
|
61
|
+
},
|
|
62
|
+
get fallback() {
|
|
63
|
+
return e.fallback;
|
|
64
|
+
}
|
|
65
|
+
}), null), l(u, n(c, {
|
|
66
|
+
get when() {
|
|
67
|
+
return e.topStart;
|
|
68
|
+
},
|
|
69
|
+
get children() {
|
|
70
|
+
var t = j();
|
|
71
|
+
return l(t, () => e.topStart), t;
|
|
72
|
+
}
|
|
73
|
+
}), null), l(u, n(c, {
|
|
74
|
+
get when() {
|
|
75
|
+
return e.topEnd;
|
|
76
|
+
},
|
|
77
|
+
get children() {
|
|
78
|
+
var t = q();
|
|
79
|
+
return l(t, () => e.topEnd), t;
|
|
80
|
+
}
|
|
81
|
+
}), null), l(r, n(c, {
|
|
82
|
+
get when() {
|
|
83
|
+
return e.caption;
|
|
84
|
+
},
|
|
85
|
+
get children() {
|
|
86
|
+
var t = B();
|
|
87
|
+
return l(t, () => e.caption), t;
|
|
88
|
+
}
|
|
89
|
+
}), null), l(r, n(c, {
|
|
90
|
+
get when() {
|
|
91
|
+
return $() && !L;
|
|
92
|
+
},
|
|
93
|
+
get children() {
|
|
94
|
+
return n(z, {
|
|
95
|
+
get children() {
|
|
96
|
+
var t = G();
|
|
97
|
+
return h((s) => m.setFloating(s), t), l(t, (() => {
|
|
98
|
+
var s = g(() => typeof e.hoverPreview == "string");
|
|
99
|
+
return () => s() ? (() => {
|
|
100
|
+
var b = J();
|
|
101
|
+
return f(() => C(b, "src", e.hoverPreview)), b;
|
|
102
|
+
})() : e.hoverPreview;
|
|
103
|
+
})()), f((s) => T(t, m.floatingStyles(), s)), t;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}), null), r;
|
|
108
|
+
})();
|
|
109
|
+
}
|
|
110
|
+
export {
|
|
111
|
+
Y as ThumbCard
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=thumbCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thumbCard.js","sources":["../../../../../src/components/dataDisplay/thumbCard/thumbCard.tsx"],"sourcesContent":["import { type JSX, Show, createSignal, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { createFloating } from \"../../../primitives/createFloating\";\nimport { LazyImage } from \"../lazyImage\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ThumbCardProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n /** Thumbnail URL; falls back to `fallback` when missing / failed. */\n src?: string;\n caption?: JSX.Element;\n selected?: boolean;\n /** Makes the card a selectable button (keyboard + `aria-pressed`). */\n onSelect?: () => void;\n /** Shown in place of the image when `src` is missing / fails. */\n fallback?: JSX.Element;\n /** A larger preview shown in a floating popup after a hover delay. */\n hoverPreview?: JSX.Element | string;\n /** Top-left overlay slot (e.g. a favourite star). */\n topStart?: JSX.Element;\n /** Top-right overlay slot (e.g. a kebab menu). */\n topEnd?: JSX.Element;\n lazy?: boolean;\n disabled?: boolean;\n /** Delay (ms) before the hover preview appears. Default 350. */\n hoverDelay?: number;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * A selectable gallery card: image with an `onError` fallback + optional lazy\n * load, keyboard/`aria-pressed` selection, corner action slots, and a delayed\n * floating hover-preview. The generic gallery-card behaviour every app rebuilds\n * on top of the primitives. SSR-safe — the hover preview is client-only.\n */\nexport function ThumbCard(props: ThumbCardProps): JSX.Element {\n const merged = mergeProps({ lazy: true, hoverDelay: 350 }, props);\n const [local, rest] = splitProps(merged, [\n \"src\",\n \"caption\",\n \"selected\",\n \"onSelect\",\n \"fallback\",\n \"hoverPreview\",\n \"topStart\",\n \"topEnd\",\n \"lazy\",\n \"disabled\",\n \"hoverDelay\",\n \"class\",\n \"ref\",\n ]);\n\n const floating = createFloating({ placement: () => \"right\" });\n const [previewOpen, setPreviewOpen] = createSignal(false);\n let hoverTimer: ReturnType<typeof setTimeout> | undefined;\n\n const clearTimer = (): void => {\n if (hoverTimer) {\n clearTimeout(hoverTimer);\n hoverTimer = undefined;\n }\n };\n const onEnter = (): void => {\n if (local.hoverPreview == null || local.disabled) return;\n clearTimer();\n hoverTimer = setTimeout(() => setPreviewOpen(true), local.hoverDelay);\n };\n const onLeave = (): void => {\n clearTimer();\n setPreviewOpen(false);\n };\n onCleanup(clearTimer);\n\n const interactive = (): boolean => !!local.onSelect && !local.disabled;\n const onKeyDown: JSX.EventHandler<HTMLDivElement, KeyboardEvent> = (event) => {\n if (interactive() && (event.key === \"Enter\" || event.key === \" \")) {\n event.preventDefault();\n local.onSelect?.();\n }\n };\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref, (el) => floating.setReference(el))}\n class={cn(\"smwb-thumb-card\", local.class, {\n \"smwb-thumb-card--selected\": local.selected,\n \"smwb-thumb-card--disabled\": local.disabled,\n \"smwb-thumb-card--interactive\": interactive(),\n })}\n role={interactive() ? \"button\" : undefined}\n tabindex={interactive() ? 0 : undefined}\n aria-pressed={local.onSelect ? (local.selected ?? false) : undefined}\n aria-disabled={local.disabled || undefined}\n onClick={interactive() ? () => local.onSelect?.() : undefined}\n onKeyDown={onKeyDown}\n onMouseEnter={onEnter}\n onMouseLeave={onLeave}\n >\n <div class=\"smwb-thumb-card__media\">\n <LazyImage src={local.src} lazy={local.lazy} fallback={local.fallback} />\n <Show when={local.topStart}>\n <div class=\"smwb-thumb-card__slot smwb-thumb-card__slot--start\">{local.topStart}</div>\n </Show>\n <Show when={local.topEnd}>\n <div class=\"smwb-thumb-card__slot smwb-thumb-card__slot--end\">{local.topEnd}</div>\n </Show>\n </div>\n <Show when={local.caption}>\n <div class=\"smwb-thumb-card__caption\">{local.caption}</div>\n </Show>\n <Show when={previewOpen() && !isServer}>\n <Portal>\n <div class=\"smwb-thumb-card__preview\" ref={(el) => floating.setFloating(el)} style={floating.floatingStyles()}>\n {typeof local.hoverPreview === \"string\" ? (\n <img src={local.hoverPreview} alt=\"\" />\n ) : (\n (local.hoverPreview as JSX.Element)\n )}\n </div>\n </Portal>\n </Show>\n </div>\n );\n}\n\nexport default ThumbCard;\n"],"names":["ThumbCard","props","merged","mergeProps","lazy","hoverDelay","local","rest","splitProps","floating","createFloating","placement","previewOpen","setPreviewOpen","createSignal","hoverTimer","clearTimer","clearTimeout","undefined","onEnter","hoverPreview","disabled","setTimeout","onLeave","onCleanup","interactive","onSelect","onKeyDown","event","key","preventDefault","_el$","_tmpl$5","_el$2","firstChild","_ref$","mergeRefs","ref","el","setReference","_$use","_$spread","_$mergeProps","cn","class","selected","role","tabindex","_$memo","onClick","_$insert","_$createComponent","LazyImage","src","fallback","Show","when","topStart","children","_el$3","_tmpl$","topEnd","_el$4","_tmpl$2","caption","_el$5","_tmpl$3","isServer","Portal","_el$6","_tmpl$4","setFloating","_c$","_el$7","_tmpl$6","_$effect","_$setAttribute","_$p","_$style","floatingStyles"],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { createComponent as r, insert as l, effect as s, setAttribute as g, className as p, template as u } from "solid-js/web";
|
|
2
|
+
import { splitProps as b, Show as o } from "solid-js";
|
|
3
|
+
import v from "clsx";
|
|
4
|
+
import { Modal as a } from "../modal/modal.js";
|
|
5
|
+
import { TextField as C } from "../../inputs/textField/textField.js";
|
|
6
|
+
import { Button as i } from "../../inputs/button/button.js";
|
|
7
|
+
var h = /* @__PURE__ */ u("<div class=smwb-save-asset-dialog__preview><img alt>"), f = /* @__PURE__ */ u("<div>");
|
|
8
|
+
function $(c) {
|
|
9
|
+
const [e] = b(c, ["open", "title", "nameLabel", "name", "onNameChange", "previewSrc", "onCapture", "captureLabel", "busy", "confirmLabel", "cancelLabel", "onConfirm", "onClose", "children", "class"]), m = () => e.onNameChange !== void 0 || e.name !== void 0;
|
|
10
|
+
return r(a, {
|
|
11
|
+
get open() {
|
|
12
|
+
return e.open;
|
|
13
|
+
},
|
|
14
|
+
get onClose() {
|
|
15
|
+
return e.onClose;
|
|
16
|
+
},
|
|
17
|
+
size: "small",
|
|
18
|
+
get children() {
|
|
19
|
+
return [r(a.Header, {
|
|
20
|
+
get children() {
|
|
21
|
+
return e.title ?? "Save";
|
|
22
|
+
}
|
|
23
|
+
}), r(a.Content, {
|
|
24
|
+
get children() {
|
|
25
|
+
var t = f();
|
|
26
|
+
return l(t, r(o, {
|
|
27
|
+
get when() {
|
|
28
|
+
return m();
|
|
29
|
+
},
|
|
30
|
+
get children() {
|
|
31
|
+
return r(C, {
|
|
32
|
+
get label() {
|
|
33
|
+
return e.nameLabel ?? "Name";
|
|
34
|
+
},
|
|
35
|
+
get value() {
|
|
36
|
+
return e.name ?? "";
|
|
37
|
+
},
|
|
38
|
+
get disabled() {
|
|
39
|
+
return !!e.busy;
|
|
40
|
+
},
|
|
41
|
+
onChange: (n) => e.onNameChange?.(n.currentTarget.value)
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}), null), l(t, r(o, {
|
|
45
|
+
get when() {
|
|
46
|
+
return e.previewSrc;
|
|
47
|
+
},
|
|
48
|
+
get children() {
|
|
49
|
+
var n = h(), d = n.firstChild;
|
|
50
|
+
return s(() => g(d, "src", e.previewSrc)), n;
|
|
51
|
+
}
|
|
52
|
+
}), null), l(t, r(o, {
|
|
53
|
+
get when() {
|
|
54
|
+
return e.onCapture;
|
|
55
|
+
},
|
|
56
|
+
get children() {
|
|
57
|
+
return r(i, {
|
|
58
|
+
variant: "outlined",
|
|
59
|
+
size: "small",
|
|
60
|
+
get disabled() {
|
|
61
|
+
return !!e.busy;
|
|
62
|
+
},
|
|
63
|
+
onClick: () => e.onCapture?.(),
|
|
64
|
+
get label() {
|
|
65
|
+
return e.captureLabel ?? "Capture preview";
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}), null), l(t, () => e.children, null), s(() => p(t, v("smwb-save-asset-dialog__body", e.class))), t;
|
|
70
|
+
}
|
|
71
|
+
}), r(a.Footer, {
|
|
72
|
+
get children() {
|
|
73
|
+
return [r(i, {
|
|
74
|
+
variant: "text",
|
|
75
|
+
get disabled() {
|
|
76
|
+
return !!e.busy;
|
|
77
|
+
},
|
|
78
|
+
onClick: () => e.onClose(),
|
|
79
|
+
get label() {
|
|
80
|
+
return e.cancelLabel ?? "Cancel";
|
|
81
|
+
}
|
|
82
|
+
}), r(i, {
|
|
83
|
+
variant: "contained",
|
|
84
|
+
get disabled() {
|
|
85
|
+
return !!e.busy;
|
|
86
|
+
},
|
|
87
|
+
onClick: () => e.onConfirm(),
|
|
88
|
+
get label() {
|
|
89
|
+
return e.confirmLabel ?? "Save";
|
|
90
|
+
}
|
|
91
|
+
})];
|
|
92
|
+
}
|
|
93
|
+
})];
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
export {
|
|
98
|
+
$ as SaveAssetDialog
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=saveAssetDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saveAssetDialog.js","sources":["../../../../../src/components/feedBack/saveAssetDialog/saveAssetDialog.tsx"],"sourcesContent":["import { type JSX, Show, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Modal } from \"../modal\";\nimport { Button } from \"../../inputs/button\";\nimport { TextField } from \"../../inputs/textField\";\n\nexport interface SaveAssetDialogProps {\n open: boolean;\n title?: string;\n /** Label for the name field. Omit `onNameChange` AND `name` to hide the field. */\n nameLabel?: string;\n name?: string;\n onNameChange?: (name: string) => void;\n /** Preview image URL (e.g. a freshly captured thumbnail). */\n previewSrc?: string;\n /** Shows a Capture button when provided. */\n onCapture?: () => void;\n captureLabel?: string;\n /** Disables the actions + name field while a save/capture is in flight. */\n busy?: boolean;\n confirmLabel?: string;\n cancelLabel?: string;\n onConfirm: () => void;\n onClose: () => void;\n /** Extra content between the name field/preview and the actions. */\n children?: JSX.Element;\n class?: string;\n}\n\n/**\n * A \"name it / preview a thumbnail / confirm-cancel\" dialog on `Modal` — the\n * save/capture flow apps hand-build for every asset. Pairs with srv-solid's\n * asset store: `onConfirm` uploads the captured `previewSrc`.\n */\nexport function SaveAssetDialog(props: SaveAssetDialogProps): JSX.Element {\n const [local] = splitProps(props, [\n \"open\",\n \"title\",\n \"nameLabel\",\n \"name\",\n \"onNameChange\",\n \"previewSrc\",\n \"onCapture\",\n \"captureLabel\",\n \"busy\",\n \"confirmLabel\",\n \"cancelLabel\",\n \"onConfirm\",\n \"onClose\",\n \"children\",\n \"class\",\n ]);\n\n const showNameField = (): boolean => local.onNameChange !== undefined || local.name !== undefined;\n\n return (\n <Modal open={local.open} onClose={local.onClose} size=\"small\">\n <Modal.Header>{local.title ?? \"Save\"}</Modal.Header>\n <Modal.Content>\n <div class={cn(\"smwb-save-asset-dialog__body\", local.class)}>\n <Show when={showNameField()}>\n <TextField\n label={local.nameLabel ?? \"Name\"}\n value={local.name ?? \"\"}\n disabled={!!local.busy}\n onChange={(event) => local.onNameChange?.((event.currentTarget as HTMLInputElement).value)}\n />\n </Show>\n <Show when={local.previewSrc}>\n <div class=\"smwb-save-asset-dialog__preview\">\n <img src={local.previewSrc} alt=\"\" />\n </div>\n </Show>\n <Show when={local.onCapture}>\n <Button\n variant=\"outlined\"\n size=\"small\"\n disabled={!!local.busy}\n onClick={() => local.onCapture?.()}\n label={local.captureLabel ?? \"Capture preview\"}\n />\n </Show>\n {local.children}\n </div>\n </Modal.Content>\n <Modal.Footer>\n <Button variant=\"text\" disabled={!!local.busy} onClick={() => local.onClose()} label={local.cancelLabel ?? \"Cancel\"} />\n <Button variant=\"contained\" disabled={!!local.busy} onClick={() => local.onConfirm()} label={local.confirmLabel ?? \"Save\"} />\n </Modal.Footer>\n </Modal>\n );\n}\n\nexport default SaveAssetDialog;\n"],"names":["SaveAssetDialog","props","local","splitProps","showNameField","onNameChange","undefined","name","_$createComponent","Modal","open","onClose","size","children","Header","title","Content","_el$","_tmpl$2","_$insert","Show","when","TextField","label","nameLabel","value","disabled","busy","onChange","event","currentTarget","previewSrc","_el$2","_tmpl$","_el$3","firstChild","_$effect","_$setAttribute","onCapture","Button","variant","onClick","captureLabel","_$className","cn","class","Footer","cancelLabel","onConfirm","confirmLabel"],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { insert as t, createComponent as s, effect as v, setAttribute as _, className as f, template as a, delegateEvents as w } from "solid-js/web";
|
|
2
|
+
import { splitProps as $, Show as d } from "solid-js";
|
|
3
|
+
import g from "clsx";
|
|
4
|
+
import { Slider as R } from "../slider/slider.js";
|
|
5
|
+
var k = /* @__PURE__ */ a("<span class=smwb-value-slider__label>"), A = /* @__PURE__ */ a("<span class=smwb-value-slider__readout>"), y = /* @__PURE__ */ a('<button type=button class=smwb-value-slider__reset><svg viewBox="0 0 24 24"width=16 height=16 aria-hidden=true fill=none stroke=currentColor stroke-width=2><path d="M3 12a9 9 0 1 0 3-6.7M3 4v4h4"stroke-linecap=round stroke-linejoin=round>'), S = /* @__PURE__ */ a("<div class=smwb-value-slider__header><span class=smwb-value-slider__spacer>"), C = /* @__PURE__ */ a("<div>");
|
|
6
|
+
const x = (o, e) => typeof o == "function" ? o(e) : Array.isArray(e) ? `${e[0]} – ${e[1]}` : e == null ? "" : String(e);
|
|
7
|
+
function B(o) {
|
|
8
|
+
const [e, u] = $(o, ["readout", "endAdornment", "onReset", "resetLabel", "label", "class"]), c = () => e.readout !== void 0 && e.readout !== !1, b = () => e.label != null || c() || e.endAdornment != null || e.onReset != null;
|
|
9
|
+
return (() => {
|
|
10
|
+
var i = C();
|
|
11
|
+
return t(i, s(d, {
|
|
12
|
+
get when() {
|
|
13
|
+
return b();
|
|
14
|
+
},
|
|
15
|
+
get children() {
|
|
16
|
+
var l = S(), p = l.firstChild;
|
|
17
|
+
return t(l, s(d, {
|
|
18
|
+
get when() {
|
|
19
|
+
return e.label != null;
|
|
20
|
+
},
|
|
21
|
+
get children() {
|
|
22
|
+
var r = k();
|
|
23
|
+
return t(r, () => e.label), r;
|
|
24
|
+
}
|
|
25
|
+
}), p), t(l, s(d, {
|
|
26
|
+
get when() {
|
|
27
|
+
return c();
|
|
28
|
+
},
|
|
29
|
+
get children() {
|
|
30
|
+
var r = A();
|
|
31
|
+
return t(r, () => x(e.readout, u.value)), r;
|
|
32
|
+
}
|
|
33
|
+
}), null), t(l, () => e.endAdornment, null), t(l, s(d, {
|
|
34
|
+
get when() {
|
|
35
|
+
return e.onReset != null;
|
|
36
|
+
},
|
|
37
|
+
get children() {
|
|
38
|
+
var r = y();
|
|
39
|
+
return r.$$click = () => e.onReset?.(), v((n) => {
|
|
40
|
+
var m = e.resetLabel ?? "Reset", h = u.disabled;
|
|
41
|
+
return m !== n.e && _(r, "aria-label", n.e = m), h !== n.t && (r.disabled = n.t = h), n;
|
|
42
|
+
}, {
|
|
43
|
+
e: void 0,
|
|
44
|
+
t: void 0
|
|
45
|
+
}), r;
|
|
46
|
+
}
|
|
47
|
+
}), null), l;
|
|
48
|
+
}
|
|
49
|
+
}), null), t(i, s(R, u), null), v(() => f(i, g("smwb-value-slider", e.class))), i;
|
|
50
|
+
})();
|
|
51
|
+
}
|
|
52
|
+
w(["click"]);
|
|
53
|
+
export {
|
|
54
|
+
B as ValueSlider
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=valueSlider.js.map
|