@ifhover/leaf-ui 0.6.0 → 0.7.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 +1 -1
- package/dist/cjs/autocomplete/autocomplete.cjs +7 -3
- package/dist/cjs/autocomplete/autocomplete.cjs.map +1 -1
- package/dist/cjs/autocomplete/autocomplete.d.cts +2 -0
- package/dist/cjs/autocomplete/autocomplete.d.cts.map +1 -1
- package/dist/cjs/browser/modules/autocomplete/autocomplete.cjs +7 -3
- package/dist/cjs/browser/modules/autocomplete/autocomplete.cjs.map +1 -1
- package/dist/cjs/browser/modules/button/button.cjs.map +1 -1
- package/dist/cjs/browser/modules/cascader/cascader.cjs +9 -2
- package/dist/cjs/browser/modules/cascader/cascader.cjs.map +1 -1
- package/dist/cjs/browser/modules/colors.cjs +73 -7
- package/dist/cjs/browser/modules/colors.cjs.map +1 -1
- package/dist/cjs/browser/modules/commandpalette/commandpalette.cjs +10 -3
- package/dist/cjs/browser/modules/commandpalette/commandpalette.cjs.map +1 -1
- package/dist/cjs/browser/modules/config-provider/component-defaults.cjs.map +1 -1
- package/dist/cjs/browser/modules/config-provider/use-color-variables.cjs +18 -2
- package/dist/cjs/browser/modules/config-provider/use-color-variables.cjs.map +1 -1
- package/dist/cjs/browser/modules/drawer/drawer.cjs +7 -1
- package/dist/cjs/browser/modules/drawer/drawer.cjs.map +1 -1
- package/dist/cjs/browser/modules/dropdown/dropdown.cjs +25 -4
- package/dist/cjs/browser/modules/dropdown/dropdown.cjs.map +1 -1
- package/dist/cjs/browser/modules/form/form.cjs +38 -21
- package/dist/cjs/browser/modules/form/form.cjs.map +1 -1
- package/dist/cjs/browser/modules/image/viewer.cjs +8 -2
- package/dist/cjs/browser/modules/image/viewer.cjs.map +1 -1
- package/dist/cjs/browser/modules/index.cjs +3 -4
- package/dist/cjs/browser/modules/layout/layout.cjs +4 -1
- package/dist/cjs/browser/modules/layout/layout.cjs.map +1 -1
- package/dist/cjs/browser/modules/mentions/mentions.cjs +4 -2
- package/dist/cjs/browser/modules/mentions/mentions.cjs.map +1 -1
- package/dist/cjs/browser/modules/menu/index.cjs +5 -2
- package/dist/cjs/browser/modules/menu/menu.cjs +60 -18
- package/dist/cjs/browser/modules/menu/menu.cjs.map +1 -1
- package/dist/cjs/browser/modules/scrollbar/scrollbar.cjs +69 -19
- package/dist/cjs/browser/modules/scrollbar/scrollbar.cjs.map +1 -1
- package/dist/cjs/browser/modules/select/select.cjs +3 -3
- package/dist/cjs/browser/modules/select/select.cjs.map +1 -1
- package/dist/cjs/browser/modules/shared/floating.cjs +49 -20
- package/dist/cjs/browser/modules/shared/floating.cjs.map +1 -1
- package/dist/cjs/browser/modules/shared/scoped-portal.cjs +2 -23
- package/dist/cjs/browser/modules/shared/scoped-portal.cjs.map +1 -1
- package/dist/cjs/browser/modules/{segmented/index.cjs → shared/theme-variables.cjs} +27 -5
- package/dist/cjs/browser/modules/shared/theme-variables.cjs.map +1 -0
- package/dist/cjs/browser/modules/splitter/splitter.cjs +4 -1
- package/dist/cjs/browser/modules/splitter/splitter.cjs.map +1 -1
- package/dist/cjs/browser/modules/tabs/tabs.cjs +14 -8
- package/dist/cjs/browser/modules/tabs/tabs.cjs.map +1 -1
- package/dist/cjs/browser/modules/tailwind-tokens.cjs +1 -1
- package/dist/cjs/browser/modules/tailwind-tokens.cjs.map +1 -1
- package/dist/cjs/browser/modules/textarea/textarea.cjs +49 -21
- package/dist/cjs/browser/modules/textarea/textarea.cjs.map +1 -1
- package/dist/cjs/browser/modules/theme.cjs +53 -29
- package/dist/cjs/browser/modules/theme.cjs.map +1 -1
- package/dist/cjs/browser/modules/timeline/timeline.cjs +1 -1
- package/dist/cjs/browser/modules/timeline/timeline.cjs.map +1 -1
- package/dist/cjs/browser/modules/timepicker/time-panel.cjs +8 -2
- package/dist/cjs/browser/modules/timepicker/time-panel.cjs.map +1 -1
- package/dist/cjs/browser/modules/transfer/transfer.cjs +5 -5
- package/dist/cjs/browser/modules/transfer/transfer.cjs.map +1 -1
- package/dist/cjs/browser/modules/tree/tree.cjs +13 -6
- package/dist/cjs/browser/modules/tree/tree.cjs.map +1 -1
- package/dist/cjs/browser/modules/treeselect/treeselect.cjs +5 -4
- package/dist/cjs/browser/modules/treeselect/treeselect.cjs.map +1 -1
- package/dist/cjs/browser/modules/virtuallist/virtuallist.cjs +9 -3
- package/dist/cjs/browser/modules/virtuallist/virtuallist.cjs.map +1 -1
- package/dist/cjs/button/button.cjs.map +1 -1
- package/dist/cjs/button/button.d.cts +7 -2
- package/dist/cjs/button/button.d.cts.map +1 -1
- package/dist/cjs/cascader/cascader.cjs +9 -2
- package/dist/cjs/cascader/cascader.cjs.map +1 -1
- package/dist/cjs/cascader/cascader.d.cts +2 -0
- package/dist/cjs/cascader/cascader.d.cts.map +1 -1
- package/dist/cjs/colors.cjs +73 -7
- package/dist/cjs/colors.cjs.map +1 -1
- package/dist/cjs/colors.d.cts +3 -1
- package/dist/cjs/colors.d.cts.map +1 -1
- package/dist/cjs/commandpalette/commandpalette.cjs +10 -3
- package/dist/cjs/commandpalette/commandpalette.cjs.map +1 -1
- package/dist/cjs/commandpalette/commandpalette.d.cts.map +1 -1
- package/dist/cjs/config-provider/component-defaults.cjs.map +1 -1
- package/dist/cjs/config-provider/component-defaults.d.cts +3 -4
- package/dist/cjs/config-provider/component-defaults.d.cts.map +1 -1
- package/dist/cjs/config-provider/index.d.cts +1 -1
- package/dist/cjs/config-provider/index.d.cts.map +1 -1
- package/dist/cjs/config-provider/use-color-variables.cjs +18 -2
- package/dist/cjs/config-provider/use-color-variables.cjs.map +1 -1
- package/dist/cjs/config-provider/use-color-variables.d.cts.map +1 -1
- package/dist/cjs/drawer/drawer.cjs +7 -1
- package/dist/cjs/drawer/drawer.cjs.map +1 -1
- package/dist/cjs/drawer/drawer.d.cts.map +1 -1
- package/dist/cjs/dropdown/dropdown.cjs +25 -4
- package/dist/cjs/dropdown/dropdown.cjs.map +1 -1
- package/dist/cjs/dropdown/dropdown.d.cts +9 -1
- package/dist/cjs/dropdown/dropdown.d.cts.map +1 -1
- package/dist/cjs/form/form.cjs +38 -21
- package/dist/cjs/form/form.cjs.map +1 -1
- package/dist/cjs/form/form.d.cts +3 -1
- package/dist/cjs/form/form.d.cts.map +1 -1
- package/dist/cjs/image/viewer.cjs +8 -2
- package/dist/cjs/image/viewer.cjs.map +1 -1
- package/dist/cjs/image/viewer.d.cts.map +1 -1
- package/dist/cjs/index.cjs +3 -4
- package/dist/cjs/index.d.cts +3 -5
- package/dist/cjs/index.d.cts.map +1 -1
- package/dist/cjs/layout/layout.cjs +4 -1
- package/dist/cjs/layout/layout.cjs.map +1 -1
- package/dist/cjs/layout/layout.d.cts.map +1 -1
- package/dist/cjs/mentions/mentions.cjs +4 -2
- package/dist/cjs/mentions/mentions.cjs.map +1 -1
- package/dist/cjs/mentions/mentions.d.cts +2 -0
- package/dist/cjs/mentions/mentions.d.cts.map +1 -1
- package/dist/cjs/menu/index.cjs +5 -2
- package/dist/cjs/menu/index.d.cts +2 -2
- package/dist/cjs/menu/index.d.cts.map +1 -1
- package/dist/cjs/menu/menu.cjs +60 -18
- package/dist/cjs/menu/menu.cjs.map +1 -1
- package/dist/cjs/menu/menu.d.cts +4 -0
- package/dist/cjs/menu/menu.d.cts.map +1 -1
- package/dist/cjs/scrollbar/scrollbar.cjs +69 -19
- package/dist/cjs/scrollbar/scrollbar.cjs.map +1 -1
- package/dist/cjs/scrollbar/scrollbar.d.cts +12 -2
- package/dist/cjs/scrollbar/scrollbar.d.cts.map +1 -1
- package/dist/cjs/select/select.cjs +3 -3
- package/dist/cjs/select/select.cjs.map +1 -1
- package/dist/cjs/shared/floating.cjs +49 -20
- package/dist/cjs/shared/floating.cjs.map +1 -1
- package/dist/cjs/shared/floating.d.cts +3 -1
- package/dist/cjs/shared/floating.d.cts.map +1 -1
- package/dist/cjs/shared/scoped-portal.cjs +2 -23
- package/dist/cjs/shared/scoped-portal.cjs.map +1 -1
- package/dist/cjs/shared/scoped-portal.d.cts.map +1 -1
- package/dist/cjs/{segmented/index.cjs → shared/theme-variables.cjs} +27 -5
- package/dist/cjs/shared/theme-variables.cjs.map +1 -0
- package/dist/cjs/shared/theme-variables.d.cts +4 -0
- package/dist/cjs/shared/theme-variables.d.cts.map +1 -0
- package/dist/cjs/splitter/splitter.cjs +4 -1
- package/dist/cjs/splitter/splitter.cjs.map +1 -1
- package/dist/cjs/splitter/splitter.d.cts.map +1 -1
- package/dist/cjs/styles/alert.css +1 -1
- package/dist/cjs/styles/anchor.css +1 -1
- package/dist/cjs/styles/appbar.css +1 -1
- package/dist/cjs/styles/autocomplete.css +1 -1
- package/dist/cjs/styles/avatar.css +1 -1
- package/dist/cjs/styles/backtop.css +1 -1
- package/dist/cjs/styles/badge.css +1 -1
- package/dist/cjs/styles/breadcrumb.css +1 -1
- package/dist/cjs/styles/button.css +1 -1
- package/dist/cjs/styles/calendar.css +1 -1
- package/dist/cjs/styles/card.css +1 -1
- package/dist/cjs/styles/carousel.css +1 -1
- package/dist/cjs/styles/cascader.css +1 -1
- package/dist/cjs/styles/checkbox.css +1 -1
- package/dist/cjs/styles/collapse.css +1 -1
- package/dist/cjs/styles/colorpicker.css +1 -1
- package/dist/cjs/styles/commandpalette.css +1 -1
- package/dist/cjs/styles/components/alert.css +1 -1
- package/dist/cjs/styles/components/anchor.css +1 -1
- package/dist/cjs/styles/components/appbar.css +1 -1
- package/dist/cjs/styles/components/autocomplete.css +1 -1
- package/dist/cjs/styles/components/avatar.css +1 -1
- package/dist/cjs/styles/components/breadcrumb.css +1 -1
- package/dist/cjs/styles/components/button.css +1 -1
- package/dist/cjs/styles/components/calendar.css +1 -1
- package/dist/cjs/styles/components/card.css +1 -1
- package/dist/cjs/styles/components/carousel.css +1 -1
- package/dist/cjs/styles/components/cascader.css +1 -1
- package/dist/cjs/styles/components/checkbox.css +1 -1
- package/dist/cjs/styles/components/collapse.css +1 -1
- package/dist/cjs/styles/components/colorpicker.css +1 -1
- package/dist/cjs/styles/components/commandpalette.css +1 -1
- package/dist/cjs/styles/components/datepicker.css +1 -1
- package/dist/cjs/styles/components/descriptions.css +1 -1
- package/dist/cjs/styles/components/drawer.css +1 -1
- package/dist/cjs/styles/components/dropdown.css +1 -1
- package/dist/cjs/styles/components/errorboundary.css +1 -1
- package/dist/cjs/styles/components/filelist.css +1 -1
- package/dist/cjs/styles/components/form.css +1 -1
- package/dist/cjs/styles/components/image.css +1 -1
- package/dist/cjs/styles/components/input.css +1 -1
- package/dist/cjs/styles/components/inputnumber.css +1 -1
- package/dist/cjs/styles/components/inputotp.css +1 -1
- package/dist/cjs/styles/components/layout.css +1 -1
- package/dist/cjs/styles/components/loading.css +1 -1
- package/dist/cjs/styles/components/loadingbar.css +1 -1
- package/dist/cjs/styles/components/mentions.css +1 -1
- package/dist/cjs/styles/components/menu.css +1 -1
- package/dist/cjs/styles/components/message.css +1 -1
- package/dist/cjs/styles/components/modal.css +1 -1
- package/dist/cjs/styles/components/notification.css +1 -1
- package/dist/cjs/styles/components/pagination.css +1 -1
- package/dist/cjs/styles/components/popover.css +1 -1
- package/dist/cjs/styles/components/progress.css +1 -1
- package/dist/cjs/styles/components/radio.css +1 -1
- package/dist/cjs/styles/components/rate.css +1 -1
- package/dist/cjs/styles/components/scrollarea.css +1 -1
- package/dist/cjs/styles/components/scrollbar.css +1 -1
- package/dist/cjs/styles/components/select.css +1 -1
- package/dist/cjs/styles/components/shared-calendar.css +1 -1
- package/dist/cjs/styles/components/slider.css +1 -1
- package/dist/cjs/styles/components/splitter.css +1 -1
- package/dist/cjs/styles/components/steps.css +1 -1
- package/dist/cjs/styles/components/switch.css +1 -1
- package/dist/cjs/styles/components/table.css +1 -1
- package/dist/cjs/styles/components/tabletanstack.css +1 -1
- package/dist/cjs/styles/components/tabs.css +1 -1
- package/dist/cjs/styles/components/tag.css +1 -1
- package/dist/cjs/styles/components/textarea.css +1 -1
- package/dist/cjs/styles/components/timepicker.css +1 -1
- package/dist/cjs/styles/components/tooltip.css +1 -1
- package/dist/cjs/styles/components/tour.css +1 -1
- package/dist/cjs/styles/components/transfer.css +1 -1
- package/dist/cjs/styles/components/tree.css +1 -1
- package/dist/cjs/styles/components/treeselect.css +1 -1
- package/dist/cjs/styles/components/typography.css +1 -1
- package/dist/cjs/styles/components/upload.css +1 -1
- package/dist/cjs/styles/components/virtuallist.css +1 -1
- package/dist/cjs/styles/config-provider.css +1 -1
- package/dist/cjs/styles/confirm.css +1 -1
- package/dist/cjs/styles/datepicker.css +1 -1
- package/dist/cjs/styles/daterangepicker.css +1 -1
- package/dist/cjs/styles/datetimepicker.css +1 -1
- package/dist/cjs/styles/descriptions.css +1 -1
- package/dist/cjs/styles/divider.css +1 -1
- package/dist/cjs/styles/drawer.css +1 -1
- package/dist/cjs/styles/dropdown.css +1 -1
- package/dist/cjs/styles/empty.css +1 -1
- package/dist/cjs/styles/errorboundary.css +1 -1
- package/dist/cjs/styles/filelist.css +1 -1
- package/dist/cjs/styles/flex.css +1 -1
- package/dist/cjs/styles/floatbutton.css +1 -1
- package/dist/cjs/styles/form.css +1 -1
- package/dist/cjs/styles/foundation.css +1 -1
- package/dist/cjs/styles/grid.css +1 -1
- package/dist/cjs/styles/image.css +1 -1
- package/dist/cjs/styles/index.css +1380 -716
- package/dist/cjs/styles/index.css.map +1 -1
- package/dist/cjs/styles/infinitescroll.css +1 -1
- package/dist/cjs/styles/input.css +1 -1
- package/dist/cjs/styles/inputmask.css +1 -1
- package/dist/cjs/styles/inputnumber.css +1 -1
- package/dist/cjs/styles/inputotp.css +1 -1
- package/dist/cjs/styles/layout.css +1 -1
- package/dist/cjs/styles/loading.css +1 -1
- package/dist/cjs/styles/loadingbar.css +1 -1
- package/dist/cjs/styles/masonry.css +1 -1
- package/dist/cjs/styles/mentions.css +1 -1
- package/dist/cjs/styles/menu.css +1 -1
- package/dist/cjs/styles/message.css +1 -1
- package/dist/cjs/styles/modal.css +1 -1
- package/dist/cjs/styles/notification.css +1 -1
- package/dist/cjs/styles/pagination.css +1 -1
- package/dist/cjs/styles/popconfirm.css +1 -1
- package/dist/cjs/styles/popover.css +1 -1
- package/dist/cjs/styles/progress.css +1 -1
- package/dist/cjs/styles/qrcode.css +1 -1
- package/dist/cjs/styles/radio.css +1 -1
- package/dist/cjs/styles/rate.css +1 -1
- package/dist/cjs/styles/result.css +1 -1
- package/dist/cjs/styles/scrollarea.css +1 -1
- package/dist/cjs/styles/scrollbar.css +1 -1
- package/dist/cjs/styles/select.css +1 -1
- package/dist/cjs/styles/skeleton.css +1 -1
- package/dist/cjs/styles/slider.css +1 -1
- package/dist/cjs/styles/space.css +1 -1
- package/dist/cjs/styles/splitter.css +1 -1
- package/dist/cjs/styles/statistic.css +1 -1
- package/dist/cjs/styles/steps.css +1 -1
- package/dist/cjs/styles/switch.css +1 -1
- package/dist/cjs/styles/table.css +1 -1
- package/dist/cjs/styles/tabletanstack.css +1 -1
- package/dist/cjs/styles/tabs.css +1 -1
- package/dist/cjs/styles/tag.css +1 -1
- package/dist/cjs/styles/textarea.css +1 -1
- package/dist/cjs/styles/timeline.css +1 -1
- package/dist/cjs/styles/timepicker.css +1 -1
- package/dist/cjs/styles/timerangepicker.css +1 -1
- package/dist/cjs/styles/tooltip.css +1 -1
- package/dist/cjs/styles/tour.css +1 -1
- package/dist/cjs/styles/transfer.css +1 -1
- package/dist/cjs/styles/tree.css +1 -1
- package/dist/cjs/styles/treeselect.css +1 -1
- package/dist/cjs/styles/typography.css +1 -1
- package/dist/cjs/styles/upload.css +1 -1
- package/dist/cjs/styles/virtuallist.css +1 -1
- package/dist/cjs/tabs/tabs.cjs +14 -8
- package/dist/cjs/tabs/tabs.cjs.map +1 -1
- package/dist/cjs/tabs/tabs.d.cts +4 -2
- package/dist/cjs/tabs/tabs.d.cts.map +1 -1
- package/dist/cjs/tailwind-tokens.cjs +1 -1
- package/dist/cjs/tailwind-tokens.cjs.map +1 -1
- package/dist/cjs/tailwind-tokens.d.cts.map +1 -1
- package/dist/cjs/textarea/textarea.cjs +49 -21
- package/dist/cjs/textarea/textarea.cjs.map +1 -1
- package/dist/cjs/textarea/textarea.d.cts.map +1 -1
- package/dist/cjs/theme.cjs +53 -29
- package/dist/cjs/theme.cjs.map +1 -1
- package/dist/cjs/theme.d.cts +15 -0
- package/dist/cjs/theme.d.cts.map +1 -1
- package/dist/cjs/timeline/timeline.cjs +1 -1
- package/dist/cjs/timeline/timeline.cjs.map +1 -1
- package/dist/cjs/timeline/timeline.d.cts.map +1 -1
- package/dist/cjs/timepicker/time-panel.cjs +8 -2
- package/dist/cjs/timepicker/time-panel.cjs.map +1 -1
- package/dist/cjs/timepicker/time-panel.d.cts.map +1 -1
- package/dist/cjs/transfer/transfer.cjs +5 -5
- package/dist/cjs/transfer/transfer.cjs.map +1 -1
- package/dist/cjs/transfer/transfer.d.cts.map +1 -1
- package/dist/cjs/tree/tree.cjs +13 -6
- package/dist/cjs/tree/tree.cjs.map +1 -1
- package/dist/cjs/tree/tree.d.cts.map +1 -1
- package/dist/cjs/treeselect/treeselect.cjs +5 -4
- package/dist/cjs/treeselect/treeselect.cjs.map +1 -1
- package/dist/cjs/treeselect/treeselect.d.cts.map +1 -1
- package/dist/cjs/virtuallist/virtuallist.cjs +9 -3
- package/dist/cjs/virtuallist/virtuallist.cjs.map +1 -1
- package/dist/cjs/virtuallist/virtuallist.d.cts.map +1 -1
- package/dist/esm/autocomplete/autocomplete.d.ts +2 -0
- package/dist/esm/autocomplete/autocomplete.d.ts.map +1 -1
- package/dist/esm/autocomplete/autocomplete.js +7 -3
- package/dist/esm/autocomplete/autocomplete.js.map +1 -1
- package/dist/esm/browser/modules/autocomplete/autocomplete.js +7 -3
- package/dist/esm/browser/modules/autocomplete/autocomplete.js.map +1 -1
- package/dist/esm/browser/modules/button/button.js.map +1 -1
- package/dist/esm/browser/modules/cascader/cascader.js +9 -2
- package/dist/esm/browser/modules/cascader/cascader.js.map +1 -1
- package/dist/esm/browser/modules/colors.js +69 -6
- package/dist/esm/browser/modules/colors.js.map +1 -1
- package/dist/esm/browser/modules/commandpalette/commandpalette.js +10 -3
- package/dist/esm/browser/modules/commandpalette/commandpalette.js.map +1 -1
- package/dist/esm/browser/modules/config-provider/component-defaults.js.map +1 -1
- package/dist/esm/browser/modules/config-provider/use-color-variables.js +18 -2
- package/dist/esm/browser/modules/config-provider/use-color-variables.js.map +1 -1
- package/dist/esm/browser/modules/drawer/drawer.js +7 -1
- package/dist/esm/browser/modules/drawer/drawer.js.map +1 -1
- package/dist/esm/browser/modules/dropdown/dropdown.js +25 -4
- package/dist/esm/browser/modules/dropdown/dropdown.js.map +1 -1
- package/dist/esm/browser/modules/form/form.js +38 -21
- package/dist/esm/browser/modules/form/form.js.map +1 -1
- package/dist/esm/browser/modules/image/viewer.js +8 -2
- package/dist/esm/browser/modules/image/viewer.js.map +1 -1
- package/dist/esm/browser/modules/index.js +1 -2
- package/dist/esm/browser/modules/layout/layout.js +4 -1
- package/dist/esm/browser/modules/layout/layout.js.map +1 -1
- package/dist/esm/browser/modules/mentions/mentions.js +4 -2
- package/dist/esm/browser/modules/mentions/mentions.js.map +1 -1
- package/dist/esm/browser/modules/menu/index.js +1 -1
- package/dist/esm/browser/modules/menu/menu.js +57 -18
- package/dist/esm/browser/modules/menu/menu.js.map +1 -1
- package/dist/esm/browser/modules/scrollbar/scrollbar.js +69 -19
- package/dist/esm/browser/modules/scrollbar/scrollbar.js.map +1 -1
- package/dist/esm/browser/modules/select/select.js +3 -3
- package/dist/esm/browser/modules/select/select.js.map +1 -1
- package/dist/esm/browser/modules/shared/floating.js +49 -20
- package/dist/esm/browser/modules/shared/floating.js.map +1 -1
- package/dist/esm/browser/modules/shared/scoped-portal.js +2 -23
- package/dist/esm/browser/modules/shared/scoped-portal.js.map +1 -1
- package/dist/esm/browser/modules/shared/theme-variables.js +27 -0
- package/dist/esm/browser/modules/shared/theme-variables.js.map +1 -0
- package/dist/esm/browser/modules/splitter/splitter.js +4 -1
- package/dist/esm/browser/modules/splitter/splitter.js.map +1 -1
- package/dist/esm/browser/modules/tabs/tabs.js +14 -8
- package/dist/esm/browser/modules/tabs/tabs.js.map +1 -1
- package/dist/esm/browser/modules/tailwind-tokens.js +1 -1
- package/dist/esm/browser/modules/tailwind-tokens.js.map +1 -1
- package/dist/esm/browser/modules/textarea/textarea.js +50 -22
- package/dist/esm/browser/modules/textarea/textarea.js.map +1 -1
- package/dist/esm/browser/modules/theme.js +53 -29
- package/dist/esm/browser/modules/theme.js.map +1 -1
- package/dist/esm/browser/modules/timeline/timeline.js +1 -1
- package/dist/esm/browser/modules/timeline/timeline.js.map +1 -1
- package/dist/esm/browser/modules/timepicker/time-panel.js +8 -2
- package/dist/esm/browser/modules/timepicker/time-panel.js.map +1 -1
- package/dist/esm/browser/modules/transfer/transfer.js +5 -5
- package/dist/esm/browser/modules/transfer/transfer.js.map +1 -1
- package/dist/esm/browser/modules/tree/tree.js +13 -6
- package/dist/esm/browser/modules/tree/tree.js.map +1 -1
- package/dist/esm/browser/modules/treeselect/treeselect.js +5 -4
- package/dist/esm/browser/modules/treeselect/treeselect.js.map +1 -1
- package/dist/esm/browser/modules/virtuallist/virtuallist.js +9 -3
- package/dist/esm/browser/modules/virtuallist/virtuallist.js.map +1 -1
- package/dist/esm/button/button.d.ts +7 -2
- package/dist/esm/button/button.d.ts.map +1 -1
- package/dist/esm/button/button.js.map +1 -1
- package/dist/esm/cascader/cascader.d.ts +2 -0
- package/dist/esm/cascader/cascader.d.ts.map +1 -1
- package/dist/esm/cascader/cascader.js +9 -2
- package/dist/esm/cascader/cascader.js.map +1 -1
- package/dist/esm/colors.d.ts +3 -1
- package/dist/esm/colors.d.ts.map +1 -1
- package/dist/esm/colors.js +69 -6
- package/dist/esm/colors.js.map +1 -1
- package/dist/esm/commandpalette/commandpalette.d.ts.map +1 -1
- package/dist/esm/commandpalette/commandpalette.js +10 -3
- package/dist/esm/commandpalette/commandpalette.js.map +1 -1
- package/dist/esm/config-provider/component-defaults.d.ts +3 -4
- package/dist/esm/config-provider/component-defaults.d.ts.map +1 -1
- package/dist/esm/config-provider/component-defaults.js.map +1 -1
- package/dist/esm/config-provider/index.d.ts +1 -1
- package/dist/esm/config-provider/index.d.ts.map +1 -1
- package/dist/esm/config-provider/use-color-variables.d.ts.map +1 -1
- package/dist/esm/config-provider/use-color-variables.js +18 -2
- package/dist/esm/config-provider/use-color-variables.js.map +1 -1
- package/dist/esm/drawer/drawer.d.ts.map +1 -1
- package/dist/esm/drawer/drawer.js +7 -1
- package/dist/esm/drawer/drawer.js.map +1 -1
- package/dist/esm/dropdown/dropdown.d.ts +9 -1
- package/dist/esm/dropdown/dropdown.d.ts.map +1 -1
- package/dist/esm/dropdown/dropdown.js +25 -4
- package/dist/esm/dropdown/dropdown.js.map +1 -1
- package/dist/esm/form/form.d.ts +3 -1
- package/dist/esm/form/form.d.ts.map +1 -1
- package/dist/esm/form/form.js +38 -21
- package/dist/esm/form/form.js.map +1 -1
- package/dist/esm/image/viewer.d.ts.map +1 -1
- package/dist/esm/image/viewer.js +8 -2
- package/dist/esm/image/viewer.js.map +1 -1
- package/dist/esm/index.d.ts +3 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/layout/layout.d.ts.map +1 -1
- package/dist/esm/layout/layout.js +4 -1
- package/dist/esm/layout/layout.js.map +1 -1
- package/dist/esm/mentions/mentions.d.ts +2 -0
- package/dist/esm/mentions/mentions.d.ts.map +1 -1
- package/dist/esm/mentions/mentions.js +4 -2
- package/dist/esm/mentions/mentions.js.map +1 -1
- package/dist/esm/menu/index.d.ts +2 -2
- package/dist/esm/menu/index.d.ts.map +1 -1
- package/dist/esm/menu/index.js +1 -1
- package/dist/esm/menu/menu.d.ts +4 -0
- package/dist/esm/menu/menu.d.ts.map +1 -1
- package/dist/esm/menu/menu.js +57 -18
- package/dist/esm/menu/menu.js.map +1 -1
- package/dist/esm/scrollbar/scrollbar.d.ts +12 -2
- package/dist/esm/scrollbar/scrollbar.d.ts.map +1 -1
- package/dist/esm/scrollbar/scrollbar.js +69 -19
- package/dist/esm/scrollbar/scrollbar.js.map +1 -1
- package/dist/esm/select/select.js +3 -3
- package/dist/esm/select/select.js.map +1 -1
- package/dist/esm/shared/floating.d.ts +3 -1
- package/dist/esm/shared/floating.d.ts.map +1 -1
- package/dist/esm/shared/floating.js +49 -20
- package/dist/esm/shared/floating.js.map +1 -1
- package/dist/esm/shared/scoped-portal.d.ts.map +1 -1
- package/dist/esm/shared/scoped-portal.js +2 -23
- package/dist/esm/shared/scoped-portal.js.map +1 -1
- package/dist/esm/shared/theme-variables.d.ts +4 -0
- package/dist/esm/shared/theme-variables.d.ts.map +1 -0
- package/dist/esm/shared/theme-variables.js +27 -0
- package/dist/esm/shared/theme-variables.js.map +1 -0
- package/dist/esm/splitter/splitter.d.ts.map +1 -1
- package/dist/esm/splitter/splitter.js +4 -1
- package/dist/esm/splitter/splitter.js.map +1 -1
- package/dist/esm/styles/alert.css +1 -1
- package/dist/esm/styles/anchor.css +1 -1
- package/dist/esm/styles/appbar.css +1 -1
- package/dist/esm/styles/autocomplete.css +1 -1
- package/dist/esm/styles/avatar.css +1 -1
- package/dist/esm/styles/backtop.css +1 -1
- package/dist/esm/styles/badge.css +1 -1
- package/dist/esm/styles/breadcrumb.css +1 -1
- package/dist/esm/styles/button.css +1 -1
- package/dist/esm/styles/calendar.css +1 -1
- package/dist/esm/styles/card.css +1 -1
- package/dist/esm/styles/carousel.css +1 -1
- package/dist/esm/styles/cascader.css +1 -1
- package/dist/esm/styles/checkbox.css +1 -1
- package/dist/esm/styles/collapse.css +1 -1
- package/dist/esm/styles/colorpicker.css +1 -1
- package/dist/esm/styles/commandpalette.css +1 -1
- package/dist/esm/styles/components/alert.css +1 -1
- package/dist/esm/styles/components/anchor.css +1 -1
- package/dist/esm/styles/components/appbar.css +1 -1
- package/dist/esm/styles/components/autocomplete.css +1 -1
- package/dist/esm/styles/components/avatar.css +1 -1
- package/dist/esm/styles/components/breadcrumb.css +1 -1
- package/dist/esm/styles/components/button.css +1 -1
- package/dist/esm/styles/components/calendar.css +1 -1
- package/dist/esm/styles/components/card.css +1 -1
- package/dist/esm/styles/components/carousel.css +1 -1
- package/dist/esm/styles/components/cascader.css +1 -1
- package/dist/esm/styles/components/checkbox.css +1 -1
- package/dist/esm/styles/components/collapse.css +1 -1
- package/dist/esm/styles/components/colorpicker.css +1 -1
- package/dist/esm/styles/components/commandpalette.css +1 -1
- package/dist/esm/styles/components/datepicker.css +1 -1
- package/dist/esm/styles/components/descriptions.css +1 -1
- package/dist/esm/styles/components/drawer.css +1 -1
- package/dist/esm/styles/components/dropdown.css +1 -1
- package/dist/esm/styles/components/errorboundary.css +1 -1
- package/dist/esm/styles/components/filelist.css +1 -1
- package/dist/esm/styles/components/form.css +1 -1
- package/dist/esm/styles/components/image.css +1 -1
- package/dist/esm/styles/components/input.css +1 -1
- package/dist/esm/styles/components/inputnumber.css +1 -1
- package/dist/esm/styles/components/inputotp.css +1 -1
- package/dist/esm/styles/components/layout.css +1 -1
- package/dist/esm/styles/components/loading.css +1 -1
- package/dist/esm/styles/components/loadingbar.css +1 -1
- package/dist/esm/styles/components/mentions.css +1 -1
- package/dist/esm/styles/components/menu.css +1 -1
- package/dist/esm/styles/components/message.css +1 -1
- package/dist/esm/styles/components/modal.css +1 -1
- package/dist/esm/styles/components/notification.css +1 -1
- package/dist/esm/styles/components/pagination.css +1 -1
- package/dist/esm/styles/components/popover.css +1 -1
- package/dist/esm/styles/components/progress.css +1 -1
- package/dist/esm/styles/components/radio.css +1 -1
- package/dist/esm/styles/components/rate.css +1 -1
- package/dist/esm/styles/components/scrollarea.css +1 -1
- package/dist/esm/styles/components/scrollbar.css +1 -1
- package/dist/esm/styles/components/select.css +1 -1
- package/dist/esm/styles/components/shared-calendar.css +1 -1
- package/dist/esm/styles/components/slider.css +1 -1
- package/dist/esm/styles/components/splitter.css +1 -1
- package/dist/esm/styles/components/steps.css +1 -1
- package/dist/esm/styles/components/switch.css +1 -1
- package/dist/esm/styles/components/table.css +1 -1
- package/dist/esm/styles/components/tabletanstack.css +1 -1
- package/dist/esm/styles/components/tabs.css +1 -1
- package/dist/esm/styles/components/tag.css +1 -1
- package/dist/esm/styles/components/textarea.css +1 -1
- package/dist/esm/styles/components/timepicker.css +1 -1
- package/dist/esm/styles/components/tooltip.css +1 -1
- package/dist/esm/styles/components/tour.css +1 -1
- package/dist/esm/styles/components/transfer.css +1 -1
- package/dist/esm/styles/components/tree.css +1 -1
- package/dist/esm/styles/components/treeselect.css +1 -1
- package/dist/esm/styles/components/typography.css +1 -1
- package/dist/esm/styles/components/upload.css +1 -1
- package/dist/esm/styles/components/virtuallist.css +1 -1
- package/dist/esm/styles/config-provider.css +1 -1
- package/dist/esm/styles/confirm.css +1 -1
- package/dist/esm/styles/datepicker.css +1 -1
- package/dist/esm/styles/daterangepicker.css +1 -1
- package/dist/esm/styles/datetimepicker.css +1 -1
- package/dist/esm/styles/descriptions.css +1 -1
- package/dist/esm/styles/divider.css +1 -1
- package/dist/esm/styles/drawer.css +1 -1
- package/dist/esm/styles/dropdown.css +1 -1
- package/dist/esm/styles/empty.css +1 -1
- package/dist/esm/styles/errorboundary.css +1 -1
- package/dist/esm/styles/filelist.css +1 -1
- package/dist/esm/styles/flex.css +1 -1
- package/dist/esm/styles/floatbutton.css +1 -1
- package/dist/esm/styles/form.css +1 -1
- package/dist/esm/styles/foundation.css +1 -1
- package/dist/esm/styles/grid.css +1 -1
- package/dist/esm/styles/image.css +1 -1
- package/dist/esm/styles/index.css +1380 -716
- package/dist/esm/styles/index.css.map +1 -1
- package/dist/esm/styles/infinitescroll.css +1 -1
- package/dist/esm/styles/input.css +1 -1
- package/dist/esm/styles/inputmask.css +1 -1
- package/dist/esm/styles/inputnumber.css +1 -1
- package/dist/esm/styles/inputotp.css +1 -1
- package/dist/esm/styles/layout.css +1 -1
- package/dist/esm/styles/loading.css +1 -1
- package/dist/esm/styles/loadingbar.css +1 -1
- package/dist/esm/styles/masonry.css +1 -1
- package/dist/esm/styles/mentions.css +1 -1
- package/dist/esm/styles/menu.css +1 -1
- package/dist/esm/styles/message.css +1 -1
- package/dist/esm/styles/modal.css +1 -1
- package/dist/esm/styles/notification.css +1 -1
- package/dist/esm/styles/pagination.css +1 -1
- package/dist/esm/styles/popconfirm.css +1 -1
- package/dist/esm/styles/popover.css +1 -1
- package/dist/esm/styles/progress.css +1 -1
- package/dist/esm/styles/qrcode.css +1 -1
- package/dist/esm/styles/radio.css +1 -1
- package/dist/esm/styles/rate.css +1 -1
- package/dist/esm/styles/result.css +1 -1
- package/dist/esm/styles/scrollarea.css +1 -1
- package/dist/esm/styles/scrollbar.css +1 -1
- package/dist/esm/styles/select.css +1 -1
- package/dist/esm/styles/skeleton.css +1 -1
- package/dist/esm/styles/slider.css +1 -1
- package/dist/esm/styles/space.css +1 -1
- package/dist/esm/styles/splitter.css +1 -1
- package/dist/esm/styles/statistic.css +1 -1
- package/dist/esm/styles/steps.css +1 -1
- package/dist/esm/styles/switch.css +1 -1
- package/dist/esm/styles/table.css +1 -1
- package/dist/esm/styles/tabletanstack.css +1 -1
- package/dist/esm/styles/tabs.css +1 -1
- package/dist/esm/styles/tag.css +1 -1
- package/dist/esm/styles/textarea.css +1 -1
- package/dist/esm/styles/timeline.css +1 -1
- package/dist/esm/styles/timepicker.css +1 -1
- package/dist/esm/styles/timerangepicker.css +1 -1
- package/dist/esm/styles/tooltip.css +1 -1
- package/dist/esm/styles/tour.css +1 -1
- package/dist/esm/styles/transfer.css +1 -1
- package/dist/esm/styles/tree.css +1 -1
- package/dist/esm/styles/treeselect.css +1 -1
- package/dist/esm/styles/typography.css +1 -1
- package/dist/esm/styles/upload.css +1 -1
- package/dist/esm/styles/virtuallist.css +1 -1
- package/dist/esm/tabs/tabs.d.ts +4 -2
- package/dist/esm/tabs/tabs.d.ts.map +1 -1
- package/dist/esm/tabs/tabs.js +14 -8
- package/dist/esm/tabs/tabs.js.map +1 -1
- package/dist/esm/tailwind-tokens.d.ts.map +1 -1
- package/dist/esm/tailwind-tokens.js +1 -1
- package/dist/esm/tailwind-tokens.js.map +1 -1
- package/dist/esm/textarea/textarea.d.ts.map +1 -1
- package/dist/esm/textarea/textarea.js +50 -22
- package/dist/esm/textarea/textarea.js.map +1 -1
- package/dist/esm/theme.d.ts +15 -0
- package/dist/esm/theme.d.ts.map +1 -1
- package/dist/esm/theme.js +53 -29
- package/dist/esm/theme.js.map +1 -1
- package/dist/esm/timeline/timeline.d.ts.map +1 -1
- package/dist/esm/timeline/timeline.js +1 -1
- package/dist/esm/timeline/timeline.js.map +1 -1
- package/dist/esm/timepicker/time-panel.d.ts.map +1 -1
- package/dist/esm/timepicker/time-panel.js +8 -2
- package/dist/esm/timepicker/time-panel.js.map +1 -1
- package/dist/esm/transfer/transfer.d.ts.map +1 -1
- package/dist/esm/transfer/transfer.js +5 -5
- package/dist/esm/transfer/transfer.js.map +1 -1
- package/dist/esm/tree/tree.d.ts.map +1 -1
- package/dist/esm/tree/tree.js +13 -6
- package/dist/esm/tree/tree.js.map +1 -1
- package/dist/esm/treeselect/treeselect.d.ts.map +1 -1
- package/dist/esm/treeselect/treeselect.js +5 -4
- package/dist/esm/treeselect/treeselect.js.map +1 -1
- package/dist/esm/virtuallist/virtuallist.d.ts.map +1 -1
- package/dist/esm/virtuallist/virtuallist.js +9 -3
- package/dist/esm/virtuallist/virtuallist.js.map +1 -1
- package/dist/tailwind.css +1 -1
- package/package.json +1 -22
- package/dist/cjs/browser/modules/segmented/index.cjs.map +0 -1
- package/dist/cjs/browser/modules/segmented/segmented.cjs +0 -127
- package/dist/cjs/browser/modules/segmented/segmented.cjs.map +0 -1
- package/dist/cjs/browser/segmented.cjs +0 -2
- package/dist/cjs/segmented/index.cjs.map +0 -1
- package/dist/cjs/segmented/index.d.cts +0 -3
- package/dist/cjs/segmented/index.d.cts.map +0 -1
- package/dist/cjs/segmented/segmented.cjs +0 -125
- package/dist/cjs/segmented/segmented.cjs.map +0 -1
- package/dist/cjs/segmented/segmented.d.cts +0 -21
- package/dist/cjs/segmented/segmented.d.cts.map +0 -1
- package/dist/cjs/styles/components/segmented.css +0 -1
- package/dist/cjs/styles/segmented.css +0 -1
- package/dist/esm/browser/modules/segmented/index.js +0 -2
- package/dist/esm/browser/modules/segmented/segmented.js +0 -89
- package/dist/esm/browser/modules/segmented/segmented.js.map +0 -1
- package/dist/esm/browser/segmented.js +0 -2
- package/dist/esm/segmented/index.d.ts +0 -3
- package/dist/esm/segmented/index.d.ts.map +0 -1
- package/dist/esm/segmented/index.js +0 -2
- package/dist/esm/segmented/segmented.d.ts +0 -21
- package/dist/esm/segmented/segmented.d.ts.map +0 -1
- package/dist/esm/segmented/segmented.js +0 -87
- package/dist/esm/segmented/segmented.js.map +0 -1
- package/dist/esm/styles/components/segmented.css +0 -1
- package/dist/esm/styles/segmented.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs/tabs.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../src/tabs/tabs.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n closestCenter,\n DndContext,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n horizontalListSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { Ellipsis, GripVertical, Plus, X } from 'lucide-react';\nimport {\n type HTMLAttributes,\n type MouseEvent,\n type ReactNode,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { ButtonControl } from '../button/button';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useLeafConfig } from '../config-provider/context';\nimport { DropdownControl as Dropdown } from '../dropdown/dropdown';\nimport { classes } from '../shared/classes';\nimport { useMotionEnabled } from '../shared/motion';\nimport type { ControlSize } from '../shared/types';\nimport { useDragAnnouncements } from '../shared/use-drag-announcements';\nimport { useFormattedText } from '../shared/use-formatted-text';\nimport { useText } from '../shared/use-text';\nimport { useMovingIndicator } from './use-moving-indicator';\n\nexport interface TabItem {\n key: string;\n label: ReactNode;\n children: ReactNode;\n disabled?: boolean;\n icon?: ReactNode;\n closable?: boolean;\n}\nexport interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n items: readonly TabItem[];\n activeKey?: string;\n defaultActiveKey?: string;\n onChange?: (key: string) => void;\n type?: 'line' | 'card';\n placement?: 'top' | 'bottom' | 'left' | 'right';\n size?: ControlSize;\n activationMode?: 'automatic' | 'manual';\n destroyInactive?: boolean;\n extra?: ReactNode;\n onClose?: (key: string, event: MouseEvent<HTMLButtonElement>) => void;\n onAdd?: () => void;\n addLabel?: string;\n overflow?: boolean;\n sortable?: boolean;\n onReorder?: (items: TabItem[]) => void;\n}\nexport function TabsControl({\n items,\n activeKey,\n defaultActiveKey,\n onChange,\n type = 'line',\n placement = 'top',\n size = 'md',\n activationMode = 'automatic',\n destroyInactive = false,\n extra,\n onClose,\n onAdd,\n addLabel,\n overflow = true,\n sortable = false,\n onReorder,\n className,\n 'aria-label': label,\n ...props\n}: TabsProps) {\n const { direction } = useLeafConfig();\n const t = useText();\n const format = useFormattedText();\n const enabled = items.filter((item) => !item.disabled);\n const [internal, setInternal] = useState(defaultActiveKey ?? enabled[0]?.key);\n const requested = activeKey ?? internal;\n const selected = enabled.find((item) => item.key === requested)?.key ?? enabled[0]?.key;\n const [focused, setFocused] = useState<string>();\n const focusKey = enabled.some((item) => item.key === focused) ? focused : selected;\n const [visited, setVisited] = useState<readonly string[]>(selected ? [selected] : []);\n if (selected && !visited.includes(selected)) setVisited([...visited, selected]);\n const id = useId();\n const list = useRef<HTMLDivElement>(null);\n const track = useRef<HTMLDivElement>(null);\n const indicator = useRef<HTMLSpanElement>(null);\n useMovingIndicator(\n track,\n indicator,\n '[data-leaf-indicator-item][data-active=\"true\"]',\n `${selected}-${placement}-${type}-${direction}`,\n items.length > 0,\n );\n const header = useRef<HTMLDivElement>(null);\n const [overflowKeys, setOverflowKeys] = useState<string[]>([]);\n const sorting = sortable && Boolean(onReorder);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Observe the new tab elements after the item list changes.\n useEffect(() => {\n const node = list.current;\n const container = header.current;\n if (!overflow || !node || !container) {\n setOverflowKeys([]);\n return;\n }\n const measure = () => {\n const horizontal = placement === 'top' || placement === 'bottom';\n const entries = Array.from(node.querySelectorAll<HTMLElement>('[data-tab-key]'));\n const more = container.querySelector<HTMLElement>('[data-tabs-more]');\n const fullSize =\n (horizontal ? node.clientWidth : node.clientHeight) +\n (more\n ? (horizontal ? more.offsetWidth : more.offsetHeight) +\n (Number.parseFloat(getComputedStyle(container)[horizontal ? 'columnGap' : 'rowGap']) ||\n 0)\n : 0);\n const total = horizontal ? node.scrollWidth : node.scrollHeight;\n const rect = node.getBoundingClientRect();\n const keys =\n total <= fullSize + 1\n ? []\n : entries\n .filter((entry) => {\n const item = entry.getBoundingClientRect();\n return horizontal\n ? item.left < rect.left - 1 || item.right > rect.right + 1\n : item.top < rect.top - 1 || item.bottom > rect.bottom + 1;\n })\n .map((entry) => entry.dataset.tabKey ?? '');\n setOverflowKeys((previous) =>\n previous.length === keys.length && previous.every((key, index) => key === keys[index])\n ? previous\n : keys,\n );\n };\n measure();\n const observer = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(measure);\n observer?.observe(node);\n observer?.observe(container);\n for (const entry of node.children) observer?.observe(entry);\n node.addEventListener('scroll', measure, { passive: true });\n window.addEventListener('resize', measure);\n return () => {\n observer?.disconnect();\n node.removeEventListener('scroll', measure);\n window.removeEventListener('resize', measure);\n };\n }, [overflow, placement, items]);\n const choose = (key: string) => {\n if (!enabled.some((item) => item.key === key)) return;\n if (activeKey === undefined) setInternal(key);\n if (key !== selected) onChange?.(key);\n };\n if (items.length === 0) return null;\n return (\n <div\n {...props}\n className={classes(\n 'leaf-tabs',\n `leaf-tabs--${type}`,\n `leaf-tabs--${placement}`,\n `leaf-tabs--${size}`,\n className,\n )}\n >\n <TabDragScope enabled={sorting} items={items} onReorder={onReorder}>\n <div className=\"leaf-tabs__header\" ref={header}>\n <div\n ref={list}\n onBlur={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget)) setFocused(undefined);\n }}\n role=\"tablist\"\n aria-label={label}\n aria-orientation={\n placement === 'left' || placement === 'right' ? 'vertical' : 'horizontal'\n }\n className=\"leaf-tabs__list\"\n >\n <div ref={track} className=\"leaf-tabs__track\">\n <span ref={indicator} className=\"leaf-tabs__indicator\" aria-hidden=\"true\" />\n <SortableContext\n items={items.map((item) => item.key)}\n strategy={\n placement === 'top' || placement === 'bottom'\n ? horizontalListSortingStrategy\n : verticalListSortingStrategy\n }\n >\n {items.map((item, index) => (\n <TabEntry\n item={item}\n sortable={sorting}\n className=\"leaf-tabs__entry\"\n key={item.key}\n data-active={item.key === selected || undefined}\n data-leaf-indicator-item=\"\"\n >\n <button\n id={`${id}-tab-${index}`}\n type=\"button\"\n role=\"tab\"\n aria-selected={item.key === selected}\n aria-controls={`${id}-panel-${index}`}\n disabled={item.disabled}\n tabIndex={item.key === focusKey ? 0 : -1}\n className=\"leaf-tabs__tab\"\n onFocus={() => setFocused(item.key)}\n onClick={() => choose(item.key)}\n onKeyDown={(event) => {\n let next: string | undefined;\n const position = enabled.findIndex((entry) => entry.key === item.key);\n const forward =\n placement === 'left' || placement === 'right'\n ? 'ArrowDown'\n : direction === 'rtl'\n ? 'ArrowLeft'\n : 'ArrowRight';\n const backward =\n placement === 'left' || placement === 'right'\n ? 'ArrowUp'\n : direction === 'rtl'\n ? 'ArrowRight'\n : 'ArrowLeft';\n if (event.key === forward)\n next = enabled[(position + 1) % enabled.length]?.key;\n else if (event.key === backward)\n next = enabled[(position - 1 + enabled.length) % enabled.length]?.key;\n else if (event.key === 'Home') next = enabled[0]?.key;\n else if (event.key === 'End') next = enabled.at(-1)?.key;\n if (next !== undefined) {\n event.preventDefault();\n setFocused(next);\n const nextIndex = items.findIndex((entry) => entry.key === next);\n list.current\n ?.querySelector<HTMLButtonElement>(`[id='${id}-tab-${nextIndex}']`)\n ?.focus();\n if (activationMode === 'automatic') choose(next);\n }\n }}\n >\n {item.icon && <span aria-hidden=\"true\">{item.icon}</span>}\n {item.label}\n </button>\n {item.closable && (\n <button\n type=\"button\"\n className=\"leaf-tabs__close\"\n disabled={item.disabled || !onClose}\n aria-label={format('tabs.closeLabel', {\n label: typeof item.label === 'string' ? item.label : item.key,\n })}\n onClick={(event) => {\n onClose?.(item.key, event);\n if (event.defaultPrevented) return;\n const position = enabled.findIndex((entry) => entry.key === item.key);\n const next =\n item.key === selected\n ? (enabled[position + 1] ?? enabled[position - 1])\n : enabled.find((entry) => entry.key === selected);\n if (next) {\n if (item.key === selected) choose(next.key);\n const nextIndex = items.findIndex((entry) => entry.key === next.key);\n list.current\n ?.querySelector<HTMLButtonElement>(`[id='${id}-tab-${nextIndex}']`)\n ?.focus();\n }\n }}\n >\n <X size={13} aria-hidden=\"true\" />\n </button>\n )}\n </TabEntry>\n ))}\n </SortableContext>\n </div>\n </div>\n {overflowKeys.length > 0 && (\n <Dropdown\n items={items\n .filter((item) => overflowKeys.includes(item.key))\n .map((item) => ({\n key: item.key,\n label: item.label,\n disabled: item.disabled,\n onClick: () => {\n choose(item.key);\n requestAnimationFrame(() => {\n const target = document.getElementById(`${id}-tab-${items.indexOf(item)}`);\n target?.scrollIntoView?.({ block: 'nearest', inline: 'nearest' });\n target?.focus();\n });\n },\n }))}\n >\n <ButtonControl\n className=\"leaf-tabs__action\"\n data-tabs-more=\"\"\n variant=\"ghost\"\n size={size}\n startIcon={<Ellipsis size={16} />}\n aria-label={t('tabs.moreTabs')}\n />\n </Dropdown>\n )}\n {onAdd && (\n <ButtonControl\n className=\"leaf-tabs__action\"\n variant=\"ghost\"\n size={size}\n startIcon={<Plus size={16} />}\n aria-label={addLabel ?? t('tabs.addTab')}\n onClick={onAdd}\n />\n )}\n {extra && <div className=\"leaf-tabs__extra\">{extra}</div>}\n </div>\n </TabDragScope>\n <div className=\"leaf-tabs__panels\">\n {items.map((item, index) => (\n <div\n key={item.key}\n id={`${id}-panel-${index}`}\n role=\"tabpanel\"\n aria-labelledby={`${id}-tab-${index}`}\n hidden={item.key !== selected}\n // biome-ignore lint/a11y/noNoninteractiveTabindex: Tabpanels are keyboard focus destinations in the ARIA tabs pattern.\n tabIndex={0}\n className=\"leaf-tabs__panel\"\n >\n {(item.key === selected || (!destroyInactive && visited.includes(item.key))) &&\n item.children}\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nfunction TabEntry({\n item,\n sortable,\n ...props\n}: HTMLAttributes<HTMLDivElement> & { item: TabItem; sortable: boolean }) {\n return sortable ? (\n <SortableTab item={item} {...props} />\n ) : (\n <div {...props} data-tab-key={item.key} />\n );\n}\nfunction SortableTab({\n item,\n children,\n ...props\n}: HTMLAttributes<HTMLDivElement> & { item: TabItem }) {\n const format = useFormattedText();\n const motion = useMotionEnabled();\n const {\n attributes,\n listeners,\n setNodeRef,\n setActivatorNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: item.key, disabled: item.disabled });\n return (\n <div\n {...props}\n ref={setNodeRef}\n data-tab-key={item.key}\n data-dragging={isDragging || undefined}\n style={{\n ...props.style,\n transform: CSS.Transform.toString(transform),\n transition:\n motion && transition\n ? 'transform var(--leaf-motion-slow) var(--leaf-motion-easing)'\n : undefined,\n }}\n >\n <button\n type=\"button\"\n {...attributes}\n {...listeners}\n ref={setActivatorNodeRef}\n disabled={item.disabled}\n className=\"leaf-tabs__drag\"\n aria-label={format('tabs.reorder', {\n label: typeof item.label === 'string' ? item.label : item.key,\n })}\n >\n <GripVertical size={13} aria-hidden=\"true\" />\n </button>\n {children}\n </div>\n );\n}\n\nfunction TabDragScope({\n enabled,\n items,\n onReorder,\n children,\n}: {\n enabled: boolean;\n items: readonly TabItem[];\n onReorder?: (items: TabItem[]) => void;\n children: ReactNode;\n}) {\n return enabled ? (\n <TabSortScope items={items} onReorder={onReorder}>\n {children}\n </TabSortScope>\n ) : (\n children\n );\n}\nfunction TabSortScope({\n items,\n onReorder,\n children,\n}: {\n items: readonly TabItem[];\n onReorder?: (items: TabItem[]) => void;\n children: ReactNode;\n}) {\n const id = useId();\n const accessibility = useDragAnnouncements((key) => {\n const item = items.find((entry) => entry.key === key);\n return typeof item?.label === 'string' ? item.label : String(key);\n });\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n );\n return (\n <DndContext\n id={id}\n sensors={sensors}\n collisionDetection={closestCenter}\n accessibility={accessibility}\n onDragEnd={({ active, over }) => {\n if (!over || active.id === over.id) return;\n const from = items.findIndex((item) => item.key === active.id);\n const to = items.findIndex((item) => item.key === over.id);\n if (from >= 0 && to >= 0 && !items[to]?.disabled)\n onReorder?.(arrayMove([...items], from, to));\n }}\n >\n {children}\n </DndContext>\n );\n}\n\nexport function Tabs(rawProps: TabsProps) {\n const props = useComponentProps('Tabs', rawProps);\n return <TabsControl {...props} />;\n}\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","TabsControl","items","activeKey","defaultActiveKey","onChange","type","placement","size","activationMode","destroyInactive","extra","onClose","onAdd","addLabel","overflow","sortable","onReorder","className","label","props","direction","useLeafConfig","t","useText","format","useFormattedText","enabled","item","internal","setInternal","useState","requested","selected","focused","setFocused","focusKey","visited","setVisited","id","useId","list","useRef","track","indicator","useMovingIndicator","header","overflowKeys","setOverflowKeys","sorting","Boolean","useEffect","node","container","measure","horizontal","entries","Array","more","fullSize","Number","getComputedStyle","total","rect","keys","entry","previous","index","observer","ResizeObserver","window","choose","undefined","classes","TabDragScope","event","SortableContext","horizontalListSortingStrategy","verticalListSortingStrategy","TabEntry","next","position","forward","backward","nextIndex","X","Dropdown","requestAnimationFrame","target","document","ButtonControl","Ellipsis","Plus","SortableTab","children","motion","useMotionEnabled","attributes","listeners","setNodeRef","setActivatorNodeRef","transform","transition","isDragging","useSortable","CSS","GripVertical","TabSortScope","accessibility","useDragAnnouncements","String","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","DndContext","closestCenter","active","over","from","to","arrayMove","Tabs","rawProps","useComponentProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tabs/tabs.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../src/tabs/tabs.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n closestCenter,\n DndContext,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n horizontalListSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { Ellipsis, GripVertical, Plus, X } from 'lucide-react';\nimport {\n type HTMLAttributes,\n type MouseEvent,\n type ReactNode,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { ButtonControl } from '../button/button';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useLeafConfig } from '../config-provider/context';\nimport { DropdownControl as Dropdown } from '../dropdown/dropdown';\nimport { ScrollbarControl } from '../scrollbar/scrollbar';\nimport { classes } from '../shared/classes';\nimport { useMotionEnabled } from '../shared/motion';\nimport type { ControlSize } from '../shared/types';\nimport { useDragAnnouncements } from '../shared/use-drag-announcements';\nimport { useFormattedText } from '../shared/use-formatted-text';\nimport { useText } from '../shared/use-text';\nimport { useMovingIndicator } from './use-moving-indicator';\n\nexport interface TabItem {\n key: string;\n label: ReactNode;\n children?: ReactNode;\n disabled?: boolean;\n icon?: ReactNode;\n closable?: boolean;\n}\nexport interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n items: readonly TabItem[];\n activeKey?: string;\n defaultActiveKey?: string;\n onChange?: (key: string) => void;\n type?: 'line' | 'card';\n placement?: 'top' | 'bottom' | 'left' | 'right';\n size?: ControlSize;\n /** Fill the available width with equally sized tabs. */\n block?: boolean;\n activationMode?: 'automatic' | 'manual';\n destroyInactive?: boolean;\n extra?: ReactNode;\n onClose?: (key: string, event: MouseEvent<HTMLButtonElement>) => void;\n onAdd?: () => void;\n addLabel?: string;\n overflow?: boolean;\n sortable?: boolean;\n onReorder?: (items: TabItem[]) => void;\n}\nexport function TabsControl({\n items,\n activeKey,\n defaultActiveKey,\n onChange,\n type = 'line',\n placement = 'top',\n size = 'md',\n block = false,\n activationMode = 'automatic',\n destroyInactive = false,\n extra,\n onClose,\n onAdd,\n addLabel,\n overflow = true,\n sortable = false,\n onReorder,\n className,\n 'aria-label': label,\n ...props\n}: TabsProps) {\n const { direction } = useLeafConfig();\n const t = useText();\n const format = useFormattedText();\n const enabled = items.filter((item) => !item.disabled);\n const [internal, setInternal] = useState(defaultActiveKey ?? enabled[0]?.key);\n const requested = activeKey ?? internal;\n const selected = enabled.find((item) => item.key === requested)?.key ?? enabled[0]?.key;\n const [focused, setFocused] = useState<string>();\n const focusKey = enabled.some((item) => item.key === focused) ? focused : selected;\n const [visited, setVisited] = useState<readonly string[]>(selected ? [selected] : []);\n if (selected && !visited.includes(selected)) setVisited([...visited, selected]);\n const id = useId();\n const list = useRef<HTMLDivElement>(null);\n const track = useRef<HTMLDivElement>(null);\n const indicator = useRef<HTMLSpanElement>(null);\n useMovingIndicator(\n track,\n indicator,\n '[data-leaf-indicator-item][data-active=\"true\"]',\n `${selected}-${placement}-${type}-${direction}`,\n items.length > 0,\n );\n const header = useRef<HTMLDivElement>(null);\n const [overflowKeys, setOverflowKeys] = useState<string[]>([]);\n const sorting = sortable && Boolean(onReorder);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Observe the new tab elements after the item list changes.\n useEffect(() => {\n const node = list.current;\n const container = header.current;\n if (!overflow || !node || !container) {\n setOverflowKeys([]);\n return;\n }\n const measure = () => {\n const horizontal = placement === 'top' || placement === 'bottom';\n const entries = Array.from(node.querySelectorAll<HTMLElement>('[data-tab-key]'));\n const more = container.querySelector<HTMLElement>('[data-tabs-more]');\n const fullSize =\n (horizontal ? node.clientWidth : node.clientHeight) +\n (more\n ? (horizontal ? more.offsetWidth : more.offsetHeight) +\n (Number.parseFloat(getComputedStyle(container)[horizontal ? 'columnGap' : 'rowGap']) ||\n 0)\n : 0);\n const total = horizontal ? node.scrollWidth : node.scrollHeight;\n const rect = node.getBoundingClientRect();\n const keys =\n total <= fullSize + 1\n ? []\n : entries\n .filter((entry) => {\n const item = entry.getBoundingClientRect();\n return horizontal\n ? item.left < rect.left - 1 || item.right > rect.right + 1\n : item.top < rect.top - 1 || item.bottom > rect.bottom + 1;\n })\n .map((entry) => entry.dataset.tabKey ?? '');\n setOverflowKeys((previous) =>\n previous.length === keys.length && previous.every((key, index) => key === keys[index])\n ? previous\n : keys,\n );\n };\n measure();\n const observer = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(measure);\n observer?.observe(node);\n observer?.observe(container);\n for (const entry of node.children) observer?.observe(entry);\n node.addEventListener('scroll', measure, { passive: true });\n window.addEventListener('resize', measure);\n return () => {\n observer?.disconnect();\n node.removeEventListener('scroll', measure);\n window.removeEventListener('resize', measure);\n };\n }, [overflow, placement, items]);\n const choose = (key: string) => {\n if (!enabled.some((item) => item.key === key)) return;\n if (activeKey === undefined) setInternal(key);\n if (key !== selected) onChange?.(key);\n };\n if (items.length === 0) return null;\n return (\n <div\n {...props}\n className={classes(\n 'leaf-tabs',\n `leaf-tabs--${type}`,\n `leaf-tabs--${placement}`,\n `leaf-tabs--${size}`,\n block && 'leaf-tabs--block',\n className,\n )}\n >\n <TabDragScope enabled={sorting} items={items} onReorder={onReorder}>\n <div className=\"leaf-tabs__header\" ref={header}>\n <ScrollbarControl\n ref={list}\n onBlur={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget)) setFocused(undefined);\n }}\n role=\"tablist\"\n aria-label={label}\n viewportProps={{\n 'aria-orientation':\n placement === 'left' || placement === 'right' ? 'vertical' : 'horizontal',\n }}\n className=\"leaf-tabs__scroll\"\n viewportClassName=\"leaf-tabs__list\"\n tabIndex={-1}\n scrollbarTabIndex={-1}\n >\n <div ref={track} className=\"leaf-tabs__track\">\n <span ref={indicator} className=\"leaf-tabs__indicator\" aria-hidden=\"true\" />\n <SortableContext\n items={items.map((item) => item.key)}\n strategy={\n placement === 'top' || placement === 'bottom'\n ? horizontalListSortingStrategy\n : verticalListSortingStrategy\n }\n >\n {items.map((item, index) => (\n <TabEntry\n item={item}\n sortable={sorting}\n className=\"leaf-tabs__entry\"\n key={item.key}\n data-active={item.key === selected || undefined}\n data-leaf-indicator-item=\"\"\n >\n <button\n id={`${id}-tab-${index}`}\n type=\"button\"\n role=\"tab\"\n aria-selected={item.key === selected}\n aria-controls={item.children != null ? `${id}-panel-${index}` : undefined}\n disabled={item.disabled}\n tabIndex={item.key === focusKey ? 0 : -1}\n className=\"leaf-tabs__tab\"\n onFocus={() => setFocused(item.key)}\n onClick={() => choose(item.key)}\n onKeyDown={(event) => {\n let next: string | undefined;\n const position = enabled.findIndex((entry) => entry.key === item.key);\n const forward =\n placement === 'left' || placement === 'right'\n ? 'ArrowDown'\n : direction === 'rtl'\n ? 'ArrowLeft'\n : 'ArrowRight';\n const backward =\n placement === 'left' || placement === 'right'\n ? 'ArrowUp'\n : direction === 'rtl'\n ? 'ArrowRight'\n : 'ArrowLeft';\n if (event.key === forward)\n next = enabled[(position + 1) % enabled.length]?.key;\n else if (event.key === backward)\n next = enabled[(position - 1 + enabled.length) % enabled.length]?.key;\n else if (event.key === 'Home') next = enabled[0]?.key;\n else if (event.key === 'End') next = enabled.at(-1)?.key;\n if (next !== undefined) {\n event.preventDefault();\n setFocused(next);\n const nextIndex = items.findIndex((entry) => entry.key === next);\n list.current\n ?.querySelector<HTMLButtonElement>(`[id='${id}-tab-${nextIndex}']`)\n ?.focus();\n if (activationMode === 'automatic') choose(next);\n }\n }}\n >\n {item.icon && <span aria-hidden=\"true\">{item.icon}</span>}\n {item.label}\n </button>\n {item.closable && (\n <button\n type=\"button\"\n className=\"leaf-tabs__close\"\n disabled={item.disabled || !onClose}\n aria-label={format('tabs.closeLabel', {\n label: typeof item.label === 'string' ? item.label : item.key,\n })}\n onClick={(event) => {\n onClose?.(item.key, event);\n if (event.defaultPrevented) return;\n const position = enabled.findIndex((entry) => entry.key === item.key);\n const next =\n item.key === selected\n ? (enabled[position + 1] ?? enabled[position - 1])\n : enabled.find((entry) => entry.key === selected);\n if (next) {\n if (item.key === selected) choose(next.key);\n const nextIndex = items.findIndex((entry) => entry.key === next.key);\n list.current\n ?.querySelector<HTMLButtonElement>(`[id='${id}-tab-${nextIndex}']`)\n ?.focus();\n }\n }}\n >\n <X size={13} aria-hidden=\"true\" />\n </button>\n )}\n </TabEntry>\n ))}\n </SortableContext>\n </div>\n </ScrollbarControl>\n {overflowKeys.length > 0 && (\n <Dropdown\n items={items\n .filter((item) => overflowKeys.includes(item.key))\n .map((item) => ({\n key: item.key,\n label: item.label,\n disabled: item.disabled,\n onClick: () => {\n choose(item.key);\n requestAnimationFrame(() => {\n const target = document.getElementById(`${id}-tab-${items.indexOf(item)}`);\n target?.scrollIntoView?.({ block: 'nearest', inline: 'nearest' });\n target?.focus();\n });\n },\n }))}\n >\n <ButtonControl\n className=\"leaf-tabs__action\"\n data-tabs-more=\"\"\n variant=\"ghost\"\n size={size}\n startIcon={<Ellipsis size={16} />}\n aria-label={t('tabs.moreTabs')}\n />\n </Dropdown>\n )}\n {onAdd && (\n <ButtonControl\n className=\"leaf-tabs__action\"\n variant=\"ghost\"\n size={size}\n startIcon={<Plus size={16} />}\n aria-label={addLabel ?? t('tabs.addTab')}\n onClick={onAdd}\n />\n )}\n {extra && <div className=\"leaf-tabs__extra\">{extra}</div>}\n </div>\n </TabDragScope>\n {items.some((item) => item.children != null) && (\n <div className=\"leaf-tabs__panels\">\n {items.map(\n (item, index) =>\n item.children != null && (\n <div\n key={item.key}\n id={`${id}-panel-${index}`}\n role=\"tabpanel\"\n aria-labelledby={`${id}-tab-${index}`}\n hidden={item.key !== selected}\n // biome-ignore lint/a11y/noNoninteractiveTabindex: Tabpanels are keyboard focus destinations in the ARIA tabs pattern.\n tabIndex={0}\n className=\"leaf-tabs__panel\"\n >\n {(item.key === selected || (!destroyInactive && visited.includes(item.key))) &&\n item.children}\n </div>\n ),\n )}\n </div>\n )}\n </div>\n );\n}\n\nfunction TabEntry({\n item,\n sortable,\n ...props\n}: HTMLAttributes<HTMLDivElement> & { item: TabItem; sortable: boolean }) {\n return sortable ? (\n <SortableTab item={item} {...props} />\n ) : (\n <div {...props} data-tab-key={item.key} />\n );\n}\nfunction SortableTab({\n item,\n children,\n ...props\n}: HTMLAttributes<HTMLDivElement> & { item: TabItem }) {\n const format = useFormattedText();\n const motion = useMotionEnabled();\n const {\n attributes,\n listeners,\n setNodeRef,\n setActivatorNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: item.key, disabled: item.disabled });\n return (\n <div\n {...props}\n ref={setNodeRef}\n data-tab-key={item.key}\n data-dragging={isDragging || undefined}\n style={{\n ...props.style,\n transform: CSS.Transform.toString(transform),\n transition:\n motion && transition\n ? 'transform var(--leaf-motion-slow) var(--leaf-motion-easing)'\n : undefined,\n }}\n >\n <button\n type=\"button\"\n {...attributes}\n {...listeners}\n ref={setActivatorNodeRef}\n disabled={item.disabled}\n className=\"leaf-tabs__drag\"\n aria-label={format('tabs.reorder', {\n label: typeof item.label === 'string' ? item.label : item.key,\n })}\n >\n <GripVertical size={13} aria-hidden=\"true\" />\n </button>\n {children}\n </div>\n );\n}\n\nfunction TabDragScope({\n enabled,\n items,\n onReorder,\n children,\n}: {\n enabled: boolean;\n items: readonly TabItem[];\n onReorder?: (items: TabItem[]) => void;\n children: ReactNode;\n}) {\n return enabled ? (\n <TabSortScope items={items} onReorder={onReorder}>\n {children}\n </TabSortScope>\n ) : (\n children\n );\n}\nfunction TabSortScope({\n items,\n onReorder,\n children,\n}: {\n items: readonly TabItem[];\n onReorder?: (items: TabItem[]) => void;\n children: ReactNode;\n}) {\n const id = useId();\n const accessibility = useDragAnnouncements((key) => {\n const item = items.find((entry) => entry.key === key);\n return typeof item?.label === 'string' ? item.label : String(key);\n });\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n );\n return (\n <DndContext\n id={id}\n sensors={sensors}\n collisionDetection={closestCenter}\n accessibility={accessibility}\n onDragEnd={({ active, over }) => {\n if (!over || active.id === over.id) return;\n const from = items.findIndex((item) => item.key === active.id);\n const to = items.findIndex((item) => item.key === over.id);\n if (from >= 0 && to >= 0 && !items[to]?.disabled)\n onReorder?.(arrayMove([...items], from, to));\n }}\n >\n {children}\n </DndContext>\n );\n}\n\nexport function Tabs(rawProps: TabsProps) {\n const props = useComponentProps('Tabs', rawProps);\n return <TabsControl {...props} />;\n}\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","TabsControl","items","activeKey","defaultActiveKey","onChange","type","placement","size","block","activationMode","destroyInactive","extra","onClose","onAdd","addLabel","overflow","sortable","onReorder","className","label","props","direction","useLeafConfig","t","useText","format","useFormattedText","enabled","item","internal","setInternal","useState","requested","selected","focused","setFocused","focusKey","visited","setVisited","id","useId","list","useRef","track","indicator","useMovingIndicator","header","overflowKeys","setOverflowKeys","sorting","Boolean","useEffect","node","container","measure","horizontal","entries","Array","more","fullSize","Number","getComputedStyle","total","rect","keys","entry","previous","index","observer","ResizeObserver","window","choose","undefined","classes","TabDragScope","ScrollbarControl","event","SortableContext","horizontalListSortingStrategy","verticalListSortingStrategy","TabEntry","next","position","forward","backward","nextIndex","X","Dropdown","requestAnimationFrame","target","document","ButtonControl","Ellipsis","Plus","SortableTab","children","motion","useMotionEnabled","attributes","listeners","setNodeRef","setActivatorNodeRef","transform","transition","isDragging","useSortable","CSS","GripVertical","TabSortScope","accessibility","useDragAnnouncements","String","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","DndContext","closestCenter","active","over","from","to","arrayMove","Tabs","rawProps","useComponentProps"],"mappings":";;;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC,SAASC;QAC1C,IAAIC,SAAS,CAACC,MAAMC;YACnB,IAAI,IAAIC,OAAOF,KACd,IAAGJ,oBAAoB,CAAC,CAACI,MAAME,QAAQ,CAACN,oBAAoB,CAAC,CAAC,UAASM,MACtEC,OAAO,cAAc,CAAC,UAASD,KAAK;gBAAE,YAAY;gBAAM,CAACD,KAAK,EAAED,IAAI,CAACE,IAAI;YAAC;QAG7E;QACAH,OAAOF,SAAS;QAChBE,OAAOD,QAAQ;IAChB;;;ICVAF,oBAAoB,CAAC,GAAG,CAACQ,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFT,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,MAAlB,OAAOU,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;;;;;;;;;;;;;;;;;;AC8DO,SAASI,YAAY,EAC1BC,KAAK,EACLC,SAAS,EACTC,gBAAgB,EAChBC,QAAQ,EACRC,OAAO,MAAM,EACbC,YAAY,KAAK,EACjBC,OAAO,IAAI,EACXC,QAAQ,KAAK,EACbC,iBAAiB,WAAW,EAC5BC,kBAAkB,KAAK,EACvBC,KAAK,EACLC,OAAO,EACPC,KAAK,EACLC,QAAQ,EACRC,WAAW,IAAI,EACfC,WAAW,KAAK,EAChBC,SAAS,EACTC,SAAS,EACT,cAAcC,KAAK,EACnB,GAAGC,OACO;IACV,MAAM,EAAEC,SAAS,EAAE,GAAGC,AAAAA,IAAAA,4BAAAA,aAAAA,AAAAA;IACtB,MAAMC,IAAIC,AAAAA,IAAAA,6BAAAA,OAAAA,AAAAA;IACV,MAAMC,SAASC,AAAAA,IAAAA,uCAAAA,gBAAAA,AAAAA;IACf,MAAMC,UAAU1B,MAAM,MAAM,CAAC,CAAC2B,OAAS,CAACA,KAAK,QAAQ;IACrD,MAAM,CAACC,UAAUC,YAAY,GAAGC,AAAAA,IAAAA,+BAAAA,QAAAA,AAAAA,EAAS5B,oBAAoBwB,OAAO,CAAC,EAAE,EAAE;IACzE,MAAMK,YAAY9B,aAAa2B;IAC/B,MAAMI,WAAWN,QAAQ,IAAI,CAAC,CAACC,OAASA,KAAK,GAAG,KAAKI,YAAY,OAAOL,OAAO,CAAC,EAAE,EAAE;IACpF,MAAM,CAACO,SAASC,WAAW,GAAGJ,AAAAA,IAAAA,+BAAAA,QAAAA,AAAAA;IAC9B,MAAMK,WAAWT,QAAQ,IAAI,CAAC,CAACC,OAASA,KAAK,GAAG,KAAKM,WAAWA,UAAUD;IAC1E,MAAM,CAACI,SAASC,WAAW,GAAGP,AAAAA,IAAAA,+BAAAA,QAAAA,AAAAA,EAA4BE,WAAW;QAACA;KAAS,GAAG,EAAE;IACpF,IAAIA,YAAY,CAACI,QAAQ,QAAQ,CAACJ,WAAWK,WAAW;WAAID;QAASJ;KAAS;IAC9E,MAAMM,KAAKC,AAAAA,IAAAA,+BAAAA,KAAAA,AAAAA;IACX,MAAMC,OAAOC,AAAAA,IAAAA,+BAAAA,MAAAA,AAAAA,EAAuB;IACpC,MAAMC,QAAQD,AAAAA,IAAAA,+BAAAA,MAAAA,AAAAA,EAAuB;IACrC,MAAME,YAAYF,AAAAA,IAAAA,+BAAAA,MAAAA,AAAAA,EAAwB;IAC1CG,IAAAA,kDAAAA,kBAAAA,AAAAA,EACEF,OACAC,WACA,kDACA,GAAGX,SAAS,CAAC,EAAE3B,UAAU,CAAC,EAAED,KAAK,CAAC,EAAEgB,WAAW,EAC/CpB,MAAM,MAAM,GAAG;IAEjB,MAAM6C,SAASJ,AAAAA,IAAAA,+BAAAA,MAAAA,AAAAA,EAAuB;IACtC,MAAM,CAACK,cAAcC,gBAAgB,GAAGjB,AAAAA,IAAAA,+BAAAA,QAAAA,AAAAA,EAAmB,EAAE;IAC7D,MAAMkB,UAAUjC,YAAYkC,QAAQjC;IAEpCkC,IAAAA,+BAAAA,SAAAA,AAAAA,EAAU;QACR,MAAMC,OAAOX,KAAK,OAAO;QACzB,MAAMY,YAAYP,OAAO,OAAO;QAChC,IAAI,CAAC/B,YAAY,CAACqC,QAAQ,CAACC,WAAW,YACpCL,gBAAgB,EAAE;QAGpB,MAAMM,UAAU;YACd,MAAMC,aAAajD,AAAc,UAAdA,aAAuBA,AAAc,aAAdA;YAC1C,MAAMkD,UAAUC,MAAM,IAAI,CAACL,KAAK,gBAAgB,CAAc;YAC9D,MAAMM,OAAOL,UAAU,aAAa,CAAc;YAClD,MAAMM,WACHJ,AAAAA,CAAAA,aAAaH,KAAK,WAAW,GAAGA,KAAK,YAAW,IAChDM,CAAAA,OACIH,AAAAA,CAAAA,aAAaG,KAAK,WAAW,GAAGA,KAAK,YAAW,IAChDE,CAAAA,OAAO,UAAU,CAACC,iBAAiBR,UAAU,CAACE,aAAa,cAAc,SAAS,KACjF,KACF;YACN,MAAMO,QAAQP,aAAaH,KAAK,WAAW,GAAGA,KAAK,YAAY;YAC/D,MAAMW,OAAOX,KAAK,qBAAqB;YACvC,MAAMY,OACJF,SAASH,WAAW,IAChB,EAAE,GACFH,QACG,MAAM,CAAC,CAACS;gBACP,MAAMrC,OAAOqC,MAAM,qBAAqB;gBACxC,OAAOV,aACH3B,KAAK,IAAI,GAAGmC,KAAK,IAAI,GAAG,KAAKnC,KAAK,KAAK,GAAGmC,KAAK,KAAK,GAAG,IACvDnC,KAAK,GAAG,GAAGmC,KAAK,GAAG,GAAG,KAAKnC,KAAK,MAAM,GAAGmC,KAAK,MAAM,GAAG;YAC7D,GACC,GAAG,CAAC,CAACE,QAAUA,MAAM,OAAO,CAAC,MAAM,IAAI;YAChDjB,gBAAgB,CAACkB,WACfA,SAAS,MAAM,KAAKF,KAAK,MAAM,IAAIE,SAAS,KAAK,CAAC,CAACvE,KAAKwE,QAAUxE,QAAQqE,IAAI,CAACG,MAAM,IACjFD,WACAF;QAER;QACAV;QACA,MAAMc,WAAW,AAA0B,MAA1B,OAAOC,iBAAiC,OAAO,IAAIA,eAAef;QACnFc,UAAU,QAAQhB;QAClBgB,UAAU,QAAQf;QAClB,KAAK,MAAMY,SAASb,KAAK,QAAQ,CAAEgB,UAAU,QAAQH;QACrDb,KAAK,gBAAgB,CAAC,UAAUE,SAAS;YAAE,SAAS;QAAK;QACzDgB,OAAO,gBAAgB,CAAC,UAAUhB;QAClC,OAAO;YACLc,UAAU;YACVhB,KAAK,mBAAmB,CAAC,UAAUE;YACnCgB,OAAO,mBAAmB,CAAC,UAAUhB;QACvC;IACF,GAAG;QAACvC;QAAUT;QAAWL;KAAM;IAC/B,MAAMsE,SAAS,CAAC5E;QACd,IAAI,CAACgC,QAAQ,IAAI,CAAC,CAACC,OAASA,KAAK,GAAG,KAAKjC,MAAM;QAC/C,IAAIO,AAAcsE,WAAdtE,WAAyB4B,YAAYnC;QACzC,IAAIA,QAAQsC,UAAU7B,WAAWT;IACnC;IACA,IAAIM,AAAiB,MAAjBA,MAAM,MAAM,EAAQ,OAAO;IAC/B,OACE,AADK,WAAP,GACE,sCAAC;QACE,GAAGmB,KAAK;QACT,WAAWqD,AAAAA,IAAAA,4BAAAA,OAAAA,AAAAA,EACT,aACA,CAAC,WAAW,EAAEpE,MAAM,EACpB,CAAC,WAAW,EAAEC,WAAW,EACzB,CAAC,WAAW,EAAEC,MAAM,EACpBC,SAAS,oBACTU;;0BAGF,qCAACwD,cAAAA;gBAAa,SAASzB;gBAAS,OAAOhD;gBAAO,WAAWgB;0BACvD,oDAAC;oBAAI,WAAU;oBAAoB,KAAK6B;;sCACtC,qCAAC6B,8BAAAA,gBAAgBA,EAAAA;4BACf,KAAKlC;4BACL,QAAQ,CAACmC;gCACP,IAAI,CAACA,MAAM,aAAa,CAAC,QAAQ,CAACA,MAAM,aAAa,GAAGzC,WAAWqC;4BACrE;4BACA,MAAK;4BACL,cAAYrD;4BACZ,eAAe;gCACb,oBACEb,AAAc,WAAdA,aAAwBA,AAAc,YAAdA,YAAwB,aAAa;4BACjE;4BACA,WAAU;4BACV,mBAAkB;4BAClB,UAAU;4BACV,mBAAmB;sCAEnB,oDAAC;gCAAI,KAAKqC;gCAAO,WAAU;;kDACzB,qCAAC;wCAAK,KAAKC;wCAAW,WAAU;wCAAuB,eAAY;;kDACnE,qCAACiC,yBAAAA,eAAeA,EAAAA;wCACd,OAAO5E,MAAM,GAAG,CAAC,CAAC2B,OAASA,KAAK,GAAG;wCACnC,UACEtB,AAAc,UAAdA,aAAuBA,AAAc,aAAdA,YACnBwE,yBAAAA,6BAA6BA,GAC7BC,yBAAAA,2BAA2BA;kDAGhC9E,MAAM,GAAG,CAAC,CAAC2B,MAAMuC,QAChB,AADgBA,WAAAA,GAChB,sCAACa,UAAAA;gDACC,MAAMpD;gDACN,UAAUqB;gDACV,WAAU;gDAEV,eAAarB,KAAK,GAAG,KAAKK,YAAYuC;gDACtC,4BAAyB;;kEAEzB,sCAAC;wDACC,IAAI,GAAGjC,GAAG,KAAK,EAAE4B,OAAO;wDACxB,MAAK;wDACL,MAAK;wDACL,iBAAevC,KAAK,GAAG,KAAKK;wDAC5B,iBAAeL,AAAiB,QAAjBA,KAAK,QAAQ,GAAW,GAAGW,GAAG,OAAO,EAAE4B,OAAO,GAAGK;wDAChE,UAAU5C,KAAK,QAAQ;wDACvB,UAAUA,KAAK,GAAG,KAAKQ,WAAW,IAAI;wDACtC,WAAU;wDACV,SAAS,IAAMD,WAAWP,KAAK,GAAG;wDAClC,SAAS,IAAM2C,OAAO3C,KAAK,GAAG;wDAC9B,WAAW,CAACgD;4DACV,IAAIK;4DACJ,MAAMC,WAAWvD,QAAQ,SAAS,CAAC,CAACsC,QAAUA,MAAM,GAAG,KAAKrC,KAAK,GAAG;4DACpE,MAAMuD,UACJ7E,AAAc,WAAdA,aAAwBA,AAAc,YAAdA,YACpB,cACAe,AAAc,UAAdA,YACE,cACA;4DACR,MAAM+D,WACJ9E,AAAc,WAAdA,aAAwBA,AAAc,YAAdA,YACpB,YACAe,AAAc,UAAdA,YACE,eACA;4DACR,IAAIuD,MAAM,GAAG,KAAKO,SAChBF,OAAOtD,OAAO,CAAEuD,AAAAA,CAAAA,WAAW,KAAKvD,QAAQ,MAAM,CAAC,EAAE;iEAC9C,IAAIiD,MAAM,GAAG,KAAKQ,UACrBH,OAAOtD,OAAO,CAAEuD,AAAAA,CAAAA,WAAW,IAAIvD,QAAQ,MAAK,IAAKA,QAAQ,MAAM,CAAC,EAAE;iEAC/D,IAAIiD,AAAc,WAAdA,MAAM,GAAG,EAAaK,OAAOtD,OAAO,CAAC,EAAE,EAAE;iEAC7C,IAAIiD,AAAc,UAAdA,MAAM,GAAG,EAAYK,OAAOtD,QAAQ,EAAE,CAAC,KAAK;4DACrD,IAAIsD,AAAST,WAATS,MAAoB;gEACtBL,MAAM,cAAc;gEACpBzC,WAAW8C;gEACX,MAAMI,YAAYpF,MAAM,SAAS,CAAC,CAACgE,QAAUA,MAAM,GAAG,KAAKgB;gEAC3DxC,KAAK,OAAO,EACR,cAAiC,CAAC,KAAK,EAAEF,GAAG,KAAK,EAAE8C,UAAU,EAAE,CAAC,GAChE;gEACJ,IAAI5E,AAAmB,gBAAnBA,gBAAgC8D,OAAOU;4DAC7C;wDACF;;4DAECrD,KAAK,IAAI,IAAI,WAAJ,GAAI,qCAAC;gEAAK,eAAY;0EAAQA,KAAK,IAAI;;4DAChDA,KAAK,KAAK;;;oDAEZA,KAAK,QAAQ,IACZ,AADgB,WAAJ,GACZ,qCAAC;wDACC,MAAK;wDACL,WAAU;wDACV,UAAUA,KAAK,QAAQ,IAAI,CAAChB;wDAC5B,cAAYa,OAAO,mBAAmB;4DACpC,OAAO,AAAsB,YAAtB,OAAOG,KAAK,KAAK,GAAgBA,KAAK,KAAK,GAAGA,KAAK,GAAG;wDAC/D;wDACA,SAAS,CAACgD;4DACRhE,UAAUgB,KAAK,GAAG,EAAEgD;4DACpB,IAAIA,MAAM,gBAAgB,EAAE;4DAC5B,MAAMM,WAAWvD,QAAQ,SAAS,CAAC,CAACsC,QAAUA,MAAM,GAAG,KAAKrC,KAAK,GAAG;4DACpE,MAAMqD,OACJrD,KAAK,GAAG,KAAKK,WACRN,OAAO,CAACuD,WAAW,EAAE,IAAIvD,OAAO,CAACuD,WAAW,EAAE,GAC/CvD,QAAQ,IAAI,CAAC,CAACsC,QAAUA,MAAM,GAAG,KAAKhC;4DAC5C,IAAIgD,MAAM;gEACR,IAAIrD,KAAK,GAAG,KAAKK,UAAUsC,OAAOU,KAAK,GAAG;gEAC1C,MAAMI,YAAYpF,MAAM,SAAS,CAAC,CAACgE,QAAUA,MAAM,GAAG,KAAKgB,KAAK,GAAG;gEACnExC,KAAK,OAAO,EACR,cAAiC,CAAC,KAAK,EAAEF,GAAG,KAAK,EAAE8C,UAAU,EAAE,CAAC,GAChE;4DACN;wDACF;kEAEA,mDAACC,sCAAAA,CAACA,EAAAA;4DAAC,MAAM;4DAAI,eAAY;;;;+CA3ExB1D,KAAK,GAAG;;;;;wBAmFtBmB,aAAa,MAAM,GAAG,KACrB,AAD0B,WAAL,GACrB,qCAACwC,6BAAAA,eAAQA,EAAAA;4BACP,OAAOtF,MACJ,MAAM,CAAC,CAAC2B,OAASmB,aAAa,QAAQ,CAACnB,KAAK,GAAG,GAC/C,GAAG,CAAC,CAACA,OAAU;oCACd,KAAKA,KAAK,GAAG;oCACb,OAAOA,KAAK,KAAK;oCACjB,UAAUA,KAAK,QAAQ;oCACvB,SAAS;wCACP2C,OAAO3C,KAAK,GAAG;wCACf4D,sBAAsB;4CACpB,MAAMC,SAASC,SAAS,cAAc,CAAC,GAAGnD,GAAG,KAAK,EAAEtC,MAAM,OAAO,CAAC2B,OAAO;4CACzE6D,QAAQ,iBAAiB;gDAAE,OAAO;gDAAW,QAAQ;4CAAU;4CAC/DA,QAAQ;wCACV;oCACF;gCACF;sCAEF,mDAACE,2BAAAA,aAAaA,EAAAA;gCACZ,WAAU;gCACV,kBAAe;gCACf,SAAQ;gCACR,MAAMpF;gCACN,WAAW,AAAX,cAAW,qCAACqF,sCAAAA,QAAQA,EAAAA;oCAAC,MAAM;;gCAC3B,cAAYrE,EAAE;;;wBAInBV,SACC,AADQ,WAATA,GACC,qCAAC8E,2BAAAA,aAAaA,EAAAA;4BACZ,WAAU;4BACV,SAAQ;4BACR,MAAMpF;4BACN,WAAW,AAAX,cAAW,qCAACsF,sCAAAA,IAAIA,EAAAA;gCAAC,MAAM;;4BACvB,cAAY/E,YAAYS,EAAE;4BAC1B,SAASV;;wBAGZF,SAAS,WAATA,GAAS,qCAAC;4BAAI,WAAU;sCAAoBA;;;;;YAGhDV,MAAM,IAAI,CAAC,CAAC2B,OAASA,AAAiB,QAAjBA,KAAK,QAAQ,KACjC,AAD8C,WAAT,GACrC,qCAAC;gBAAI,WAAU;0BACZ3B,MAAM,GAAG,CACR,CAAC2B,MAAMuC,QACLvC,AAAiB,QAAjBA,KAAK,QAAQ,IACX,AADuB,WAAR,GACf,qCAAC;wBAEC,IAAI,GAAGW,GAAG,OAAO,EAAE4B,OAAO;wBAC1B,MAAK;wBACL,mBAAiB,GAAG5B,GAAG,KAAK,EAAE4B,OAAO;wBACrC,QAAQvC,KAAK,GAAG,KAAKK;wBAErB,UAAU;wBACV,WAAU;kCAERL,AAAAA,CAAAA,KAAK,GAAG,KAAKK,YAAa,CAACvB,mBAAmB2B,QAAQ,QAAQ,CAACT,KAAK,GAAG,MACvEA,KAAK,QAAQ;uBAVVA,KAAK,GAAG;;;;AAkB/B;AAEA,SAASoD,SAAS,EAChBpD,IAAI,EACJZ,QAAQ,EACR,GAAGI,OACmE;IACtE,OAAOJ,WACL,AADgB,WAAXA,GACL,qCAAC8E,aAAAA;QAAY,MAAMlE;QAAO,GAAGR,KAAK;SAElC,mDAAC;QAAK,GAAGA,KAAK;QAAE,gBAAcQ,KAAK,GAAG;;AAE1C;AACA,SAASkE,YAAY,EACnBlE,IAAI,EACJmE,QAAQ,EACR,GAAG3E,OACgD;IACnD,MAAMK,SAASC,AAAAA,IAAAA,uCAAAA,gBAAAA,AAAAA;IACf,MAAMsE,SAASC,AAAAA,IAAAA,2BAAAA,gBAAAA,AAAAA;IACf,MAAM,EACJC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,mBAAmB,EACnBC,SAAS,EACTC,UAAU,EACVC,UAAU,EACX,GAAGC,AAAAA,IAAAA,yBAAAA,WAAAA,AAAAA,EAAY;QAAE,IAAI7E,KAAK,GAAG;QAAE,UAAUA,KAAK,QAAQ;IAAC;IACxD,OACE,AADK,WAAP,GACE,sCAAC;QACE,GAAGR,KAAK;QACT,KAAKgF;QACL,gBAAcxE,KAAK,GAAG;QACtB,iBAAe4E,cAAchC;QAC7B,OAAO;YACL,GAAGpD,MAAM,KAAK;YACd,WAAWsF,0BAAAA,GAAAA,CAAAA,SAAAA,CAAAA,QAAsB,CAACJ;YAClC,YACEN,UAAUO,aACN,gEACA/B;QACR;;0BAEA,qCAAC;gBACC,MAAK;gBACJ,GAAG0B,UAAU;gBACb,GAAGC,SAAS;gBACb,KAAKE;gBACL,UAAUzE,KAAK,QAAQ;gBACvB,WAAU;gBACV,cAAYH,OAAO,gBAAgB;oBACjC,OAAO,AAAsB,YAAtB,OAAOG,KAAK,KAAK,GAAgBA,KAAK,KAAK,GAAGA,KAAK,GAAG;gBAC/D;0BAEA,mDAAC+E,sCAAAA,YAAYA,EAAAA;oBAAC,MAAM;oBAAI,eAAY;;;YAErCZ;;;AAGP;AAEA,SAASrB,aAAa,EACpB/C,OAAO,EACP1B,KAAK,EACLgB,SAAS,EACT8E,QAAQ,EAMT;IACC,OAAOpE,UACL,AADe,WAAVA,GACL,qCAACiF,cAAAA;QAAa,OAAO3G;QAAO,WAAWgB;kBACpC8E;SAGHA;AAEJ;AACA,SAASa,aAAa,EACpB3G,KAAK,EACLgB,SAAS,EACT8E,QAAQ,EAKT;IACC,MAAMxD,KAAKC,AAAAA,IAAAA,+BAAAA,KAAAA,AAAAA;IACX,MAAMqE,gBAAgBC,AAAAA,IAAAA,2CAAAA,oBAAAA,AAAAA,EAAqB,CAACnH;QAC1C,MAAMiC,OAAO3B,MAAM,IAAI,CAAC,CAACgE,QAAUA,MAAM,GAAG,KAAKtE;QACjD,OAAO,AAAuB,YAAvB,OAAOiC,MAAM,QAAqBA,KAAK,KAAK,GAAGmF,OAAOpH;IAC/D;IACA,MAAMqH,UAAUC,AAAAA,IAAAA,qBAAAA,UAAAA,AAAAA,EACdC,AAAAA,IAAAA,qBAAAA,SAAAA,AAAAA,EAAUC,qBAAAA,aAAaA,EAAE;QAAE,sBAAsB;YAAE,UAAU;QAAE;IAAE,IACjED,AAAAA,IAAAA,qBAAAA,SAAAA,AAAAA,EAAUE,qBAAAA,cAAcA,EAAE;QAAE,kBAAkBC,yBAAAA,2BAA2BA;IAAC;IAE5E,OACE,AADK,WAAP,GACE,qCAACC,qBAAAA,UAAUA,EAAAA;QACT,IAAI/E;QACJ,SAASyE;QACT,oBAAoBO,qBAAAA,aAAaA;QACjC,eAAeV;QACf,WAAW,CAAC,EAAEW,MAAM,EAAEC,IAAI,EAAE;YAC1B,IAAI,CAACA,QAAQD,OAAO,EAAE,KAAKC,KAAK,EAAE,EAAE;YACpC,MAAMC,OAAOzH,MAAM,SAAS,CAAC,CAAC2B,OAASA,KAAK,GAAG,KAAK4F,OAAO,EAAE;YAC7D,MAAMG,KAAK1H,MAAM,SAAS,CAAC,CAAC2B,OAASA,KAAK,GAAG,KAAK6F,KAAK,EAAE;YACzD,IAAIC,QAAQ,KAAKC,MAAM,KAAK,CAAC1H,KAAK,CAAC0H,GAAG,EAAE,UACtC1G,YAAY2G,AAAAA,IAAAA,yBAAAA,SAAAA,AAAAA,EAAU;mBAAI3H;aAAM,EAAEyH,MAAMC;QAC5C;kBAEC5B;;AAGP;AAEO,SAAS8B,KAAKC,QAAmB;IACtC,MAAM1G,QAAQ2G,AAAAA,IAAAA,uCAAAA,iBAAAA,AAAAA,EAAkB,QAAQD;IACxC,OAAO,WAAP,GAAO,qCAAC9H,aAAAA;QAAa,GAAGoB,KAAK;;AAC/B"}
|
package/dist/cjs/tabs/tabs.d.cts
CHANGED
|
@@ -3,7 +3,7 @@ import type { ControlSize } from '../shared/types.cjs';
|
|
|
3
3
|
export interface TabItem {
|
|
4
4
|
key: string;
|
|
5
5
|
label: ReactNode;
|
|
6
|
-
children
|
|
6
|
+
children?: ReactNode;
|
|
7
7
|
disabled?: boolean;
|
|
8
8
|
icon?: ReactNode;
|
|
9
9
|
closable?: boolean;
|
|
@@ -16,6 +16,8 @@ export interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChang
|
|
|
16
16
|
type?: 'line' | 'card';
|
|
17
17
|
placement?: 'top' | 'bottom' | 'left' | 'right';
|
|
18
18
|
size?: ControlSize;
|
|
19
|
+
/** Fill the available width with equally sized tabs. */
|
|
20
|
+
block?: boolean;
|
|
19
21
|
activationMode?: 'automatic' | 'manual';
|
|
20
22
|
destroyInactive?: boolean;
|
|
21
23
|
extra?: ReactNode;
|
|
@@ -26,6 +28,6 @@ export interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChang
|
|
|
26
28
|
sortable?: boolean;
|
|
27
29
|
onReorder?: (items: TabItem[]) => void;
|
|
28
30
|
}
|
|
29
|
-
export declare function TabsControl({ items, activeKey, defaultActiveKey, onChange, type, placement, size, activationMode, destroyInactive, extra, onClose, onAdd, addLabel, overflow, sortable, onReorder, className, 'aria-label': label, ...props }: TabsProps): import("react").JSX.Element | null;
|
|
31
|
+
export declare function TabsControl({ items, activeKey, defaultActiveKey, onChange, type, placement, size, block, activationMode, destroyInactive, extra, onClose, onAdd, addLabel, overflow, sortable, onReorder, className, 'aria-label': label, ...props }: TabsProps): import("react").JSX.Element | null;
|
|
30
32
|
export declare function Tabs(rawProps: TabsProps): import("react").JSX.Element;
|
|
31
33
|
//# sourceMappingURL=tabs.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.d.cts","sourceRoot":"","sources":["../../../src/tabs/tabs.tsx"],"names":[],"mappings":"AAkBA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"tabs.d.cts","sourceRoot":"","sources":["../../../src/tabs/tabs.tsx"],"names":[],"mappings":"AAkBA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAQf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAMnD,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACjF,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAChD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACtE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACxC;AACD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,IAAa,EACb,SAAiB,EACjB,IAAW,EACX,KAAa,EACb,cAA4B,EAC5B,eAAuB,EACvB,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAe,EACf,QAAgB,EAChB,SAAS,EACT,SAAS,EACT,YAAY,EAAE,KAAK,EACnB,GAAG,KAAK,EACT,EAAE,SAAS,sCAoRX;AAsHD,wBAAgB,IAAI,CAAC,QAAQ,EAAE,SAAS,+BAGvC"}
|
|
@@ -52,7 +52,7 @@ const leafTailwindTokens = {
|
|
|
52
52
|
'leaf-border-hover': 'var(--leaf-color-border-hover)',
|
|
53
53
|
'leaf-divider': 'var(--leaf-color-divider)',
|
|
54
54
|
'leaf-option-hover': 'var(--leaf-color-option-hover)',
|
|
55
|
-
'leaf-focus': 'var(--leaf-color-focus, var(--leaf-color-primary-alpha-42))'
|
|
55
|
+
'leaf-focus': 'var(--leaf-color-focus, var(--leaf-color-primary-focus, var(--leaf-color-primary-alpha-42)))'
|
|
56
56
|
},
|
|
57
57
|
borderRadius: {
|
|
58
58
|
leaf: 'var(--leaf-radius)',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind-tokens.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../src/tailwind-tokens.ts"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/** Shared by the Tailwind 3 preset and the generated Tailwind 4 CSS theme. */\nexport const leafTailwindTokens = {\n colors: {\n 'leaf-primary': 'var(--leaf-color-primary)',\n 'leaf-primary-hover': 'var(--leaf-color-primary-hover)',\n 'leaf-primary-active': 'var(--leaf-color-primary-active)',\n 'leaf-on-primary': 'var(--leaf-color-on-primary)',\n 'leaf-success': 'var(--leaf-color-success)',\n 'leaf-warning': 'var(--leaf-color-warning)',\n 'leaf-on-warning': 'var(--leaf-color-on-warning)',\n 'leaf-danger': 'var(--leaf-color-danger)',\n 'leaf-danger-hover': 'var(--leaf-color-danger-hover)',\n 'leaf-danger-active': 'var(--leaf-color-danger-active)',\n 'leaf-on-danger': 'var(--leaf-color-on-danger)',\n 'leaf-info': 'var(--leaf-color-info)',\n 'leaf-text': 'var(--leaf-color-text)',\n 'leaf-muted': 'var(--leaf-color-text-muted)',\n 'leaf-subtle': 'var(--leaf-color-text-subtle)',\n 'leaf-surface': 'var(--leaf-color-surface)',\n 'leaf-surface-muted': 'var(--leaf-color-surface-muted)',\n 'leaf-surface-raised': 'var(--leaf-color-surface-raised)',\n 'leaf-border': 'var(--leaf-color-border)',\n 'leaf-border-hover': 'var(--leaf-color-border-hover)',\n 'leaf-divider': 'var(--leaf-color-divider)',\n 'leaf-option-hover': 'var(--leaf-color-option-hover)',\n 'leaf-focus'
|
|
1
|
+
{"version":3,"file":"tailwind-tokens.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../src/tailwind-tokens.ts"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/** Shared by the Tailwind 3 preset and the generated Tailwind 4 CSS theme. */\nexport const leafTailwindTokens = {\n colors: {\n 'leaf-primary': 'var(--leaf-color-primary)',\n 'leaf-primary-hover': 'var(--leaf-color-primary-hover)',\n 'leaf-primary-active': 'var(--leaf-color-primary-active)',\n 'leaf-on-primary': 'var(--leaf-color-on-primary)',\n 'leaf-success': 'var(--leaf-color-success)',\n 'leaf-warning': 'var(--leaf-color-warning)',\n 'leaf-on-warning': 'var(--leaf-color-on-warning)',\n 'leaf-danger': 'var(--leaf-color-danger)',\n 'leaf-danger-hover': 'var(--leaf-color-danger-hover)',\n 'leaf-danger-active': 'var(--leaf-color-danger-active)',\n 'leaf-on-danger': 'var(--leaf-color-on-danger)',\n 'leaf-info': 'var(--leaf-color-info)',\n 'leaf-text': 'var(--leaf-color-text)',\n 'leaf-muted': 'var(--leaf-color-text-muted)',\n 'leaf-subtle': 'var(--leaf-color-text-subtle)',\n 'leaf-surface': 'var(--leaf-color-surface)',\n 'leaf-surface-muted': 'var(--leaf-color-surface-muted)',\n 'leaf-surface-raised': 'var(--leaf-color-surface-raised)',\n 'leaf-border': 'var(--leaf-color-border)',\n 'leaf-border-hover': 'var(--leaf-color-border-hover)',\n 'leaf-divider': 'var(--leaf-color-divider)',\n 'leaf-option-hover': 'var(--leaf-color-option-hover)',\n 'leaf-focus':\n 'var(--leaf-color-focus, var(--leaf-color-primary-focus, var(--leaf-color-primary-alpha-42)))',\n },\n borderRadius: {\n leaf: 'var(--leaf-radius)',\n 'leaf-sm': 'var(--leaf-radius-sm)',\n 'leaf-md': 'var(--leaf-radius-md)',\n 'leaf-lg': 'var(--leaf-radius-lg)',\n 'leaf-choice': 'var(--leaf-choice-radius)',\n },\n spacing: {\n leaf: 'var(--leaf-spacing)',\n 'leaf-xs': 'var(--leaf-spacing-xs)',\n 'leaf-sm': 'var(--leaf-spacing-sm)',\n 'leaf-md': 'var(--leaf-spacing-md)',\n 'leaf-lg': 'var(--leaf-spacing-lg)',\n 'leaf-xl': 'var(--leaf-spacing-xl)',\n 'leaf-control': 'var(--leaf-control-height)',\n 'leaf-control-sm': 'var(--leaf-control-height-sm)',\n 'leaf-control-lg': 'var(--leaf-control-height-lg)',\n 'leaf-form-gap': 'var(--leaf-density-form-gap)',\n 'leaf-label-gap': 'var(--leaf-density-label-gap)',\n 'leaf-row-padding': 'var(--leaf-density-row-padding)',\n 'leaf-option-height': 'var(--leaf-density-option-height)',\n 'leaf-option-padding': 'var(--leaf-density-option-padding)',\n 'leaf-field-padding': 'var(--leaf-density-field-padding)',\n 'leaf-dialog-block': 'var(--leaf-density-dialog-block)',\n 'leaf-dialog-inline': 'var(--leaf-density-dialog-inline)',\n 'leaf-dialog-gap': 'var(--leaf-density-dialog-gap)',\n },\n fontFamily: { leaf: 'var(--leaf-font-family)' },\n fontSize: {\n leaf: 'var(--leaf-font-size)',\n 'leaf-sm': 'var(--leaf-font-size-sm)',\n 'leaf-lg': 'var(--leaf-font-size-lg)',\n },\n lineHeight: { leaf: 'var(--leaf-line-height)' },\n fontWeight: {\n 'leaf-medium': 'var(--leaf-font-weight)',\n 'leaf-heading': 'var(--leaf-heading-weight)',\n },\n boxShadow: {\n 'leaf-xs': 'var(--leaf-shadow-xs)',\n 'leaf-sm': 'var(--leaf-shadow-sm)',\n 'leaf-md': 'var(--leaf-shadow-md)',\n 'leaf-lg': 'var(--leaf-shadow-lg)',\n },\n transitionDuration: {\n leaf: 'var(--leaf-motion-duration)',\n 'leaf-fast': 'var(--leaf-motion-fast)',\n 'leaf-slow': 'var(--leaf-motion-slow)',\n },\n transitionTimingFunction: {\n leaf: 'var(--leaf-motion-easing)',\n 'leaf-spring': 'var(--leaf-motion-spring)',\n },\n zIndex: {\n 'leaf-popup': 'var(--leaf-z-index-popup)',\n 'leaf-modal': 'var(--leaf-z-index-modal)',\n 'leaf-message': 'var(--leaf-z-index-message)',\n },\n};\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","leafTailwindTokens"],"mappings":";;;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC,SAASC;QAC1C,IAAIC,SAAS,CAACC,MAAMC;YACnB,IAAI,IAAIC,OAAOF,KACd,IAAGJ,oBAAoB,CAAC,CAACI,MAAME,QAAQ,CAACN,oBAAoB,CAAC,CAAC,UAASM,MACtEC,OAAO,cAAc,CAAC,UAASD,KAAK;gBAAE,YAAY;gBAAM,CAACD,KAAK,EAAED,IAAI,CAACE,IAAI;YAAC;QAG7E;QACAH,OAAOF,SAAS;QAChBE,OAAOD,QAAQ;IAChB;;;ICVAF,oBAAoB,CAAC,GAAG,CAACQ,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFT,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,MAAlB,OAAOU,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;ACLO,MAAMI,qBAAqB;IAChC,QAAQ;QACN,gBAAgB;QAChB,sBAAsB;QACtB,uBAAuB;QACvB,mBAAmB;QACnB,gBAAgB;QAChB,gBAAgB;QAChB,mBAAmB;QACnB,eAAe;QACf,qBAAqB;QACrB,sBAAsB;QACtB,kBAAkB;QAClB,aAAa;QACb,aAAa;QACb,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,sBAAsB;QACtB,uBAAuB;QACvB,eAAe;QACf,qBAAqB;QACrB,gBAAgB;QAChB,qBAAqB;QACrB,cACE;IACJ;IACA,cAAc;QACZ,MAAM;QACN,WAAW;QACX,WAAW;QACX,WAAW;QACX,eAAe;IACjB;IACA,SAAS;QACP,MAAM;QACN,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,gBAAgB;QAChB,mBAAmB;QACnB,mBAAmB;QACnB,iBAAiB;QACjB,kBAAkB;QAClB,oBAAoB;QACpB,sBAAsB;QACtB,uBAAuB;QACvB,sBAAsB;QACtB,qBAAqB;QACrB,sBAAsB;QACtB,mBAAmB;IACrB;IACA,YAAY;QAAE,MAAM;IAA0B;IAC9C,UAAU;QACR,MAAM;QACN,WAAW;QACX,WAAW;IACb;IACA,YAAY;QAAE,MAAM;IAA0B;IAC9C,YAAY;QACV,eAAe;QACf,gBAAgB;IAClB;IACA,WAAW;QACT,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;IACb;IACA,oBAAoB;QAClB,MAAM;QACN,aAAa;QACb,aAAa;IACf;IACA,0BAA0B;QACxB,MAAM;QACN,eAAe;IACjB;IACA,QAAQ;QACN,cAAc;QACd,cAAc;QACd,gBAAgB;IAClB;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind-tokens.d.cts","sourceRoot":"","sources":["../../src/tailwind-tokens.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB;IAC7B,MAAM;QACJ,cAAc;QACd,oBAAoB;QACpB,qBAAqB;QACrB,iBAAiB;QACjB,cAAc;QACd,cAAc;QACd,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,oBAAoB;QACpB,gBAAgB;QAChB,WAAW;QACX,WAAW;QACX,YAAY;QACZ,aAAa;QACb,cAAc;QACd,oBAAoB;QACpB,qBAAqB;QACrB,aAAa;QACb,mBAAmB;QACnB,cAAc;QACd,mBAAmB;QACnB,YAAY;;
|
|
1
|
+
{"version":3,"file":"tailwind-tokens.d.cts","sourceRoot":"","sources":["../../src/tailwind-tokens.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB;IAC7B,MAAM;QACJ,cAAc;QACd,oBAAoB;QACpB,qBAAqB;QACrB,iBAAiB;QACjB,cAAc;QACd,cAAc;QACd,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,oBAAoB;QACpB,gBAAgB;QAChB,WAAW;QACX,WAAW;QACX,YAAY;QACZ,aAAa;QACb,cAAc;QACd,oBAAoB;QACpB,qBAAqB;QACrB,aAAa;QACb,mBAAmB;QACnB,cAAc;QACd,mBAAmB;QACnB,YAAY;;IAGd,YAAY;QACV,IAAI;QACJ,SAAS;QACT,SAAS;QACT,SAAS;QACT,aAAa;;IAEf,OAAO;QACL,IAAI;QACJ,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,cAAc;QACd,iBAAiB;QACjB,iBAAiB;QACjB,eAAe;QACf,gBAAgB;QAChB,kBAAkB;QAClB,oBAAoB;QACpB,qBAAqB;QACrB,oBAAoB;QACpB,mBAAmB;QACnB,oBAAoB;QACpB,iBAAiB;;IAEnB,UAAU;QAAI,IAAI;;IAClB,QAAQ;QACN,IAAI;QACJ,SAAS;QACT,SAAS;;IAEX,UAAU;QAAI,IAAI;;IAClB,UAAU;QACR,aAAa;QACb,cAAc;;IAEhB,SAAS;QACP,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;;IAEX,kBAAkB;QAChB,IAAI;QACJ,WAAW;QACX,WAAW;;IAEb,wBAAwB;QACtB,IAAI;QACJ,aAAa;;IAEf,MAAM;QACJ,YAAY;QACZ,YAAY;QACZ,cAAc;;CAEjB,CAAC"}
|
|
@@ -36,12 +36,14 @@ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
|
36
36
|
const external_react_namespaceObject = require("react");
|
|
37
37
|
const component_defaults_cjs_namespaceObject = require("../config-provider/component-defaults.cjs");
|
|
38
38
|
const form_cjs_namespaceObject = require("../form/form.cjs");
|
|
39
|
+
const scrollbar_cjs_namespaceObject = require("../scrollbar/scrollbar.cjs");
|
|
39
40
|
const classes_cjs_namespaceObject = require("../shared/classes.cjs");
|
|
40
41
|
const field_cjs_namespaceObject = require("../shared/field.cjs");
|
|
41
42
|
const motion_cjs_namespaceObject = require("../shared/motion.cjs");
|
|
42
43
|
const useBrowserLayoutEffect = "u" < typeof window ? external_react_namespaceObject.useEffect : external_react_namespaceObject.useLayoutEffect;
|
|
43
44
|
const textarea_TextareaControl = /*#__PURE__*/ (0, external_react_namespaceObject.forwardRef)(function({ size = 'md', status: statusProp, resize = 'vertical', rows = 3, autoSize = false, showCount = false, value, defaultValue, onChange, className, style, disabled: disabledProp, 'aria-invalid': ariaInvalid, ...props }, ref) {
|
|
44
45
|
const field = (0, form_cjs_namespaceObject.useFormField)();
|
|
46
|
+
const id = (0, external_react_namespaceObject.useId)();
|
|
45
47
|
const textarea = (0, external_react_namespaceObject.useRef)(null);
|
|
46
48
|
const heightAnimation = (0, external_react_namespaceObject.useRef)(void 0);
|
|
47
49
|
const measuredHeight = (0, external_react_namespaceObject.useRef)(false);
|
|
@@ -103,29 +105,55 @@ const textarea_TextareaControl = /*#__PURE__*/ (0, external_react_namespaceObjec
|
|
|
103
105
|
motionEnabled
|
|
104
106
|
]);
|
|
105
107
|
(0, external_react_namespaceObject.useEffect)(()=>()=>heightAnimation.current?.cancel(), []);
|
|
106
|
-
const control = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
field?.descriptionId
|
|
113
|
-
].filter(Boolean).join(' ') || void 0,
|
|
114
|
-
ref: merged,
|
|
115
|
-
disabled: disabled,
|
|
116
|
-
rows: rows,
|
|
117
|
-
value: current,
|
|
118
|
-
onChange: (event)=>{
|
|
119
|
-
setCurrent(event.target.value);
|
|
120
|
-
onChange?.(event);
|
|
121
|
-
},
|
|
122
|
-
className: (0, classes_cjs_namespaceObject.classes)('leaf-textarea', `leaf-textarea--${size}`, className),
|
|
108
|
+
const control = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(scrollbar_cjs_namespaceObject.ScrollbarControl, {
|
|
109
|
+
externalViewport: textarea,
|
|
110
|
+
viewportRevision: current,
|
|
111
|
+
resizeHandle: !autoSize && 'none' !== resize,
|
|
112
|
+
scrollbarTabIndex: -1,
|
|
113
|
+
className: "leaf-textarea-scrollbar",
|
|
123
114
|
style: {
|
|
124
|
-
|
|
125
|
-
|
|
115
|
+
width: style?.width,
|
|
116
|
+
minWidth: style?.minWidth,
|
|
117
|
+
maxWidth: style?.maxWidth,
|
|
118
|
+
flex: style?.flex,
|
|
119
|
+
flexBasis: style?.flexBasis,
|
|
120
|
+
flexGrow: style?.flexGrow,
|
|
121
|
+
flexShrink: style?.flexShrink,
|
|
122
|
+
alignSelf: style?.alignSelf,
|
|
123
|
+
order: style?.order,
|
|
124
|
+
gridArea: style?.gridArea,
|
|
125
|
+
gridColumn: style?.gridColumn,
|
|
126
|
+
gridRow: style?.gridRow
|
|
126
127
|
},
|
|
127
|
-
"
|
|
128
|
-
|
|
128
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("textarea", {
|
|
129
|
+
...props,
|
|
130
|
+
id: props.id ?? field?.id ?? id,
|
|
131
|
+
required: props.required ?? field?.required,
|
|
132
|
+
"aria-describedby": [
|
|
133
|
+
props['aria-describedby'],
|
|
134
|
+
field?.descriptionId
|
|
135
|
+
].filter(Boolean).join(' ') || void 0,
|
|
136
|
+
ref: merged,
|
|
137
|
+
disabled: disabled,
|
|
138
|
+
rows: rows,
|
|
139
|
+
value: current,
|
|
140
|
+
onChange: (event)=>{
|
|
141
|
+
setCurrent(event.target.value);
|
|
142
|
+
onChange?.(event);
|
|
143
|
+
},
|
|
144
|
+
className: (0, classes_cjs_namespaceObject.classes)('leaf-textarea', `leaf-textarea--${size}`, className),
|
|
145
|
+
style: {
|
|
146
|
+
resize: autoSize ? 'none' : resize,
|
|
147
|
+
...style,
|
|
148
|
+
minWidth: void 0,
|
|
149
|
+
maxWidth: void 0,
|
|
150
|
+
...style?.width === void 0 ? {} : {
|
|
151
|
+
width: '100%'
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"data-status": status,
|
|
155
|
+
"aria-invalid": 'error' === status ? true : ariaInvalid
|
|
156
|
+
})
|
|
129
157
|
});
|
|
130
158
|
return showCount ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
|
|
131
159
|
className: "leaf-textarea-wrap",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea/textarea.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../src/textarea/textarea.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n forwardRef,\n type ReactNode,\n type TextareaHTMLAttributes,\n useEffect,\n useLayoutEffect,\n useRef,\n} from 'react';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useFormField } from '../form/form';\nimport { classes } from '../shared/classes';\nimport { useFieldValue, useMergedRef } from '../shared/field';\nimport { animateMotion, useMotionEnabled } from '../shared/motion';\nimport type { ControlSize, ControlStatus } from '../shared/types';\n\nexport interface TextareaAutoSize {\n minRows?: number;\n maxRows?: number;\n}\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n size?: ControlSize;\n status?: ControlStatus;\n resize?: 'none' | 'vertical' | 'both';\n autoSize?: boolean | TextareaAutoSize;\n showCount?: boolean | ((value: string, maxLength?: number) => ReactNode);\n}\n\nconst useBrowserLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\nexport const TextareaControl = forwardRef<HTMLTextAreaElement, TextareaProps>(\n function TextareaControl(\n {\n size = 'md',\n status: statusProp,\n resize = 'vertical',\n rows = 3,\n autoSize = false,\n showCount = false,\n value,\n defaultValue,\n onChange,\n className,\n style,\n disabled: disabledProp,\n 'aria-invalid': ariaInvalid,\n ...props\n }: TextareaProps,\n ref,\n ) {\n const field = useFormField();\n const textarea = useRef<HTMLTextAreaElement>(null);\n const heightAnimation = useRef<Animation | undefined>(undefined);\n const measuredHeight = useRef(false);\n const motionEnabled = useMotionEnabled();\n const merged = useMergedRef(textarea, ref);\n const [current, setCurrent] = useFieldValue(\n value === undefined ? undefined : String(value),\n String(defaultValue ?? ''),\n textarea,\n props.form,\n );\n const disabled = disabledProp || field?.disabled;\n const status = statusProp ?? (field?.error ? 'error' : undefined);\n const minRows = typeof autoSize === 'object' ? Math.max(1, autoSize.minRows ?? rows) : rows;\n const maxRows =\n typeof autoSize === 'object' ? Math.max(minRows, autoSize.maxRows ?? Infinity) : Infinity;\n useBrowserLayoutEffect(() => {\n if (!autoSize || !textarea.current) {\n heightAnimation.current?.cancel();\n measuredHeight.current = false;\n return;\n }\n const node = textarea.current;\n const measure = () => {\n const previousHeight =\n Number.parseFloat(getComputedStyle(node).height) || node.offsetHeight;\n heightAnimation.current?.cancel();\n const computed = getComputedStyle(node);\n const lineHeight =\n Number.parseFloat(computed.lineHeight) ||\n (Number.parseFloat(computed.fontSize) || 14) * 1.5;\n const padding =\n (Number.parseFloat(computed.paddingTop) || 0) +\n (Number.parseFloat(computed.paddingBottom) || 0);\n const border =\n (Number.parseFloat(computed.borderTopWidth) || 0) +\n (Number.parseFloat(computed.borderBottomWidth) || 0);\n const addition = computed.boxSizing === 'border-box' ? padding + border : 0;\n node.style.height = 'auto';\n const measured =\n node.scrollHeight + (computed.boxSizing === 'border-box' ? border : -padding);\n const maximum = lineHeight * maxRows + addition;\n const height = Math.min(maximum, Math.max(lineHeight * minRows + addition, measured));\n node.style.height = `${height}px`;\n node.style.overflowY = measured > maximum ? 'auto' : 'hidden';\n if (measuredHeight.current && motionEnabled && Math.abs(previousHeight - height) > 0.5)\n heightAnimation.current = animateMotion(\n node,\n [{ height: `${previousHeight}px` }, { height: `${height}px` }],\n { durationMultiplier: 0.8 },\n );\n measuredHeight.current = true;\n };\n measure();\n let width = node.clientWidth;\n const observer =\n typeof ResizeObserver === 'undefined'\n ? null\n : new ResizeObserver(() => {\n if (width !== node.clientWidth) {\n width = node.clientWidth;\n measure();\n }\n });\n observer?.observe(node);\n return () => observer?.disconnect();\n }, [autoSize, minRows, maxRows, current, motionEnabled]);\n useEffect(() => () => heightAnimation.current?.cancel(), []);\n const control = (\n <textarea\n {...props}\n id={props.id ?? field?.id}\n required={props.required ?? field?.required}\n aria-describedby={\n [props['aria-describedby'], field?.descriptionId].filter(Boolean).join(' ') || undefined\n }\n ref={merged}\n disabled={disabled}\n rows={rows}\n value={current}\n onChange={(event) => {\n setCurrent(event.target.value);\n onChange?.(event);\n }}\n className={classes('leaf-textarea', `leaf-textarea--${size}`, className)}\n style={{ resize: autoSize ? 'none' : resize, ...style }}\n data-status={status}\n aria-invalid={status === 'error' ? true : ariaInvalid}\n />\n );\n return showCount ? (\n <div className=\"leaf-textarea-wrap\">\n {control}\n <span className=\"leaf-textarea__count\">\n {typeof showCount === 'function'\n ? showCount(current, props.maxLength)\n : `${current.length}${props.maxLength === undefined ? '' : ` / ${props.maxLength}`}`}\n </span>\n </div>\n ) : (\n control\n );\n },\n);\nTextareaControl.displayName = 'TextareaControl';\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n rawProps: TextareaProps,\n ref,\n) {\n const props = useComponentProps('Textarea', rawProps);\n return <TextareaControl {...props} ref={ref} />;\n});\nTextarea.displayName = 'Textarea';\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","useBrowserLayoutEffect","window","useEffect","useLayoutEffect","TextareaControl","forwardRef","size","statusProp","resize","rows","autoSize","showCount","value","defaultValue","onChange","className","style","disabledProp","ariaInvalid","props","ref","field","useFormField","textarea","useRef","heightAnimation","undefined","measuredHeight","motionEnabled","useMotionEnabled","merged","useMergedRef","current","setCurrent","useFieldValue","String","disabled","status","minRows","Math","maxRows","Infinity","node","measure","previousHeight","Number","getComputedStyle","computed","lineHeight","padding","border","addition","measured","maximum","height","animateMotion","width","observer","ResizeObserver","control","Boolean","event","classes","Textarea","rawProps","useComponentProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"textarea/textarea.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../src/textarea/textarea.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n forwardRef,\n type ReactNode,\n type TextareaHTMLAttributes,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n} from 'react';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useFormField } from '../form/form';\nimport { ScrollbarControl } from '../scrollbar/scrollbar';\nimport { classes } from '../shared/classes';\nimport { useFieldValue, useMergedRef } from '../shared/field';\nimport { animateMotion, useMotionEnabled } from '../shared/motion';\nimport type { ControlSize, ControlStatus } from '../shared/types';\n\nexport interface TextareaAutoSize {\n minRows?: number;\n maxRows?: number;\n}\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n size?: ControlSize;\n status?: ControlStatus;\n resize?: 'none' | 'vertical' | 'both';\n autoSize?: boolean | TextareaAutoSize;\n showCount?: boolean | ((value: string, maxLength?: number) => ReactNode);\n}\n\nconst useBrowserLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\nexport const TextareaControl = forwardRef<HTMLTextAreaElement, TextareaProps>(\n function TextareaControl(\n {\n size = 'md',\n status: statusProp,\n resize = 'vertical',\n rows = 3,\n autoSize = false,\n showCount = false,\n value,\n defaultValue,\n onChange,\n className,\n style,\n disabled: disabledProp,\n 'aria-invalid': ariaInvalid,\n ...props\n }: TextareaProps,\n ref,\n ) {\n const field = useFormField();\n const id = useId();\n const textarea = useRef<HTMLTextAreaElement>(null);\n const heightAnimation = useRef<Animation | undefined>(undefined);\n const measuredHeight = useRef(false);\n const motionEnabled = useMotionEnabled();\n const merged = useMergedRef(textarea, ref);\n const [current, setCurrent] = useFieldValue(\n value === undefined ? undefined : String(value),\n String(defaultValue ?? ''),\n textarea,\n props.form,\n );\n const disabled = disabledProp || field?.disabled;\n const status = statusProp ?? (field?.error ? 'error' : undefined);\n const minRows = typeof autoSize === 'object' ? Math.max(1, autoSize.minRows ?? rows) : rows;\n const maxRows =\n typeof autoSize === 'object' ? Math.max(minRows, autoSize.maxRows ?? Infinity) : Infinity;\n useBrowserLayoutEffect(() => {\n if (!autoSize || !textarea.current) {\n heightAnimation.current?.cancel();\n measuredHeight.current = false;\n return;\n }\n const node = textarea.current;\n const measure = () => {\n const previousHeight =\n Number.parseFloat(getComputedStyle(node).height) || node.offsetHeight;\n heightAnimation.current?.cancel();\n const computed = getComputedStyle(node);\n const lineHeight =\n Number.parseFloat(computed.lineHeight) ||\n (Number.parseFloat(computed.fontSize) || 14) * 1.5;\n const padding =\n (Number.parseFloat(computed.paddingTop) || 0) +\n (Number.parseFloat(computed.paddingBottom) || 0);\n const border =\n (Number.parseFloat(computed.borderTopWidth) || 0) +\n (Number.parseFloat(computed.borderBottomWidth) || 0);\n const addition = computed.boxSizing === 'border-box' ? padding + border : 0;\n node.style.height = 'auto';\n const measured =\n node.scrollHeight + (computed.boxSizing === 'border-box' ? border : -padding);\n const maximum = lineHeight * maxRows + addition;\n const height = Math.min(maximum, Math.max(lineHeight * minRows + addition, measured));\n node.style.height = `${height}px`;\n node.style.overflowY = measured > maximum ? 'auto' : 'hidden';\n if (measuredHeight.current && motionEnabled && Math.abs(previousHeight - height) > 0.5)\n heightAnimation.current = animateMotion(\n node,\n [{ height: `${previousHeight}px` }, { height: `${height}px` }],\n { durationMultiplier: 0.8 },\n );\n measuredHeight.current = true;\n };\n measure();\n let width = node.clientWidth;\n const observer =\n typeof ResizeObserver === 'undefined'\n ? null\n : new ResizeObserver(() => {\n if (width !== node.clientWidth) {\n width = node.clientWidth;\n measure();\n }\n });\n observer?.observe(node);\n return () => observer?.disconnect();\n }, [autoSize, minRows, maxRows, current, motionEnabled]);\n useEffect(() => () => heightAnimation.current?.cancel(), []);\n const control = (\n <ScrollbarControl\n externalViewport={textarea}\n viewportRevision={current}\n resizeHandle={!autoSize && resize !== 'none'}\n scrollbarTabIndex={-1}\n className=\"leaf-textarea-scrollbar\"\n style={{\n width: style?.width,\n minWidth: style?.minWidth,\n maxWidth: style?.maxWidth,\n flex: style?.flex,\n flexBasis: style?.flexBasis,\n flexGrow: style?.flexGrow,\n flexShrink: style?.flexShrink,\n alignSelf: style?.alignSelf,\n order: style?.order,\n gridArea: style?.gridArea,\n gridColumn: style?.gridColumn,\n gridRow: style?.gridRow,\n }}\n >\n <textarea\n {...props}\n id={props.id ?? field?.id ?? id}\n required={props.required ?? field?.required}\n aria-describedby={\n [props['aria-describedby'], field?.descriptionId].filter(Boolean).join(' ') || undefined\n }\n ref={merged}\n disabled={disabled}\n rows={rows}\n value={current}\n onChange={(event) => {\n setCurrent(event.target.value);\n onChange?.(event);\n }}\n className={classes('leaf-textarea', `leaf-textarea--${size}`, className)}\n style={{\n resize: autoSize ? 'none' : resize,\n ...style,\n minWidth: undefined,\n maxWidth: undefined,\n ...(style?.width === undefined ? {} : { width: '100%' }),\n }}\n data-status={status}\n aria-invalid={status === 'error' ? true : ariaInvalid}\n />\n </ScrollbarControl>\n );\n return showCount ? (\n <div className=\"leaf-textarea-wrap\">\n {control}\n <span className=\"leaf-textarea__count\">\n {typeof showCount === 'function'\n ? showCount(current, props.maxLength)\n : `${current.length}${props.maxLength === undefined ? '' : ` / ${props.maxLength}`}`}\n </span>\n </div>\n ) : (\n control\n );\n },\n);\nTextareaControl.displayName = 'TextareaControl';\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n rawProps: TextareaProps,\n ref,\n) {\n const props = useComponentProps('Textarea', rawProps);\n return <TextareaControl {...props} ref={ref} />;\n});\nTextarea.displayName = 'Textarea';\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","useBrowserLayoutEffect","window","useEffect","useLayoutEffect","TextareaControl","forwardRef","size","statusProp","resize","rows","autoSize","showCount","value","defaultValue","onChange","className","style","disabledProp","ariaInvalid","props","ref","field","useFormField","id","useId","textarea","useRef","heightAnimation","undefined","measuredHeight","motionEnabled","useMotionEnabled","merged","useMergedRef","current","setCurrent","useFieldValue","String","disabled","status","minRows","Math","maxRows","Infinity","node","measure","previousHeight","Number","getComputedStyle","computed","lineHeight","padding","border","addition","measured","maximum","height","animateMotion","width","observer","ResizeObserver","control","ScrollbarControl","Boolean","event","classes","Textarea","rawProps","useComponentProps"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.d.cts","sourceRoot":"","sources":["../../../src/textarea/textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,sBAAsB,
|
|
1
|
+
{"version":3,"file":"textarea.d.cts","sourceRoot":"","sources":["../../../src/textarea/textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,sBAAsB,EAK5B,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,aAAc,SAAQ,sBAAsB,CAAC,mBAAmB,CAAC;IAChF,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC;IACtC,SAAS,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;CAC1E;AAID,eAAO,MAAM,eAAe,+GAyJ3B,CAAC;AAGF,eAAO,MAAM,QAAQ,+GAMnB,CAAC"}
|
package/dist/cjs/theme.cjs
CHANGED
|
@@ -35,6 +35,23 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
35
35
|
});
|
|
36
36
|
const external_colors_cjs_namespaceObject = require("./colors.cjs");
|
|
37
37
|
const defined = (value)=>Object.fromEntries(Object.entries(value ?? {}).filter(([, item])=>void 0 !== item));
|
|
38
|
+
const componentStates = [
|
|
39
|
+
'hover',
|
|
40
|
+
'active',
|
|
41
|
+
'focus',
|
|
42
|
+
'disabled'
|
|
43
|
+
];
|
|
44
|
+
function mergeComponentTokens(parent, tokens) {
|
|
45
|
+
const merged = {
|
|
46
|
+
...defined(parent),
|
|
47
|
+
...defined(tokens)
|
|
48
|
+
};
|
|
49
|
+
for (const state of componentStates)if (parent?.[state] || tokens?.[state]) merged[state] = {
|
|
50
|
+
...defined(parent?.[state]),
|
|
51
|
+
...defined(tokens?.[state])
|
|
52
|
+
};
|
|
53
|
+
return merged;
|
|
54
|
+
}
|
|
38
55
|
function mergeLeafTheme(parent, theme) {
|
|
39
56
|
return {
|
|
40
57
|
...parent,
|
|
@@ -50,10 +67,7 @@ function mergeLeafTheme(parent, theme) {
|
|
|
50
67
|
])
|
|
51
68
|
].map((key)=>[
|
|
52
69
|
key,
|
|
53
|
-
|
|
54
|
-
...parent.components?.[key],
|
|
55
|
-
...defined(theme?.components?.[key])
|
|
56
|
-
}
|
|
70
|
+
mergeComponentTokens(parent.components?.[key], theme?.components?.[key])
|
|
57
71
|
])),
|
|
58
72
|
...parent.tokens || theme?.tokens ? {
|
|
59
73
|
tokens: {
|
|
@@ -79,6 +93,9 @@ const tokenVariables = {
|
|
|
79
93
|
borderColor: 'color-border',
|
|
80
94
|
borderHoverColor: 'color-border-hover',
|
|
81
95
|
dividerColor: 'color-divider',
|
|
96
|
+
borderWidth: 'border-width',
|
|
97
|
+
controlShadow: 'control-shadow',
|
|
98
|
+
surfaceShadow: 'surface-shadow',
|
|
82
99
|
borderRadiusSm: 'radius-sm',
|
|
83
100
|
borderRadiusMd: 'radius-md',
|
|
84
101
|
borderRadiusLg: 'radius-lg',
|
|
@@ -139,10 +156,7 @@ function paddingSides(value) {
|
|
|
139
156
|
}
|
|
140
157
|
function leafThemeColors(theme) {
|
|
141
158
|
const colors = {};
|
|
142
|
-
if (theme.primaryColor)
|
|
143
|
-
colors.primary = theme.primaryColor;
|
|
144
|
-
colors['on-primary'] = '#ffffff';
|
|
145
|
-
}
|
|
159
|
+
if (theme.primaryColor) colors.primary = theme.primaryColor;
|
|
146
160
|
for (const key of Object.keys(tokenVariables)){
|
|
147
161
|
const variable = tokenVariables[key];
|
|
148
162
|
const value = theme.tokens?.[key];
|
|
@@ -199,6 +213,7 @@ function leafThemeVariables(theme) {
|
|
|
199
213
|
for (const [name, value] of Object.entries(theme.breakpoints ?? {}))if (void 0 !== value) variables[`--leaf-breakpoint-${name}`] = `${value}px`;
|
|
200
214
|
const componentKeys = {
|
|
201
215
|
borderRadius: 'radius',
|
|
216
|
+
borderWidth: 'border-width',
|
|
202
217
|
controlHeight: 'height',
|
|
203
218
|
padding: 'padding',
|
|
204
219
|
gap: 'gap',
|
|
@@ -210,29 +225,37 @@ function leafThemeVariables(theme) {
|
|
|
210
225
|
footerBackground: 'footer-background',
|
|
211
226
|
shadow: 'shadow'
|
|
212
227
|
};
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
228
|
+
const stateKeys = {
|
|
229
|
+
color: 'color',
|
|
230
|
+
background: 'background',
|
|
231
|
+
borderColor: 'border-color',
|
|
232
|
+
shadow: 'shadow'
|
|
233
|
+
};
|
|
234
|
+
for (const [component, tokens] of Object.entries(theme.components ?? {})){
|
|
235
|
+
if (!/^[a-z][a-z\d-]*$/i.test(component)) continue;
|
|
236
|
+
const name = component.replace(/([a-z\d])([A-Z])/g, '$1-$2').toLowerCase();
|
|
237
|
+
for (const [key, value] of Object.entries(tokens))if (void 0 !== value && 'object' != typeof value) {
|
|
238
|
+
const token = componentKeys[key];
|
|
239
|
+
if (token) variables[`--leaf-component-${name}-${token}`] = 'number' == typeof value ? theme_length(value) : value;
|
|
240
|
+
if ('controlHeight' === key) {
|
|
241
|
+
variables[`--leaf-component-${name}-height-sm`] = `max(1px, calc(var(--leaf-component-${name}-height) - 6px))`;
|
|
242
|
+
variables[`--leaf-component-${name}-height-lg`] = `calc(var(--leaf-component-${name}-height) + 6px)`;
|
|
243
|
+
}
|
|
244
|
+
if ('padding' === key) {
|
|
245
|
+
const sides = paddingSides(theme_length(value));
|
|
246
|
+
for (const [index, side] of [
|
|
247
|
+
'top',
|
|
248
|
+
'right',
|
|
249
|
+
'bottom',
|
|
250
|
+
'left'
|
|
251
|
+
].entries())variables[`--leaf-component-${name}-padding-${side}`] = sides[index];
|
|
252
|
+
}
|
|
220
253
|
}
|
|
221
|
-
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
for (const [index, side] of [
|
|
225
|
-
'top',
|
|
226
|
-
'right',
|
|
227
|
-
'bottom',
|
|
228
|
-
'left'
|
|
229
|
-
].entries())variables[`--leaf-component-${name}-padding-${side}`] = sides[index];
|
|
254
|
+
for (const state of componentStates)for (const [key, suffix] of Object.entries(stateKeys)){
|
|
255
|
+
const value = tokens[state]?.[key];
|
|
256
|
+
if (void 0 !== value) variables[`--leaf-component-${name}-${state}-${suffix}`] = value;
|
|
230
257
|
}
|
|
231
258
|
}
|
|
232
|
-
if (void 0 !== theme.primaryColor) {
|
|
233
|
-
variables['--leaf-color-primary'] = theme.primaryColor;
|
|
234
|
-
variables['--leaf-color-on-primary'] = '#ffffff';
|
|
235
|
-
}
|
|
236
259
|
if (void 0 !== theme.borderRadius) {
|
|
237
260
|
variables['--leaf-radius'] = theme_length(theme.borderRadius);
|
|
238
261
|
variables['--leaf-radius-sm'] = 'calc(var(--leaf-radius) * 0.6)';
|
|
@@ -255,8 +278,9 @@ function leafThemeVariables(theme) {
|
|
|
255
278
|
const value = theme.tokens?.[key];
|
|
256
279
|
if (void 0 === value) continue;
|
|
257
280
|
const variable = tokenVariables[key];
|
|
258
|
-
variables[`--leaf-${variable}`] = 'number' != typeof value ? value : 'motionDuration' === key ? `${value}ms` : variable.includes('radius') || variable.includes('height') || variable.includes('font-size') || variable.includes('spacing') ? theme_length(value) : value;
|
|
281
|
+
variables[`--leaf-${variable}`] = 'number' != typeof value ? value : 'motionDuration' === key ? `${value}ms` : variable.includes('radius') || variable.includes('height') || variable.includes('font-size') || 'border-width' === variable || variable.includes('spacing') ? theme_length(value) : value;
|
|
259
282
|
}
|
|
283
|
+
if (theme.tokens?.borderColor !== void 0) variables['--leaf-frame-border-color'] = theme.tokens.borderColor;
|
|
260
284
|
if (void 0 !== theme.motion) {
|
|
261
285
|
variables['--leaf-motion-play-state'] = theme.motion ? 'running' : 'paused';
|
|
262
286
|
variables['--leaf-motion-animation'] = theme.motion ? 'initial' : 'none';
|