@smwb/ui-solid 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -0
- package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
- package/dist/assets/styles/less/components/card/card.entry.css +1 -1
- package/dist/assets/styles/less/components/checkbox/checkbox.entry.css +1 -1
- package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
- package/dist/assets/styles/less/components/dagView/dagView.entry.css +1 -0
- package/dist/assets/styles/less/components/menu/menu.entry.css +1 -1
- package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -1
- package/dist/assets/styles/less/components/radioButton/radioButton.entry.css +1 -1
- package/dist/assets/styles/less/components/rating/rating.entry.css +1 -1
- package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
- package/dist/assets/styles/less/components/table/table.entry.css +1 -1
- package/dist/assets/styles/less/components/thumbCard/thumbCard.entry.css +1 -1
- package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
- package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
- package/dist/components/base/animateHeight/animateHeight.js +41 -42
- package/dist/components/base/animateHeight/animateHeight.js.map +1 -1
- package/dist/components/base/icon/icon.d.ts +6 -2
- package/dist/components/base/icon/icon.js +41 -41
- package/dist/components/base/icon/icon.js.map +1 -1
- package/dist/components/base/ripple/ripple.d.ts +3 -0
- package/dist/components/base/ripple/ripple.js +46 -34
- package/dist/components/base/ripple/ripple.js.map +1 -1
- package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
- package/dist/components/dataDisplay/avatar/avatar.js +37 -33
- package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/components/dataDisplay/card/card.d.ts +32 -1
- package/dist/components/dataDisplay/card/card.js +47 -34
- package/dist/components/dataDisplay/card/card.js.map +1 -1
- package/dist/components/dataDisplay/carousel/carousel.js +92 -88
- package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/components/dataDisplay/chart/chart.d.ts +2 -0
- package/dist/components/dataDisplay/chat/chatIconButton.js +23 -13
- package/dist/components/dataDisplay/chat/chatIconButton.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatLayout.d.ts +2 -0
- package/dist/components/dataDisplay/chat/chatLayout.js +33 -29
- package/dist/components/dataDisplay/chat/chatLayout.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatOverlayLayout.d.ts +2 -0
- package/dist/components/dataDisplay/chat/chatOverlayLayout.js +19 -17
- package/dist/components/dataDisplay/chat/chatOverlayLayout.js.map +1 -1
- package/dist/components/dataDisplay/chip/chip.d.ts +32 -0
- package/dist/components/dataDisplay/chip/chip.js +104 -63
- package/dist/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/components/dataDisplay/chipGroup/chipGroup.js +44 -39
- package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
- package/dist/components/dataDisplay/dagView/dagLayout.d.ts +74 -0
- package/dist/components/dataDisplay/dagView/dagLayout.js +284 -0
- package/dist/components/dataDisplay/dagView/dagLayout.js.map +1 -0
- package/dist/components/dataDisplay/dagView/dagView.d.ts +151 -0
- package/dist/components/dataDisplay/dagView/dagView.js +488 -0
- package/dist/components/dataDisplay/dagView/dagView.js.map +1 -0
- package/dist/components/dataDisplay/dagView/index.d.ts +4 -0
- package/dist/components/dataDisplay/dagView/panZoom.d.ts +75 -0
- package/dist/components/dataDisplay/dagView/panZoom.js +161 -0
- package/dist/components/dataDisplay/dagView/panZoom.js.map +1 -0
- package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +11 -3
- package/dist/components/dataDisplay/descriptionList/descriptionList.js +20 -24
- package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +114 -81
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
- package/dist/components/dataDisplay/kanban/kanban.d.ts +6 -0
- package/dist/components/dataDisplay/kanban/kanban.js +71 -61
- package/dist/components/dataDisplay/kanban/kanban.js.map +1 -1
- package/dist/components/dataDisplay/lazyImage/lazyImage.js +14 -12
- package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
- package/dist/components/dataDisplay/list/list.d.ts +2 -0
- package/dist/components/dataDisplay/list/list.js +16 -12
- package/dist/components/dataDisplay/list/list.js.map +1 -1
- package/dist/components/dataDisplay/list/listItem.js +20 -18
- package/dist/components/dataDisplay/list/listItem.js.map +1 -1
- package/dist/components/dataDisplay/meter/meter.d.ts +2 -0
- package/dist/components/dataDisplay/meter/meter.js +15 -13
- package/dist/components/dataDisplay/meter/meter.js.map +1 -1
- package/dist/components/dataDisplay/personChip/personChip.d.ts +2 -0
- package/dist/components/dataDisplay/personChip/personChip.js +12 -10
- package/dist/components/dataDisplay/personChip/personChip.js.map +1 -1
- package/dist/components/dataDisplay/stat/stat.d.ts +2 -0
- package/dist/components/dataDisplay/stat/stat.js +41 -43
- package/dist/components/dataDisplay/stat/stat.js.map +1 -1
- package/dist/components/dataDisplay/table/table.d.ts +10 -1
- package/dist/components/dataDisplay/table/table.js +46 -22
- package/dist/components/dataDisplay/table/table.js.map +1 -1
- package/dist/components/dataDisplay/table/tableBody.js +25 -12
- package/dist/components/dataDisplay/table/tableBody.js.map +1 -1
- package/dist/components/dataDisplay/table/tableCell.d.ts +10 -2
- package/dist/components/dataDisplay/table/tableCell.js +15 -14
- package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tableColumns.d.ts +146 -0
- package/dist/components/dataDisplay/table/tableColumns.js +254 -0
- package/dist/components/dataDisplay/table/tableColumns.js.map +1 -0
- package/dist/components/dataDisplay/table/tableEntities.d.ts +4 -0
- package/dist/components/dataDisplay/table/tableEntities.js +6 -0
- package/dist/components/dataDisplay/table/tableEntities.js.map +1 -0
- package/dist/components/dataDisplay/table/tableHead.js +29 -11
- package/dist/components/dataDisplay/table/tableHead.js.map +1 -1
- package/dist/components/dataDisplay/table/tableHeadCell.d.ts +23 -1
- package/dist/components/dataDisplay/table/tableHeadCell.js +51 -26
- package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tableHtmlText.d.ts +8 -0
- package/dist/components/dataDisplay/table/tableHtmlText.js +121 -0
- package/dist/components/dataDisplay/table/tableHtmlText.js.map +1 -0
- package/dist/components/dataDisplay/table/tableRow.d.ts +2 -0
- package/dist/components/dataDisplay/table/tableRow.js +28 -13
- package/dist/components/dataDisplay/table/tableRow.js.map +1 -1
- package/dist/components/dataDisplay/thumbCard/thumbCard.d.ts +44 -3
- package/dist/components/dataDisplay/thumbCard/thumbCard.js +86 -58
- package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
- package/dist/components/dataDisplay/treeView/treeView.d.ts +2 -0
- package/dist/components/dataDisplay/treeView/treeView.js +4 -2
- package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/components/dataDisplay/typography/typography.js +22 -26
- package/dist/components/dataDisplay/typography/typography.js.map +1 -1
- package/dist/components/feedBack/emptyState/emptyState.d.ts +2 -0
- package/dist/components/feedBack/emptyState/emptyState.js +20 -16
- package/dist/components/feedBack/emptyState/emptyState.js.map +1 -1
- package/dist/components/feedBack/message/message.d.ts +2 -0
- package/dist/components/feedBack/message/message.js +17 -13
- package/dist/components/feedBack/message/message.js.map +1 -1
- package/dist/components/feedBack/modal/modal.js +20 -16
- package/dist/components/feedBack/modal/modal.js.map +1 -1
- package/dist/components/feedBack/skeleton/skeleton.d.ts +10 -2
- package/dist/components/feedBack/skeleton/skeleton.js +43 -35
- package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
- package/dist/components/feedBack/snackbar/snackbar.js +24 -20
- package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
- package/dist/components/feedBack/tooltip/tooltip.d.ts +9 -1
- package/dist/components/feedBack/tooltip/tooltip.js +65 -41
- package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/components/inputs/button/button.d.ts +2 -0
- package/dist/components/inputs/button/button.js +48 -20
- package/dist/components/inputs/button/button.js.map +1 -1
- package/dist/components/inputs/buttonGroups/buttonGroup.d.ts +2 -0
- package/dist/components/inputs/buttonGroups/buttonGroup.js +14 -10
- package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
- package/dist/components/inputs/checkbox/checkbox.d.ts +10 -0
- package/dist/components/inputs/checkbox/checkbox.js +59 -36
- package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
- package/dist/components/inputs/datePicker/datePicker.js +108 -97
- package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerActionLabel.js +19 -17
- package/dist/components/inputs/datePicker/datePickerActionLabel.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerDay.js +41 -25
- package/dist/components/inputs/datePicker/datePickerDay.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerIconButton.js +24 -14
- package/dist/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js +90 -79
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/components/inputs/floatingButton/floatingButton.js +26 -16
- package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
- package/dist/components/inputs/radioButton/radioButton.d.ts +9 -0
- package/dist/components/inputs/radioButton/radioButton.js +48 -34
- package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
- package/dist/components/inputs/rating/rating.d.ts +9 -0
- package/dist/components/inputs/rating/rating.js +74 -53
- package/dist/components/inputs/rating/rating.js.map +1 -1
- package/dist/components/inputs/selectField/dropdownMenu.d.ts +21 -1
- package/dist/components/inputs/selectField/dropdownMenu.js +268 -143
- package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
- package/dist/components/inputs/selectField/optionNavigation.d.ts +17 -0
- package/dist/components/inputs/selectField/optionNavigation.js +37 -0
- package/dist/components/inputs/selectField/optionNavigation.js.map +1 -0
- package/dist/components/inputs/selectField/selectField.d.ts +32 -1
- package/dist/components/inputs/selectField/selectField.js +297 -126
- package/dist/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/components/inputs/slider/slider.d.ts +25 -3
- package/dist/components/inputs/slider/slider.js +320 -197
- package/dist/components/inputs/slider/slider.js.map +1 -1
- package/dist/components/inputs/textField/textField.d.ts +9 -1
- package/dist/components/inputs/textField/textField.js +104 -51
- package/dist/components/inputs/textField/textField.js.map +1 -1
- package/dist/components/inputs/textField/textFieldWrapper.d.ts +14 -0
- package/dist/components/inputs/textField/textFieldWrapper.js +52 -45
- package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
- package/dist/components/inputs/timePicker/timePicker.js +73 -62
- package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/components/inputs/toggle/toggle.d.ts +4 -0
- package/dist/components/inputs/toggle/toggle.js +43 -31
- package/dist/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/components/inputs/valueSlider/valueSlider.d.ts +12 -0
- package/dist/components/inputs/valueSlider/valueSlider.js +32 -27
- package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
- package/dist/components/layout/appLayout/appLayout.d.ts +2 -0
- package/dist/components/layout/appLayout/appLayout.js +32 -30
- package/dist/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/components/layout/divider/divider.d.ts +2 -0
- package/dist/components/layout/divider/divider.js +22 -20
- package/dist/components/layout/divider/divider.js.map +1 -1
- package/dist/components/layout/floatingWindow/floatingWindow.d.ts +2 -0
- package/dist/components/layout/floatingWindow/floatingWindow.js +171 -168
- package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
- package/dist/components/layout/grid/grid.d.ts +8 -0
- package/dist/components/layout/grid/grid.js +52 -44
- package/dist/components/layout/grid/grid.js.map +1 -1
- package/dist/components/layout/page/page.d.ts +2 -0
- package/dist/components/layout/page/page.js +14 -12
- package/dist/components/layout/page/page.js.map +1 -1
- package/dist/components/layout/pageHeader/pageHeader.d.ts +2 -0
- package/dist/components/layout/pageHeader/pageHeader.js +23 -21
- package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
- package/dist/components/layout/sectionHeader/sectionHeader.d.ts +2 -0
- package/dist/components/layout/sectionHeader/sectionHeader.js +38 -36
- package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -1
- package/dist/components/layout/sheet/sheet.d.ts +2 -0
- package/dist/components/layout/sheet/sheet.js +50 -48
- package/dist/components/layout/sheet/sheet.js.map +1 -1
- package/dist/components/layout/stack/stack.d.ts +2 -0
- package/dist/components/layout/stack/stack.js +26 -24
- package/dist/components/layout/stack/stack.js.map +1 -1
- package/dist/components/navigation/appBar/appBar.d.ts +2 -0
- package/dist/components/navigation/appBar/appBar.js +18 -16
- package/dist/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/components/navigation/bottomBar/bottomBar.js +125 -120
- package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +2 -0
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js +18 -14
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/components/navigation/menu/menu.d.ts +6 -0
- package/dist/components/navigation/menu/menu.js.map +1 -1
- package/dist/components/navigation/menu/menuComponent.js +12 -23
- package/dist/components/navigation/menu/menuComponent.js.map +1 -1
- package/dist/components/navigation/menu/menuContext.d.ts +2 -0
- package/dist/components/navigation/menu/menuContext.js.map +1 -1
- package/dist/components/navigation/menu/menuFloating.js +54 -46
- package/dist/components/navigation/menu/menuFloating.js.map +1 -1
- package/dist/components/navigation/menu/menuItem.d.ts +4 -0
- package/dist/components/navigation/menu/menuItem.js +58 -33
- package/dist/components/navigation/menu/menuItem.js.map +1 -1
- package/dist/components/navigation/menu/menuList.d.ts +4 -0
- package/dist/components/navigation/menu/menuList.js +34 -16
- package/dist/components/navigation/menu/menuList.js.map +1 -1
- package/dist/components/navigation/menu/menuSubmenu.d.ts +8 -1
- package/dist/components/navigation/menu/menuSubmenu.js +58 -38
- package/dist/components/navigation/menu/menuSubmenu.js.map +1 -1
- package/dist/components/navigation/pagination/pagination.d.ts +2 -0
- package/dist/components/navigation/pagination/pagination.js +28 -24
- package/dist/components/navigation/pagination/pagination.js.map +1 -1
- package/dist/components/navigation/sidebar/sidebar.js +27 -25
- package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/components/navigation/stepper/stepper.d.ts +2 -0
- package/dist/components/navigation/stepper/stepper.js +46 -42
- package/dist/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/components/navigation/tabs/tab/tab.js +46 -35
- package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/components/navigation/tabs/tabs.d.ts +7 -0
- package/dist/components/navigation/tabs/tabs.js +90 -75
- package/dist/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/components/navigation/tabs/tabsContext.d.ts +6 -4
- package/dist/components/navigation/tabs/tabsContext.js.map +1 -1
- package/dist/connects/rt/table/table.d.ts +16 -1
- package/dist/headless/components/base/animateHeight/animateHeight.js +41 -42
- package/dist/headless/components/base/animateHeight/animateHeight.js.map +1 -1
- package/dist/headless/components/base/icon/icon.js +40 -40
- package/dist/headless/components/base/icon/icon.js.map +1 -1
- package/dist/headless/components/base/ripple/ripple.js +46 -34
- package/dist/headless/components/base/ripple/ripple.js.map +1 -1
- package/dist/headless/components/dataDisplay/avatar/avatar.js +37 -33
- package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/headless/components/dataDisplay/card/card.js +44 -31
- package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
- package/dist/headless/components/dataDisplay/carousel/carousel.js +102 -98
- package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatIconButton.js +23 -13
- package/dist/headless/components/dataDisplay/chat/chatIconButton.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatLayout.js +33 -29
- package/dist/headless/components/dataDisplay/chat/chatLayout.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatOverlayLayout.js +19 -17
- package/dist/headless/components/dataDisplay/chat/chatOverlayLayout.js.map +1 -1
- package/dist/headless/components/dataDisplay/chip/chip.js +104 -63
- package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +44 -39
- package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
- package/dist/headless/components/dataDisplay/dagView/dagLayout.js +284 -0
- package/dist/headless/components/dataDisplay/dagView/dagLayout.js.map +1 -0
- package/dist/headless/components/dataDisplay/dagView/dagView.js +486 -0
- package/dist/headless/components/dataDisplay/dagView/dagView.js.map +1 -0
- package/dist/headless/components/dataDisplay/dagView/panZoom.js +161 -0
- package/dist/headless/components/dataDisplay/dagView/panZoom.js.map +1 -0
- package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js +15 -19
- package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
- package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +114 -81
- package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
- package/dist/headless/components/dataDisplay/kanban/kanban.js +71 -61
- package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -1
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +14 -12
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
- package/dist/headless/components/dataDisplay/list/list.js +16 -12
- package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
- package/dist/headless/components/dataDisplay/list/listItem.js +20 -18
- package/dist/headless/components/dataDisplay/list/listItem.js.map +1 -1
- package/dist/headless/components/dataDisplay/meter/meter.js +14 -12
- package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
- package/dist/headless/components/dataDisplay/personChip/personChip.js +12 -10
- package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -1
- package/dist/headless/components/dataDisplay/stat/stat.js +43 -45
- package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/table.js +47 -23
- package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableBody.js +25 -12
- package/dist/headless/components/dataDisplay/table/tableBody.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableCell.js +15 -14
- package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableColumns.js +254 -0
- package/dist/headless/components/dataDisplay/table/tableColumns.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/tableEntities.js +6 -0
- package/dist/headless/components/dataDisplay/table/tableEntities.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/tableHead.js +29 -11
- package/dist/headless/components/dataDisplay/table/tableHead.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js +51 -26
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableHtmlText.js +121 -0
- package/dist/headless/components/dataDisplay/table/tableHtmlText.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/tableRow.js +28 -13
- package/dist/headless/components/dataDisplay/table/tableRow.js.map +1 -1
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +86 -58
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
- package/dist/headless/components/dataDisplay/treeView/treeView.js +4 -2
- package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/headless/components/dataDisplay/typography/typography.js +21 -25
- package/dist/headless/components/dataDisplay/typography/typography.js.map +1 -1
- package/dist/headless/components/feedBack/emptyState/emptyState.js +9 -5
- package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -1
- package/dist/headless/components/feedBack/message/message.js +17 -13
- package/dist/headless/components/feedBack/message/message.js.map +1 -1
- package/dist/headless/components/feedBack/modal/modal.js +20 -16
- package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
- package/dist/headless/components/feedBack/skeleton/skeleton.js +43 -35
- package/dist/headless/components/feedBack/skeleton/skeleton.js.map +1 -1
- package/dist/headless/components/feedBack/snackbar/snackbar.js +30 -26
- package/dist/headless/components/feedBack/snackbar/snackbar.js.map +1 -1
- package/dist/headless/components/feedBack/tooltip/tooltip.js +63 -39
- package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/headless/components/inputs/button/button.js +51 -23
- package/dist/headless/components/inputs/button/button.js.map +1 -1
- package/dist/headless/components/inputs/buttonGroups/buttonGroup.js +22 -18
- package/dist/headless/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
- package/dist/headless/components/inputs/checkbox/checkbox.js +59 -36
- package/dist/headless/components/inputs/checkbox/checkbox.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePicker.js +106 -95
- package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerActionLabel.js +19 -17
- package/dist/headless/components/inputs/datePicker/datePickerActionLabel.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerDay.js +41 -25
- package/dist/headless/components/inputs/datePicker/datePickerDay.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerIconButton.js +24 -14
- package/dist/headless/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +90 -79
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/headless/components/inputs/floatingButton/floatingButton.js +25 -15
- package/dist/headless/components/inputs/floatingButton/floatingButton.js.map +1 -1
- package/dist/headless/components/inputs/radioButton/radioButton.js +48 -34
- package/dist/headless/components/inputs/radioButton/radioButton.js.map +1 -1
- package/dist/headless/components/inputs/rating/rating.js +74 -53
- package/dist/headless/components/inputs/rating/rating.js.map +1 -1
- package/dist/headless/components/inputs/selectField/dropdownMenu.js +268 -143
- package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
- package/dist/headless/components/inputs/selectField/optionNavigation.js +37 -0
- package/dist/headless/components/inputs/selectField/optionNavigation.js.map +1 -0
- package/dist/headless/components/inputs/selectField/selectField.js +297 -126
- package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/headless/components/inputs/slider/slider.js +320 -197
- package/dist/headless/components/inputs/slider/slider.js.map +1 -1
- package/dist/headless/components/inputs/textField/textField.js +104 -51
- package/dist/headless/components/inputs/textField/textField.js.map +1 -1
- package/dist/headless/components/inputs/textField/textFieldWrapper.js +52 -45
- package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
- package/dist/headless/components/inputs/timePicker/timePicker.js +74 -63
- package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/headless/components/inputs/toggle/toggle.js +42 -30
- package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/headless/components/inputs/valueSlider/valueSlider.js +33 -28
- package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
- package/dist/headless/components/layout/appLayout/appLayout.js +29 -27
- package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/headless/components/layout/divider/divider.js +19 -17
- package/dist/headless/components/layout/divider/divider.js.map +1 -1
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js +185 -182
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -1
- package/dist/headless/components/layout/grid/grid.js +54 -46
- package/dist/headless/components/layout/grid/grid.js.map +1 -1
- package/dist/headless/components/layout/page/page.js +12 -10
- package/dist/headless/components/layout/page/page.js.map +1 -1
- package/dist/headless/components/layout/pageHeader/pageHeader.js +22 -20
- package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js +39 -37
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -1
- package/dist/headless/components/layout/sheet/sheet.js +50 -48
- package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
- package/dist/headless/components/layout/stack/stack.js +23 -21
- package/dist/headless/components/layout/stack/stack.js.map +1 -1
- package/dist/headless/components/navigation/appBar/appBar.js +15 -13
- package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/headless/components/navigation/bottomBar/bottomBar.js +125 -120
- package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +13 -9
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/headless/components/navigation/menu/menu.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuComponent.js +12 -23
- package/dist/headless/components/navigation/menu/menuComponent.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuContext.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuFloating.js +54 -46
- package/dist/headless/components/navigation/menu/menuFloating.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuItem.js +58 -33
- package/dist/headless/components/navigation/menu/menuItem.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuList.js +34 -16
- package/dist/headless/components/navigation/menu/menuList.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuSubmenu.js +58 -38
- package/dist/headless/components/navigation/menu/menuSubmenu.js.map +1 -1
- package/dist/headless/components/navigation/pagination/pagination.js +23 -19
- package/dist/headless/components/navigation/pagination/pagination.js.map +1 -1
- package/dist/headless/components/navigation/sidebar/sidebar.js +14 -12
- package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/headless/components/navigation/stepper/stepper.js +38 -34
- package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tab/tab.js +48 -37
- package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabs.js +91 -76
- package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabsContext.js.map +1 -1
- package/dist/headless/index.js +224 -220
- package/dist/headless/index.js.map +1 -1
- package/dist/headless/primitives/createCssTransition.js +31 -28
- package/dist/headless/primitives/createCssTransition.js.map +1 -1
- package/dist/headless/primitives/createDismissOnEscape.js +14 -0
- package/dist/headless/primitives/createDismissOnEscape.js.map +1 -0
- package/dist/headless/primitives/createFocusTrap.js +1 -0
- package/dist/headless/primitives/createFocusTrap.js.map +1 -1
- package/dist/headless/primitives/createHelperText.js +14 -0
- package/dist/headless/primitives/createHelperText.js.map +1 -0
- package/dist/headless/primitives/mergeStyle.js +9 -0
- package/dist/headless/primitives/mergeStyle.js.map +1 -0
- package/dist/headless/primitives/overlayLayer.js +14 -7
- package/dist/headless/primitives/overlayLayer.js.map +1 -1
- package/dist/headless/source/components/base/animateHeight/animateHeight.jsx +7 -11
- package/dist/headless/source/components/base/animateHeight/animateHeight.jsx.map +1 -1
- package/dist/headless/source/components/base/icon/icon.jsx +10 -12
- package/dist/headless/source/components/base/icon/icon.jsx.map +1 -1
- package/dist/headless/source/components/base/ripple/ripple.jsx +16 -4
- package/dist/headless/source/components/base/ripple/ripple.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx +14 -7
- package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/card/card.jsx +31 -12
- package/dist/headless/source/components/dataDisplay/card/card.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/carousel/carousel.jsx +9 -3
- package/dist/headless/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chart/chart.jsx +5 -4
- package/dist/headless/source/components/dataDisplay/chart/chart.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatIconButton.jsx +13 -3
- package/dist/headless/source/components/dataDisplay/chat/chatIconButton.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatLayout.jsx +6 -7
- package/dist/headless/source/components/dataDisplay/chat/chatLayout.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatOverlayLayout.jsx +5 -6
- package/dist/headless/source/components/dataDisplay/chat/chatOverlayLayout.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chip/chip.jsx +55 -19
- package/dist/headless/source/components/dataDisplay/chip/chip.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chipGroup/chipGroup.jsx +14 -11
- package/dist/headless/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/dagView/dagLayout.js +383 -0
- package/dist/headless/source/components/dataDisplay/dagView/dagLayout.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx +639 -0
- package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/dagView/index.js +10 -0
- package/dist/headless/source/components/dataDisplay/dagView/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/dagView/panZoom.js +247 -0
- package/dist/headless/source/components/dataDisplay/dagView/panZoom.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx +4 -6
- package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +83 -9
- package/dist/headless/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx +20 -10
- package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/list/list.jsx +3 -3
- package/dist/headless/source/components/dataDisplay/list/list.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/list/listItem.jsx +11 -10
- package/dist/headless/source/components/dataDisplay/list/listItem.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/meter/meter.jsx +3 -2
- package/dist/headless/source/components/dataDisplay/meter/meter.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx +3 -2
- package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/stat/stat.jsx +7 -8
- package/dist/headless/source/components/dataDisplay/stat/stat.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/table.jsx +18 -1
- package/dist/headless/source/components/dataDisplay/table/table.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableBody.jsx +6 -1
- package/dist/headless/source/components/dataDisplay/table/tableBody.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableCell.jsx +13 -4
- package/dist/headless/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableColumns.jsx +311 -0
- package/dist/headless/source/components/dataDisplay/table/tableColumns.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/table/tableEntities.js +7 -0
- package/dist/headless/source/components/dataDisplay/table/tableEntities.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/table/tableHead.jsx +14 -1
- package/dist/headless/source/components/dataDisplay/table/tableHead.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx +51 -33
- package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableHtmlText.js +140 -0
- package/dist/headless/source/components/dataDisplay/table/tableHtmlText.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/table/tableRow.jsx +11 -5
- package/dist/headless/source/components/dataDisplay/table/tableRow.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx +48 -19
- package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx +9 -2
- package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/typography/typography.jsx +2 -6
- package/dist/headless/source/components/dataDisplay/typography/typography.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx +12 -2
- package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/message/message.jsx +5 -4
- package/dist/headless/source/components/feedBack/message/message.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/modal/modal.jsx +5 -2
- package/dist/headless/source/components/feedBack/modal/modal.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/skeleton/skeleton.jsx +12 -5
- package/dist/headless/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/snackbar/snackbar.jsx +3 -3
- package/dist/headless/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx +52 -5
- package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
- package/dist/headless/source/components/inputs/button/button.jsx +8 -3
- package/dist/headless/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/headless/source/components/inputs/buttonGroups/buttonGroup.jsx +4 -3
- package/dist/headless/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
- package/dist/headless/source/components/inputs/checkbox/checkbox.jsx +27 -4
- package/dist/headless/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePicker.jsx +13 -0
- package/dist/headless/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerActionLabel.jsx +4 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerActionLabel.jsx.map +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerDay.jsx +12 -12
- package/dist/headless/source/components/inputs/datePicker/datePickerDay.jsx.map +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerIconButton.jsx +13 -3
- package/dist/headless/source/components/inputs/datePicker/datePickerIconButton.jsx.map +1 -1
- package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx +13 -0
- package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx.map +1 -1
- package/dist/headless/source/components/inputs/floatingButton/floatingButton.jsx +12 -1
- package/dist/headless/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
- package/dist/headless/source/components/inputs/radioButton/radioButton.jsx +16 -4
- package/dist/headless/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
- package/dist/headless/source/components/inputs/rating/rating.jsx +49 -20
- package/dist/headless/source/components/inputs/rating/rating.jsx.map +1 -1
- package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx +222 -61
- package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx.map +1 -1
- package/dist/headless/source/components/inputs/selectField/optionNavigation.js +51 -0
- package/dist/headless/source/components/inputs/selectField/optionNavigation.js.map +7 -0
- package/dist/headless/source/components/inputs/selectField/selectField.jsx +318 -92
- package/dist/headless/source/components/inputs/selectField/selectField.jsx.map +1 -1
- package/dist/headless/source/components/inputs/slider/slider.jsx +89 -18
- package/dist/headless/source/components/inputs/slider/slider.jsx.map +1 -1
- package/dist/headless/source/components/inputs/textField/textField.jsx +47 -9
- package/dist/headless/source/components/inputs/textField/textField.jsx.map +1 -1
- package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx +20 -6
- package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
- package/dist/headless/source/components/inputs/timePicker/timePicker.jsx +13 -0
- package/dist/headless/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
- package/dist/headless/source/components/inputs/toggle/toggle.jsx +14 -2
- package/dist/headless/source/components/inputs/toggle/toggle.jsx.map +1 -1
- package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx +7 -2
- package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
- package/dist/headless/source/components/layout/appLayout/appLayout.jsx +8 -6
- package/dist/headless/source/components/layout/appLayout/appLayout.jsx.map +1 -1
- package/dist/headless/source/components/layout/divider/divider.jsx +6 -5
- package/dist/headless/source/components/layout/divider/divider.jsx.map +1 -1
- package/dist/headless/source/components/layout/floatingWindow/floatingWindow.jsx +17 -11
- package/dist/headless/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -1
- package/dist/headless/source/components/layout/grid/grid.jsx +20 -8
- package/dist/headless/source/components/layout/grid/grid.jsx.map +1 -1
- package/dist/headless/source/components/layout/page/page.jsx +10 -2
- package/dist/headless/source/components/layout/page/page.jsx.map +1 -1
- package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx +3 -2
- package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
- package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx +5 -5
- package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -1
- package/dist/headless/source/components/layout/sheet/sheet.jsx +6 -8
- package/dist/headless/source/components/layout/sheet/sheet.jsx.map +1 -1
- package/dist/headless/source/components/layout/stack/stack.jsx +15 -11
- package/dist/headless/source/components/layout/stack/stack.jsx.map +1 -1
- package/dist/headless/source/components/navigation/appBar/appBar.jsx +3 -2
- package/dist/headless/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx +48 -40
- package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx +9 -2
- package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menu.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuComponent.jsx +3 -4
- package/dist/headless/source/components/navigation/menu/menuComponent.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuContext.js.map +2 -2
- package/dist/headless/source/components/navigation/menu/menuFloating.jsx +26 -4
- package/dist/headless/source/components/navigation/menu/menuFloating.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuItem.jsx +22 -2
- package/dist/headless/source/components/navigation/menu/menuItem.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuList.jsx +19 -7
- package/dist/headless/source/components/navigation/menu/menuList.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuSubmenu.jsx +36 -4
- package/dist/headless/source/components/navigation/menu/menuSubmenu.jsx.map +1 -1
- package/dist/headless/source/components/navigation/pagination/pagination.jsx +4 -3
- package/dist/headless/source/components/navigation/pagination/pagination.jsx.map +1 -1
- package/dist/headless/source/components/navigation/sidebar/sidebar.jsx +1 -1
- package/dist/headless/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/stepper/stepper.jsx +14 -9
- package/dist/headless/source/components/navigation/stepper/stepper.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +12 -16
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tabs.jsx +34 -10
- package/dist/headless/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tabsContext.js.map +2 -2
- package/dist/headless/source/connects/rt/table/table.jsx +7 -2
- package/dist/headless/source/connects/rt/table/table.jsx.map +1 -1
- package/dist/headless/source/index.js +3 -0
- package/dist/headless/source/index.js.map +2 -2
- package/dist/headless/source/primitives/createCssTransition.js +10 -1
- package/dist/headless/source/primitives/createCssTransition.js.map +2 -2
- package/dist/headless/source/primitives/createDismissOnEscape.js +17 -0
- package/dist/headless/source/primitives/createDismissOnEscape.js.map +7 -0
- package/dist/headless/source/primitives/createFocusTrap.js +1 -0
- package/dist/headless/source/primitives/createFocusTrap.js.map +2 -2
- package/dist/headless/source/primitives/createHelperText.js +16 -0
- package/dist/headless/source/primitives/createHelperText.js.map +7 -0
- package/dist/headless/source/primitives/mergeStyle.js +15 -0
- package/dist/headless/source/primitives/mergeStyle.js.map +7 -0
- package/dist/headless/source/primitives/overlayLayer.js +10 -2
- package/dist/headless/source/primitives/overlayLayer.js.map +2 -2
- package/dist/headless/source/utils/controlProps.js +22 -0
- package/dist/headless/source/utils/controlProps.js.map +7 -0
- package/dist/headless/source/utils/ownClick.js +41 -0
- package/dist/headless/source/utils/ownClick.js.map +7 -0
- package/dist/headless/utils/controlProps.js +20 -0
- package/dist/headless/utils/controlProps.js.map +1 -0
- package/dist/headless/utils/ownClick.js +39 -0
- package/dist/headless/utils/ownClick.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +224 -220
- package/dist/index.js.map +1 -1
- package/dist/primitives/createCssTransition.d.ts +6 -0
- package/dist/primitives/createCssTransition.js +31 -28
- package/dist/primitives/createCssTransition.js.map +1 -1
- package/dist/primitives/createDismissOnEscape.d.ts +12 -0
- package/dist/primitives/createDismissOnEscape.js +14 -0
- package/dist/primitives/createDismissOnEscape.js.map +1 -0
- package/dist/primitives/createFocusTrap.d.ts +2 -0
- package/dist/primitives/createFocusTrap.js +1 -0
- package/dist/primitives/createFocusTrap.js.map +1 -1
- package/dist/primitives/createHelperText.d.ts +26 -0
- package/dist/primitives/createHelperText.js +14 -0
- package/dist/primitives/createHelperText.js.map +1 -0
- package/dist/primitives/mergeStyle.d.ts +19 -0
- package/dist/primitives/mergeStyle.js +9 -0
- package/dist/primitives/mergeStyle.js.map +1 -0
- package/dist/primitives/overlayLayer.d.ts +15 -3
- package/dist/primitives/overlayLayer.js +14 -7
- package/dist/primitives/overlayLayer.js.map +1 -1
- package/dist/source/components/base/animateHeight/animateHeight.jsx +7 -11
- package/dist/source/components/base/animateHeight/animateHeight.jsx.map +1 -1
- package/dist/source/components/base/icon/icon.jsx +10 -12
- package/dist/source/components/base/icon/icon.jsx.map +1 -1
- package/dist/source/components/base/ripple/ripple.jsx +16 -4
- package/dist/source/components/base/ripple/ripple.jsx.map +1 -1
- package/dist/source/components/dataDisplay/avatar/avatar.jsx +14 -7
- package/dist/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
- package/dist/source/components/dataDisplay/card/card.jsx +31 -12
- package/dist/source/components/dataDisplay/card/card.jsx.map +1 -1
- package/dist/source/components/dataDisplay/carousel/carousel.jsx +9 -3
- package/dist/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chart/chart.jsx +5 -4
- package/dist/source/components/dataDisplay/chart/chart.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatIconButton.jsx +13 -3
- package/dist/source/components/dataDisplay/chat/chatIconButton.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatLayout.jsx +6 -7
- package/dist/source/components/dataDisplay/chat/chatLayout.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatOverlayLayout.jsx +5 -6
- package/dist/source/components/dataDisplay/chat/chatOverlayLayout.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chip/chip.jsx +55 -19
- package/dist/source/components/dataDisplay/chip/chip.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx +14 -11
- package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -1
- package/dist/source/components/dataDisplay/dagView/dagLayout.js +383 -0
- package/dist/source/components/dataDisplay/dagView/dagLayout.js.map +7 -0
- package/dist/source/components/dataDisplay/dagView/dagView.jsx +641 -0
- package/dist/source/components/dataDisplay/dagView/dagView.jsx.map +1 -0
- package/dist/source/components/dataDisplay/dagView/index.js +10 -0
- package/dist/source/components/dataDisplay/dagView/index.js.map +7 -0
- package/dist/source/components/dataDisplay/dagView/panZoom.js +247 -0
- package/dist/source/components/dataDisplay/dagView/panZoom.js.map +7 -0
- package/dist/source/components/dataDisplay/descriptionList/descriptionList.jsx +4 -6
- package/dist/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -1
- package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +83 -9
- package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
- package/dist/source/components/dataDisplay/kanban/kanban.jsx +20 -10
- package/dist/source/components/dataDisplay/kanban/kanban.jsx.map +1 -1
- package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx +1 -1
- package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
- package/dist/source/components/dataDisplay/list/list.jsx +3 -3
- package/dist/source/components/dataDisplay/list/list.jsx.map +1 -1
- package/dist/source/components/dataDisplay/list/listItem.jsx +11 -10
- package/dist/source/components/dataDisplay/list/listItem.jsx.map +1 -1
- package/dist/source/components/dataDisplay/meter/meter.jsx +3 -2
- package/dist/source/components/dataDisplay/meter/meter.jsx.map +1 -1
- package/dist/source/components/dataDisplay/personChip/personChip.jsx +3 -2
- package/dist/source/components/dataDisplay/personChip/personChip.jsx.map +1 -1
- package/dist/source/components/dataDisplay/stat/stat.jsx +7 -8
- package/dist/source/components/dataDisplay/stat/stat.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/table.jsx +18 -1
- package/dist/source/components/dataDisplay/table/table.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableBody.jsx +6 -1
- package/dist/source/components/dataDisplay/table/tableBody.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableCell.jsx +13 -4
- package/dist/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableColumns.jsx +311 -0
- package/dist/source/components/dataDisplay/table/tableColumns.jsx.map +1 -0
- package/dist/source/components/dataDisplay/table/tableEntities.js +7 -0
- package/dist/source/components/dataDisplay/table/tableEntities.js.map +7 -0
- package/dist/source/components/dataDisplay/table/tableHead.jsx +14 -1
- package/dist/source/components/dataDisplay/table/tableHead.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableHeadCell.jsx +51 -33
- package/dist/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableHtmlText.js +140 -0
- package/dist/source/components/dataDisplay/table/tableHtmlText.js.map +7 -0
- package/dist/source/components/dataDisplay/table/tableRow.jsx +11 -5
- package/dist/source/components/dataDisplay/table/tableRow.jsx.map +1 -1
- package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx +48 -19
- package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
- package/dist/source/components/dataDisplay/treeView/treeView.jsx +9 -2
- package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
- package/dist/source/components/dataDisplay/typography/typography.jsx +2 -6
- package/dist/source/components/dataDisplay/typography/typography.jsx.map +1 -1
- package/dist/source/components/feedBack/emptyState/emptyState.jsx +12 -2
- package/dist/source/components/feedBack/emptyState/emptyState.jsx.map +1 -1
- package/dist/source/components/feedBack/message/message.jsx +5 -4
- package/dist/source/components/feedBack/message/message.jsx.map +1 -1
- package/dist/source/components/feedBack/modal/modal.jsx +5 -2
- package/dist/source/components/feedBack/modal/modal.jsx.map +1 -1
- package/dist/source/components/feedBack/skeleton/skeleton.jsx +12 -5
- package/dist/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
- package/dist/source/components/feedBack/snackbar/snackbar.jsx +3 -3
- package/dist/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
- package/dist/source/components/feedBack/tooltip/tooltip.jsx +52 -5
- package/dist/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
- package/dist/source/components/inputs/button/button.jsx +8 -3
- package/dist/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx +4 -3
- package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
- package/dist/source/components/inputs/checkbox/checkbox.jsx +27 -4
- package/dist/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/datePicker.jsx +13 -0
- package/dist/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/datePickerActionLabel.jsx +4 -1
- package/dist/source/components/inputs/datePicker/datePickerActionLabel.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/datePickerDay.jsx +12 -12
- package/dist/source/components/inputs/datePicker/datePickerDay.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/datePickerIconButton.jsx +13 -3
- package/dist/source/components/inputs/datePicker/datePickerIconButton.jsx.map +1 -1
- package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx +13 -0
- package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx.map +1 -1
- package/dist/source/components/inputs/floatingButton/floatingButton.jsx +12 -1
- package/dist/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
- package/dist/source/components/inputs/radioButton/radioButton.jsx +16 -4
- package/dist/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
- package/dist/source/components/inputs/rating/rating.jsx +49 -20
- package/dist/source/components/inputs/rating/rating.jsx.map +1 -1
- package/dist/source/components/inputs/selectField/dropdownMenu.jsx +222 -61
- package/dist/source/components/inputs/selectField/dropdownMenu.jsx.map +1 -1
- package/dist/source/components/inputs/selectField/optionNavigation.js +51 -0
- package/dist/source/components/inputs/selectField/optionNavigation.js.map +7 -0
- package/dist/source/components/inputs/selectField/selectField.jsx +318 -92
- package/dist/source/components/inputs/selectField/selectField.jsx.map +1 -1
- package/dist/source/components/inputs/slider/slider.jsx +89 -18
- package/dist/source/components/inputs/slider/slider.jsx.map +1 -1
- package/dist/source/components/inputs/textField/textField.jsx +47 -9
- package/dist/source/components/inputs/textField/textField.jsx.map +1 -1
- package/dist/source/components/inputs/textField/textFieldWrapper.jsx +20 -6
- package/dist/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
- package/dist/source/components/inputs/timePicker/timePicker.jsx +13 -0
- package/dist/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
- package/dist/source/components/inputs/toggle/toggle.jsx +14 -2
- package/dist/source/components/inputs/toggle/toggle.jsx.map +1 -1
- package/dist/source/components/inputs/valueSlider/valueSlider.jsx +7 -2
- package/dist/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
- package/dist/source/components/layout/appLayout/appLayout.jsx +8 -6
- package/dist/source/components/layout/appLayout/appLayout.jsx.map +1 -1
- package/dist/source/components/layout/divider/divider.jsx +6 -5
- package/dist/source/components/layout/divider/divider.jsx.map +1 -1
- package/dist/source/components/layout/floatingWindow/floatingWindow.jsx +17 -11
- package/dist/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -1
- package/dist/source/components/layout/grid/grid.jsx +20 -8
- package/dist/source/components/layout/grid/grid.jsx.map +1 -1
- package/dist/source/components/layout/page/page.jsx +10 -2
- package/dist/source/components/layout/page/page.jsx.map +1 -1
- package/dist/source/components/layout/pageHeader/pageHeader.jsx +3 -2
- package/dist/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
- package/dist/source/components/layout/sectionHeader/sectionHeader.jsx +5 -5
- package/dist/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -1
- package/dist/source/components/layout/sheet/sheet.jsx +6 -8
- package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
- package/dist/source/components/layout/stack/stack.jsx +15 -11
- package/dist/source/components/layout/stack/stack.jsx.map +1 -1
- package/dist/source/components/navigation/appBar/appBar.jsx +3 -2
- package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/source/components/navigation/bottomBar/bottomBar.jsx +48 -40
- package/dist/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
- package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx +9 -2
- package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menu.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuComponent.jsx +3 -4
- package/dist/source/components/navigation/menu/menuComponent.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuContext.js.map +2 -2
- package/dist/source/components/navigation/menu/menuFloating.jsx +26 -4
- package/dist/source/components/navigation/menu/menuFloating.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuItem.jsx +22 -2
- package/dist/source/components/navigation/menu/menuItem.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuList.jsx +19 -7
- package/dist/source/components/navigation/menu/menuList.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuSubmenu.jsx +36 -4
- package/dist/source/components/navigation/menu/menuSubmenu.jsx.map +1 -1
- package/dist/source/components/navigation/pagination/pagination.jsx +4 -3
- package/dist/source/components/navigation/pagination/pagination.jsx.map +1 -1
- package/dist/source/components/navigation/sidebar/sidebar.jsx +1 -1
- package/dist/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
- package/dist/source/components/navigation/stepper/stepper.jsx +14 -9
- package/dist/source/components/navigation/stepper/stepper.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tab/tab.jsx +12 -16
- package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabs.jsx +34 -10
- package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabsContext.js.map +2 -2
- package/dist/source/connects/rt/table/table.jsx +7 -2
- package/dist/source/connects/rt/table/table.jsx.map +1 -1
- package/dist/source/index.js +3 -0
- package/dist/source/index.js.map +2 -2
- package/dist/source/primitives/createCssTransition.js +10 -1
- package/dist/source/primitives/createCssTransition.js.map +2 -2
- package/dist/source/primitives/createDismissOnEscape.js +17 -0
- package/dist/source/primitives/createDismissOnEscape.js.map +7 -0
- package/dist/source/primitives/createFocusTrap.js +1 -0
- package/dist/source/primitives/createFocusTrap.js.map +2 -2
- package/dist/source/primitives/createHelperText.js +16 -0
- package/dist/source/primitives/createHelperText.js.map +7 -0
- package/dist/source/primitives/mergeStyle.js +15 -0
- package/dist/source/primitives/mergeStyle.js.map +7 -0
- package/dist/source/primitives/overlayLayer.js +10 -2
- package/dist/source/primitives/overlayLayer.js.map +2 -2
- package/dist/source/utils/controlProps.js +22 -0
- package/dist/source/utils/controlProps.js.map +7 -0
- package/dist/source/utils/ownClick.js +41 -0
- package/dist/source/utils/ownClick.js.map +7 -0
- package/dist/utils/controlProps.d.ts +17 -0
- package/dist/utils/controlProps.js +20 -0
- package/dist/utils/controlProps.js.map +1 -0
- package/dist/utils/ownClick.d.ts +16 -0
- package/dist/utils/ownClick.js +39 -0
- package/dist/utils/ownClick.js.map +1 -0
- package/package.json +9 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","sources":["../../../../src/components/navigation/tabs/tabs.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, createSignal, mergeProps, on, onCleanup, onMount, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { debounce } from \"../../../utils/debounce\";\nimport { animate } from \"../../../utils/animate\";\nimport { TabsContext, type TabsContextValue } from \"./tabsContext\";\nimport { Tab } from \"./tab/tab\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface TabsProps {\n value: number;\n onChange: (event: MouseEvent & { currentTarget: HTMLElement; target: Element }, index: number) => void;\n indicatorContent?: boolean;\n /**\n * Let the tab row scroll sideways instead of clipping it. The edge beyond which\n * more tabs are hidden fades out.\n */\n scrollable?: boolean;\n /** With `scrollable`: buttons at both ends that scroll the row while it overflows. */\n scrollButtons?: boolean;\n /** Compact tabs: labels as written (no capitals, no letter spacing) and less padding. */\n dense?: boolean;\n /** Accessible label of the button that scrolls back. */\n scrollBackAriaLabel?: string;\n /** Accessible label of the button that scrolls forward. */\n scrollForwardAriaLabel?: string;\n class?: string;\n children?: JSX.Element;\n \"aria-label\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\ninterface IndicatorStyle {\n root: { left?: number; width?: number };\n content?: { width: number };\n}\n\nconst VIEW_NEXT_TAB_PX = 40;\n/** A scroll button moves the row by this share of its visible width. */\nconst SCROLL_PAGE = 0.8;\n\nexport function Tabs(props: ParentProps<TabsProps>): JSX.Element {\n const merged = mergeProps(\n {\n indicatorContent: false,\n scrollable: false,\n scrollButtons: false,\n dense: false,\n scrollBackAriaLabel: \"Scroll tabs back\",\n scrollForwardAriaLabel: \"Scroll tabs forward\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"children\",\n \"onChange\",\n \"value\",\n \"indicatorContent\",\n \"scrollable\",\n \"scrollButtons\",\n \"dense\",\n \"scrollBackAriaLabel\",\n \"scrollForwardAriaLabel\",\n \"aria-label\",\n \"ref\",\n ]);\n\n const [mounted, setMounted] = createSignal(false);\n const [indicatorStyle, setIndicatorStyle] = createSignal<IndicatorStyle>({ root: {} });\n // Whether tabs are hidden past the start / the end of a scrollable row. Only\n // measured in the browser, so the server markup shows neither.\n const [overflowStart, setOverflowStart] = createSignal(false);\n const [overflowEnd, setOverflowEnd] = createSignal(false);\n\n let tabsEl: HTMLDivElement | undefined;\n let tabListEl: HTMLDivElement | undefined;\n let tabCounter = 0;\n const contentRefs: HTMLSpanElement[] = [];\n\n const getTabsMeta = () => {\n let tabsMeta: { clientWidth: number; scrollLeft: number; left: number; right: number } | undefined;\n if (tabsEl) {\n const rect = tabsEl.getBoundingClientRect();\n tabsMeta = { clientWidth: tabsEl.clientWidth, scrollLeft: tabsEl.scrollLeft, left: rect.left, right: rect.right };\n }\n let tabMeta: DOMRect | null = null;\n let tabContentMeta: DOMRect | null = null;\n if (tabsEl && tabListEl && tabListEl.children.length > 0) {\n const tab = tabListEl.children[local.value];\n tabMeta = tab ? tab.getBoundingClientRect() : null;\n if (local.indicatorContent) {\n tabContentMeta = contentRefs[local.value]?.getBoundingClientRect() ?? null;\n }\n }\n return { tabsMeta, tabMeta, tabContentMeta };\n };\n\n const updateIndicatorState = (): void => {\n const { tabsMeta, tabMeta, tabContentMeta } = getTabsMeta();\n let startValue = 0;\n if (tabMeta && tabsMeta) {\n startValue = tabMeta.left - tabsMeta.left + tabsMeta.scrollLeft;\n }\n const next: IndicatorStyle = { root: { left: startValue, width: tabMeta ? tabMeta.width : 0 } };\n if (local.indicatorContent && tabContentMeta) {\n next.content = { width: tabContentMeta.width };\n }\n const prev = indicatorStyle();\n if (prev.root.left === undefined || prev.root.width === undefined) {\n setIndicatorStyle(next);\n return;\n }\n const dStart = Math.abs((prev.root.left ?? 0) - (next.root.left ?? 0));\n const dSize = Math.abs((prev.root.width ?? 0) - (next.root.width ?? 0));\n if (dStart >= 1 || dSize >= 1) {\n setIndicatorStyle(next);\n }\n };\n\n const updateOverflow = (): void => {\n if (!tabsEl || !local.scrollable) {\n setOverflowStart(false);\n setOverflowEnd(false);\n return;\n }\n const max = tabsEl.scrollWidth - tabsEl.clientWidth;\n setOverflowStart(tabsEl.scrollLeft > 1);\n setOverflowEnd(tabsEl.scrollLeft < max - 1);\n };\n\n const scroll = (scrollValue: number): void => {\n if (!tabsEl) return;\n animate(tabsEl, \"scrollLeft\", scrollValue, { duration: 300 });\n };\n\n const scrollByPage = (direction: -1 | 1): void => {\n if (!tabsEl) return;\n scroll(tabsEl.scrollLeft + direction * tabsEl.clientWidth * SCROLL_PAGE);\n };\n\n const scrollSelectedIntoView = (): void => {\n const { tabsMeta, tabMeta } = getTabsMeta();\n if (!tabMeta || !tabsMeta) return;\n if (tabMeta.left < tabsMeta.left) {\n scroll(tabsMeta.scrollLeft + (tabMeta.left - tabsMeta.left) - VIEW_NEXT_TAB_PX);\n } else if (tabMeta.right > tabsMeta.right) {\n scroll(tabsMeta.scrollLeft + (tabMeta.right - tabsMeta.right) + VIEW_NEXT_TAB_PX);\n }\n };\n\n onMount(() => setMounted(true));\n\n // Re-measure when the active value changes (and on mount).\n createEffect(on(() => local.value, () => updateIndicatorState()));\n\n // Keep the indicator and the overflow state in sync with resizes: of the\n // window, of the row, and of each tab (a label can grow with its data).\n onMount(() => {\n const onResize = debounce(() => {\n updateIndicatorState();\n updateOverflow();\n }, 166);\n const view = tabsEl?.ownerDocument.defaultView;\n view?.addEventListener(\"resize\", onResize);\n tabsEl?.addEventListener(\"scroll\", updateOverflow, { passive: true });\n let resizeObserver: ResizeObserver | undefined;\n if (typeof ResizeObserver !== \"undefined\" && tabListEl) {\n resizeObserver = new ResizeObserver(onResize);\n if (tabsEl) resizeObserver.observe(tabsEl);\n Array.from(tabListEl.children).forEach((child) => resizeObserver?.observe(child));\n }\n updateOverflow();\n onCleanup(() => {\n onResize.cancel();\n view?.removeEventListener(\"resize\", onResize);\n tabsEl?.removeEventListener(\"scroll\", updateOverflow);\n resizeObserver?.disconnect();\n });\n });\n\n // Scroll the selected tab into view when the indicator moves.\n createEffect(() => {\n indicatorStyle();\n scrollSelectedIntoView();\n });\n\n const contextValue: TabsContextValue = {\n value: () => local.value,\n onChange: local.onChange,\n indicatorContent: local.indicatorContent,\n registerTab: () => tabCounter++,\n setContentRef: (index, el) => {\n contentRefs[index] = el;\n },\n };\n\n const showScrollButtons = (): boolean => local.scrollable && local.scrollButtons && (overflowStart() || overflowEnd());\n\n return (\n <TabsContext.Provider value={contextValue}>\n <div\n {...rest}\n class={cn(\n \"smwb-tabs\",\n {\n \"smwb-tabs--dense\": local.dense,\n \"smwb-tabs--overflow-start\": overflowStart(),\n \"smwb-tabs--overflow-end\": overflowEnd(),\n },\n local.class\n )}\n role=\"tabpanel\"\n ref={mergeRefs(local.ref)}\n >\n <Show when={showScrollButtons()}>\n <button\n type=\"button\"\n class=\"smwb-tabs__scroll-button smwb-tabs__scroll-button--start\"\n aria-label={local.scrollBackAriaLabel}\n disabled={!overflowStart()}\n onClick={() => scrollByPage(-1)}\n >\n <Icon name=\"chevron_left\" size={20} />\n </button>\n </Show>\n {/* The scroller's class is static so it is on the element from the start:\n a ref on Tabs can find the row by class right away. */}\n <div\n class=\"smwb-tabs__scroller\"\n classList={{ \"smwb-tabs__scroller--scrollable\": local.scrollable }}\n ref={(el) => (tabsEl = el)}\n >\n <div class=\"smwb-tabs__scroll-area\" ref={(el) => (tabListEl = el)} role=\"tablist\" aria-label={local[\"aria-label\"]}>\n {local.children}\n </div>\n <Show when={mounted()}>\n <span\n class=\"smwb-tabs__indicator\"\n style={{\n left: `${indicatorStyle().root.left ?? 0}px`,\n width: `${indicatorStyle().root.width ?? 0}px`,\n }}\n >\n <span\n class=\"smwb-tabs__indicator-content\"\n style={indicatorStyle().content ? { width: `${indicatorStyle().content?.width ?? 0}px` } : {}}\n />\n </span>\n </Show>\n </div>\n <Show when={showScrollButtons()}>\n <button\n type=\"button\"\n class=\"smwb-tabs__scroll-button smwb-tabs__scroll-button--end\"\n aria-label={local.scrollForwardAriaLabel}\n disabled={!overflowEnd()}\n onClick={() => scrollByPage(1)}\n >\n <Icon name=\"chevron_right\" size={20} />\n </button>\n </Show>\n </div>\n </TabsContext.Provider>\n );\n}\n\nexport { Tab };\nexport type { TabProps } from \"./tab/tab\";\nexport default Tabs;\n"],"names":["VIEW_NEXT_TAB_PX","SCROLL_PAGE","Tabs","props","merged","mergeProps","indicatorContent","scrollable","scrollButtons","dense","scrollBackAriaLabel","scrollForwardAriaLabel","local","rest","splitProps","mounted","setMounted","createSignal","indicatorStyle","setIndicatorStyle","root","overflowStart","setOverflowStart","overflowEnd","setOverflowEnd","tabsEl","tabListEl","tabCounter","contentRefs","getTabsMeta","tabsMeta","rect","getBoundingClientRect","clientWidth","scrollLeft","left","right","tabMeta","tabContentMeta","children","length","tab","value","updateIndicatorState","startValue","next","width","content","prev","undefined","dStart","Math","abs","dSize","updateOverflow","max","scrollWidth","scroll","scrollValue","animate","duration","scrollByPage","direction","scrollSelectedIntoView","onMount","createEffect","on","onResize","debounce","view","ownerDocument","defaultView","addEventListener","passive","resizeObserver","ResizeObserver","observe","Array","from","forEach","child","onCleanup","cancel","removeEventListener","disconnect","contextValue","onChange","registerTab","setContentRef","index","el","showScrollButtons","_$createComponent","TabsContext","Provider","_el$","_tmpl$4","_el$3","firstChild","_el$4","_ref$","mergeRefs","ref","_$use","_$spread","_$mergeProps","cn","class","_$insert","Show","when","_el$2","_tmpl$","$$click","Icon","name","size","_$effect","_p$","_v$","_v$2","e","_$setAttribute","t","disabled","_el$5","_tmpl$2","_el$6","_v$3","_v$4","_v$5","_$setStyleProperty","a","_$style","_el$7","_tmpl$3","_v$6","_v$7","_v$8","_v$9","classList","toggle","_$delegateEvents"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tabs.js","sources":["../../../../src/components/navigation/tabs/tabs.tsx"],"sourcesContent":["import {\n type JSX,\n type ParentProps,\n Show,\n children,\n createComputed,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n on,\n onCleanup,\n onMount,\n splitProps,\n} from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { debounce } from \"../../../utils/debounce\";\nimport { animate } from \"../../../utils/animate\";\nimport { TabsContext, type TabsContextValue } from \"./tabsContext\";\nimport { Tab } from \"./tab/tab\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface TabsProps {\n /**\n * Index of the selected tab: its position in the row. Tabs count in the order they\n * render, so a tab behind a `<Show>` that is off takes no index, and tabs added,\n * removed or reordered count by their new place.\n */\n value: number;\n /** Called with the index of the clicked tab, counted as for `value`. */\n onChange: (event: MouseEvent & { currentTarget: HTMLElement; target: Element }, index: number) => void;\n /** Draw the indicator as wide as the selected tab's label rather than the whole tab. */\n indicatorContent?: boolean;\n /**\n * Let the tab row scroll sideways instead of clipping it. The edge beyond which\n * more tabs are hidden fades out.\n */\n scrollable?: boolean;\n /** With `scrollable`: buttons at both ends that scroll the row while it overflows. */\n scrollButtons?: boolean;\n /** Compact tabs: labels as written (no capitals, no letter spacing) and less padding. */\n dense?: boolean;\n /** Accessible label of the button that scrolls back. */\n scrollBackAriaLabel?: string;\n /** Accessible label of the button that scrolls forward. */\n scrollForwardAriaLabel?: string;\n class?: string;\n children?: JSX.Element;\n \"aria-label\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\ninterface IndicatorStyle {\n root: { left?: number; width?: number };\n content?: { width: number };\n}\n\nconst VIEW_NEXT_TAB_PX = 40;\n/** A scroll button moves the row by this share of its visible width. */\nconst SCROLL_PAGE = 0.8;\n\n/**\n * The tab list's children, resolved once, with their elements reported in order\n * whenever they change. It renders inside the context provider, so the tabs it\n * creates find their Tabs.\n */\nfunction TabListItems(props: { children?: JSX.Element; onItems: (items: Element[]) => void }): JSX.Element {\n const resolved = children(() => props.children);\n if (!isServer) {\n createComputed(() => props.onItems(resolved.toArray().filter((node) => node instanceof Element)));\n }\n return <>{resolved()}</>;\n}\n\nexport function Tabs(props: ParentProps<TabsProps>): JSX.Element {\n const merged = mergeProps(\n {\n indicatorContent: false,\n scrollable: false,\n scrollButtons: false,\n dense: false,\n scrollBackAriaLabel: \"Scroll tabs back\",\n scrollForwardAriaLabel: \"Scroll tabs forward\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"children\",\n \"onChange\",\n \"value\",\n \"indicatorContent\",\n \"scrollable\",\n \"scrollButtons\",\n \"dense\",\n \"scrollBackAriaLabel\",\n \"scrollForwardAriaLabel\",\n \"aria-label\",\n \"ref\",\n ]);\n\n const [mounted, setMounted] = createSignal(false);\n const [indicatorStyle, setIndicatorStyle] = createSignal<IndicatorStyle>({ root: {} });\n // Whether tabs are hidden past the start / the end of a scrollable row. Only\n // measured in the browser, so the server markup shows neither.\n const [overflowStart, setOverflowStart] = createSignal(false);\n const [overflowEnd, setOverflowEnd] = createSignal(false);\n\n let tabsEl: HTMLDivElement | undefined;\n let tabListEl: HTMLDivElement | undefined;\n // The tab list's elements in order, known once its children have resolved in\n // the browser. Before that, and on the server, a tab's index is the order it\n // was created in, which is its order in the markup.\n const [items, setItems] = createSignal<Element[]>();\n let created = 0;\n\n const getTabsMeta = () => {\n let tabsMeta: { clientWidth: number; scrollLeft: number; left: number; right: number } | undefined;\n if (tabsEl) {\n const rect = tabsEl.getBoundingClientRect();\n tabsMeta = { clientWidth: tabsEl.clientWidth, scrollLeft: tabsEl.scrollLeft, left: rect.left, right: rect.right };\n }\n let tabMeta: DOMRect | null = null;\n let tabContentMeta: DOMRect | null = null;\n if (tabsEl && tabListEl && tabListEl.children.length > 0) {\n const tab = tabListEl.children[local.value];\n tabMeta = tab ? tab.getBoundingClientRect() : null;\n if (local.indicatorContent) {\n tabContentMeta = tab?.querySelector(\".smwb-tab__content\")?.getBoundingClientRect() ?? null;\n }\n }\n return { tabsMeta, tabMeta, tabContentMeta };\n };\n\n const updateIndicatorState = (): void => {\n const { tabsMeta, tabMeta, tabContentMeta } = getTabsMeta();\n let startValue = 0;\n if (tabMeta && tabsMeta) {\n startValue = tabMeta.left - tabsMeta.left + tabsMeta.scrollLeft;\n }\n const next: IndicatorStyle = { root: { left: startValue, width: tabMeta ? tabMeta.width : 0 } };\n if (local.indicatorContent && tabContentMeta) {\n next.content = { width: tabContentMeta.width };\n }\n const prev = indicatorStyle();\n if (prev.root.left === undefined || prev.root.width === undefined) {\n setIndicatorStyle(next);\n return;\n }\n const dStart = Math.abs((prev.root.left ?? 0) - (next.root.left ?? 0));\n const dSize = Math.abs((prev.root.width ?? 0) - (next.root.width ?? 0));\n if (dStart >= 1 || dSize >= 1) {\n setIndicatorStyle(next);\n }\n };\n\n const updateOverflow = (): void => {\n if (!tabsEl || !local.scrollable) {\n setOverflowStart(false);\n setOverflowEnd(false);\n return;\n }\n const max = tabsEl.scrollWidth - tabsEl.clientWidth;\n setOverflowStart(tabsEl.scrollLeft > 1);\n setOverflowEnd(tabsEl.scrollLeft < max - 1);\n };\n\n const scroll = (scrollValue: number): void => {\n if (!tabsEl) return;\n animate(tabsEl, \"scrollLeft\", scrollValue, { duration: 300 });\n };\n\n const scrollByPage = (direction: -1 | 1): void => {\n if (!tabsEl) return;\n scroll(tabsEl.scrollLeft + direction * tabsEl.clientWidth * SCROLL_PAGE);\n };\n\n const scrollSelectedIntoView = (): void => {\n const { tabsMeta, tabMeta } = getTabsMeta();\n if (!tabMeta || !tabsMeta) return;\n if (tabMeta.left < tabsMeta.left) {\n scroll(tabsMeta.scrollLeft + (tabMeta.left - tabsMeta.left) - VIEW_NEXT_TAB_PX);\n } else if (tabMeta.right > tabsMeta.right) {\n scroll(tabsMeta.scrollLeft + (tabMeta.right - tabsMeta.right) + VIEW_NEXT_TAB_PX);\n }\n };\n\n onMount(() => setMounted(true));\n\n // Re-measure when the active value or the tabs change (and on mount).\n createEffect(on([() => local.value, items], () => updateIndicatorState()));\n\n // Keep the indicator and the overflow state in sync with resizes: of the\n // window, of the row, and of each tab (a label can grow with its data).\n onMount(() => {\n const onResize = debounce(() => {\n updateIndicatorState();\n updateOverflow();\n }, 166);\n const view = tabsEl?.ownerDocument.defaultView;\n view?.addEventListener(\"resize\", onResize);\n tabsEl?.addEventListener(\"scroll\", updateOverflow, { passive: true });\n let resizeObserver: ResizeObserver | undefined;\n if (typeof ResizeObserver !== \"undefined\" && tabListEl) {\n resizeObserver = new ResizeObserver(onResize);\n if (tabsEl) resizeObserver.observe(tabsEl);\n Array.from(tabListEl.children).forEach((child) => resizeObserver?.observe(child));\n }\n updateOverflow();\n onCleanup(() => {\n onResize.cancel();\n view?.removeEventListener(\"resize\", onResize);\n tabsEl?.removeEventListener(\"scroll\", updateOverflow);\n resizeObserver?.disconnect();\n });\n });\n\n // Scroll the selected tab into view when the indicator moves.\n createEffect(() => {\n indicatorStyle();\n scrollSelectedIntoView();\n });\n\n const contextValue: TabsContextValue = {\n value: () => local.value,\n onChange: local.onChange,\n registerTab: (element) => {\n const order = created++;\n return createMemo(() => {\n const list = items();\n if (!list) return order;\n const el = element();\n return el ? list.findIndex((item) => item.contains(el)) : -1;\n });\n },\n };\n\n const showScrollButtons = (): boolean => local.scrollable && local.scrollButtons && (overflowStart() || overflowEnd());\n\n return (\n <TabsContext.Provider value={contextValue}>\n <div\n {...rest}\n class={cn(\n \"smwb-tabs\",\n {\n \"smwb-tabs--dense\": local.dense,\n \"smwb-tabs--overflow-start\": overflowStart(),\n \"smwb-tabs--overflow-end\": overflowEnd(),\n },\n local.class\n )}\n role=\"tabpanel\"\n ref={mergeRefs(local.ref)}\n >\n <Show when={showScrollButtons()}>\n <button\n type=\"button\"\n class=\"smwb-tabs__scroll-button smwb-tabs__scroll-button--start\"\n aria-label={local.scrollBackAriaLabel}\n disabled={!overflowStart()}\n onClick={() => scrollByPage(-1)}\n >\n <Icon name=\"chevron_left\" size={20} />\n </button>\n </Show>\n {/* The scroller's class is static so it is on the element from the start:\n a ref on Tabs can find the row by class right away. */}\n <div\n class=\"smwb-tabs__scroller\"\n classList={{ \"smwb-tabs__scroller--scrollable\": local.scrollable }}\n ref={(el) => (tabsEl = el)}\n >\n <div class=\"smwb-tabs__scroll-area\" ref={(el) => (tabListEl = el)} role=\"tablist\" aria-label={local[\"aria-label\"]}>\n <TabListItems onItems={setItems}>{local.children}</TabListItems>\n </div>\n <Show when={mounted()}>\n <span\n class=\"smwb-tabs__indicator\"\n style={{\n left: `${indicatorStyle().root.left ?? 0}px`,\n width: `${indicatorStyle().root.width ?? 0}px`,\n }}\n >\n <span\n class=\"smwb-tabs__indicator-content\"\n style={indicatorStyle().content ? { width: `${indicatorStyle().content?.width ?? 0}px` } : {}}\n />\n </span>\n </Show>\n </div>\n <Show when={showScrollButtons()}>\n <button\n type=\"button\"\n class=\"smwb-tabs__scroll-button smwb-tabs__scroll-button--end\"\n aria-label={local.scrollForwardAriaLabel}\n disabled={!overflowEnd()}\n onClick={() => scrollByPage(1)}\n >\n <Icon name=\"chevron_right\" size={20} />\n </button>\n </Show>\n </div>\n </TabsContext.Provider>\n );\n}\n\nexport { Tab };\nexport type { TabProps } from \"./tab/tab\";\nexport default Tabs;\n"],"names":["VIEW_NEXT_TAB_PX","SCROLL_PAGE","TabListItems","props","resolved","children","isServer","createComputed","onItems","toArray","filter","node","Element","_$memo","Tabs","merged","mergeProps","indicatorContent","scrollable","scrollButtons","dense","scrollBackAriaLabel","scrollForwardAriaLabel","local","rest","splitProps","mounted","setMounted","createSignal","indicatorStyle","setIndicatorStyle","root","overflowStart","setOverflowStart","overflowEnd","setOverflowEnd","tabsEl","tabListEl","items","setItems","created","getTabsMeta","tabsMeta","rect","getBoundingClientRect","clientWidth","scrollLeft","left","right","tabMeta","tabContentMeta","length","tab","value","querySelector","updateIndicatorState","startValue","next","width","content","prev","undefined","dStart","Math","abs","dSize","updateOverflow","max","scrollWidth","scroll","scrollValue","animate","duration","scrollByPage","direction","scrollSelectedIntoView","onMount","createEffect","on","onResize","debounce","view","ownerDocument","defaultView","addEventListener","passive","resizeObserver","ResizeObserver","observe","Array","from","forEach","child","onCleanup","cancel","removeEventListener","disconnect","contextValue","onChange","registerTab","element","order","createMemo","list","el","findIndex","item","contains","showScrollButtons","_$createComponent","TabsContext","Provider","_el$","_tmpl$4","_el$3","firstChild","_el$4","_ref$","mergeRefs","ref","_$use","_$spread","_$mergeProps","cn","class","_$insert","Show","when","_el$2","_tmpl$","$$click","Icon","name","size","_$effect","_p$","_v$","_v$2","e","_$setAttribute","t","disabled","_el$5","_tmpl$2","_el$6","_v$3","_v$4","_v$5","_$setStyleProperty","a","_$style","_el$7","_tmpl$3","_v$6","_v$7","_v$8","_v$9","classList","toggle","_$delegateEvents"],"mappings":"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"}
|
|
@@ -5,10 +5,12 @@ export interface TabsContextValue {
|
|
|
5
5
|
currentTarget: HTMLElement;
|
|
6
6
|
target: Element;
|
|
7
7
|
}, index: number) => void;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Each Tab registers on setup with its root element (set once it renders) and
|
|
10
|
+
* gets back its index: its position in the tab list, which follows the tab when
|
|
11
|
+
* tabs are added, removed or reordered.
|
|
12
|
+
*/
|
|
13
|
+
registerTab: (element: Accessor<Element | undefined>) => Accessor<number>;
|
|
12
14
|
}
|
|
13
15
|
export declare const TabsContext: import("solid-js").Context<TabsContextValue | undefined>;
|
|
14
16
|
export declare const useTabsContext: () => TabsContextValue | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabsContext.js","sources":["../../../../src/components/navigation/tabs/tabsContext.ts"],"sourcesContent":["import { type Accessor, createContext, useContext } from \"solid-js\";\n\nexport interface TabsContextValue {\n value: Accessor<number>;\n onChange: (event: MouseEvent & { currentTarget: HTMLElement; target: Element }, index: number) => void;\n
|
|
1
|
+
{"version":3,"file":"tabsContext.js","sources":["../../../../src/components/navigation/tabs/tabsContext.ts"],"sourcesContent":["import { type Accessor, createContext, useContext } from \"solid-js\";\n\nexport interface TabsContextValue {\n value: Accessor<number>;\n onChange: (event: MouseEvent & { currentTarget: HTMLElement; target: Element }, index: number) => void;\n /**\n * Each Tab registers on setup with its root element (set once it renders) and\n * gets back its index: its position in the tab list, which follows the tab when\n * tabs are added, removed or reordered.\n */\n registerTab: (element: Accessor<Element | undefined>) => Accessor<number>;\n}\n\nexport const TabsContext = createContext<TabsContextValue>();\n\nexport const useTabsContext = (): TabsContextValue | undefined => useContext(TabsContext);\n"],"names":["TabsContext","createContext","useTabsContext","useContext"],"mappings":";AAaO,MAAMA,IAAcC,EAAA,GAEdC,IAAiB,MAAoCC,EAAWH,CAAW;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type JSX } from "solid-js";
|
|
2
|
-
import { type ColumnDef, type Row, type RowData, type SortingState } from "@tanstack/solid-table";
|
|
2
|
+
import { type ColumnDef, type HeaderContext, type Row, type RowData, type SortingState } from "@tanstack/solid-table";
|
|
3
3
|
import { type TableProps as SmwbTableProps } from "../../../components/dataDisplay/table";
|
|
4
4
|
declare module "@tanstack/table-core" {
|
|
5
5
|
interface ColumnMeta<TData extends RowData, TValue> {
|
|
@@ -7,10 +7,25 @@ declare module "@tanstack/table-core" {
|
|
|
7
7
|
cellProps?: JSX.ThHTMLAttributes<HTMLTableCellElement>;
|
|
8
8
|
/** The column's name on each cell when rows stack as cards (`stackBelow`); a string `header` is used by default. */
|
|
9
9
|
label?: string;
|
|
10
|
+
/**
|
|
11
|
+
* The column's controls in its head cell, such as a filter field or a menu
|
|
12
|
+
* button. They go to the cell's `actions`, after the sort control and
|
|
13
|
+
* outside it, so they stay out of its accessible name, while `header` is
|
|
14
|
+
* drawn inside it. Whatever `flexRender` takes: a component that gets the
|
|
15
|
+
* header context (`{ column, header, table }`), as `header` does, or
|
|
16
|
+
* markup. Markup is made once, with the column definitions, so it is drawn
|
|
17
|
+
* in one head cell at a time; a component draws the controls anew in each.
|
|
18
|
+
*/
|
|
19
|
+
headerActions?: JSX.Element | ((context: HeaderContext<TData, TValue>) => JSX.Element);
|
|
10
20
|
}
|
|
11
21
|
}
|
|
12
22
|
export interface RtTableProps<TData extends RowData, TValue = unknown> extends SmwbTableProps {
|
|
13
23
|
data: TData[];
|
|
24
|
+
/**
|
|
25
|
+
* TanStack column definitions. A column's `meta` may add `headerActions`
|
|
26
|
+
* (controls drawn beside the sort control in its head cell), `label` (its
|
|
27
|
+
* name on stacked rows) and `cellProps` (attributes of its body cells).
|
|
28
|
+
*/
|
|
14
29
|
columns: ColumnDef<TData, TValue>[];
|
|
15
30
|
/** Enables the sort affordance in head cells and the sorted row model. */
|
|
16
31
|
sortable?: boolean;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { use as $, spread as z, mergeProps as F, insert as M, effect as
|
|
2
|
-
import { mergeProps as q, splitProps as B, createSignal as
|
|
1
|
+
import { use as $, spread as z, mergeProps as F, insert as M, effect as L, className as R, style as j, template as k } from "solid-js/web";
|
|
2
|
+
import { mergeProps as q, splitProps as B, createSignal as p, onMount as G, createEffect as J, onCleanup as K } from "solid-js";
|
|
3
3
|
import w from "clsx";
|
|
4
4
|
import { mergeRefs as Q } from "../../../primitives/mergeRefs.js";
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { mergeStyle as V } from "../../../primitives/mergeStyle.js";
|
|
6
|
+
var W = /* @__PURE__ */ k("<div><div>");
|
|
7
|
+
const X = (e) => {
|
|
7
8
|
const o = parseFloat(e);
|
|
8
9
|
return !isNaN(o) && isFinite(o);
|
|
9
|
-
}, E = (e) => typeof e == "string" && e[e.length - 1] === "%" &&
|
|
10
|
+
}, E = (e) => typeof e == "string" && e[e.length - 1] === "%" && X(e.substring(0, e.length - 1)), b = (e, o) => {
|
|
10
11
|
o === 0 && e?.style && (e.style.display = "none");
|
|
11
|
-
},
|
|
12
|
+
}, Y = (e, o) => {
|
|
12
13
|
o === 0 && e?.style && (e.style.display = "");
|
|
13
|
-
},
|
|
14
|
+
}, tt = {
|
|
14
15
|
animating: "rah-animating",
|
|
15
16
|
animatingUp: "rah-animating--up",
|
|
16
17
|
animatingDown: "rah-animating--down",
|
|
@@ -26,8 +27,8 @@ const W = (e) => {
|
|
|
26
27
|
[e.staticHeightZero]: o === 0,
|
|
27
28
|
[e.staticHeightSpecific]: typeof o == "number" && o > 0,
|
|
28
29
|
[e.staticHeightAuto]: o === "auto"
|
|
29
|
-
}),
|
|
30
|
-
function
|
|
30
|
+
}), et = (e) => typeof e == "number" ? `${e}px` : e;
|
|
31
|
+
function rt(e) {
|
|
31
32
|
const o = q({
|
|
32
33
|
animateOpacity: !1,
|
|
33
34
|
applyInlineTransitions: !0,
|
|
@@ -35,58 +36,56 @@ function ot(e) {
|
|
|
35
36
|
duration: 300,
|
|
36
37
|
easing: "ease"
|
|
37
38
|
}, e), [t, y] = B(o, ["animateOpacity", "animationStateClasses", "applyInlineTransitions", "children", "class", "contentClassName", "delay", "duration", "easing", "height", "onHeightAnimationEnd", "onHeightAnimationStart", "style", "ref"]), c = {
|
|
38
|
-
...
|
|
39
|
+
...tt,
|
|
39
40
|
...t.animationStateClasses
|
|
40
41
|
};
|
|
41
42
|
let s, r = t.height, f, H, l = t.height, v = "visible";
|
|
42
43
|
typeof l == "number" ? (l = l < 0 ? 0 : l, v = "hidden") : E(l) && (l = l === "0%" ? 0 : l, v = "hidden");
|
|
43
|
-
const [T, S] =
|
|
44
|
-
G(() =>
|
|
45
|
-
const
|
|
46
|
-
if (
|
|
47
|
-
|
|
44
|
+
const [T, S] = p(l), [O, C] = p(v), [P, d] = p(!1), [_, A] = p(I(c, t.height));
|
|
45
|
+
G(() => b(s, T())), J(() => {
|
|
46
|
+
const n = t.height;
|
|
47
|
+
if (n !== r && s) {
|
|
48
|
+
Y(s, r), s.style.overflow = "hidden";
|
|
48
49
|
const m = s.offsetHeight;
|
|
49
50
|
s.style.overflow = "";
|
|
50
51
|
const u = t.duration + t.delay;
|
|
51
|
-
let a,
|
|
52
|
+
let a, i, g = "hidden";
|
|
52
53
|
const h = r === "auto";
|
|
53
|
-
typeof
|
|
54
|
+
typeof n == "number" ? (a = n < 0 ? 0 : n, i = a) : E(n) ? (a = n === "0%" ? 0 : n, i = a) : (a = m, i = "auto", g = void 0), h && (i = a, a = m);
|
|
54
55
|
const x = w({
|
|
55
56
|
[c.animating]: !0,
|
|
56
|
-
[c.animatingUp]: r === "auto" || typeof r == "number" && typeof
|
|
57
|
-
[c.animatingDown]:
|
|
58
|
-
[c.animatingToHeightZero]:
|
|
59
|
-
[c.animatingToHeightAuto]:
|
|
60
|
-
[c.animatingToHeightSpecific]: typeof
|
|
61
|
-
}), N = I(c,
|
|
62
|
-
S(a), C("hidden"),
|
|
63
|
-
S(
|
|
57
|
+
[c.animatingUp]: r === "auto" || typeof r == "number" && typeof n == "number" && n < r,
|
|
58
|
+
[c.animatingDown]: n === "auto" || typeof r == "number" && typeof n == "number" && n > r,
|
|
59
|
+
[c.animatingToHeightZero]: i === 0,
|
|
60
|
+
[c.animatingToHeightAuto]: i === "auto",
|
|
61
|
+
[c.animatingToHeightSpecific]: typeof i == "number" && i > 0
|
|
62
|
+
}), N = I(c, i);
|
|
63
|
+
S(a), C("hidden"), d(!h), A(x), clearTimeout(f), clearTimeout(H), h ? (f = setTimeout(() => {
|
|
64
|
+
S(i), C(g), d(!0), t.onHeightAnimationStart?.(i);
|
|
64
65
|
}, 50), H = setTimeout(() => {
|
|
65
|
-
|
|
66
|
+
d(!1), A(N), b(s, i), t.onHeightAnimationEnd?.(i);
|
|
66
67
|
}, u)) : (t.onHeightAnimationStart?.(a), f = setTimeout(() => {
|
|
67
|
-
S(
|
|
68
|
+
S(i), C(g), d(!1), A(N), n !== "auto" && b(s, a), t.onHeightAnimationEnd?.(a);
|
|
68
69
|
}, u));
|
|
69
70
|
}
|
|
70
|
-
r =
|
|
71
|
+
r = n;
|
|
71
72
|
}), K(() => {
|
|
72
73
|
clearTimeout(f), clearTimeout(H);
|
|
73
74
|
});
|
|
74
|
-
const Z = () => {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return P() && t.applyInlineTransitions && (i.transition = `height ${t.duration}ms ${t.easing} ${t.delay}ms`), i;
|
|
81
|
-
}, D = () => t.animateOpacity ? {
|
|
75
|
+
const Z = () => V(t.style, {
|
|
76
|
+
height: et(T()),
|
|
77
|
+
overflow: O() ?? "visible",
|
|
78
|
+
// Unset while not animating, so a transition the caller set stays.
|
|
79
|
+
transition: P() && t.applyInlineTransitions ? `height ${t.duration}ms ${t.easing} ${t.delay}ms` : void 0
|
|
80
|
+
}), D = () => t.animateOpacity ? {
|
|
82
81
|
transition: `opacity ${t.duration}ms ${t.easing} ${t.delay}ms`,
|
|
83
82
|
...T() === 0 ? {
|
|
84
83
|
opacity: 0
|
|
85
84
|
} : {}
|
|
86
85
|
} : {}, U = () => y["aria-hidden"] !== void 0 ? y["aria-hidden"] : t.height === 0;
|
|
87
86
|
return (() => {
|
|
88
|
-
var
|
|
89
|
-
typeof u == "function" && $(u,
|
|
87
|
+
var n = W(), m = n.firstChild, u = Q(t.ref);
|
|
88
|
+
typeof u == "function" && $(u, n), z(n, F(y, {
|
|
90
89
|
get "aria-hidden"() {
|
|
91
90
|
return U();
|
|
92
91
|
},
|
|
@@ -98,16 +97,16 @@ function ot(e) {
|
|
|
98
97
|
}
|
|
99
98
|
}), !1, !0);
|
|
100
99
|
var a = s;
|
|
101
|
-
return typeof a == "function" ? $(a, m) : s = m, M(m, () => t.children),
|
|
100
|
+
return typeof a == "function" ? $(a, m) : s = m, M(m, () => t.children), L((i) => {
|
|
102
101
|
var g = t.contentClassName, h = D();
|
|
103
|
-
return g !==
|
|
102
|
+
return g !== i.e && R(m, i.e = g), i.t = j(m, h, i.t), i;
|
|
104
103
|
}, {
|
|
105
104
|
e: void 0,
|
|
106
105
|
t: void 0
|
|
107
|
-
}),
|
|
106
|
+
}), n;
|
|
108
107
|
})();
|
|
109
108
|
}
|
|
110
109
|
export {
|
|
111
|
-
|
|
110
|
+
rt as AnimateHeight
|
|
112
111
|
};
|
|
113
112
|
//# sourceMappingURL=animateHeight.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animateHeight.js","sources":["../../../../../src/components/base/animateHeight/animateHeight.tsx"],"sourcesContent":["// Solid port of react-animate-height (MIT, © Stanko Tadić)\n// https://github.com/Stanko/react-animate-height\nimport { type JSX, type ParentProps, createEffect, createSignal, mergeProps, onCleanup, onMount, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type Height = \"auto\" | number | `${number}%`;\ntype Overflow = \"auto\" | \"visible\" | \"hidden\" | undefined;\n\ninterface AnimationStateClasses {\n animating: string;\n animatingUp: string;\n animatingDown: string;\n animatingToHeightZero: string;\n animatingToHeightAuto: string;\n animatingToHeightSpecific: string;\n static: string;\n staticHeightZero: string;\n staticHeightAuto: string;\n staticHeightSpecific: string;\n}\n\nconst isNumberString = (n: string): boolean => {\n const number = parseFloat(n);\n return !isNaN(number) && isFinite(number);\n};\n\nconst isPercentage = (height: Height): height is `${number}%` =>\n typeof height === \"string\" && height[height.length - 1] === \"%\" && isNumberString(height.substring(0, height.length - 1));\n\nconst hideContent = (element: HTMLDivElement | undefined, height: Height): void => {\n if (height === 0 && element?.style) element.style.display = \"none\";\n};\nconst showContent = (element: HTMLDivElement | undefined, height: Height): void => {\n if (height === 0 && element?.style) element.style.display = \"\";\n};\n\nconst ANIMATION_STATE_CLASSES: AnimationStateClasses = {\n animating: \"rah-animating\",\n animatingUp: \"rah-animating--up\",\n animatingDown: \"rah-animating--down\",\n animatingToHeightZero: \"rah-animating--to-height-zero\",\n animatingToHeightAuto: \"rah-animating--to-height-auto\",\n animatingToHeightSpecific: \"rah-animating--to-height-specific\",\n static: \"rah-static\",\n staticHeightZero: \"rah-static--height-zero\",\n staticHeightAuto: \"rah-static--height-auto\",\n staticHeightSpecific: \"rah-static--height-specific\",\n};\n\nconst getStaticStateClasses = (s: AnimationStateClasses, height: Height): string =>\n cn({\n [s.static]: true,\n [s.staticHeightZero]: height === 0,\n [s.staticHeightSpecific]: typeof height === \"number\" && height > 0,\n [s.staticHeightAuto]: height === \"auto\",\n });\n\nconst toCssHeight = (height: Height): string => (typeof height === \"number\" ? `${height}px` : height);\n\nexport interface AnimateHeightProps extends JSX.HTMLAttributes<HTMLDivElement> {\n animateOpacity?: boolean;\n animationStateClasses?: Partial<AnimationStateClasses>;\n applyInlineTransitions?: boolean;\n contentClassName?: string;\n delay?: number;\n duration?: number;\n easing?: string;\n height: Height;\n onHeightAnimationEnd?: (newHeight: Height) => void;\n onHeightAnimationStart?: (newHeight: Height) => void;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function AnimateHeight(props: ParentProps<AnimateHeightProps>): JSX.Element {\n const merged = mergeProps(\n { animateOpacity: false, applyInlineTransitions: true, delay: 0, duration: 300, easing: \"ease\" },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"animateOpacity\",\n \"animationStateClasses\",\n \"applyInlineTransitions\",\n \"children\",\n \"class\",\n \"contentClassName\",\n \"delay\",\n \"duration\",\n \"easing\",\n \"height\",\n \"onHeightAnimationEnd\",\n \"onHeightAnimationStart\",\n \"style\",\n \"ref\",\n ]);\n\n const stateClasses: AnimationStateClasses = { ...ANIMATION_STATE_CLASSES, ...local.animationStateClasses };\n\n let contentEl: HTMLDivElement | undefined;\n let prevHeight: Height = local.height;\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n let classesTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n let initHeight: Height = local.height;\n let initOverflow: Overflow = \"visible\";\n if (typeof initHeight === \"number\") {\n initHeight = initHeight < 0 ? 0 : initHeight;\n initOverflow = \"hidden\";\n } else if (isPercentage(initHeight)) {\n initHeight = initHeight === \"0%\" ? 0 : initHeight;\n initOverflow = \"hidden\";\n }\n\n const [currentHeight, setCurrentHeight] = createSignal<Height>(initHeight);\n const [overflow, setOverflow] = createSignal<Overflow>(initOverflow);\n const [useTransitions, setUseTransitions] = createSignal(false);\n const [stateClassNames, setStateClassNames] = createSignal(getStaticStateClasses(stateClasses, local.height));\n\n onMount(() => hideContent(contentEl, currentHeight()));\n\n createEffect(() => {\n const height = local.height;\n if (height !== prevHeight && contentEl) {\n showContent(contentEl, prevHeight);\n contentEl.style.overflow = \"hidden\";\n const contentHeight = contentEl.offsetHeight;\n contentEl.style.overflow = \"\";\n\n const totalDuration = local.duration + local.delay;\n let newHeight: Height;\n let timeoutHeight: Height;\n let timeoutOverflow: Overflow = \"hidden\";\n const isCurrentHeightAuto = prevHeight === \"auto\";\n\n if (typeof height === \"number\") {\n newHeight = height < 0 ? 0 : height;\n timeoutHeight = newHeight;\n } else if (isPercentage(height)) {\n newHeight = height === \"0%\" ? 0 : height;\n timeoutHeight = newHeight;\n } else {\n newHeight = contentHeight;\n timeoutHeight = \"auto\";\n timeoutOverflow = undefined;\n }\n\n if (isCurrentHeightAuto) {\n timeoutHeight = newHeight;\n newHeight = contentHeight;\n }\n\n const animatingClassNames = cn({\n [stateClasses.animating]: true,\n [stateClasses.animatingUp]:\n prevHeight === \"auto\" || (typeof prevHeight === \"number\" && typeof height === \"number\" && height < prevHeight),\n [stateClasses.animatingDown]:\n height === \"auto\" || (typeof prevHeight === \"number\" && typeof height === \"number\" && height > prevHeight),\n [stateClasses.animatingToHeightZero]: timeoutHeight === 0,\n [stateClasses.animatingToHeightAuto]: timeoutHeight === \"auto\",\n [stateClasses.animatingToHeightSpecific]: typeof timeoutHeight === \"number\" && timeoutHeight > 0,\n });\n const finalClassNames = getStaticStateClasses(stateClasses, timeoutHeight);\n\n setCurrentHeight(newHeight);\n setOverflow(\"hidden\");\n setUseTransitions(!isCurrentHeightAuto);\n setStateClassNames(animatingClassNames);\n\n clearTimeout(timeoutId);\n clearTimeout(classesTimeoutId);\n\n if (isCurrentHeightAuto) {\n timeoutId = setTimeout(() => {\n setCurrentHeight(timeoutHeight);\n setOverflow(timeoutOverflow);\n setUseTransitions(true);\n local.onHeightAnimationStart?.(timeoutHeight);\n }, 50);\n classesTimeoutId = setTimeout(() => {\n setUseTransitions(false);\n setStateClassNames(finalClassNames);\n hideContent(contentEl, timeoutHeight);\n local.onHeightAnimationEnd?.(timeoutHeight);\n }, totalDuration);\n } else {\n local.onHeightAnimationStart?.(newHeight);\n timeoutId = setTimeout(() => {\n setCurrentHeight(timeoutHeight);\n setOverflow(timeoutOverflow);\n setUseTransitions(false);\n setStateClassNames(finalClassNames);\n if (height !== \"auto\") hideContent(contentEl, newHeight);\n local.onHeightAnimationEnd?.(newHeight);\n }, totalDuration);\n }\n }\n prevHeight = height;\n });\n\n onCleanup(() => {\n clearTimeout(timeoutId);\n clearTimeout(classesTimeoutId);\n });\n\n const componentStyle = (): JSX.CSSProperties => {\n const base: JSX.CSSProperties = {\n ...(typeof local.style === \"object\" && local.style ? local.style : {}),\n height: toCssHeight(currentHeight()),\n overflow: overflow() ?? \"visible\",\n };\n if (useTransitions() && local.applyInlineTransitions) {\n base.transition = `height ${local.duration}ms ${local.easing} ${local.delay}ms`;\n }\n return base;\n };\n\n const contentStyle = (): JSX.CSSProperties => {\n if (!local.animateOpacity) return {};\n return {\n transition: `opacity ${local.duration}ms ${local.easing} ${local.delay}ms`,\n ...(currentHeight() === 0 ? { opacity: 0 } : {}),\n };\n };\n\n const ariaHidden = (): boolean | undefined =>\n rest[\"aria-hidden\"] !== undefined ? (rest[\"aria-hidden\"] as boolean) : local.height === 0;\n\n return (\n <div {...rest} ref={mergeRefs(local.ref)} aria-hidden={ariaHidden()} class={cn(stateClassNames(), local.class)} style={componentStyle()}>\n <div class={local.contentClassName} style={contentStyle()} ref={contentEl}>\n {local.children}\n </div>\n </div>\n );\n}\n\nexport default AnimateHeight;\n"],"names":["isNumberString","n","number","parseFloat","isNaN","isFinite","isPercentage","height","length","substring","hideContent","element","style","display","showContent","ANIMATION_STATE_CLASSES","animating","animatingUp","animatingDown","animatingToHeightZero","animatingToHeightAuto","animatingToHeightSpecific","static","staticHeightZero","staticHeightAuto","staticHeightSpecific","getStaticStateClasses","s","cn","toCssHeight","AnimateHeight","props","merged","mergeProps","animateOpacity","applyInlineTransitions","delay","duration","easing","local","rest","splitProps","stateClasses","animationStateClasses","contentEl","prevHeight","timeoutId","classesTimeoutId","initHeight","initOverflow","currentHeight","setCurrentHeight","createSignal","overflow","setOverflow","useTransitions","setUseTransitions","stateClassNames","setStateClassNames","onMount","createEffect","contentHeight","offsetHeight","totalDuration","newHeight","timeoutHeight","timeoutOverflow","isCurrentHeightAuto","undefined","animatingClassNames","finalClassNames","clearTimeout","setTimeout","onHeightAnimationStart","onHeightAnimationEnd","onCleanup","componentStyle","base","transition","contentStyle","opacity","ariaHidden","_el$","_tmpl$","_el$2","firstChild","_ref$","mergeRefs","ref","_$use","_$spread","_$mergeProps","class","_ref$2","_$insert","children","_$effect","_p$","_v$","contentClassName","_v$2","e","_$className","t","_$style"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"animateHeight.js","sources":["../../../../../src/components/base/animateHeight/animateHeight.tsx"],"sourcesContent":["// Solid port of react-animate-height (MIT, © Stanko Tadić)\n// https://github.com/Stanko/react-animate-height\nimport { type JSX, type ParentProps, createEffect, createSignal, mergeProps, onCleanup, onMount, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\n\nexport type Height = \"auto\" | number | `${number}%`;\ntype Overflow = \"auto\" | \"visible\" | \"hidden\" | undefined;\n\ninterface AnimationStateClasses {\n animating: string;\n animatingUp: string;\n animatingDown: string;\n animatingToHeightZero: string;\n animatingToHeightAuto: string;\n animatingToHeightSpecific: string;\n static: string;\n staticHeightZero: string;\n staticHeightAuto: string;\n staticHeightSpecific: string;\n}\n\nconst isNumberString = (n: string): boolean => {\n const number = parseFloat(n);\n return !isNaN(number) && isFinite(number);\n};\n\nconst isPercentage = (height: Height): height is `${number}%` =>\n typeof height === \"string\" && height[height.length - 1] === \"%\" && isNumberString(height.substring(0, height.length - 1));\n\nconst hideContent = (element: HTMLDivElement | undefined, height: Height): void => {\n if (height === 0 && element?.style) element.style.display = \"none\";\n};\nconst showContent = (element: HTMLDivElement | undefined, height: Height): void => {\n if (height === 0 && element?.style) element.style.display = \"\";\n};\n\nconst ANIMATION_STATE_CLASSES: AnimationStateClasses = {\n animating: \"rah-animating\",\n animatingUp: \"rah-animating--up\",\n animatingDown: \"rah-animating--down\",\n animatingToHeightZero: \"rah-animating--to-height-zero\",\n animatingToHeightAuto: \"rah-animating--to-height-auto\",\n animatingToHeightSpecific: \"rah-animating--to-height-specific\",\n static: \"rah-static\",\n staticHeightZero: \"rah-static--height-zero\",\n staticHeightAuto: \"rah-static--height-auto\",\n staticHeightSpecific: \"rah-static--height-specific\",\n};\n\nconst getStaticStateClasses = (s: AnimationStateClasses, height: Height): string =>\n cn({\n [s.static]: true,\n [s.staticHeightZero]: height === 0,\n [s.staticHeightSpecific]: typeof height === \"number\" && height > 0,\n [s.staticHeightAuto]: height === \"auto\",\n });\n\nconst toCssHeight = (height: Height): string => (typeof height === \"number\" ? `${height}px` : height);\n\nexport interface AnimateHeightProps extends JSX.HTMLAttributes<HTMLDivElement> {\n animateOpacity?: boolean;\n animationStateClasses?: Partial<AnimationStateClasses>;\n applyInlineTransitions?: boolean;\n contentClassName?: string;\n delay?: number;\n duration?: number;\n easing?: string;\n height: Height;\n onHeightAnimationEnd?: (newHeight: Height) => void;\n onHeightAnimationStart?: (newHeight: Height) => void;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function AnimateHeight(props: ParentProps<AnimateHeightProps>): JSX.Element {\n const merged = mergeProps(\n { animateOpacity: false, applyInlineTransitions: true, delay: 0, duration: 300, easing: \"ease\" },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"animateOpacity\",\n \"animationStateClasses\",\n \"applyInlineTransitions\",\n \"children\",\n \"class\",\n \"contentClassName\",\n \"delay\",\n \"duration\",\n \"easing\",\n \"height\",\n \"onHeightAnimationEnd\",\n \"onHeightAnimationStart\",\n \"style\",\n \"ref\",\n ]);\n\n const stateClasses: AnimationStateClasses = { ...ANIMATION_STATE_CLASSES, ...local.animationStateClasses };\n\n let contentEl: HTMLDivElement | undefined;\n let prevHeight: Height = local.height;\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n let classesTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n let initHeight: Height = local.height;\n let initOverflow: Overflow = \"visible\";\n if (typeof initHeight === \"number\") {\n initHeight = initHeight < 0 ? 0 : initHeight;\n initOverflow = \"hidden\";\n } else if (isPercentage(initHeight)) {\n initHeight = initHeight === \"0%\" ? 0 : initHeight;\n initOverflow = \"hidden\";\n }\n\n const [currentHeight, setCurrentHeight] = createSignal<Height>(initHeight);\n const [overflow, setOverflow] = createSignal<Overflow>(initOverflow);\n const [useTransitions, setUseTransitions] = createSignal(false);\n const [stateClassNames, setStateClassNames] = createSignal(getStaticStateClasses(stateClasses, local.height));\n\n onMount(() => hideContent(contentEl, currentHeight()));\n\n createEffect(() => {\n const height = local.height;\n if (height !== prevHeight && contentEl) {\n showContent(contentEl, prevHeight);\n contentEl.style.overflow = \"hidden\";\n const contentHeight = contentEl.offsetHeight;\n contentEl.style.overflow = \"\";\n\n const totalDuration = local.duration + local.delay;\n let newHeight: Height;\n let timeoutHeight: Height;\n let timeoutOverflow: Overflow = \"hidden\";\n const isCurrentHeightAuto = prevHeight === \"auto\";\n\n if (typeof height === \"number\") {\n newHeight = height < 0 ? 0 : height;\n timeoutHeight = newHeight;\n } else if (isPercentage(height)) {\n newHeight = height === \"0%\" ? 0 : height;\n timeoutHeight = newHeight;\n } else {\n newHeight = contentHeight;\n timeoutHeight = \"auto\";\n timeoutOverflow = undefined;\n }\n\n if (isCurrentHeightAuto) {\n timeoutHeight = newHeight;\n newHeight = contentHeight;\n }\n\n const animatingClassNames = cn({\n [stateClasses.animating]: true,\n [stateClasses.animatingUp]:\n prevHeight === \"auto\" || (typeof prevHeight === \"number\" && typeof height === \"number\" && height < prevHeight),\n [stateClasses.animatingDown]:\n height === \"auto\" || (typeof prevHeight === \"number\" && typeof height === \"number\" && height > prevHeight),\n [stateClasses.animatingToHeightZero]: timeoutHeight === 0,\n [stateClasses.animatingToHeightAuto]: timeoutHeight === \"auto\",\n [stateClasses.animatingToHeightSpecific]: typeof timeoutHeight === \"number\" && timeoutHeight > 0,\n });\n const finalClassNames = getStaticStateClasses(stateClasses, timeoutHeight);\n\n setCurrentHeight(newHeight);\n setOverflow(\"hidden\");\n setUseTransitions(!isCurrentHeightAuto);\n setStateClassNames(animatingClassNames);\n\n clearTimeout(timeoutId);\n clearTimeout(classesTimeoutId);\n\n if (isCurrentHeightAuto) {\n timeoutId = setTimeout(() => {\n setCurrentHeight(timeoutHeight);\n setOverflow(timeoutOverflow);\n setUseTransitions(true);\n local.onHeightAnimationStart?.(timeoutHeight);\n }, 50);\n classesTimeoutId = setTimeout(() => {\n setUseTransitions(false);\n setStateClassNames(finalClassNames);\n hideContent(contentEl, timeoutHeight);\n local.onHeightAnimationEnd?.(timeoutHeight);\n }, totalDuration);\n } else {\n local.onHeightAnimationStart?.(newHeight);\n timeoutId = setTimeout(() => {\n setCurrentHeight(timeoutHeight);\n setOverflow(timeoutOverflow);\n setUseTransitions(false);\n setStateClassNames(finalClassNames);\n if (height !== \"auto\") hideContent(contentEl, newHeight);\n local.onHeightAnimationEnd?.(newHeight);\n }, totalDuration);\n }\n }\n prevHeight = height;\n });\n\n onCleanup(() => {\n clearTimeout(timeoutId);\n clearTimeout(classesTimeoutId);\n });\n\n const componentStyle = (): JSX.CSSProperties | string | undefined =>\n mergeStyle(local.style, {\n height: toCssHeight(currentHeight()),\n overflow: overflow() ?? \"visible\",\n // Unset while not animating, so a transition the caller set stays.\n transition:\n useTransitions() && local.applyInlineTransitions\n ? `height ${local.duration}ms ${local.easing} ${local.delay}ms`\n : undefined,\n });\n\n const contentStyle = (): JSX.CSSProperties => {\n if (!local.animateOpacity) return {};\n return {\n transition: `opacity ${local.duration}ms ${local.easing} ${local.delay}ms`,\n ...(currentHeight() === 0 ? { opacity: 0 } : {}),\n };\n };\n\n const ariaHidden = (): boolean | undefined =>\n rest[\"aria-hidden\"] !== undefined ? (rest[\"aria-hidden\"] as boolean) : local.height === 0;\n\n return (\n <div {...rest} ref={mergeRefs(local.ref)} aria-hidden={ariaHidden()} class={cn(stateClassNames(), local.class)} style={componentStyle()}>\n <div class={local.contentClassName} style={contentStyle()} ref={contentEl}>\n {local.children}\n </div>\n </div>\n );\n}\n\nexport default AnimateHeight;\n"],"names":["isNumberString","n","number","parseFloat","isNaN","isFinite","isPercentage","height","length","substring","hideContent","element","style","display","showContent","ANIMATION_STATE_CLASSES","animating","animatingUp","animatingDown","animatingToHeightZero","animatingToHeightAuto","animatingToHeightSpecific","static","staticHeightZero","staticHeightAuto","staticHeightSpecific","getStaticStateClasses","s","cn","toCssHeight","AnimateHeight","props","merged","mergeProps","animateOpacity","applyInlineTransitions","delay","duration","easing","local","rest","splitProps","stateClasses","animationStateClasses","contentEl","prevHeight","timeoutId","classesTimeoutId","initHeight","initOverflow","currentHeight","setCurrentHeight","createSignal","overflow","setOverflow","useTransitions","setUseTransitions","stateClassNames","setStateClassNames","onMount","createEffect","contentHeight","offsetHeight","totalDuration","newHeight","timeoutHeight","timeoutOverflow","isCurrentHeightAuto","undefined","animatingClassNames","finalClassNames","clearTimeout","setTimeout","onHeightAnimationStart","onHeightAnimationEnd","onCleanup","componentStyle","mergeStyle","transition","contentStyle","opacity","ariaHidden","_el$","_tmpl$","_el$2","firstChild","_ref$","mergeRefs","ref","_$use","_$spread","_$mergeProps","class","_ref$2","_$insert","children","_$effect","_p$","_v$","contentClassName","_v$2","e","_$className","t","_$style"],"mappings":"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"}
|
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
import { use as
|
|
2
|
-
import { mergeProps as
|
|
3
|
-
import
|
|
4
|
-
import { mergeRefs as
|
|
1
|
+
import { use as L, spread as O, mergeProps as R, insert as y, memo as j, effect as $, setStyleProperty as c, setAttribute as _, template as m } from "solid-js/web";
|
|
2
|
+
import { mergeProps as A, splitProps as B, useContext as T } from "solid-js";
|
|
3
|
+
import D from "clsx";
|
|
4
|
+
import { mergeRefs as E } from "../../../primitives/mergeRefs.js";
|
|
5
|
+
import { mergeStyle as F } from "../../../primitives/mergeStyle.js";
|
|
5
6
|
import { getIcon as G } from "../../../icons/registry.js";
|
|
6
|
-
import { getIconConfig as
|
|
7
|
+
import { getIconConfig as z } from "../../../icons/config.js";
|
|
7
8
|
import { IconContext as H, createIconVersion as K } from "./iconProvider.js";
|
|
8
|
-
var N = /* @__PURE__ */
|
|
9
|
-
const q = ["primary", "secondary", "error", "success", "warning", "info", "disabled"],
|
|
10
|
-
function J(
|
|
11
|
-
!
|
|
9
|
+
var N = /* @__PURE__ */ m("<span>"), V = /* @__PURE__ */ m("<span class=material-symbols-outlined>"), W = /* @__PURE__ */ m("<svg class=smwb-icon__svg fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round aria-hidden=true>");
|
|
10
|
+
const q = ["primary", "secondary", "error", "success", "warning", "info", "disabled"], x = /* @__PURE__ */ new Set();
|
|
11
|
+
function J(i) {
|
|
12
|
+
!z().warnOnMissing || x.has(i) || (x.add(i), console.warn(`[smwb] Icon "${i}" is not registered. Register it (import { ${i} } from "@smwb/ui-solid/icons") or use source="auto" to fall back to Material Symbols.`));
|
|
12
13
|
}
|
|
13
|
-
function oe(
|
|
14
|
-
const
|
|
14
|
+
function oe(i) {
|
|
15
|
+
const I = A({
|
|
15
16
|
weight: 400,
|
|
16
17
|
fill: 0,
|
|
17
18
|
size: 20,
|
|
18
19
|
grade: 100,
|
|
19
20
|
color: "inherit"
|
|
20
|
-
},
|
|
21
|
-
const
|
|
22
|
-
return
|
|
23
|
-
},
|
|
21
|
+
}, i), [e, n] = B(I, ["class", "weight", "fill", "size", "grade", "name", "color", "title", "style", "source", "ref", "data-testid"]), M = T(H), g = K(), k = () => (g(), e.source ?? M?.source ?? z().source), s = () => (g(), typeof e.name == "object" ? e.name : G(e.name)), u = () => typeof e.name == "string" ? e.name : e.name.name, a = () => {
|
|
22
|
+
const o = k();
|
|
23
|
+
return o === "google" ? "google" : s() ? "smwb" : o === "smwb" ? (J(u()), "missing") : "google";
|
|
24
|
+
}, d = () => !(e.title || n["aria-label"] || n["aria-labelledby"]), C = () => typeof e.color == "string" && q.includes(e.color) ? `smwb-icon_color-${e.color}` : void 0, l = () => typeof e.size == "number" ? `${e.size}px` : e.size, S = () => Math.round(Math.min(3, Math.max(1, e.weight / 200)) * 100) / 100;
|
|
24
25
|
return (() => {
|
|
25
|
-
var
|
|
26
|
-
return typeof
|
|
27
|
-
"data-testid"
|
|
26
|
+
var o = N(), f = E(e.ref);
|
|
27
|
+
return typeof f == "function" && L(f, o), O(o, R(n, {
|
|
28
|
+
get "data-testid"() {
|
|
29
|
+
return e["data-testid"] ?? "icon";
|
|
30
|
+
},
|
|
28
31
|
get "data-icon-source"() {
|
|
29
|
-
return
|
|
32
|
+
return a();
|
|
30
33
|
},
|
|
31
34
|
get role() {
|
|
32
|
-
return
|
|
35
|
+
return n.role ?? (d() ? void 0 : "img");
|
|
33
36
|
},
|
|
34
37
|
get "aria-hidden"() {
|
|
35
|
-
return
|
|
38
|
+
return d() ? !0 : void 0;
|
|
36
39
|
},
|
|
37
40
|
get "aria-label"() {
|
|
38
|
-
return e.title;
|
|
41
|
+
return e.title || n["aria-label"];
|
|
39
42
|
},
|
|
40
43
|
get title() {
|
|
41
44
|
return e.title;
|
|
42
45
|
},
|
|
43
46
|
get style() {
|
|
44
|
-
return {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"font-variation-settings": `'FILL' ${e.fill}, 'wght' ${e.weight}, 'GRAD' ${e.grade}, 'opsz' 48`
|
|
48
|
-
} : null
|
|
49
|
-
};
|
|
47
|
+
return F(e.style, {
|
|
48
|
+
"font-variation-settings": a() === "google" ? `'FILL' ${e.fill}, 'wght' ${e.weight}, 'GRAD' ${e.grade}, 'opsz' 48` : void 0
|
|
49
|
+
});
|
|
50
50
|
},
|
|
51
51
|
get class() {
|
|
52
|
-
return
|
|
52
|
+
return D("smwb-icon__wrapper", C(), e.class);
|
|
53
53
|
}
|
|
54
|
-
}), !1, !0),
|
|
55
|
-
var
|
|
56
|
-
return () =>
|
|
57
|
-
var
|
|
58
|
-
return
|
|
54
|
+
}), !1, !0), y(o, (() => {
|
|
55
|
+
var P = j(() => a() === "google");
|
|
56
|
+
return () => P() ? (() => {
|
|
57
|
+
var r = V();
|
|
58
|
+
return y(r, u), $((t) => c(r, "font-size", l())), r;
|
|
59
59
|
})() : (() => {
|
|
60
|
-
var
|
|
61
|
-
return
|
|
62
|
-
var
|
|
63
|
-
return
|
|
60
|
+
var r = W();
|
|
61
|
+
return $((t) => {
|
|
62
|
+
var v = s()?.viewBox ?? "0 0 24 24", p = l(), w = l(), b = S(), h = s()?.body ?? "";
|
|
63
|
+
return v !== t.e && _(r, "viewBox", t.e = v), p !== t.t && c(r, "width", t.t = p), w !== t.a && c(r, "height", t.a = w), b !== t.o && _(r, "stroke-width", t.o = b), h !== t.i && (r.innerHTML = t.i = h), t;
|
|
64
64
|
}, {
|
|
65
65
|
e: void 0,
|
|
66
66
|
t: void 0,
|
|
67
67
|
a: void 0,
|
|
68
68
|
o: void 0,
|
|
69
69
|
i: void 0
|
|
70
|
-
}),
|
|
70
|
+
}), r;
|
|
71
71
|
})();
|
|
72
|
-
})()),
|
|
72
|
+
})()), o;
|
|
73
73
|
})();
|
|
74
74
|
}
|
|
75
75
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.js","sources":["../../../../../src/components/base/icon/icon.tsx"],"sourcesContent":["/* eslint-disable solid/no-innerhtml -- icon bodies are static SVG geometry\n generated from icons/data into src/icons/svg; nothing user-supplied reaches\n this attribute, and an <svg> assembled from JSX children cannot be handed to\n a consumer as plain data. */\nimport { type JSX, mergeProps, splitProps, useContext } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { getIcon } from \"../../../icons/registry\";\nimport { getIconConfig } from \"../../../icons/config\";\nimport type { IconDefinition, IconSource } from \"../../../icons/types\";\nimport { createIconVersion, IconContext } from \"./iconProvider\";\n\nexport type IconColor = \"inherit\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\" | \"disabled\";\n\nconst COLOR_TOKENS: ReadonlyArray<string> = [\n \"primary\",\n \"secondary\",\n \"error\",\n \"success\",\n \"warning\",\n \"info\",\n \"disabled\",\n];\n\nconst warned = new Set<string>();\n\nfunction warnMissing(name: string): void {\n if (!getIconConfig().warnOnMissing || warned.has(name)) return;\n warned.add(name);\n console.warn(\n `[smwb] Icon \"${name}\" is not registered. Register it (import { ${name} } from \"@smwb/ui-solid/icons\") ` +\n `or use source=\"auto\" to fall back to Material Symbols.`\n );\n}\n\nexport interface IconProps extends JSX.HTMLAttributes<HTMLSpanElement> {\n /**\n * Icon name — the Google Material Symbols name, e.g. `\"arrow_right_alt\"`.\n * Lookup is forgiving: `arrowRightAlt` and `arrow-right-alt` resolve too, as\n * do an icon's aliases.\n *\n * An {@link IconDefinition} may be passed instead, which skips the registry\n * entirely and is the most bundle-friendly form:\n *\n * ```tsx\n * import { arrowRightAlt } from \"@smwb/ui-solid/icons\";\n * <Icon name={arrowRightAlt} />\n * ```\n */\n name: string | IconDefinition;\n /**\n * Material Symbols weight axis (100-700). For the smwb SVG set it maps to the\n * stroke width: 400 → 2px, 700 → 3px, 100 → 1px.\n */\n weight?: number;\n /** Material Symbols FILL axis. Not used by the smwb SVG set (it is a contour set). */\n fill?: 0 | 1;\n /** Pixel number or any CSS length (e.g. \"1.5rem\"). */\n size?: number | string;\n /** Material Symbols GRAD axis. Not used by the smwb SVG set. */\n grade?: number;\n /**\n * Semantic color token; `inherit` (default) keeps the text color. Any string\n * is accepted for backward compatibility, but only known {@link IconColor}\n * tokens emit a color class.\n */\n color?: IconColor | (string & {});\n /**\n * Accessible name. When provided the icon is exposed as `role=\"img\"`;\n * otherwise it is `aria-hidden` (decorative).\n */\n title?: string;\n /** Overrides the icon source for this icon only. See {@link IconSource}. */\n source?: IconSource;\n ref?: Ref<HTMLSpanElement>;\n}\n\nexport function Icon(props: IconProps): JSX.Element {\n const merged = mergeProps(\n { weight: 400, fill: 0 as 0 | 1, size: 20 as number | string, grade: 100, color: \"inherit\" as IconProps[\"color\"] },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"weight\",\n \"fill\",\n \"size\",\n \"grade\",\n \"name\",\n \"color\",\n \"title\",\n \"style\",\n \"source\",\n \"ref\",\n ]);\n\n const context = useContext(IconContext);\n // Re-reads the registry when icons are registered late (lazy chunks, HMR).\n const version = createIconVersion();\n\n const source = (): IconSource => {\n version();\n return local.source ?? context?.source ?? getIconConfig().source;\n };\n const definition = (): IconDefinition | undefined => {\n version();\n return typeof local.name === \"object\" ? local.name : getIcon(local.name);\n };\n const glyph = (): string => (typeof local.name === \"string\" ? local.name : local.name.name);\n\n const mode = (): \"google\" | \"smwb\" | \"missing\" => {\n const resolved = source();\n if (resolved === \"google\") return \"google\";\n if (definition()) return \"smwb\";\n if (resolved === \"smwb\") {\n warnMissing(glyph());\n return \"missing\";\n }\n return \"google\";\n };\n\n const decorative = (): boolean => local.title === undefined;\n const colorClass = (): string | undefined =>\n typeof local.color === \"string\" && COLOR_TOKENS.includes(local.color) ? `smwb-icon_color-${local.color}` : undefined;\n const styleObject = (): JSX.CSSProperties => (typeof local.style === \"object\" && local.style ? local.style : {});\n const cssSize = (): string => (typeof local.size === \"number\" ? `${local.size}px` : local.size);\n const strokeWidth = (): number => Math.round(Math.min(3, Math.max(1, local.weight / 200)) * 100) / 100;\n\n return (\n <span\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"icon\"\n data-icon-source={mode()}\n role={decorative() ? undefined : \"img\"}\n aria-hidden={decorative() ? true : undefined}\n aria-label={local.title}\n title={local.title}\n style={{\n ...styleObject(),\n ...(mode() === \"google\"\n ? {\n \"font-variation-settings\": `'FILL' ${local.fill}, 'wght' ${local.weight}, 'GRAD' ${local.grade}, 'opsz' 48`,\n }\n : null),\n }}\n class={cn(\"smwb-icon__wrapper\", colorClass(), local.class)}\n >\n {mode() === \"google\" ? (\n <span class=\"material-symbols-outlined\" style={{ \"font-size\": cssSize() }}>\n {glyph()}\n </span>\n ) : (\n <svg\n class=\"smwb-icon__svg\"\n viewBox={definition()?.viewBox ?? \"0 0 24 24\"}\n style={{ width: cssSize(), height: cssSize() }}\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width={strokeWidth()}\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n innerHTML={definition()?.body ?? \"\"}\n />\n )}\n </span>\n );\n}\n\nexport default Icon;\n"],"names":["COLOR_TOKENS","warned","Set","warnMissing","name","getIconConfig","warnOnMissing","has","add","console","warn","Icon","props","merged","mergeProps","weight","fill","size","grade","color","local","rest","splitProps","context","useContext","IconContext","version","createIconVersion","source","definition","getIcon","glyph","mode","resolved","decorative","title","undefined","colorClass","includes","styleObject","style","cssSize","strokeWidth","Math","round","min","max","_el$","_tmpl$","_ref$","mergeRefs","ref","_$use","_$spread","_$mergeProps","role","cn","class","_$insert","_c$","_$memo","_el$2","_tmpl$2","_$effect","_$p","_$setStyleProperty","_el$3","_tmpl$3","_p$","_v$","viewBox","_v$2","_v$3","_v$4","_v$5","body","e","_$setAttribute","t","a","o","i","innerHTML"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"icon.js","sources":["../../../../../src/components/base/icon/icon.tsx"],"sourcesContent":["/* eslint-disable solid/no-innerhtml -- icon bodies are static SVG geometry\n generated from icons/data into src/icons/svg; nothing user-supplied reaches\n this attribute, and an <svg> assembled from JSX children cannot be handed to\n a consumer as plain data. */\nimport { type JSX, mergeProps, splitProps, useContext } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\nimport { getIcon } from \"../../../icons/registry\";\nimport { getIconConfig } from \"../../../icons/config\";\nimport type { IconDefinition, IconSource } from \"../../../icons/types\";\nimport { createIconVersion, IconContext } from \"./iconProvider\";\n\nexport type IconColor = \"inherit\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\" | \"disabled\";\n\nconst COLOR_TOKENS: ReadonlyArray<string> = [\n \"primary\",\n \"secondary\",\n \"error\",\n \"success\",\n \"warning\",\n \"info\",\n \"disabled\",\n];\n\nconst warned = new Set<string>();\n\nfunction warnMissing(name: string): void {\n if (!getIconConfig().warnOnMissing || warned.has(name)) return;\n warned.add(name);\n console.warn(\n `[smwb] Icon \"${name}\" is not registered. Register it (import { ${name} } from \"@smwb/ui-solid/icons\") ` +\n `or use source=\"auto\" to fall back to Material Symbols.`\n );\n}\n\nexport interface IconProps extends JSX.HTMLAttributes<HTMLSpanElement> {\n /**\n * Icon name — the Google Material Symbols name, e.g. `\"arrow_right_alt\"`.\n * Lookup is forgiving: `arrowRightAlt` and `arrow-right-alt` resolve too, as\n * do an icon's aliases.\n *\n * An {@link IconDefinition} may be passed instead, which skips the registry\n * entirely and is the most bundle-friendly form:\n *\n * ```tsx\n * import { arrowRightAlt } from \"@smwb/ui-solid/icons\";\n * <Icon name={arrowRightAlt} />\n * ```\n */\n name: string | IconDefinition;\n /**\n * Material Symbols weight axis (100-700). For the smwb SVG set it maps to the\n * stroke width: 400 → 2px, 700 → 3px, 100 → 1px.\n */\n weight?: number;\n /** Material Symbols FILL axis. Not used by the smwb SVG set (it is a contour set). */\n fill?: 0 | 1;\n /** Pixel number or any CSS length (e.g. \"1.5rem\"). */\n size?: number | string;\n /** Material Symbols GRAD axis. Not used by the smwb SVG set. */\n grade?: number;\n /**\n * Semantic color token; `inherit` (default) keeps the text color. Any string\n * is accepted for backward compatibility, but only known {@link IconColor}\n * tokens emit a color class.\n */\n color?: IconColor | (string & {});\n /**\n * Accessible name, also shown as a tooltip. A non-empty `title`,\n * `aria-label` or `aria-labelledby` names the icon: it is exposed as\n * `role=\"img\"`, or with the `role` you pass. Without any of them the icon is\n * decorative and `aria-hidden`.\n */\n title?: string;\n /** Overrides the icon source for this icon only. See {@link IconSource}. */\n source?: IconSource;\n /** Test id of the root `<span>`; `icon` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLSpanElement>;\n}\n\nexport function Icon(props: IconProps): JSX.Element {\n const merged = mergeProps(\n { weight: 400, fill: 0 as 0 | 1, size: 20 as number | string, grade: 100, color: \"inherit\" as IconProps[\"color\"] },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"weight\",\n \"fill\",\n \"size\",\n \"grade\",\n \"name\",\n \"color\",\n \"title\",\n \"style\",\n \"source\",\n \"ref\",\n \"data-testid\",\n ]);\n\n const context = useContext(IconContext);\n // Re-reads the registry when icons are registered late (lazy chunks, HMR).\n const version = createIconVersion();\n\n const source = (): IconSource => {\n version();\n return local.source ?? context?.source ?? getIconConfig().source;\n };\n const definition = (): IconDefinition | undefined => {\n version();\n return typeof local.name === \"object\" ? local.name : getIcon(local.name);\n };\n const glyph = (): string => (typeof local.name === \"string\" ? local.name : local.name.name);\n\n const mode = (): \"google\" | \"smwb\" | \"missing\" => {\n const resolved = source();\n if (resolved === \"google\") return \"google\";\n if (definition()) return \"smwb\";\n if (resolved === \"smwb\") {\n warnMissing(glyph());\n return \"missing\";\n }\n return \"google\";\n };\n\n const decorative = (): boolean => !(local.title || rest[\"aria-label\"] || rest[\"aria-labelledby\"]);\n const colorClass = (): string | undefined =>\n typeof local.color === \"string\" && COLOR_TOKENS.includes(local.color) ? `smwb-icon_color-${local.color}` : undefined;\n const cssSize = (): string => (typeof local.size === \"number\" ? `${local.size}px` : local.size);\n const strokeWidth = (): number => Math.round(Math.min(3, Math.max(1, local.weight / 200)) * 100) / 100;\n\n return (\n <span\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid={local[\"data-testid\"] ?? \"icon\"}\n data-icon-source={mode()}\n // An unnamed icon is hidden over the caller's aria-hidden. A named one is\n // an image unless the caller gives it a role, and a title names it over\n // the caller's aria-label.\n role={rest.role ?? (decorative() ? undefined : \"img\")}\n aria-hidden={decorative() ? true : undefined}\n aria-label={local.title || rest[\"aria-label\"]}\n title={local.title}\n style={mergeStyle(local.style, {\n \"font-variation-settings\":\n mode() === \"google\"\n ? `'FILL' ${local.fill}, 'wght' ${local.weight}, 'GRAD' ${local.grade}, 'opsz' 48`\n : undefined,\n })}\n class={cn(\"smwb-icon__wrapper\", colorClass(), local.class)}\n >\n {mode() === \"google\" ? (\n <span class=\"material-symbols-outlined\" style={{ \"font-size\": cssSize() }}>\n {glyph()}\n </span>\n ) : (\n <svg\n class=\"smwb-icon__svg\"\n viewBox={definition()?.viewBox ?? \"0 0 24 24\"}\n style={{ width: cssSize(), height: cssSize() }}\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width={strokeWidth()}\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n innerHTML={definition()?.body ?? \"\"}\n />\n )}\n </span>\n );\n}\n\nexport default Icon;\n"],"names":["COLOR_TOKENS","warned","Set","warnMissing","name","getIconConfig","warnOnMissing","has","add","console","warn","Icon","props","merged","mergeProps","weight","fill","size","grade","color","local","rest","splitProps","context","useContext","IconContext","version","createIconVersion","source","definition","getIcon","glyph","mode","resolved","decorative","title","colorClass","includes","undefined","cssSize","strokeWidth","Math","round","min","max","_el$","_tmpl$","_ref$","mergeRefs","ref","_$use","_$spread","_$mergeProps","role","style","mergeStyle","cn","class","_$insert","_c$","_$memo","_el$2","_tmpl$2","_$effect","_$p","_$setStyleProperty","_el$3","_tmpl$3","_p$","_v$","viewBox","_v$2","_v$3","_v$4","_v$5","body","e","_$setAttribute","t","a","o","i","innerHTML"],"mappings":"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"}
|