@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chat.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/chat/chat.entry.less\";\nimport { type JSX, type ParentProps, Show, createMemo, mergeProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { FloatingButton } from \"../../inputs/floatingButton\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { createId } from \"../../../primitives/createId\";\nimport { ChatComposer } from \"./chatComposer\";\nimport { ChatHeader } from \"./chatHeader\";\nimport { ChatMessages } from \"./chatMessages\";\nimport { ChatShell } from \"./chatShell\";\nimport { createChatFileUpload } from \"./useChatFileUpload\";\nimport {\n type ChatAnchor,\n type ChatLayoutMode,\n type ChatMessage,\n type ChatMessageRenderContext,\n type ChatThemeMode,\n CHAT_EXPAND_LAYOUTS,\n} from \"./types\";\nimport { pickInitialLayout, resolveAllowedLayouts, shouldShowChatCloseButton } from \"./utils\";\n\nexport interface ChatProps extends ParentProps, Omit<ChatMessageRenderContext, \"showAvatars\" | \"showAttachments\"> {\n class?: string | undefined;\n messages: ChatMessage[];\n showAvatars?: boolean | undefined;\n showAttachments?: boolean | undefined;\n headerTitle?: JSX.Element;\n headerSubtitle?: JSX.Element;\n headerActions?: JSX.Element;\n footer?: JSX.Element;\n anchor?: ChatAnchor | undefined;\n themeMode?: ChatThemeMode | undefined;\n allowedLayouts?: ChatLayoutMode[] | undefined;\n layout?: ChatLayoutMode | undefined;\n defaultLayout?: ChatLayoutMode | undefined;\n onLayoutChange?: ((layout: ChatLayoutMode) => void) | undefined;\n open?: boolean | undefined;\n defaultOpen?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n floatingTrigger?: boolean | undefined;\n triggerIcon?: JSX.Element;\n triggerLabel?: string | undefined;\n onLoadMore?: (() => void | Promise<void>) | undefined;\n hasMore?: boolean | undefined;\n onSendMessage?: ((text: string) => void | Promise<void>) | undefined;\n composerPlaceholder?: string | undefined;\n composerDisabled?: boolean | undefined;\n composerShiftEnterNewline?: boolean | undefined;\n composerCtrlEnterNewline?: boolean | undefined;\n fileUpload?: boolean | undefined;\n onUploadFiles?: ((files: File[]) => void | Promise<void>) | undefined;\n fileUploadAccept?: Record<string, string[]> | string | undefined;\n fileUploadMaxFiles?: number | undefined;\n attachAriaLabel?: string | undefined;\n loading?: boolean | undefined;\n loadingMore?: boolean | undefined;\n loadingSkeletonCount?: number | undefined;\n renderMessage?: ((message: ChatMessage, ctx: ChatMessageRenderContext) => JSX.Element) | undefined;\n embedded?: boolean | undefined;\n overlayContext?: boolean | undefined;\n showCloseButton?: boolean | undefined;\n}\n\nexport function Chat(props: ChatProps): JSX.Element {\n const p = mergeProps(\n {\n showAvatars: false,\n showAttachments: false,\n anchor: \"bottom-right\" as const,\n themeMode: \"inherit\" as const,\n defaultOpen: false,\n floatingTrigger: false,\n composerPlaceholder: \"message\",\n composerShiftEnterNewline: true,\n composerCtrlEnterNewline: true,\n fileUpload: false,\n embedded: false,\n overlayContext: false,\n showStatus: false,\n },\n props\n );\n\n const allowedLayouts = createMemo(() => resolveAllowedLayouts(p.allowedLayouts ?? CHAT_EXPAND_LAYOUTS));\n\n const [open, setOpen] = createControllableState<boolean>({\n value: () => p.open,\n defaultValue: p.defaultOpen,\n onChange: p.onOpenChange,\n });\n\n const [layout, setLayout] = createControllableState<ChatLayoutMode>({\n value: () => p.layout,\n defaultValue: pickInitialLayout(allowedLayouts(), p.defaultLayout),\n onChange: p.onLayoutChange,\n });\n\n const effectiveLayout = (): ChatLayoutMode =>\n p.embedded ? \"fullHeight\" : p.floatingTrigger ? (open() ? layout() : \"closed\") : layout();\n\n const handleOpen = (): void => {\n setOpen(true);\n if (layout() === \"closed\") {\n setLayout(pickInitialLayout(allowedLayouts(), p.defaultLayout));\n }\n };\n\n const handleClose = (): void => {\n setOpen(false);\n };\n\n const handleLayoutChange = (next: ChatLayoutMode): void => {\n setOpen(true);\n setLayout(next);\n };\n\n const fileUpload = createChatFileUpload({\n enabled: () => p.fileUpload,\n accept: p.fileUploadAccept,\n maxFiles: p.fileUploadMaxFiles,\n onUploadFiles: p.onUploadFiles,\n disabled: () => Boolean(p.composerDisabled),\n });\n\n const attachInputId = createId();\n\n const showComposer = (): boolean => Boolean(p.onSendMessage) || fileUpload.enabled();\n\n const fileInput = (): JSX.Element => (\n <Show when={fileUpload.enabled()}>\n <input {...fileUpload.getInputProps({ id: attachInputId })} data-testid=\"chat-file-input\" />\n </Show>\n );\n\n const resolvedFooter = (): JSX.Element =>\n p.footer ??\n p.children ??\n (showComposer() ? (\n <>\n {fileInput()}\n <ChatComposer\n onSendMessage={p.onSendMessage}\n placeholder={p.composerPlaceholder}\n disabled={p.composerDisabled}\n shiftEnterNewline={p.composerShiftEnterNewline}\n ctrlEnterNewline={p.composerCtrlEnterNewline}\n fileUpload={fileUpload.enabled()}\n attachInputId={fileUpload.enabled() ? attachInputId : undefined}\n attachAriaLabel={p.attachAriaLabel}\n />\n </>\n ) : undefined);\n\n const closeButtonVisible = (): boolean =>\n shouldShowChatCloseButton({\n floatingTrigger: p.floatingTrigger,\n embedded: p.embedded,\n overlayContext: p.overlayContext,\n effectiveLayout: effectiveLayout(),\n showCloseButton: p.showCloseButton,\n });\n\n return (\n <div\n class={cn(\n \"smwb-chat\",\n !p.embedded && `smwb-chat_${p.anchor}`,\n p.embedded && \"smwb-chat_embedded\",\n p.overlayContext && \"smwb-chat_overlay-context\",\n p.class\n )}\n data-testid=\"chat\"\n >\n <Show when={p.floatingTrigger && !p.embedded && !open()}>\n <FloatingButton\n class=\"smwb-chat__trigger\"\n aria-label={p.triggerLabel ?? \"Open chat\"}\n data-testid=\"chat-trigger\"\n onClick={handleOpen}\n >\n <Show when={p.triggerIcon} fallback={<Icon name=\"chat\" size={24} />}>\n {p.triggerIcon}\n </Show>\n </FloatingButton>\n </Show>\n <ChatShell\n layout={effectiveLayout()}\n anchor={p.anchor}\n themeMode={p.themeMode}\n embedded={p.embedded}\n overlayContext={p.overlayContext}\n fileDropzoneRootProps={fileUpload.enabled() ? fileUpload.getRootProps() : undefined}\n fileDropzoneActive={fileUpload.enabled() && fileUpload.isDragActive()}\n header={\n <ChatHeader\n title={p.headerTitle}\n subtitle={p.headerSubtitle}\n actions={p.headerActions}\n layout={effectiveLayout() === \"closed\" ? layout() : effectiveLayout()}\n allowedLayouts={allowedLayouts()}\n onLayoutChange={handleLayoutChange}\n onClose={closeButtonVisible() ? handleClose : undefined}\n />\n }\n footer={resolvedFooter()}\n >\n <ChatMessages\n messages={p.messages}\n showAvatars={p.showAvatars}\n showAttachments={p.showAttachments}\n showStatus={p.showStatus}\n statusIcons={p.statusIcons}\n renderStatus={p.renderStatus}\n onLoadMore={p.onLoadMore}\n hasMore={p.hasMore}\n loading={p.loading}\n loadingMore={p.loadingMore}\n loadingSkeletonCount={p.loadingSkeletonCount}\n renderMessage={p.renderMessage}\n />\n </ChatShell>\n </div>\n );\n}\n\nexport default Chat;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,MAAM,YAAY,kBAAkB;AACzE,OAAO,QAAQ;AACf,SAAS,sBAAsB;AAC/B,SAAS,YAAY;AACrB,SAAS,+BAA+B;AACxC,SAAS,gBAAgB;AACzB,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAC7B,SAAS,iBAAiB;AAC1B,SAAS,4BAA4B;AACrC;AAAA,EAME;AAAA,OACK;AACP,SAAS,mBAAmB,uBAAuB,iCAAiC;AA4C7E,SAAS,KAAK,OAA+B;AAClD,QAAM,IAAI;AAAA,IACR;AAAA,MACE,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,qBAAqB;AAAA,MACrB,2BAA2B;AAAA,MAC3B,0BAA0B;AAAA,MAC1B,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,YAAY;AAAA,IACd;AAAA,IACA;AAAA,EACF;AAEA,QAAM,iBAAiB,WAAW,MAAM,sBAAsB,EAAE,kBAAkB,mBAAmB,CAAC;AAEtG,QAAM,CAAC,MAAM,OAAO,IAAI,wBAAiC;AAAA,IACvD,OAAO,MAAM,EAAE;AAAA,IACf,cAAc,EAAE;AAAA,IAChB,UAAU,EAAE;AAAA,EACd,CAAC;AAED,QAAM,CAAC,QAAQ,SAAS,IAAI,wBAAwC;AAAA,IAClE,OAAO,MAAM,EAAE;AAAA,IACf,cAAc,kBAAkB,eAAe,GAAG,EAAE,aAAa;AAAA,IACjE,UAAU,EAAE;AAAA,EACd,CAAC;AAED,QAAM,kBAAkB,MACtB,EAAE,WAAW,eAAe,EAAE,kBAAmB,KAAK,IAAI,OAAO,IAAI,WAAY,OAAO;AAE1F,QAAM,aAAa,MAAY;AAC7B,YAAQ,IAAI;AACZ,QAAI,OAAO,MAAM,UAAU;AACzB,gBAAU,kBAAkB,eAAe,GAAG,EAAE,aAAa,CAAC;AAAA,IAChE;AAAA,EACF;AAEA,QAAM,cAAc,MAAY;AAC9B,YAAQ,KAAK;AAAA,EACf;AAEA,QAAM,qBAAqB,CAAC,SAA+B;AACzD,YAAQ,IAAI;AACZ,cAAU,IAAI;AAAA,EAChB;AAEA,QAAM,aAAa,qBAAqB;AAAA,IACtC,SAAS,MAAM,EAAE;AAAA,IACjB,QAAQ,EAAE;AAAA,IACV,UAAU,EAAE;AAAA,IACZ,eAAe,EAAE;AAAA,IACjB,UAAU,MAAM,QAAQ,EAAE,gBAAgB;AAAA,EAC5C,CAAC;AAED,QAAM,gBAAgB,SAAS;AAE/B,QAAM,eAAe,MAAe,QAAQ,EAAE,aAAa,KAAK,WAAW,QAAQ;AAEnF,QAAM,YAAY,MAChB,CAAC,KAAK,MAAM,WAAW,QAAQ,GAAG;AAAA,MAChC,CAAC,UAAU,WAAW,cAAc,EAAE,IAAI,cAAc,CAAC,GAAG,YAAY,kBAAkB,EAAE;AAAA,IAC9F,EAFC;AAKH,QAAM,iBAAiB,MACrB,EAAE,UACF,EAAE,aACD,aAAa,IACZ,EAAE;AAAA,SACC,UAAU,EAAE;AAAA,QACb,CAAC;AAAA,IACC,eAAe,EAAE;AAAA,IACjB,aAAa,EAAE;AAAA,IACf,UAAU,EAAE;AAAA,IACZ,mBAAmB,EAAE;AAAA,IACrB,kBAAkB,EAAE;AAAA,IACpB,YAAY,WAAW,QAAQ;AAAA,IAC/B,eAAe,WAAW,QAAQ,IAAI,gBAAgB;AAAA,IACtD,iBAAiB,EAAE;AAAA,EACrB,EAAE;AAAA,MACJ,MACE;AAEN,QAAM,qBAAqB,MACzB,0BAA0B;AAAA,IACxB,iBAAiB,EAAE;AAAA,IACnB,UAAU,EAAE;AAAA,IACZ,gBAAgB,EAAE;AAAA,IAClB,iBAAiB,gBAAgB;AAAA,IACjC,iBAAiB,EAAE;AAAA,EACrB,CAAC;AAEH,SACE,CAAC;AAAA,IACC,OAAO;AAAA,MACL;AAAA,MACA,CAAC,EAAE,YAAY,aAAa,EAAE,MAAM;AAAA,MACpC,EAAE,YAAY;AAAA,MACd,EAAE,kBAAkB;AAAA,MACpB,EAAE;AAAA,IACJ;AAAA,IACA,YAAY;AAAA,GACb;AAAA,MACC,CAAC,KAAK,MAAM,EAAE,mBAAmB,CAAC,EAAE,YAAY,CAAC,KAAK,GAAG;AAAA,QACvD,CAAC;AAAA,IACC,MAAM;AAAA,IACN,YAAY,EAAE,gBAAgB;AAAA,IAC9B,YAAY;AAAA,IACZ,SAAS;AAAA,GACV;AAAA,UACC,CAAC,KAAK,MAAM,EAAE,aAAa,UAAU,CAAC,KAAK,KAAK,OAAO,MAAM,IAAI,IAAI;AAAA,aAClE,EAAE,YAAY;AAAA,UACjB,EAFC,KAEM;AAAA,QACT,EATC,eASgB;AAAA,MACnB,EAXC,KAWM;AAAA,MACP,CAAC;AAAA,IACC,QAAQ,gBAAgB;AAAA,IACxB,QAAQ,EAAE;AAAA,IACV,WAAW,EAAE;AAAA,IACb,UAAU,EAAE;AAAA,IACZ,gBAAgB,EAAE;AAAA,IAClB,uBAAuB,WAAW,QAAQ,IAAI,WAAW,aAAa,IAAI;AAAA,IAC1E,oBAAoB,WAAW,QAAQ,KAAK,WAAW,aAAa;AAAA,IACpE,QACE,CAAC;AAAA,MACC,OAAO,EAAE;AAAA,MACT,UAAU,EAAE;AAAA,MACZ,SAAS,EAAE;AAAA,MACX,QAAQ,gBAAgB,MAAM,WAAW,OAAO,IAAI,gBAAgB;AAAA,MACpE,gBAAgB,eAAe;AAAA,MAC/B,gBAAgB;AAAA,MAChB,SAAS,mBAAmB,IAAI,cAAc;AAAA,IAChD;AAAA,IAEF,QAAQ,eAAe;AAAA,GACxB;AAAA,QACC,CAAC;AAAA,IACC,UAAU,EAAE;AAAA,IACZ,aAAa,EAAE;AAAA,IACf,iBAAiB,EAAE;AAAA,IACnB,YAAY,EAAE;AAAA,IACd,aAAa,EAAE;AAAA,IACf,cAAc,EAAE;AAAA,IAChB,YAAY,EAAE;AAAA,IACd,SAAS,EAAE;AAAA,IACX,SAAS,EAAE;AAAA,IACX,aAAa,EAAE;AAAA,IACf,sBAAsB,EAAE;AAAA,IACxB,eAAe,EAAE;AAAA,EACnB,EAAE;AAAA,MACJ,EAnCC,UAmCW;AAAA,IACd,EA1DC;AA4DL;AAEA,IAAO,eAAQ;","names":[],"file":"chat.jsx"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chat.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/chat/chat.entry.less\";\nimport { type JSX, type ParentProps, Show, createMemo, mergeProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { FloatingButton } from \"../../inputs/floatingButton\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { createId } from \"../../../primitives/createId\";\nimport { ChatComposer } from \"./chatComposer\";\nimport { ChatHeader } from \"./chatHeader\";\nimport { ChatMessages } from \"./chatMessages\";\nimport { ChatShell } from \"./chatShell\";\nimport { createChatFileUpload } from \"./useChatFileUpload\";\nimport {\n type ChatAnchor,\n type ChatLayoutMode,\n type ChatMessage,\n type ChatMessageRenderContext,\n type ChatThemeMode,\n CHAT_EXPAND_LAYOUTS,\n} from \"./types\";\nimport { pickInitialLayout, resolveAllowedLayouts, shouldShowChatCloseButton } from \"./utils\";\n\nexport interface ChatProps extends ParentProps, Omit<ChatMessageRenderContext, \"showAvatars\" | \"showAttachments\"> {\n class?: string | undefined;\n messages: ChatMessage[];\n showAvatars?: boolean | undefined;\n showAttachments?: boolean | undefined;\n headerTitle?: JSX.Element;\n headerSubtitle?: JSX.Element;\n headerActions?: JSX.Element;\n footer?: JSX.Element;\n anchor?: ChatAnchor | undefined;\n themeMode?: ChatThemeMode | undefined;\n allowedLayouts?: ChatLayoutMode[] | undefined;\n layout?: ChatLayoutMode | undefined;\n defaultLayout?: ChatLayoutMode | undefined;\n onLayoutChange?: ((layout: ChatLayoutMode) => void) | undefined;\n open?: boolean | undefined;\n defaultOpen?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n floatingTrigger?: boolean | undefined;\n triggerIcon?: JSX.Element;\n triggerLabel?: string | undefined;\n onLoadMore?: (() => void | Promise<void>) | undefined;\n hasMore?: boolean | undefined;\n onSendMessage?: ((text: string) => void | Promise<void>) | undefined;\n composerPlaceholder?: string | undefined;\n composerDisabled?: boolean | undefined;\n composerShiftEnterNewline?: boolean | undefined;\n composerCtrlEnterNewline?: boolean | undefined;\n fileUpload?: boolean | undefined;\n onUploadFiles?: ((files: File[]) => void | Promise<void>) | undefined;\n fileUploadAccept?: Record<string, string[]> | string | undefined;\n fileUploadMaxFiles?: number | undefined;\n attachAriaLabel?: string | undefined;\n loading?: boolean | undefined;\n loadingMore?: boolean | undefined;\n loadingSkeletonCount?: number | undefined;\n renderMessage?: ((message: ChatMessage, ctx: ChatMessageRenderContext) => JSX.Element) | undefined;\n embedded?: boolean | undefined;\n overlayContext?: boolean | undefined;\n showCloseButton?: boolean | undefined;\n}\n\nexport function Chat(props: ChatProps): JSX.Element {\n const p = mergeProps(\n {\n showAvatars: false,\n showAttachments: false,\n anchor: \"bottom-right\" as const,\n themeMode: \"inherit\" as const,\n defaultOpen: false,\n floatingTrigger: false,\n composerPlaceholder: \"message\",\n composerShiftEnterNewline: true,\n composerCtrlEnterNewline: true,\n fileUpload: false,\n embedded: false,\n overlayContext: false,\n showStatus: false,\n },\n props\n );\n\n const allowedLayouts = createMemo(() => resolveAllowedLayouts(p.allowedLayouts ?? CHAT_EXPAND_LAYOUTS));\n\n const [open, setOpen] = createControllableState<boolean>({\n value: () => p.open,\n defaultValue: p.defaultOpen,\n onChange: p.onOpenChange,\n });\n\n const [layout, setLayout] = createControllableState<ChatLayoutMode>({\n value: () => p.layout,\n defaultValue: pickInitialLayout(allowedLayouts(), p.defaultLayout),\n onChange: p.onLayoutChange,\n });\n\n const effectiveLayout = (): ChatLayoutMode =>\n p.embedded ? \"fullHeight\" : p.floatingTrigger ? (open() ? layout() : \"closed\") : layout();\n\n const handleOpen = (): void => {\n setOpen(true);\n if (layout() === \"closed\") {\n setLayout(pickInitialLayout(allowedLayouts(), p.defaultLayout));\n }\n };\n\n const handleClose = (): void => {\n setOpen(false);\n };\n\n const handleLayoutChange = (next: ChatLayoutMode): void => {\n setOpen(true);\n setLayout(next);\n };\n\n const fileUpload = createChatFileUpload({\n enabled: () => p.fileUpload,\n accept: p.fileUploadAccept,\n maxFiles: p.fileUploadMaxFiles,\n onUploadFiles: p.onUploadFiles,\n disabled: () => Boolean(p.composerDisabled),\n });\n\n const attachInputId = createId();\n\n const showComposer = (): boolean => Boolean(p.onSendMessage) || fileUpload.enabled();\n\n const fileInput = (): JSX.Element => (\n <Show when={fileUpload.enabled()}>\n <input {...fileUpload.getInputProps({ id: attachInputId })} data-testid=\"chat-file-input\" />\n </Show>\n );\n\n const resolvedFooter = (): JSX.Element =>\n p.footer ??\n p.children ??\n (showComposer() ? (\n <>\n {fileInput()}\n <ChatComposer\n onSendMessage={p.onSendMessage}\n placeholder={p.composerPlaceholder}\n disabled={p.composerDisabled}\n shiftEnterNewline={p.composerShiftEnterNewline}\n ctrlEnterNewline={p.composerCtrlEnterNewline}\n fileUpload={fileUpload.enabled()}\n attachInputId={fileUpload.enabled() ? attachInputId : undefined}\n attachAriaLabel={p.attachAriaLabel}\n />\n </>\n ) : undefined);\n\n const closeButtonVisible = (): boolean =>\n shouldShowChatCloseButton({\n floatingTrigger: p.floatingTrigger,\n embedded: p.embedded,\n overlayContext: p.overlayContext,\n effectiveLayout: effectiveLayout(),\n showCloseButton: p.showCloseButton,\n });\n\n return (\n <div\n class={cn(\n \"smwb-chat\",\n !p.embedded && `smwb-chat_${p.anchor}`,\n p.embedded && \"smwb-chat_embedded\",\n p.overlayContext && \"smwb-chat_overlay-context\",\n p.class\n )}\n data-testid=\"chat\"\n >\n <Show when={p.floatingTrigger && !p.embedded && !open()}>\n <FloatingButton\n class=\"smwb-chat__trigger\"\n aria-label={p.triggerLabel ?? \"Open chat\"}\n data-testid=\"chat-trigger\"\n onClick={handleOpen}\n >\n <Show when={p.triggerIcon} fallback={<Icon name=\"chat\" size={24} />}>\n {p.triggerIcon}\n </Show>\n </FloatingButton>\n </Show>\n <ChatShell\n layout={effectiveLayout()}\n anchor={p.anchor}\n themeMode={p.themeMode}\n embedded={p.embedded}\n overlayContext={p.overlayContext}\n fileDropzoneRootProps={fileUpload.enabled() ? fileUpload.getRootProps() : undefined}\n fileDropzoneActive={fileUpload.enabled() && fileUpload.isDragActive()}\n header={\n <ChatHeader\n title={p.headerTitle}\n subtitle={p.headerSubtitle}\n actions={p.headerActions}\n layout={effectiveLayout() === \"closed\" ? layout() : effectiveLayout()}\n allowedLayouts={allowedLayouts()}\n onLayoutChange={handleLayoutChange}\n onClose={closeButtonVisible() ? handleClose : undefined}\n />\n }\n footer={resolvedFooter()}\n >\n <ChatMessages\n messages={p.messages}\n showAvatars={p.showAvatars}\n showAttachments={p.showAttachments}\n showStatus={p.showStatus}\n statusIcons={p.statusIcons}\n renderStatus={p.renderStatus}\n onLoadMore={p.onLoadMore}\n hasMore={p.hasMore}\n loading={p.loading}\n loadingMore={p.loadingMore}\n loadingSkeletonCount={p.loadingSkeletonCount}\n renderMessage={p.renderMessage}\n />\n </ChatShell>\n </div>\n );\n}\n\nexport default Chat;\n"],"mappings":"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","names":[],"file":"chat.jsx"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "/
|
|
1
|
+
import "@smwb/ui-styles/less/components/chip/chip.entry.less";
|
|
2
2
|
import { Show, mergeProps, splitProps } from "solid-js";
|
|
3
3
|
import cn from "clsx";
|
|
4
4
|
import { Ripple } from "../../base/ripple";
|
|
@@ -117,4 +117,4 @@ export {
|
|
|
117
117
|
Chip,
|
|
118
118
|
chip_default as default
|
|
119
119
|
};
|
|
120
|
-
//# sourceMappingURL=chip.
|
|
120
|
+
//# sourceMappingURL=chip.jsx.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/chip/chip.tsx"],"sourcesContent":["import \"/
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/chip/chip.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/chip/chip.entry.less\";\nimport { type JSX, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\n\nexport type ChipColor = \"default\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface ChipProps extends JSX.HTMLAttributes<HTMLSpanElement | HTMLAnchorElement> {\n variant?: \"filled\" | \"outlined\";\n size?: \"small\" | \"medium\";\n color?: ChipColor;\n onDelete?: (event: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => void;\n icon?: JSX.Element;\n deleteIcon?: JSX.Element;\n label: string;\n onClick?: () => void;\n onDeleteMouseDown?: JSX.EventHandlerUnion<HTMLButtonElement, MouseEvent>;\n disabled?: boolean;\n asLink?: boolean;\n href?: string;\n /** Open the link in a new tab (asLink only). */\n target?: string;\n selected?: boolean;\n /** Accessible label for the delete control. */\n deleteAriaLabel?: string;\n ref?: Ref<HTMLSpanElement | HTMLAnchorElement>;\n}\n\nexport function Chip(props: ChipProps): JSX.Element {\n const merged = mergeProps(\n {\n target: \"_blank\",\n variant: \"filled\" as const,\n size: \"medium\" as const,\n color: \"default\" as ChipColor,\n disabled: false,\n deleteAriaLabel: \"Remove\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"label\",\n \"class\",\n \"deleteIcon\",\n \"icon\",\n \"onDelete\",\n \"onDeleteMouseDown\",\n \"asLink\",\n \"href\",\n \"target\",\n \"selected\",\n \"variant\",\n \"size\",\n \"color\",\n \"disabled\",\n \"onClick\",\n \"deleteAriaLabel\",\n \"ref\",\n ]);\n\n let rippleActions: RippleActionsRef | undefined;\n\n const onPointerDown = (event: PointerEvent): void => {\n if (!local.disabled) {\n rippleActions?.onRipple(event);\n }\n };\n\n const onDeleteMouseDown: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (event) => {\n callHandler(local.onDeleteMouseDown, event);\n event.stopPropagation();\n };\n\n const classes = (): string =>\n cn(\n \"smwb-chip\",\n `smwb-${local.variant}`,\n `smwb-chip_size-${local.size}`,\n local.color !== \"default\" && `smwb-chip_color-${local.color}`,\n local.class,\n { \"smwb-disabled\": local.disabled, \"smwb-selected\": local.selected }\n );\n\n const clickable = (): boolean => !!local.onClick && !local.disabled;\n\n const inner = (): JSX.Element => (\n <>\n <Show when={local.icon}>\n <span class=\"smwb-chip__icon\">{local.icon}</span>\n </Show>\n <span class=\"smwb-chip__label\">{local.label}</span>\n <Show when={local.onDelete}>\n <button\n type=\"button\"\n class=\"smwb-chip__delete-icon\"\n aria-label={local.deleteAriaLabel}\n disabled={local.disabled}\n onClick={local.onDelete}\n onMouseDown={onDeleteMouseDown}\n >\n <Show when={local.deleteIcon} fallback={<Icon name=\"cancel\" size={18} fill={1} />}>\n {local.deleteIcon}\n </Show>\n </button>\n </Show>\n <Ripple actionRef={(actions) => (rippleActions = actions)} />\n </>\n );\n\n return (\n <Show\n when={local.asLink && local.href}\n fallback={\n <span\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"chip\"\n class={classes()}\n role={clickable() ? \"button\" : undefined}\n tabindex={clickable() ? 0 : undefined}\n aria-disabled={local.disabled || undefined}\n onClick={clickable() ? () => local.onClick?.() : undefined}\n onKeyDown={\n clickable()\n ? (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n local.onClick?.();\n }\n }\n : undefined\n }\n onPointerDown={onPointerDown}\n >\n {inner()}\n </span>\n }\n >\n <a\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"chip-link\"\n class={classes()}\n href={local.href}\n onPointerDown={onPointerDown}\n target={local.target}\n rel=\"noreferrer\"\n >\n {inner()}\n </a>\n </Show>\n );\n}\n\nexport default Chip;\n"],"mappings":"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","names":[],"file":"chip.jsx"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import "@smwb/ui-styles/less/components/chipGroup/chipGroup.entry.less";
|
|
2
|
+
import { For, mergeProps, splitProps } from "solid-js";
|
|
3
|
+
import cn from "clsx";
|
|
4
|
+
import { Chip } from "../chip";
|
|
5
|
+
function ChipGroup(props) {
|
|
6
|
+
const merged = mergeProps({ size: "medium", color: "primary" }, props);
|
|
7
|
+
const [local, rest] = splitProps(merged, [
|
|
8
|
+
"options",
|
|
9
|
+
"value",
|
|
10
|
+
"multiple",
|
|
11
|
+
"onChange",
|
|
12
|
+
"size",
|
|
13
|
+
"color",
|
|
14
|
+
"disabled",
|
|
15
|
+
"class"
|
|
16
|
+
]);
|
|
17
|
+
const selectedValues = () => {
|
|
18
|
+
if (local.value == null) return [];
|
|
19
|
+
return Array.isArray(local.value) ? local.value : [local.value];
|
|
20
|
+
};
|
|
21
|
+
const isSelected = (value) => selectedValues().includes(value);
|
|
22
|
+
const toggle = (value) => {
|
|
23
|
+
if (local.multiple) {
|
|
24
|
+
const current = selectedValues();
|
|
25
|
+
const next = current.includes(value) ? current.filter((v) => v !== value) : [...current, value];
|
|
26
|
+
local.onChange?.(next);
|
|
27
|
+
} else {
|
|
28
|
+
local.onChange?.(value);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
return <div {...rest} role="group" class={cn("smwb-chip-group", local.class)}>
|
|
32
|
+
<For each={local.options}>
|
|
33
|
+
{(option) => <Chip
|
|
34
|
+
label={option.label}
|
|
35
|
+
size={local.size}
|
|
36
|
+
color={local.color}
|
|
37
|
+
selected={isSelected(option.value)}
|
|
38
|
+
variant={isSelected(option.value) ? "filled" : "outlined"}
|
|
39
|
+
disabled={!!(local.disabled || option.disabled)}
|
|
40
|
+
onClick={() => toggle(option.value)}
|
|
41
|
+
{...option.icon ? { icon: option.icon } : {}}
|
|
42
|
+
/>}
|
|
43
|
+
</For>
|
|
44
|
+
</div>;
|
|
45
|
+
}
|
|
46
|
+
var chipGroup_default = ChipGroup;
|
|
47
|
+
export {
|
|
48
|
+
ChipGroup,
|
|
49
|
+
chipGroup_default as default
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=chipGroup.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/chipGroup/chipGroup.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/chipGroup/chipGroup.entry.less\";\nimport { 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"],"mappings":"AAAA,OAAO;AACP,SAAmB,KAAK,YAAY,kBAAkB;AACtD,OAAO,QAAQ;AACf,SAAS,YAA4B;AA2B9B,SAAS,UAAU,OAAoC;AAC5D,QAAM,SAAS,WAAW,EAAE,MAAM,UAAmB,OAAO,UAAuB,GAAG,KAAK;AAC3F,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,iBAAiB,MAAgB;AACrC,QAAI,MAAM,SAAS,KAAM,QAAO,CAAC;AACjC,WAAO,MAAM,QAAQ,MAAM,KAAK,IAAI,MAAM,QAAQ,CAAC,MAAM,KAAK;AAAA,EAChE;AACA,QAAM,aAAa,CAAC,UAA2B,eAAe,EAAE,SAAS,KAAK;AAE9E,QAAM,SAAS,CAAC,UAAwB;AACtC,QAAI,MAAM,UAAU;AAClB,YAAM,UAAU,eAAe;AAC/B,YAAM,OAAO,QAAQ,SAAS,KAAK,IAAI,QAAQ,OAAO,CAAC,MAAM,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,KAAK;AAC9F,YAAM,WAAW,IAAI;AAAA,IACvB,OAAO;AACL,YAAM,WAAW,KAAK;AAAA,IACxB;AAAA,EACF;AAEA,SACE,CAAC,QAAQ,MAAM,KAAK,QAAQ,OAAO,GAAG,mBAAmB,MAAM,KAAK,GAAG;AAAA,MACrE,CAAC,IAAI,MAAM,MAAM,SAAS;AAAA,SACvB,CAAC,WACA,CAAC;AAAA,IACC,OAAO,OAAO;AAAA,IACd,MAAM,MAAM;AAAA,IACZ,OAAO,MAAM;AAAA,IACb,UAAU,WAAW,OAAO,KAAK;AAAA,IACjC,SAAS,WAAW,OAAO,KAAK,IAAI,WAAW;AAAA,IAC/C,UAAU,CAAC,EAAE,MAAM,YAAY,OAAO;AAAA,IACtC,SAAS,MAAM,OAAO,OAAO,KAAK;AAAA,QAC7B,OAAO,OAAO,EAAE,MAAM,OAAO,KAAK,IAAI,CAAC;AAAA,EAC9C,GACA;AAAA,MACJ,EAbC,IAaK;AAAA,IACR,EAfC;AAiBL;AAEA,IAAO,oBAAQ;","names":[],"file":"chipGroup.jsx"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/components/dataDisplay/chipGroup/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { ChipGroup } from \"./chipGroup\";\nexport type { ChipGroupProps, ChipGroupOption } from \"./chipGroup\";\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,iBAAiB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "/
|
|
1
|
+
import "@smwb/ui-styles/less/components/expansionPanel/expansionPanel.entry.less";
|
|
2
2
|
import { Show, createEffect, mergeProps, onCleanup, splitProps } from "solid-js";
|
|
3
3
|
import { Portal, isServer } from "solid-js/web";
|
|
4
4
|
import cn from "clsx";
|
|
@@ -162,4 +162,4 @@ export {
|
|
|
162
162
|
ExpansionPanel,
|
|
163
163
|
expansionPanel_default as default
|
|
164
164
|
};
|
|
165
|
-
//# sourceMappingURL=expansionPanel.
|
|
165
|
+
//# sourceMappingURL=expansionPanel.jsx.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/expansionPanel/expansionPanel.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/expansionPanel/expansionPanel.entry.less\";\nimport { type JSX, Show, createEffect, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Button } from \"../../inputs/button\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type ExpansionMode = \"tile\" | \"row\" | \"fullscreen\";\n\nexport interface ExpansionPanelLabels {\n expandRow?: string;\n collapseRow?: string;\n expandFullscreen?: string;\n closeFullscreen?: string;\n placeholder?: string;\n placeholderClose?: string;\n}\n\nexport interface ExpansionPanelRenderContext {\n mode: ExpansionMode;\n isFullscreen: boolean;\n isFullRow: boolean;\n}\n\nexport interface ExpansionPanelControlsContext extends ExpansionPanelRenderContext {\n setMode: (next: ExpansionMode | ((current: ExpansionMode) => ExpansionMode)) => void;\n toggleRow: () => void;\n openFullscreen: () => void;\n closeFullscreen: () => void;\n labels: Required<ExpansionPanelLabels>;\n}\n\ntype ExpansionPanelChildren = JSX.Element | ((ctx: ExpansionPanelRenderContext) => JSX.Element);\ntype ExpansionPanelControls = JSX.Element | ((ctx: ExpansionPanelControlsContext) => JSX.Element);\n\nexport interface ExpansionPanelProps {\n class?: string;\n header?: JSX.Element;\n mode?: ExpansionMode;\n defaultMode?: ExpansionMode;\n onModeChange?: (mode: ExpansionMode) => void;\n disableExpand?: boolean;\n noControls?: boolean;\n renderControls?: ExpansionPanelControls;\n closeOnOutsideClick?: boolean;\n closeOnEsc?: boolean;\n labels?: ExpansionPanelLabels;\n children?: ExpansionPanelChildren;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst DEFAULT_LABELS: Required<ExpansionPanelLabels> = {\n expandRow: \"Expand to full row\",\n collapseRow: \"Collapse to grid\",\n expandFullscreen: \"Expand to fullscreen\",\n closeFullscreen: \"Close fullscreen\",\n placeholder: \"Panel is open in fullscreen\",\n placeholderClose: \"Close\",\n};\n\nexport function ExpansionPanel(props: ExpansionPanelProps): JSX.Element {\n const merged = mergeProps(\n { defaultMode: \"tile\" as ExpansionMode, disableExpand: false, noControls: false, closeOnOutsideClick: true, closeOnEsc: true },\n props\n );\n const [local] = splitProps(merged, [\n \"class\",\n \"header\",\n \"mode\",\n \"defaultMode\",\n \"onModeChange\",\n \"disableExpand\",\n \"noControls\",\n \"renderControls\",\n \"closeOnOutsideClick\",\n \"closeOnEsc\",\n \"labels\",\n \"children\",\n \"ref\",\n ]);\n\n const [mode, setMode] = createControllableState<ExpansionMode>({\n value: () => local.mode,\n defaultValue: local.defaultMode,\n onChange: (next) => local.onModeChange?.(next),\n });\n\n const labels = (): Required<ExpansionPanelLabels> => ({ ...DEFAULT_LABELS, ...local.labels });\n const effectiveMode = (): ExpansionMode => (local.disableExpand ? \"tile\" : mode());\n const isFullRow = (): boolean => effectiveMode() === \"row\";\n const isFullscreen = (): boolean => effectiveMode() === \"fullscreen\";\n\n const toggleRow = (): void => setMode((current) => (current === \"row\" ? \"tile\" : \"row\"));\n const openFullscreen = (): void => setMode(\"fullscreen\");\n const closeFullscreen = (): void => setMode(\"tile\");\n\n const controlsContext = (overlay: boolean): ExpansionPanelControlsContext => ({\n mode: effectiveMode(),\n isFullscreen: overlay,\n isFullRow: overlay ? false : isFullRow(),\n setMode,\n toggleRow,\n openFullscreen,\n closeFullscreen,\n labels: labels(),\n });\n\n const renderChildren = (overlay: boolean): JSX.Element => {\n const ctx: ExpansionPanelRenderContext = { mode: effectiveMode(), isFullscreen: overlay, isFullRow: overlay ? false : isFullRow() };\n return typeof local.children === \"function\" ? local.children(ctx) : local.children;\n };\n\n const defaultControls = (overlay: boolean): JSX.Element => {\n if (overlay) {\n return (\n <Button\n type=\"button\"\n variant=\"outlined\"\n size=\"small\"\n aria-label={labels().closeFullscreen}\n title={labels().closeFullscreen}\n onClick={closeFullscreen}\n data-testid=\"expansion-panel-close\"\n icon={<Icon name=\"close\" size={18} />}\n />\n );\n }\n return (\n <>\n <Button\n type=\"button\"\n variant=\"outlined\"\n size=\"small\"\n aria-pressed={isFullRow()}\n aria-label={isFullRow() ? labels().collapseRow : labels().expandRow}\n title={isFullRow() ? labels().collapseRow : labels().expandRow}\n onClick={toggleRow}\n data-testid=\"expansion-panel-row\"\n icon={<Icon name={isFullRow() ? \"grid_view\" : \"table_rows\"} size={18} />}\n />\n <Button\n type=\"button\"\n variant=\"outlined\"\n size=\"small\"\n aria-label={labels().expandFullscreen}\n title={labels().expandFullscreen}\n onClick={openFullscreen}\n data-testid=\"expansion-panel-fullscreen\"\n icon={<Icon name=\"open_in_full\" size={18} />}\n />\n </>\n );\n };\n\n const controlBar = (overlay: boolean): JSX.Element => {\n if (local.disableExpand || local.noControls) return null;\n const content = local.renderControls\n ? typeof local.renderControls === \"function\"\n ? local.renderControls(controlsContext(overlay))\n : local.renderControls\n : defaultControls(overlay);\n return <Show when={content}>{(c) => <div class=\"smwb-expansion-panel__controls\">{c() as JSX.Element}</div>}</Show>;\n };\n\n // Lock body scroll while fullscreen.\n createEffect(() => {\n if (!isFullscreen()) return;\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n onCleanup(() => {\n document.body.style.overflow = prev;\n });\n });\n\n // Escape closes fullscreen.\n createEffect(() => {\n if (!isFullscreen() || !local.closeOnEsc) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") setMode(\"tile\");\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const card = (): JSX.Element => (\n <div\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-expansion-panel\", { \"smwb-expansion-panel_row\": isFullRow() }, local.class)}\n data-testid=\"expansion-panel\"\n >\n <div class=\"smwb-expansion-panel__head\">\n <div class=\"smwb-expansion-panel__header\">{local.header}</div>\n {controlBar(false)}\n </div>\n <div class=\"smwb-expansion-panel__body\">{renderChildren(false)}</div>\n </div>\n );\n\n return (\n <Show when={isFullscreen()} fallback={card()}>\n <>\n <div class=\"smwb-expansion-panel__placeholder\" data-testid=\"expansion-panel-placeholder\">\n <span>{labels().placeholder}</span>\n <Button type=\"button\" variant=\"outlined\" size=\"small\" label={labels().placeholderClose} onClick={() => setMode(\"tile\")} />\n </div>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <div\n class=\"smwb-expansion-panel__overlay smwb-dark\"\n role=\"dialog\"\n aria-modal=\"true\"\n data-testid=\"expansion-panel-overlay\"\n onClick={\n local.closeOnOutsideClick\n ? (event) => {\n if (event.target === event.currentTarget) setMode(\"tile\");\n }\n : undefined\n }\n >\n <div class=\"smwb-expansion-panel__dialog\">\n <div class=\"smwb-expansion-panel__head\">\n <div class=\"smwb-expansion-panel__header\">{local.header}</div>\n {controlBar(true)}\n </div>\n <div class=\"smwb-expansion-panel__body smwb-expansion-panel__body_fullscreen\">{renderChildren(true)}</div>\n </div>\n </div>\n </Portal>\n </>\n </Show>\n );\n}\n\nexport default ExpansionPanel;\n"],"mappings":"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","names":[],"file":"expansionPanel.jsx"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/expansionPanel/expansionPanel.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/expansionPanel/expansionPanel.entry.less\";\nimport { type JSX, Show, createEffect, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Button } from \"../../inputs/button\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type ExpansionMode = \"tile\" | \"row\" | \"fullscreen\";\n\nexport interface ExpansionPanelLabels {\n expandRow?: string;\n collapseRow?: string;\n expandFullscreen?: string;\n closeFullscreen?: string;\n placeholder?: string;\n placeholderClose?: string;\n}\n\nexport interface ExpansionPanelRenderContext {\n mode: ExpansionMode;\n isFullscreen: boolean;\n isFullRow: boolean;\n}\n\nexport interface ExpansionPanelControlsContext extends ExpansionPanelRenderContext {\n setMode: (next: ExpansionMode | ((current: ExpansionMode) => ExpansionMode)) => void;\n toggleRow: () => void;\n openFullscreen: () => void;\n closeFullscreen: () => void;\n labels: Required<ExpansionPanelLabels>;\n}\n\ntype ExpansionPanelChildren = JSX.Element | ((ctx: ExpansionPanelRenderContext) => JSX.Element);\ntype ExpansionPanelControls = JSX.Element | ((ctx: ExpansionPanelControlsContext) => JSX.Element);\n\nexport interface ExpansionPanelProps {\n class?: string;\n header?: JSX.Element;\n mode?: ExpansionMode;\n defaultMode?: ExpansionMode;\n onModeChange?: (mode: ExpansionMode) => void;\n disableExpand?: boolean;\n noControls?: boolean;\n renderControls?: ExpansionPanelControls;\n closeOnOutsideClick?: boolean;\n closeOnEsc?: boolean;\n labels?: ExpansionPanelLabels;\n children?: ExpansionPanelChildren;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst DEFAULT_LABELS: Required<ExpansionPanelLabels> = {\n expandRow: \"Expand to full row\",\n collapseRow: \"Collapse to grid\",\n expandFullscreen: \"Expand to fullscreen\",\n closeFullscreen: \"Close fullscreen\",\n placeholder: \"Panel is open in fullscreen\",\n placeholderClose: \"Close\",\n};\n\nexport function ExpansionPanel(props: ExpansionPanelProps): JSX.Element {\n const merged = mergeProps(\n { defaultMode: \"tile\" as ExpansionMode, disableExpand: false, noControls: false, closeOnOutsideClick: true, closeOnEsc: true },\n props\n );\n const [local] = splitProps(merged, [\n \"class\",\n \"header\",\n \"mode\",\n \"defaultMode\",\n \"onModeChange\",\n \"disableExpand\",\n \"noControls\",\n \"renderControls\",\n \"closeOnOutsideClick\",\n \"closeOnEsc\",\n \"labels\",\n \"children\",\n \"ref\",\n ]);\n\n const [mode, setMode] = createControllableState<ExpansionMode>({\n value: () => local.mode,\n defaultValue: local.defaultMode,\n onChange: (next) => local.onModeChange?.(next),\n });\n\n const labels = (): Required<ExpansionPanelLabels> => ({ ...DEFAULT_LABELS, ...local.labels });\n const effectiveMode = (): ExpansionMode => (local.disableExpand ? \"tile\" : mode());\n const isFullRow = (): boolean => effectiveMode() === \"row\";\n const isFullscreen = (): boolean => effectiveMode() === \"fullscreen\";\n\n const toggleRow = (): void => setMode((current) => (current === \"row\" ? \"tile\" : \"row\"));\n const openFullscreen = (): void => setMode(\"fullscreen\");\n const closeFullscreen = (): void => setMode(\"tile\");\n\n const controlsContext = (overlay: boolean): ExpansionPanelControlsContext => ({\n mode: effectiveMode(),\n isFullscreen: overlay,\n isFullRow: overlay ? false : isFullRow(),\n setMode,\n toggleRow,\n openFullscreen,\n closeFullscreen,\n labels: labels(),\n });\n\n const renderChildren = (overlay: boolean): JSX.Element => {\n const ctx: ExpansionPanelRenderContext = { mode: effectiveMode(), isFullscreen: overlay, isFullRow: overlay ? false : isFullRow() };\n return typeof local.children === \"function\" ? local.children(ctx) : local.children;\n };\n\n const defaultControls = (overlay: boolean): JSX.Element => {\n if (overlay) {\n return (\n <Button\n type=\"button\"\n variant=\"outlined\"\n size=\"small\"\n aria-label={labels().closeFullscreen}\n title={labels().closeFullscreen}\n onClick={closeFullscreen}\n data-testid=\"expansion-panel-close\"\n icon={<Icon name=\"close\" size={18} />}\n />\n );\n }\n return (\n <>\n <Button\n type=\"button\"\n variant=\"outlined\"\n size=\"small\"\n aria-pressed={isFullRow()}\n aria-label={isFullRow() ? labels().collapseRow : labels().expandRow}\n title={isFullRow() ? labels().collapseRow : labels().expandRow}\n onClick={toggleRow}\n data-testid=\"expansion-panel-row\"\n icon={<Icon name={isFullRow() ? \"grid_view\" : \"table_rows\"} size={18} />}\n />\n <Button\n type=\"button\"\n variant=\"outlined\"\n size=\"small\"\n aria-label={labels().expandFullscreen}\n title={labels().expandFullscreen}\n onClick={openFullscreen}\n data-testid=\"expansion-panel-fullscreen\"\n icon={<Icon name=\"open_in_full\" size={18} />}\n />\n </>\n );\n };\n\n const controlBar = (overlay: boolean): JSX.Element => {\n if (local.disableExpand || local.noControls) return null;\n const content = local.renderControls\n ? typeof local.renderControls === \"function\"\n ? local.renderControls(controlsContext(overlay))\n : local.renderControls\n : defaultControls(overlay);\n return <Show when={content}>{(c) => <div class=\"smwb-expansion-panel__controls\">{c() as JSX.Element}</div>}</Show>;\n };\n\n // Lock body scroll while fullscreen.\n createEffect(() => {\n if (!isFullscreen()) return;\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n onCleanup(() => {\n document.body.style.overflow = prev;\n });\n });\n\n // Escape closes fullscreen.\n createEffect(() => {\n if (!isFullscreen() || !local.closeOnEsc) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") setMode(\"tile\");\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const card = (): JSX.Element => (\n <div\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-expansion-panel\", { \"smwb-expansion-panel_row\": isFullRow() }, local.class)}\n data-testid=\"expansion-panel\"\n >\n <div class=\"smwb-expansion-panel__head\">\n <div class=\"smwb-expansion-panel__header\">{local.header}</div>\n {controlBar(false)}\n </div>\n <div class=\"smwb-expansion-panel__body\">{renderChildren(false)}</div>\n </div>\n );\n\n return (\n <Show when={isFullscreen()} fallback={card()}>\n <>\n <div class=\"smwb-expansion-panel__placeholder\" data-testid=\"expansion-panel-placeholder\">\n <span>{labels().placeholder}</span>\n <Button type=\"button\" variant=\"outlined\" size=\"small\" label={labels().placeholderClose} onClick={() => setMode(\"tile\")} />\n </div>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <div\n class=\"smwb-expansion-panel__overlay smwb-dark\"\n role=\"dialog\"\n aria-modal=\"true\"\n data-testid=\"expansion-panel-overlay\"\n onClick={\n local.closeOnOutsideClick\n ? (event) => {\n if (event.target === event.currentTarget) setMode(\"tile\");\n }\n : undefined\n }\n >\n <div class=\"smwb-expansion-panel__dialog\">\n <div class=\"smwb-expansion-panel__head\">\n <div class=\"smwb-expansion-panel__header\">{local.header}</div>\n {controlBar(true)}\n </div>\n <div class=\"smwb-expansion-panel__body smwb-expansion-panel__body_fullscreen\">{renderChildren(true)}</div>\n </div>\n </div>\n </Portal>\n </>\n </Show>\n );\n}\n\nexport default ExpansionPanel;\n"],"mappings":"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","names":[],"file":"expansionPanel.jsx"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "/
|
|
1
|
+
import "@smwb/ui-styles/less/components/imagesList/imagesList.entry.less";
|
|
2
2
|
import { mergeProps, splitProps } from "solid-js";
|
|
3
3
|
import cn from "clsx";
|
|
4
4
|
import { ImagesListContext } from "./imagesListContext";
|
|
@@ -23,4 +23,4 @@ export {
|
|
|
23
23
|
ImagesList,
|
|
24
24
|
imagesList_default as default
|
|
25
25
|
};
|
|
26
|
-
//# sourceMappingURL=imagesList.
|
|
26
|
+
//# sourceMappingURL=imagesList.jsx.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/imagesList/imagesList.tsx"],"sourcesContent":["import \"/
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/imagesList/imagesList.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/imagesList/imagesList.entry.less\";\nimport { type JSX, type ParentProps, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { ImagesListContext } from \"./imagesListContext\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ImagesListProps {\n class?: string;\n rowsHeight?: number;\n cols: number;\n variant?: \"woven\" | \"masonry\" | \"default\";\n gap?: number;\n \"aria-label\"?: string;\n id?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function ImagesList(props: ParentProps<ImagesListProps>): JSX.Element {\n const merged = mergeProps({ gap: 4, cols: 3, rowsHeight: 0, variant: \"default\" as const }, props);\n const [local] = splitProps(merged, [\"class\", \"children\", \"gap\", \"cols\", \"rowsHeight\", \"variant\", \"aria-label\", \"id\", \"ref\"]);\n\n return (\n <ImagesListContext.Provider value={{ rowsHeight: local.rowsHeight, variant: local.variant }}>\n <div class={cn(\"smwb-gallery\", local.class)} data-testid=\"images-list\" ref={mergeRefs(local.ref)} id={local.id}>\n <ul\n aria-label={local[\"aria-label\"]}\n class={cn(\"smwb-gallery__list\", `smwb-${local.variant}`)}\n style={{ \"--cols-count\": `${local.cols}`, \"--gap\": `${local.gap}px` }}\n >\n {local.children}\n </ul>\n </div>\n </ImagesListContext.Provider>\n );\n}\n\nexport default ImagesList;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,YAAY,kBAAkB;AACnE,OAAO,QAAQ;AACf,SAAS,yBAAyB;AAClC,SAAS,iBAA2B;AAa7B,SAAS,WAAW,OAAkD;AAC3E,QAAM,SAAS,WAAW,EAAE,KAAK,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,UAAmB,GAAG,KAAK;AAChG,QAAM,CAAC,KAAK,IAAI,WAAW,QAAQ,CAAC,SAAS,YAAY,OAAO,QAAQ,cAAc,WAAW,cAAc,MAAM,KAAK,CAAC;AAE3H,SACE,CAAC,kBAAkB,SAAS,OAAO,EAAE,YAAY,MAAM,YAAY,SAAS,MAAM,QAAQ,GAAG;AAAA,MAC3F,CAAC,IAAI,OAAO,GAAG,gBAAgB,MAAM,KAAK,GAAG,YAAY,cAAc,KAAK,UAAU,MAAM,GAAG,GAAG,IAAI,MAAM,IAAI;AAAA,QAC9G,CAAC;AAAA,IACC,YAAY,MAAM,YAAY;AAAA,IAC9B,OAAO,GAAG,sBAAsB,QAAQ,MAAM,OAAO,EAAE;AAAA,IACvD,OAAO,EAAE,gBAAgB,GAAG,MAAM,IAAI,IAAI,SAAS,GAAG,MAAM,GAAG,KAAK;AAAA,GACrE;AAAA,WACE,MAAM,SAAS;AAAA,QAClB,EANC,GAMI;AAAA,MACP,EARC,IAQK;AAAA,IACR,EAVC,kBAAkB;AAYvB;AAEA,IAAO,qBAAQ;","names":[],"file":"imagesList.jsx"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "/
|
|
1
|
+
import "@smwb/ui-styles/less/components/imagesList/imagesListItem/imagesListItem.entry.less";
|
|
2
2
|
import { Show, createEffect, createSignal, mergeProps, splitProps } from "solid-js";
|
|
3
3
|
import cn from "clsx";
|
|
4
4
|
import { ImagesListItemModal } from "./imagesListItemModal";
|
|
@@ -53,4 +53,4 @@ export {
|
|
|
53
53
|
ImagesListItem,
|
|
54
54
|
imagesListItem_default as default
|
|
55
55
|
};
|
|
56
|
-
//# sourceMappingURL=imagesListItem.
|
|
56
|
+
//# sourceMappingURL=imagesListItem.jsx.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/dataDisplay/imagesList/imagesListItem/imagesListItem.tsx"],"sourcesContent":["import \"/
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/dataDisplay/imagesList/imagesListItem/imagesListItem.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/imagesList/imagesListItem/imagesListItem.entry.less\";\nimport { type JSX, Show, createEffect, createSignal, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { ImagesListItemModal } from \"./imagesListItemModal\";\nimport { useImagesListContext } from \"../imagesListContext\";\n\nexport interface ImagesListItemProps {\n class?: string;\n src: string;\n rowsHeight?: number;\n cols: number;\n rows: number;\n rounded?: boolean;\n itemBarPlacement?: \"top\" | \"bottom\" | \"under\";\n itemBarContent?: JSX.Element;\n alt?: string;\n}\n\nexport function ImagesListItem(props: ImagesListItemProps): JSX.Element {\n const merged = mergeProps({ cols: 1, rows: 1, itemBarPlacement: \"bottom\" as const, alt: \"image\" }, props);\n const [local] = splitProps(merged, [\n \"class\",\n \"src\",\n \"rounded\",\n \"itemBarContent\",\n \"cols\",\n \"rows\",\n \"itemBarPlacement\",\n \"alt\",\n ]);\n\n const ctx = useImagesListContext();\n const [isOpen, setIsOpen] = createSignal(false);\n\n createEffect(() => {\n document.body.style.overflow = isOpen() ? \"hidden\" : \"auto\";\n });\n\n const style = (): JSX.CSSProperties => ({\n height: ctx.rowsHeight ? `${ctx.rowsHeight * local.rows}px` : \"\",\n \"grid-row-end\": `span ${local.rows}`,\n \"grid-column-end\": `span ${local.cols}`,\n });\n\n return (\n <>\n <li\n data-testid=\"images-list-item\"\n class={cn(\"smwb-gallery__list__item\", local.class, \"smwb-gallery-item\", `smwb-${ctx.variant}`)}\n onClick={() => setIsOpen(true)}\n style={style()}\n >\n <div class=\"smwb-gallery-item__inner\">\n <div class=\"smwb-gallery-item__img-wrapper\">\n <img src={local.src} alt={local.alt || \"image\"} class={cn(\"smwb-gallery-item__img\", { \"smwb-rounded\": local.rounded })} />\n </div>\n <Show when={local.itemBarContent}>\n <div\n class={cn(\"smwb-gallery-item__bar\", local.class, `smwb-${local.itemBarPlacement}`, { \"smwb-rounded\": local.rounded })}\n >\n {local.itemBarContent}\n </div>\n </Show>\n </div>\n </li>\n <ImagesListItemModal src={local.src} onClose={() => setIsOpen(false)} isOpen={isOpen()} />\n </>\n );\n}\n\nexport default ImagesListItem;\n"],"mappings":"AAAA,OAAO;AACP,SAAmB,MAAM,cAAc,cAAc,YAAY,kBAAkB;AACnF,OAAO,QAAQ;AACf,SAAS,2BAA2B;AACpC,SAAS,4BAA4B;AAc9B,SAAS,eAAe,OAAyC;AACtE,QAAM,SAAS,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,kBAAkB,UAAmB,KAAK,QAAQ,GAAG,KAAK;AACxG,QAAM,CAAC,KAAK,IAAI,WAAW,QAAQ;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,MAAM,qBAAqB;AACjC,QAAM,CAAC,QAAQ,SAAS,IAAI,aAAa,KAAK;AAE9C,eAAa,MAAM;AACjB,aAAS,KAAK,MAAM,WAAW,OAAO,IAAI,WAAW;AAAA,EACvD,CAAC;AAED,QAAM,QAAQ,OAA0B;AAAA,IACtC,QAAQ,IAAI,aAAa,GAAG,IAAI,aAAa,MAAM,IAAI,OAAO;AAAA,IAC9D,gBAAgB,QAAQ,MAAM,IAAI;AAAA,IAClC,mBAAmB,QAAQ,MAAM,IAAI;AAAA,EACvC;AAEA,SACE,EAAE;AAAA,MACA,CAAC;AAAA,IACC,YAAY;AAAA,IACZ,OAAO,GAAG,4BAA4B,MAAM,OAAO,qBAAqB,QAAQ,IAAI,OAAO,EAAE;AAAA,IAC7F,SAAS,MAAM,UAAU,IAAI;AAAA,IAC7B,OAAO,MAAM;AAAA,GACd;AAAA,QACC,CAAC,IAAI,MAAM,2BAA2B;AAAA,UACpC,CAAC,IAAI,MAAM,iCAAiC;AAAA,YAC1C,CAAC,IAAI,KAAK,MAAM,KAAK,KAAK,MAAM,OAAO,SAAS,OAAO,GAAG,0BAA0B,EAAE,gBAAgB,MAAM,QAAQ,CAAC,GAAG,EAAE;AAAA,UAC5H,EAFC,IAEK;AAAA,UACN,CAAC,KAAK,MAAM,MAAM,gBAAgB;AAAA,YAChC,CAAC;AAAA,IACC,OAAO,GAAG,0BAA0B,MAAM,OAAO,QAAQ,MAAM,gBAAgB,IAAI,EAAE,gBAAgB,MAAM,QAAQ,CAAC;AAAA,GACrH;AAAA,eACE,MAAM,eAAe;AAAA,YACxB,EAJC,IAIK;AAAA,UACR,EANC,KAMM;AAAA,QACT,EAXC,IAWK;AAAA,MACR,EAlBC,GAkBI;AAAA,MACL,CAAC,oBAAoB,KAAK,MAAM,KAAK,SAAS,MAAM,UAAU,KAAK,GAAG,QAAQ,OAAO,GAAG,EAAE;AAAA,IAC5F;AAEJ;AAEA,IAAO,yBAAQ;","names":[],"file":"imagesListItem.jsx"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/components/dataDisplay/lazyImage/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { LazyImage } from \"./lazyImage\";\nexport type { LazyImageProps } from \"./lazyImage\";\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,iBAAiB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import "@smwb/ui-styles/less/components/lazyImage/lazyImage.entry.less";
|
|
2
|
+
import { Show, createSignal, mergeProps, onCleanup, onMount, splitProps } from "solid-js";
|
|
3
|
+
import cn from "clsx";
|
|
4
|
+
import { mergeRefs } from "../../../primitives/mergeRefs";
|
|
5
|
+
function LazyImage(props) {
|
|
6
|
+
const merged = mergeProps({ lazy: true }, props);
|
|
7
|
+
const [local, rest] = splitProps(merged, [
|
|
8
|
+
"src",
|
|
9
|
+
"alt",
|
|
10
|
+
"fallback",
|
|
11
|
+
"lazy",
|
|
12
|
+
"aspectRatio",
|
|
13
|
+
"class",
|
|
14
|
+
"onError",
|
|
15
|
+
"ref"
|
|
16
|
+
]);
|
|
17
|
+
const [failed, setFailed] = createSignal(false);
|
|
18
|
+
const [visible, setVisible] = createSignal(!merged.lazy);
|
|
19
|
+
let imgEl;
|
|
20
|
+
onMount(() => {
|
|
21
|
+
if (!local.lazy || visible() || !imgEl) return;
|
|
22
|
+
if (typeof IntersectionObserver === "undefined") {
|
|
23
|
+
setVisible(true);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const io = new IntersectionObserver((entries) => {
|
|
27
|
+
if (entries.some((entry) => entry.isIntersecting)) {
|
|
28
|
+
setVisible(true);
|
|
29
|
+
io.disconnect();
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
io.observe(imgEl);
|
|
33
|
+
onCleanup(() => io.disconnect());
|
|
34
|
+
});
|
|
35
|
+
const onError = (event) => {
|
|
36
|
+
setFailed(true);
|
|
37
|
+
local.onError?.(event);
|
|
38
|
+
};
|
|
39
|
+
const showFallback = () => failed() || !local.src;
|
|
40
|
+
const resolvedSrc = () => visible() ? local.src : void 0;
|
|
41
|
+
const style = () => local.aspectRatio != null ? { "aspect-ratio": String(local.aspectRatio) } : void 0;
|
|
42
|
+
return <span class={cn("smwb-lazy-image", local.class, { "smwb-lazy-image--empty": showFallback() })} style={style()}>
|
|
43
|
+
<Show when={showFallback() && local.fallback}>
|
|
44
|
+
<span class="smwb-lazy-image__fallback">{local.fallback}</span>
|
|
45
|
+
</Show>
|
|
46
|
+
<Show when={!showFallback()}>
|
|
47
|
+
<img
|
|
48
|
+
{...rest}
|
|
49
|
+
ref={mergeRefs(local.ref, (el) => imgEl = el)}
|
|
50
|
+
class="smwb-lazy-image__img"
|
|
51
|
+
src={resolvedSrc()}
|
|
52
|
+
alt={local.alt ?? ""}
|
|
53
|
+
loading={local.lazy ? "lazy" : void 0}
|
|
54
|
+
decoding="async"
|
|
55
|
+
onError={onError}
|
|
56
|
+
/>
|
|
57
|
+
</Show>
|
|
58
|
+
</span>;
|
|
59
|
+
}
|
|
60
|
+
var lazyImage_default = LazyImage;
|
|
61
|
+
export {
|
|
62
|
+
LazyImage,
|
|
63
|
+
lazyImage_default as default
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=lazyImage.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/lazyImage/lazyImage.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/lazyImage/lazyImage.entry.less\";\nimport { 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"],"mappings":"AAAA,OAAO;AACP,SAAmB,MAAM,cAAc,YAAY,WAAW,SAAS,kBAAkB;AACzF,OAAO,QAAQ;AACf,SAAS,iBAA2B;AAuB7B,SAAS,UAAU,OAAoC;AAC5D,QAAM,SAAS,WAAW,EAAE,MAAM,KAAK,GAAG,KAAK;AAC/C,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,QAAQ,SAAS,IAAI,aAAa,KAAK;AAE9C,QAAM,CAAC,SAAS,UAAU,IAAI,aAAa,CAAC,OAAO,IAAI;AACvD,MAAI;AAEJ,UAAQ,MAAM;AACZ,QAAI,CAAC,MAAM,QAAQ,QAAQ,KAAK,CAAC,MAAO;AACxC,QAAI,OAAO,yBAAyB,aAAa;AAC/C,iBAAW,IAAI;AACf;AAAA,IACF;AACA,UAAM,KAAK,IAAI,qBAAqB,CAAC,YAAY;AAC/C,UAAI,QAAQ,KAAK,CAAC,UAAU,MAAM,cAAc,GAAG;AACjD,mBAAW,IAAI;AACf,WAAG,WAAW;AAAA,MAChB;AAAA,IACF,CAAC;AACD,OAAG,QAAQ,KAAK;AAChB,cAAU,MAAM,GAAG,WAAW,CAAC;AAAA,EACjC,CAAC;AAED,QAAM,UAAU,CAAC,UAAuB;AACtC,cAAU,IAAI;AACd,UAAM,UAAU,KAAK;AAAA,EACvB;AAEA,QAAM,eAAe,MAAe,OAAO,KAAK,CAAC,MAAM;AACvD,QAAM,cAAc,MAA2B,QAAQ,IAAI,MAAM,MAAM;AACvE,QAAM,QAAQ,MACZ,MAAM,eAAe,OAAO,EAAE,gBAAgB,OAAO,MAAM,WAAW,EAAE,IAAI;AAE9E,SACE,CAAC,KAAK,OAAO,GAAG,mBAAmB,MAAM,OAAO,EAAE,0BAA0B,aAAa,EAAE,CAAC,GAAG,OAAO,MAAM,GAAG;AAAA,MAC7G,CAAC,KAAK,MAAM,aAAa,KAAK,MAAM,UAAU;AAAA,QAC5C,CAAC,KAAK,MAAM,6BAA6B,MAAM,SAAS,EAAvD,KAA8D;AAAA,MACjE,EAFC,KAEM;AAAA,MACP,CAAC,KAAK,MAAM,CAAC,aAAa,GAAG;AAAA,QAC3B,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,KAAK,CAAC,OAAQ,QAAQ,EAAuB;AAAA,IAClE,MAAM;AAAA,IACN,KAAK,YAAY;AAAA,IACjB,KAAK,MAAM,OAAO;AAAA,IAClB,SAAS,MAAM,OAAO,SAAS;AAAA,IAC/B,SAAS;AAAA,IACT,SAAS;AAAA,EACX,EAAE;AAAA,MACJ,EAXC,KAWM;AAAA,IACT,EAhBC;AAkBL;AAEA,IAAO,oBAAQ;","names":[],"file":"lazyImage.jsx"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "/
|
|
1
|
+
import "@smwb/ui-styles/less/components/list/list.entry.less";
|
|
2
2
|
import { Show, splitProps } from "solid-js";
|
|
3
3
|
import cn from "clsx";
|
|
4
4
|
import { mergeRefs } from "../../../primitives/mergeRefs";
|
|
@@ -22,4 +22,4 @@ export {
|
|
|
22
22
|
List,
|
|
23
23
|
list_default as default
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=list.
|
|
25
|
+
//# sourceMappingURL=list.jsx.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/list/list.tsx"],"sourcesContent":["import \"/
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/list/list.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/list/list.entry.less\";\nimport { type JSX, type ParentProps, Show, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ListProps extends JSX.HTMLAttributes<HTMLUListElement> {\n /** Compact vertical rhythm. */\n dense?: boolean;\n /** Section subheader rendered before the items. */\n subheader?: JSX.Element;\n ref?: Ref<HTMLUListElement>;\n}\n\nexport function List(props: ParentProps<ListProps>): JSX.Element {\n const [local, rest] = splitProps(props, [\"class\", \"dense\", \"subheader\", \"children\", \"ref\"]);\n return (\n <ul\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"list\"\n role=\"list\"\n class={cn(\"smwb-list\", { \"smwb-list_dense\": local.dense }, local.class)}\n >\n <Show when={local.subheader}>\n <li class=\"smwb-list__subheader\">{local.subheader}</li>\n </Show>\n {local.children}\n </ul>\n );\n}\n\nexport default List;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,MAAM,kBAAkB;AAC7D,OAAO,QAAQ;AACf,SAAS,iBAA2B;AAU7B,SAAS,KAAK,OAA4C;AAC/D,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,OAAO,CAAC,SAAS,SAAS,aAAa,YAAY,KAAK,CAAC;AAC1F,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,OAAO,GAAG,aAAa,EAAE,mBAAmB,MAAM,MAAM,GAAG,MAAM,KAAK;AAAA,GACvE;AAAA,MACC,CAAC,KAAK,MAAM,MAAM,WAAW;AAAA,QAC3B,CAAC,GAAG,MAAM,wBAAwB,MAAM,UAAU,EAAjD,GAAsD;AAAA,MACzD,EAFC,KAEM;AAAA,OACN,MAAM,SAAS;AAAA,IAClB,EAXC;AAaL;AAEA,IAAO,eAAQ;","names":[],"file":"list.jsx"}
|