@forthtilliath/forth-ui 0.2.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/LICENSE +21 -0
- package/README.md +279 -0
- package/dist/components/accordion/accordion-items.d.ts +3 -0
- package/dist/components/accordion/accordion-items.d.ts.map +1 -0
- package/dist/components/accordion/accordion-items.js +18 -0
- package/dist/components/accordion/accordion-multiple.d.ts +3 -0
- package/dist/components/accordion/accordion-multiple.d.ts.map +1 -0
- package/dist/components/accordion/accordion-multiple.js +8 -0
- package/dist/components/accordion/accordion-single.d.ts +3 -0
- package/dist/components/accordion/accordion-single.d.ts.map +1 -0
- package/dist/components/accordion/accordion-single.js +8 -0
- package/dist/components/accordion/accordion.d.ts +17 -0
- package/dist/components/accordion/accordion.d.ts.map +1 -0
- package/dist/components/accordion/accordion.js +23 -0
- package/dist/components/accordion/index.d.ts +2 -0
- package/dist/components/accordion/index.d.ts.map +1 -0
- package/dist/components/accordion/index.js +1 -0
- package/dist/components/accordion/types.d.ts +100 -0
- package/dist/components/accordion/types.d.ts.map +1 -0
- package/dist/components/accordion/types.js +1 -0
- package/dist/components/accordion/variants.d.ts +25 -0
- package/dist/components/accordion/variants.d.ts.map +1 -0
- package/dist/components/accordion/variants.js +96 -0
- package/dist/components/alert/alert.d.ts +38 -0
- package/dist/components/alert/alert.d.ts.map +1 -0
- package/dist/components/alert/alert.js +32 -0
- package/dist/components/alert/index.d.ts +5 -0
- package/dist/components/alert/index.d.ts.map +1 -0
- package/dist/components/alert/index.js +4 -0
- package/dist/components/alert/variants.d.ts +8 -0
- package/dist/components/alert/variants.d.ts.map +1 -0
- package/dist/components/alert/variants.js +110 -0
- package/dist/components/avatar/avatar-group.d.ts +26 -0
- package/dist/components/avatar/avatar-group.d.ts.map +1 -0
- package/dist/components/avatar/avatar-group.js +29 -0
- package/dist/components/avatar/avatar.d.ts +107 -0
- package/dist/components/avatar/avatar.d.ts.map +1 -0
- package/dist/components/avatar/avatar.js +26 -0
- package/dist/components/avatar/constants.d.ts +13 -0
- package/dist/components/avatar/constants.d.ts.map +1 -0
- package/dist/components/avatar/constants.js +8 -0
- package/dist/components/avatar/index.d.ts +5 -0
- package/dist/components/avatar/index.d.ts.map +1 -0
- package/dist/components/avatar/index.js +2 -0
- package/dist/components/avatar/variants.d.ts +31 -0
- package/dist/components/avatar/variants.d.ts.map +1 -0
- package/dist/components/avatar/variants.js +147 -0
- package/dist/components/badge/badge.d.ts +48 -0
- package/dist/components/badge/badge.d.ts.map +1 -0
- package/dist/components/badge/badge.js +33 -0
- package/dist/components/badge/index.d.ts +4 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/badge/index.js +1 -0
- package/dist/components/badge/variants.d.ts +12 -0
- package/dist/components/badge/variants.d.ts.map +1 -0
- package/dist/components/badge/variants.js +134 -0
- package/dist/components/banner/banner.d.ts +43 -0
- package/dist/components/banner/banner.d.ts.map +1 -0
- package/dist/components/banner/banner.js +44 -0
- package/dist/components/banner/index.d.ts +4 -0
- package/dist/components/banner/index.d.ts.map +1 -0
- package/dist/components/banner/index.js +1 -0
- package/dist/components/banner/variants.d.ts +9 -0
- package/dist/components/banner/variants.d.ts.map +1 -0
- package/dist/components/banner/variants.js +111 -0
- package/dist/components/bento-grid/bento-grid.d.ts +23 -0
- package/dist/components/bento-grid/bento-grid.d.ts.map +1 -0
- package/dist/components/bento-grid/bento-grid.js +30 -0
- package/dist/components/bento-grid/index.d.ts +3 -0
- package/dist/components/bento-grid/index.d.ts.map +1 -0
- package/dist/components/bento-grid/index.js +1 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +29 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.js +28 -0
- package/dist/components/breadcrumb/index.d.ts +3 -0
- package/dist/components/breadcrumb/index.d.ts.map +1 -0
- package/dist/components/breadcrumb/index.js +1 -0
- package/dist/components/button/button-group.d.ts +16 -0
- package/dist/components/button/button-group.d.ts.map +1 -0
- package/dist/components/button/button-group.js +13 -0
- package/dist/components/button/button.d.ts +28 -0
- package/dist/components/button/button.d.ts.map +1 -0
- package/dist/components/button/button.js +20 -0
- package/dist/components/button/index.d.ts +6 -0
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/button/index.js +2 -0
- package/dist/components/button/variants.d.ts +7 -0
- package/dist/components/button/variants.d.ts.map +1 -0
- package/dist/components/button/variants.js +27 -0
- package/dist/components/checkbox/checkbox-group.d.ts +30 -0
- package/dist/components/checkbox/checkbox-group.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox-group.js +32 -0
- package/dist/components/checkbox/index.d.ts +3 -0
- package/dist/components/checkbox/index.d.ts.map +1 -0
- package/dist/components/checkbox/index.js +1 -0
- package/dist/components/chip/chip.d.ts +27 -0
- package/dist/components/chip/chip.d.ts.map +1 -0
- package/dist/components/chip/chip.js +18 -0
- package/dist/components/chip/index.d.ts +3 -0
- package/dist/components/chip/index.d.ts.map +1 -0
- package/dist/components/chip/index.js +1 -0
- package/dist/components/code-block/code-block.d.ts +31 -0
- package/dist/components/code-block/code-block.d.ts.map +1 -0
- package/dist/components/code-block/code-block.js +57 -0
- package/dist/components/code-block/index.d.ts +3 -0
- package/dist/components/code-block/index.d.ts.map +1 -0
- package/dist/components/code-block/index.js +1 -0
- package/dist/components/collapsible/collapsible.d.ts +41 -0
- package/dist/components/collapsible/collapsible.d.ts.map +1 -0
- package/dist/components/collapsible/collapsible.js +50 -0
- package/dist/components/collapsible/index.d.ts +7 -0
- package/dist/components/collapsible/index.d.ts.map +1 -0
- package/dist/components/collapsible/index.js +3 -0
- package/dist/components/color-picker/color-picker.d.ts +24 -0
- package/dist/components/color-picker/color-picker.d.ts.map +1 -0
- package/dist/components/color-picker/color-picker.js +40 -0
- package/dist/components/color-picker/index.d.ts +3 -0
- package/dist/components/color-picker/index.d.ts.map +1 -0
- package/dist/components/color-picker/index.js +1 -0
- package/dist/components/combobox/combobox.d.ts +31 -0
- package/dist/components/combobox/combobox.d.ts.map +1 -0
- package/dist/components/combobox/combobox.js +30 -0
- package/dist/components/combobox/index.d.ts +5 -0
- package/dist/components/combobox/index.d.ts.map +1 -0
- package/dist/components/combobox/index.js +2 -0
- package/dist/components/combobox/multi-select.d.ts +30 -0
- package/dist/components/combobox/multi-select.d.ts.map +1 -0
- package/dist/components/combobox/multi-select.js +53 -0
- package/dist/components/command-palette/command-palette.d.ts +37 -0
- package/dist/components/command-palette/command-palette.d.ts.map +1 -0
- package/dist/components/command-palette/command-palette.js +46 -0
- package/dist/components/command-palette/index.d.ts +3 -0
- package/dist/components/command-palette/index.d.ts.map +1 -0
- package/dist/components/command-palette/index.js +1 -0
- package/dist/components/confirm-dialog/confirm-context.d.ts +15 -0
- package/dist/components/confirm-dialog/confirm-context.d.ts.map +1 -0
- package/dist/components/confirm-dialog/confirm-context.js +2 -0
- package/dist/components/confirm-dialog/confirm-dialog.d.ts +18 -0
- package/dist/components/confirm-dialog/confirm-dialog.d.ts.map +1 -0
- package/dist/components/confirm-dialog/confirm-dialog.js +40 -0
- package/dist/components/confirm-dialog/index.d.ts +4 -0
- package/dist/components/confirm-dialog/index.d.ts.map +1 -0
- package/dist/components/confirm-dialog/index.js +2 -0
- package/dist/components/confirm-dialog/use-confirm.d.ts +4 -0
- package/dist/components/confirm-dialog/use-confirm.d.ts.map +1 -0
- package/dist/components/confirm-dialog/use-confirm.js +10 -0
- package/dist/components/count-animation/count-animation.d.ts +20 -0
- package/dist/components/count-animation/count-animation.d.ts.map +1 -0
- package/dist/components/count-animation/count-animation.js +42 -0
- package/dist/components/count-animation/index.d.ts +3 -0
- package/dist/components/count-animation/index.d.ts.map +1 -0
- package/dist/components/count-animation/index.js +1 -0
- package/dist/components/date-picker/date-picker.d.ts +27 -0
- package/dist/components/date-picker/date-picker.d.ts.map +1 -0
- package/dist/components/date-picker/date-picker.js +37 -0
- package/dist/components/date-picker/index.d.ts +3 -0
- package/dist/components/date-picker/index.d.ts.map +1 -0
- package/dist/components/date-picker/index.js +1 -0
- package/dist/components/description-list/description-list.d.ts +16 -0
- package/dist/components/description-list/description-list.d.ts.map +1 -0
- package/dist/components/description-list/description-list.js +24 -0
- package/dist/components/description-list/index.d.ts +2 -0
- package/dist/components/description-list/index.d.ts.map +1 -0
- package/dist/components/description-list/index.js +1 -0
- package/dist/components/dropdrawer/dropdrawer.d.ts +27 -0
- package/dist/components/dropdrawer/dropdrawer.d.ts.map +1 -0
- package/dist/components/dropdrawer/dropdrawer.js +26 -0
- package/dist/components/dropdrawer/index.d.ts +3 -0
- package/dist/components/dropdrawer/index.d.ts.map +1 -0
- package/dist/components/dropdrawer/index.js +1 -0
- package/dist/components/dropzone/dropzone.d.ts +27 -0
- package/dist/components/dropzone/dropzone.d.ts.map +1 -0
- package/dist/components/dropzone/dropzone.js +83 -0
- package/dist/components/dropzone/index.d.ts +3 -0
- package/dist/components/dropzone/index.d.ts.map +1 -0
- package/dist/components/dropzone/index.js +1 -0
- package/dist/components/field/field.d.ts +41 -0
- package/dist/components/field/field.d.ts.map +1 -0
- package/dist/components/field/field.js +48 -0
- package/dist/components/field/index.d.ts +3 -0
- package/dist/components/field/index.d.ts.map +1 -0
- package/dist/components/field/index.js +1 -0
- package/dist/components/file-list/file-list.d.ts +29 -0
- package/dist/components/file-list/file-list.d.ts.map +1 -0
- package/dist/components/file-list/file-list.js +52 -0
- package/dist/components/file-list/index.d.ts +3 -0
- package/dist/components/file-list/index.d.ts.map +1 -0
- package/dist/components/file-list/index.js +1 -0
- package/dist/components/grid/context.d.ts +12 -0
- package/dist/components/grid/context.d.ts.map +1 -0
- package/dist/components/grid/context.js +5 -0
- package/dist/components/grid/grid-item.d.ts +14 -0
- package/dist/components/grid/grid-item.d.ts.map +1 -0
- package/dist/components/grid/grid-item.js +13 -0
- package/dist/components/grid/grid.d.ts +16 -0
- package/dist/components/grid/grid.d.ts.map +1 -0
- package/dist/components/grid/grid.js +19 -0
- package/dist/components/grid/index.d.ts +3 -0
- package/dist/components/grid/index.d.ts.map +1 -0
- package/dist/components/grid/index.js +2 -0
- package/dist/components/grid/variants.d.ts +16 -0
- package/dist/components/grid/variants.d.ts.map +1 -0
- package/dist/components/grid/variants.js +74 -0
- package/dist/components/image-input/image-input.d.ts +21 -0
- package/dist/components/image-input/image-input.d.ts.map +1 -0
- package/dist/components/image-input/image-input.js +45 -0
- package/dist/components/image-input/index.d.ts +3 -0
- package/dist/components/image-input/index.d.ts.map +1 -0
- package/dist/components/image-input/index.js +1 -0
- package/dist/components/infinite-scroll/index.d.ts +3 -0
- package/dist/components/infinite-scroll/index.d.ts.map +1 -0
- package/dist/components/infinite-scroll/index.js +1 -0
- package/dist/components/infinite-scroll/infinite-scroll.d.ts +20 -0
- package/dist/components/infinite-scroll/infinite-scroll.d.ts.map +1 -0
- package/dist/components/infinite-scroll/infinite-scroll.js +33 -0
- package/dist/components/kbd/index.d.ts +2 -0
- package/dist/components/kbd/index.d.ts.map +1 -0
- package/dist/components/kbd/index.js +1 -0
- package/dist/components/kbd/kbd.d.ts +15 -0
- package/dist/components/kbd/kbd.d.ts.map +1 -0
- package/dist/components/kbd/kbd.js +19 -0
- package/dist/components/link/index.d.ts +7 -0
- package/dist/components/link/index.d.ts.map +1 -0
- package/dist/components/link/index.js +3 -0
- package/dist/components/link/link-preview.d.ts +36 -0
- package/dist/components/link/link-preview.d.ts.map +1 -0
- package/dist/components/link/link-preview.js +27 -0
- package/dist/components/link/link.d.ts +27 -0
- package/dist/components/link/link.d.ts.map +1 -0
- package/dist/components/link/link.js +39 -0
- package/dist/components/link/variants.d.ts +8 -0
- package/dist/components/link/variants.d.ts.map +1 -0
- package/dist/components/link/variants.js +26 -0
- package/dist/components/marquee/index.d.ts +3 -0
- package/dist/components/marquee/index.d.ts.map +1 -0
- package/dist/components/marquee/index.js +1 -0
- package/dist/components/marquee/marquee.d.ts +22 -0
- package/dist/components/marquee/marquee.d.ts.map +1 -0
- package/dist/components/marquee/marquee.js +19 -0
- package/dist/components/multi-step-loader/index.d.ts +3 -0
- package/dist/components/multi-step-loader/index.d.ts.map +1 -0
- package/dist/components/multi-step-loader/index.js +1 -0
- package/dist/components/multi-step-loader/multi-step-loader.d.ts +41 -0
- package/dist/components/multi-step-loader/multi-step-loader.d.ts.map +1 -0
- package/dist/components/multi-step-loader/multi-step-loader.js +53 -0
- package/dist/components/navbar/index.d.ts +5 -0
- package/dist/components/navbar/index.d.ts.map +1 -0
- package/dist/components/navbar/index.js +2 -0
- package/dist/components/navbar/navbar-mobile-menu.d.ts +24 -0
- package/dist/components/navbar/navbar-mobile-menu.d.ts.map +1 -0
- package/dist/components/navbar/navbar-mobile-menu.js +18 -0
- package/dist/components/navbar/navbar.d.ts +24 -0
- package/dist/components/navbar/navbar.d.ts.map +1 -0
- package/dist/components/navbar/navbar.js +33 -0
- package/dist/components/notification-center/index.d.ts +3 -0
- package/dist/components/notification-center/index.d.ts.map +1 -0
- package/dist/components/notification-center/index.js +1 -0
- package/dist/components/notification-center/notification-center.d.ts +28 -0
- package/dist/components/notification-center/notification-center.d.ts.map +1 -0
- package/dist/components/notification-center/notification-center.js +24 -0
- package/dist/components/number-input/index.d.ts +3 -0
- package/dist/components/number-input/index.d.ts.map +1 -0
- package/dist/components/number-input/index.js +1 -0
- package/dist/components/number-input/number-input.d.ts +22 -0
- package/dist/components/number-input/number-input.d.ts.map +1 -0
- package/dist/components/number-input/number-input.js +37 -0
- package/dist/components/pagination/index.d.ts +5 -0
- package/dist/components/pagination/index.d.ts.map +1 -0
- package/dist/components/pagination/index.js +2 -0
- package/dist/components/pagination/pagination-range.d.ts +17 -0
- package/dist/components/pagination/pagination-range.d.ts.map +1 -0
- package/dist/components/pagination/pagination-range.js +30 -0
- package/dist/components/pagination/pagination.d.ts +26 -0
- package/dist/components/pagination/pagination.d.ts.map +1 -0
- package/dist/components/pagination/pagination.js +48 -0
- package/dist/components/password-input/index.d.ts +5 -0
- package/dist/components/password-input/index.d.ts.map +1 -0
- package/dist/components/password-input/index.js +2 -0
- package/dist/components/password-input/password-input.d.ts +15 -0
- package/dist/components/password-input/password-input.d.ts.map +1 -0
- package/dist/components/password-input/password-input.js +23 -0
- package/dist/components/password-input/password-strength-meter.d.ts +18 -0
- package/dist/components/password-input/password-strength-meter.d.ts.map +1 -0
- package/dist/components/password-input/password-strength-meter.js +40 -0
- package/dist/components/progress/index.d.ts +4 -0
- package/dist/components/progress/index.d.ts.map +1 -0
- package/dist/components/progress/index.js +1 -0
- package/dist/components/progress/progress.d.ts +25 -0
- package/dist/components/progress/progress.d.ts.map +1 -0
- package/dist/components/progress/progress.js +23 -0
- package/dist/components/progress/variants.d.ts +7 -0
- package/dist/components/progress/variants.d.ts.map +1 -0
- package/dist/components/progress/variants.js +25 -0
- package/dist/components/qr-code/index.d.ts +3 -0
- package/dist/components/qr-code/index.d.ts.map +1 -0
- package/dist/components/qr-code/index.js +1 -0
- package/dist/components/qr-code/qr-code.d.ts +28 -0
- package/dist/components/qr-code/qr-code.d.ts.map +1 -0
- package/dist/components/qr-code/qr-code.js +27 -0
- package/dist/components/radio/index.d.ts +3 -0
- package/dist/components/radio/index.d.ts.map +1 -0
- package/dist/components/radio/index.js +1 -0
- package/dist/components/radio/radio-card.d.ts +25 -0
- package/dist/components/radio/radio-card.d.ts.map +1 -0
- package/dist/components/radio/radio-card.js +24 -0
- package/dist/components/rating/index.d.ts +3 -0
- package/dist/components/rating/index.d.ts.map +1 -0
- package/dist/components/rating/index.js +1 -0
- package/dist/components/rating/rating.d.ts +23 -0
- package/dist/components/rating/rating.d.ts.map +1 -0
- package/dist/components/rating/rating.js +41 -0
- package/dist/components/relative-time/index.d.ts +3 -0
- package/dist/components/relative-time/index.d.ts.map +1 -0
- package/dist/components/relative-time/index.js +1 -0
- package/dist/components/relative-time/relative-time.d.ts +32 -0
- package/dist/components/relative-time/relative-time.d.ts.map +1 -0
- package/dist/components/relative-time/relative-time.js +62 -0
- package/dist/components/reparent/index.d.ts +3 -0
- package/dist/components/reparent/index.d.ts.map +1 -0
- package/dist/components/reparent/index.js +1 -0
- package/dist/components/reparent/reparent.d.ts +31 -0
- package/dist/components/reparent/reparent.d.ts.map +1 -0
- package/dist/components/reparent/reparent.js +51 -0
- package/dist/components/repeat/index.d.ts +2 -0
- package/dist/components/repeat/index.d.ts.map +1 -0
- package/dist/components/repeat/index.js +1 -0
- package/dist/components/repeat/repeat.d.ts +27 -0
- package/dist/components/repeat/repeat.d.ts.map +1 -0
- package/dist/components/repeat/repeat.js +15 -0
- package/dist/components/scroll-progress/index.d.ts +3 -0
- package/dist/components/scroll-progress/index.d.ts.map +1 -0
- package/dist/components/scroll-progress/index.js +1 -0
- package/dist/components/scroll-progress/scroll-progress.d.ts +19 -0
- package/dist/components/scroll-progress/scroll-progress.d.ts.map +1 -0
- package/dist/components/scroll-progress/scroll-progress.js +36 -0
- package/dist/components/scroll-shadow/index.d.ts +3 -0
- package/dist/components/scroll-shadow/index.d.ts.map +1 -0
- package/dist/components/scroll-shadow/index.js +1 -0
- package/dist/components/scroll-shadow/scroll-shadow.d.ts +20 -0
- package/dist/components/scroll-shadow/scroll-shadow.d.ts.map +1 -0
- package/dist/components/scroll-shadow/scroll-shadow.js +44 -0
- package/dist/components/scrollspy/index.d.ts +3 -0
- package/dist/components/scrollspy/index.d.ts.map +1 -0
- package/dist/components/scrollspy/index.js +1 -0
- package/dist/components/scrollspy/use-scrollspy.d.ts +30 -0
- package/dist/components/scrollspy/use-scrollspy.d.ts.map +1 -0
- package/dist/components/scrollspy/use-scrollspy.js +35 -0
- package/dist/components/separator/index.d.ts +3 -0
- package/dist/components/separator/index.d.ts.map +1 -0
- package/dist/components/separator/index.js +1 -0
- package/dist/components/separator/separator.d.ts +22 -0
- package/dist/components/separator/separator.d.ts.map +1 -0
- package/dist/components/separator/separator.js +21 -0
- package/dist/components/snippet/index.d.ts +3 -0
- package/dist/components/snippet/index.d.ts.map +1 -0
- package/dist/components/snippet/index.js +1 -0
- package/dist/components/snippet/snippet.d.ts +25 -0
- package/dist/components/snippet/snippet.d.ts.map +1 -0
- package/dist/components/snippet/snippet.js +33 -0
- package/dist/components/sortable/index.d.ts +3 -0
- package/dist/components/sortable/index.d.ts.map +1 -0
- package/dist/components/sortable/index.js +1 -0
- package/dist/components/sortable/sortable.d.ts +22 -0
- package/dist/components/sortable/sortable.d.ts.map +1 -0
- package/dist/components/sortable/sortable.js +47 -0
- package/dist/components/spacer/index.d.ts +3 -0
- package/dist/components/spacer/index.d.ts.map +1 -0
- package/dist/components/spacer/index.js +1 -0
- package/dist/components/spacer/spacer.d.ts +24 -0
- package/dist/components/spacer/spacer.d.ts.map +1 -0
- package/dist/components/spacer/spacer.js +23 -0
- package/dist/components/spinner/index.d.ts +4 -0
- package/dist/components/spinner/index.d.ts.map +1 -0
- package/dist/components/spinner/index.js +1 -0
- package/dist/components/spinner/spinner.d.ts +22 -0
- package/dist/components/spinner/spinner.d.ts.map +1 -0
- package/dist/components/spinner/spinner.js +19 -0
- package/dist/components/spinner/variants.d.ts +6 -0
- package/dist/components/spinner/variants.d.ts.map +1 -0
- package/dist/components/spinner/variants.js +13 -0
- package/dist/components/stepper/index.d.ts +3 -0
- package/dist/components/stepper/index.d.ts.map +1 -0
- package/dist/components/stepper/index.js +1 -0
- package/dist/components/stepper/stepper.d.ts +26 -0
- package/dist/components/stepper/stepper.d.ts.map +1 -0
- package/dist/components/stepper/stepper.js +27 -0
- package/dist/components/submit-button/index.d.ts +3 -0
- package/dist/components/submit-button/index.d.ts.map +1 -0
- package/dist/components/submit-button/index.js +1 -0
- package/dist/components/submit-button/submit-button.d.ts +19 -0
- package/dist/components/submit-button/submit-button.d.ts.map +1 -0
- package/dist/components/submit-button/submit-button.js +23 -0
- package/dist/components/tags-input/index.d.ts +3 -0
- package/dist/components/tags-input/index.d.ts.map +1 -0
- package/dist/components/tags-input/index.js +1 -0
- package/dist/components/tags-input/tags-input.d.ts +26 -0
- package/dist/components/tags-input/tags-input.d.ts.map +1 -0
- package/dist/components/tags-input/tags-input.js +61 -0
- package/dist/components/timeline/index.d.ts +3 -0
- package/dist/components/timeline/index.d.ts.map +1 -0
- package/dist/components/timeline/index.js +1 -0
- package/dist/components/timeline/timeline.d.ts +24 -0
- package/dist/components/timeline/timeline.d.ts.map +1 -0
- package/dist/components/timeline/timeline.js +21 -0
- package/dist/components/tree/index.d.ts +3 -0
- package/dist/components/tree/index.d.ts.map +1 -0
- package/dist/components/tree/index.js +1 -0
- package/dist/components/tree/tree.d.ts +26 -0
- package/dist/components/tree/tree.d.ts.map +1 -0
- package/dist/components/tree/tree.js +32 -0
- package/dist/globals.css +3004 -0
- package/package.json +63 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { cva } from "class-variance-authority";
|
|
2
|
+
export const accordionRootVariants = cva("max-w-lg my-4 w-full text-foreground", {
|
|
3
|
+
variants: {
|
|
4
|
+
variant: {
|
|
5
|
+
default: "space-y-2",
|
|
6
|
+
outline: "space-y-2",
|
|
7
|
+
box: "",
|
|
8
|
+
contained: "space-y-2",
|
|
9
|
+
"box-contained": "",
|
|
10
|
+
tabs: "space-y-2",
|
|
11
|
+
"highlight-active": "space-y-2",
|
|
12
|
+
},
|
|
13
|
+
size: {
|
|
14
|
+
sm: "text-sm",
|
|
15
|
+
default: "text-[15px]",
|
|
16
|
+
lg: "text-lg",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
variant: "default",
|
|
21
|
+
size: "default",
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
export const accordionItemVariants = cva("", {
|
|
25
|
+
variants: {
|
|
26
|
+
variant: {
|
|
27
|
+
default: "",
|
|
28
|
+
outline: "px-4 border rounded-md last:border-b",
|
|
29
|
+
box: "px-4 border border-b-0 last:border-b first:rounded-t-md last:rounded-b-md",
|
|
30
|
+
contained: "px-4 border-none rounded-md bg-secondary text-secondary-foreground",
|
|
31
|
+
"box-contained": "px-4 last:border-none first:rounded-t-md last:rounded-b-md bg-muted",
|
|
32
|
+
tabs: "px-4 border-none rounded-md data-[state=open]:bg-secondary",
|
|
33
|
+
"highlight-active": "px-4 data-[state=open]:border-b-2 data-[state=open]:border-indigo-600 dark:data-[state=open]:border-indigo-500",
|
|
34
|
+
},
|
|
35
|
+
size: {
|
|
36
|
+
sm: "px-2",
|
|
37
|
+
default: "",
|
|
38
|
+
lg: "px-6",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
defaultVariants: {
|
|
42
|
+
variant: "default",
|
|
43
|
+
size: "default",
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
export const accordionTriggerVariants = cva("hover:no-underline group items-center", {
|
|
47
|
+
variants: {
|
|
48
|
+
variant: {
|
|
49
|
+
default: "",
|
|
50
|
+
outline: "",
|
|
51
|
+
box: "",
|
|
52
|
+
contained: "",
|
|
53
|
+
"box-contained": "",
|
|
54
|
+
tabs: "data-[state=closed]:py-2",
|
|
55
|
+
"highlight-active": "data-[state=open]:text-indigo-600 dark:data-[state=open]:text-indigo-500",
|
|
56
|
+
},
|
|
57
|
+
size: {
|
|
58
|
+
sm: "py-3 text-sm [&_[data-slot=subtitle]]:text-xs",
|
|
59
|
+
default: "py-4 text-[15px] [&_[data-slot=subtitle]]:text-sm",
|
|
60
|
+
lg: "py-5 text-lg [&_[data-slot=subtitle]]:text-base",
|
|
61
|
+
},
|
|
62
|
+
disabled: {
|
|
63
|
+
false: "",
|
|
64
|
+
true: "opacity-50",
|
|
65
|
+
},
|
|
66
|
+
chevronAlignment: {
|
|
67
|
+
right: "",
|
|
68
|
+
left: "flex-row-reverse",
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
defaultVariants: {
|
|
72
|
+
variant: "default",
|
|
73
|
+
size: "default",
|
|
74
|
+
disabled: false,
|
|
75
|
+
chevronAlignment: "right",
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
export const accordionContentVariants = cva("", {
|
|
79
|
+
variants: {
|
|
80
|
+
variant: {
|
|
81
|
+
default: "",
|
|
82
|
+
outline: "",
|
|
83
|
+
box: "",
|
|
84
|
+
contained: "",
|
|
85
|
+
"box-contained": "",
|
|
86
|
+
tabs: "",
|
|
87
|
+
"highlight-active": "",
|
|
88
|
+
},
|
|
89
|
+
size: {
|
|
90
|
+
sm: "pb-3 text-sm",
|
|
91
|
+
default: "pb-4 text-[15px]",
|
|
92
|
+
lg: "pb-5 text-lg",
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
defaultVariants: { variant: "default", size: "default" },
|
|
96
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { AlertVariants } from "./variants";
|
|
3
|
+
export type AlertProps = React.ComponentProps<"div"> & AlertVariants & {
|
|
4
|
+
/**
|
|
5
|
+
* Shows a close button. Uncontrolled by default (the alert hides itself
|
|
6
|
+
* once dismissed) — pass `open`/`onOpenChange` to control it instead.
|
|
7
|
+
*/
|
|
8
|
+
dismissible?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Controlled visibility. Omit for uncontrolled (self-managed via
|
|
11
|
+
* `dismissible`'s internal state).
|
|
12
|
+
*/
|
|
13
|
+
open?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Called when the alert is dismissed, whether controlled or not.
|
|
16
|
+
*/
|
|
17
|
+
onOpenChange?: (open: boolean) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Extra action content (e.g. a button) rendered top-right, before the
|
|
20
|
+
* close button when `dismissible` is also set.
|
|
21
|
+
*/
|
|
22
|
+
action?: React.ReactNode;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Displays a callout for user attention.
|
|
26
|
+
*
|
|
27
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
28
|
+
* @see https://ui.shadcn.com/docs/components/alert
|
|
29
|
+
* @see https://ktui.io/docs/alert
|
|
30
|
+
* @see https://ktui.io/docs/dismiss
|
|
31
|
+
* @see https://www.shadcnui-blocks.com/components/alert
|
|
32
|
+
*
|
|
33
|
+
* @version 0.1.0
|
|
34
|
+
* @author Forth
|
|
35
|
+
* @copyright 2026 Forth
|
|
36
|
+
*/
|
|
37
|
+
export declare function Alert({ className, variant, look, size, dismissible, open, onOpenChange, action, children, ...props }: AlertProps): React.JSX.Element | null;
|
|
38
|
+
//# sourceMappingURL=alert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/components/alert/alert.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAClD,aAAa,GAAG;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B,CAAC;AAEJ;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,EACpB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,WAAmB,EACnB,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,UAAU,4BA8CZ"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { X } from "lucide-react";
|
|
5
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
6
|
+
import { alertVariants } from "./variants";
|
|
7
|
+
/**
|
|
8
|
+
* Displays a callout for user attention.
|
|
9
|
+
*
|
|
10
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
11
|
+
* @see https://ui.shadcn.com/docs/components/alert
|
|
12
|
+
* @see https://ktui.io/docs/alert
|
|
13
|
+
* @see https://ktui.io/docs/dismiss
|
|
14
|
+
* @see https://www.shadcnui-blocks.com/components/alert
|
|
15
|
+
*
|
|
16
|
+
* @version 0.1.0
|
|
17
|
+
* @author Forth
|
|
18
|
+
* @copyright 2026 Forth
|
|
19
|
+
*/
|
|
20
|
+
export function Alert({ className, variant, look, size, dismissible = false, open, onOpenChange, action, children, ...props }) {
|
|
21
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React.useState(true);
|
|
22
|
+
const isOpen = open ?? uncontrolledOpen;
|
|
23
|
+
const hasActions = Boolean(action) || dismissible;
|
|
24
|
+
function handleDismiss() {
|
|
25
|
+
setUncontrolledOpen(false);
|
|
26
|
+
onOpenChange?.(false);
|
|
27
|
+
}
|
|
28
|
+
if (!isOpen) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return (_jsxs("div", { "data-slot": "alert", role: "alert", className: cn(alertVariants({ variant, look, size }), hasActions && "pr-10", className), ...props, children: [children, hasActions && (_jsxs("div", { "data-slot": "alert-actions", className: "absolute top-2.5 right-2.5 flex items-center gap-1.5", children: [action, dismissible && (_jsx("button", { type: "button", onClick: handleDismiss, "aria-label": "Dismiss", className: "rounded-sm opacity-70 transition-opacity outline-none hover:opacity-100 focus-visible:ring-2 focus-visible:ring-current", children: _jsx(X, { className: "size-3.5" }) }))] }))] }));
|
|
32
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/alert/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,OAAO,EACL,gBAAgB,EAChB,UAAU,GACX,MAAM,2CAA2C,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { VariantProps } from "class-variance-authority";
|
|
2
|
+
export declare const alertVariants: (props?: ({
|
|
3
|
+
variant?: "default" | "primary" | "success" | "warning" | "info" | "destructive" | null | undefined;
|
|
4
|
+
look?: "outline" | "solid" | "soft" | null | undefined;
|
|
5
|
+
size?: "default" | "sm" | "lg" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export type AlertVariants = VariantProps<typeof alertVariants>;
|
|
8
|
+
//# sourceMappingURL=variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/components/alert/variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAK7D,eAAO,MAAM,aAAa;;;;8EAsHzB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { cva } from "class-variance-authority";
|
|
2
|
+
// Tailwind's scanner needs literal class strings in source — no
|
|
3
|
+
// runtime-templated `bg-${color}-600` here, it wouldn't be picked up.
|
|
4
|
+
export const alertVariants = cva("relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm transition-colors has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", {
|
|
5
|
+
variants: {
|
|
6
|
+
variant: {
|
|
7
|
+
default: "bg-card text-card-foreground",
|
|
8
|
+
primary: "",
|
|
9
|
+
success: "",
|
|
10
|
+
warning: "",
|
|
11
|
+
info: "",
|
|
12
|
+
destructive: "",
|
|
13
|
+
},
|
|
14
|
+
look: {
|
|
15
|
+
solid: "",
|
|
16
|
+
soft: "",
|
|
17
|
+
outline: "bg-transparent",
|
|
18
|
+
},
|
|
19
|
+
size: {
|
|
20
|
+
sm: "gap-x-2 px-3 py-2 text-xs [&>svg]:size-3.5",
|
|
21
|
+
default: "",
|
|
22
|
+
lg: "gap-x-4 px-5 py-4 text-base [&>svg]:size-5",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
defaultVariants: {
|
|
26
|
+
variant: "default",
|
|
27
|
+
look: "soft",
|
|
28
|
+
size: "default",
|
|
29
|
+
},
|
|
30
|
+
compoundVariants: [
|
|
31
|
+
// default (neutral) ignores `look` — none of the reference sources
|
|
32
|
+
// show a "solid neutral" or "outline neutral" alert, only colored
|
|
33
|
+
// ones vary by look.
|
|
34
|
+
{
|
|
35
|
+
variant: "primary",
|
|
36
|
+
look: "solid",
|
|
37
|
+
className: "bg-primary text-primary-foreground border-transparent",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
variant: "primary",
|
|
41
|
+
look: "soft",
|
|
42
|
+
className: "bg-primary/10 text-primary border-primary/20 [&>svg]:text-primary",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
variant: "primary",
|
|
46
|
+
look: "outline",
|
|
47
|
+
className: "text-primary border-primary/50 [&>svg]:text-primary",
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
variant: "success",
|
|
51
|
+
look: "solid",
|
|
52
|
+
className: "bg-green-600 text-white border-transparent",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
variant: "success",
|
|
56
|
+
look: "soft",
|
|
57
|
+
className: "bg-green-50 text-green-700 border-green-200 [&>svg]:text-green-600 dark:bg-green-950 dark:text-green-300 dark:border-green-900 dark:[&>svg]:text-green-400",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
variant: "success",
|
|
61
|
+
look: "outline",
|
|
62
|
+
className: "text-green-700 border-green-300 [&>svg]:text-green-600 dark:text-green-300 dark:border-green-800 dark:[&>svg]:text-green-400",
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
variant: "warning",
|
|
66
|
+
look: "solid",
|
|
67
|
+
className: "bg-amber-500 text-white border-transparent",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
variant: "warning",
|
|
71
|
+
look: "soft",
|
|
72
|
+
className: "bg-amber-50 text-amber-700 border-amber-200 [&>svg]:text-amber-600 dark:bg-amber-950 dark:text-amber-300 dark:border-amber-900 dark:[&>svg]:text-amber-400",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
variant: "warning",
|
|
76
|
+
look: "outline",
|
|
77
|
+
className: "text-amber-700 border-amber-300 [&>svg]:text-amber-600 dark:text-amber-300 dark:border-amber-800 dark:[&>svg]:text-amber-400",
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
variant: "info",
|
|
81
|
+
look: "solid",
|
|
82
|
+
className: "bg-sky-600 text-white border-transparent",
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
variant: "info",
|
|
86
|
+
look: "soft",
|
|
87
|
+
className: "bg-sky-50 text-sky-700 border-sky-200 [&>svg]:text-sky-600 dark:bg-sky-950 dark:text-sky-300 dark:border-sky-900 dark:[&>svg]:text-sky-400",
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
variant: "info",
|
|
91
|
+
look: "outline",
|
|
92
|
+
className: "text-sky-700 border-sky-300 [&>svg]:text-sky-600 dark:text-sky-300 dark:border-sky-800 dark:[&>svg]:text-sky-400",
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
variant: "destructive",
|
|
96
|
+
look: "solid",
|
|
97
|
+
className: "bg-destructive text-white border-transparent",
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
variant: "destructive",
|
|
101
|
+
look: "soft",
|
|
102
|
+
className: "bg-destructive/10 text-destructive border-destructive/20 [&>svg]:text-destructive",
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
variant: "destructive",
|
|
106
|
+
look: "outline",
|
|
107
|
+
className: "text-destructive border-destructive/50 [&>svg]:text-destructive",
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { JSX } from "react";
|
|
2
|
+
import type { AvatarProps } from "./avatar";
|
|
3
|
+
export type AvatarGroupProps = React.ComponentProps<"div"> & {
|
|
4
|
+
avatars: AvatarProps[];
|
|
5
|
+
/**
|
|
6
|
+
* Maximum number of avatars to display before collapsing the rest into a
|
|
7
|
+
* "+N" indicator, matching the `avatars` array's order.
|
|
8
|
+
*/
|
|
9
|
+
max?: number;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* A component to group multiple avatars together.
|
|
13
|
+
*
|
|
14
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
15
|
+
* @see https://ui.shadcn.com/docs/components/avatar
|
|
16
|
+
* @see https://www.kibo-ui.com/components/avatar-stack
|
|
17
|
+
* @see https://www.shadcnui-blocks.com/components/avatar
|
|
18
|
+
*
|
|
19
|
+
* @param {AvatarGroupProps} props The props for the component.
|
|
20
|
+
* @param {AvatarProps[]} props.avatars The avatars to be grouped together.
|
|
21
|
+
* @param {number} [props.max] Collapse avatars beyond this count into a "+N" bubble.
|
|
22
|
+
* @param {React.ComponentProps<'div'>} props The props for the outer div element.
|
|
23
|
+
* @returns {JSX.Element} The component.
|
|
24
|
+
*/
|
|
25
|
+
export declare function AvatarGroup({ className, avatars, max, ...props }: AvatarGroupProps): JSX.Element;
|
|
26
|
+
//# sourceMappingURL=avatar-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-group.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/avatar-group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAIjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC3D,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAIF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,OAAO,EACP,GAAG,EACH,GAAG,KAAK,EACT,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CA6BhC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
3
|
+
import { Avatar } from "./avatar";
|
|
4
|
+
const RING_CLASS = "ring-2 ring-background hover:z-10";
|
|
5
|
+
/**
|
|
6
|
+
* A component to group multiple avatars together.
|
|
7
|
+
*
|
|
8
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
9
|
+
* @see https://ui.shadcn.com/docs/components/avatar
|
|
10
|
+
* @see https://www.kibo-ui.com/components/avatar-stack
|
|
11
|
+
* @see https://www.shadcnui-blocks.com/components/avatar
|
|
12
|
+
*
|
|
13
|
+
* @param {AvatarGroupProps} props The props for the component.
|
|
14
|
+
* @param {AvatarProps[]} props.avatars The avatars to be grouped together.
|
|
15
|
+
* @param {number} [props.max] Collapse avatars beyond this count into a "+N" bubble.
|
|
16
|
+
* @param {React.ComponentProps<'div'>} props The props for the outer div element.
|
|
17
|
+
* @returns {JSX.Element} The component.
|
|
18
|
+
*/
|
|
19
|
+
export function AvatarGroup({ className, avatars, max, ...props }) {
|
|
20
|
+
const visibleAvatars = max ? avatars.slice(0, max) : avatars;
|
|
21
|
+
const overflowCount = max ? Math.max(avatars.length - max, 0) : 0;
|
|
22
|
+
return (_jsxs("div", { className: cn("flex -space-x-2", className), ...props, children: [visibleAvatars.map((avatar, index) => (_jsx(Avatar, { ...avatar, className: {
|
|
23
|
+
...avatar.className,
|
|
24
|
+
root: cn(RING_CLASS, avatar.className?.root),
|
|
25
|
+
} }, `avatar-${index.toString()}`))), overflowCount > 0 && (_jsx(Avatar, { fallback: `+${overflowCount.toString()}`, size: visibleAvatars.at(-1)?.size, shape: visibleAvatars.at(-1)?.shape, className: {
|
|
26
|
+
root: cn(RING_CLASS),
|
|
27
|
+
fallback: "bg-muted text-muted-foreground",
|
|
28
|
+
} }))] }));
|
|
29
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
import { Avatar as AvatarPrimitive } from "@forthtilliath/shadcn-ui/components/avatar";
|
|
3
|
+
import type { Shape, Size } from "./constants";
|
|
4
|
+
import type { BadgeVariants, FallbackVariants, StatusVariants } from "./variants";
|
|
5
|
+
export type AvatarProps = Omit<React.ComponentProps<typeof AvatarPrimitive>, "className" | "size"> & {
|
|
6
|
+
/**
|
|
7
|
+
* The source URL of the image.
|
|
8
|
+
*/
|
|
9
|
+
src?: string;
|
|
10
|
+
/**
|
|
11
|
+
* The alt text for the image.
|
|
12
|
+
*/
|
|
13
|
+
alt?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The fallback text for the image (3 letters max if possible).
|
|
16
|
+
*/
|
|
17
|
+
fallback: string;
|
|
18
|
+
/**
|
|
19
|
+
* The variant of the fallback box.
|
|
20
|
+
*
|
|
21
|
+
* You can also use ``className.fallback`` to change the color of the fallback box.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* <Avatar fallback="CN" fallbackVariant="emerald" />
|
|
26
|
+
* <Avatar fallback="CN" className={{ fallback: "bg-emerald-500" }} />
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
fallbackVariant?: FallbackVariants["fallbackVariant"];
|
|
30
|
+
/**
|
|
31
|
+
* The size of the avatar.
|
|
32
|
+
*/
|
|
33
|
+
size?: Size;
|
|
34
|
+
/**
|
|
35
|
+
* The shape of the avatar.
|
|
36
|
+
*/
|
|
37
|
+
shape?: Shape;
|
|
38
|
+
/**
|
|
39
|
+
* Use the `ring` prop to add a ring to the avatar.
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
42
|
+
ring?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* The status of the user.
|
|
45
|
+
*/
|
|
46
|
+
status?: StatusVariants["status"];
|
|
47
|
+
/**
|
|
48
|
+
* Position of the status indicator.
|
|
49
|
+
*/
|
|
50
|
+
position?: StatusVariants["position"];
|
|
51
|
+
/**
|
|
52
|
+
* Arbitrary content (notification count, icon) shown in a badge overlay.
|
|
53
|
+
*
|
|
54
|
+
* Distinct from `status`: `status` is a plain color dot for
|
|
55
|
+
* online/offline/away/busy, `badge` holds real content and its own color
|
|
56
|
+
* variant. Both can be shown at once, since they default to opposite
|
|
57
|
+
* corners (`status` bottom-right, `badge` top-right) and accept
|
|
58
|
+
* independent `position`/`badgePosition` overrides.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```tsx
|
|
62
|
+
* <Avatar fallback="CN" badge={5} />
|
|
63
|
+
* <Avatar fallback="CN" badge={<Check className="size-3" />} badgeVariant="default" />
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
badge?: React.ReactNode;
|
|
67
|
+
/**
|
|
68
|
+
* The color variant of the `badge`.
|
|
69
|
+
*/
|
|
70
|
+
badgeVariant?: BadgeVariants["badgeVariant"];
|
|
71
|
+
/**
|
|
72
|
+
* Position of the `badge`.
|
|
73
|
+
* @default "top-right"
|
|
74
|
+
*/
|
|
75
|
+
badgePosition?: BadgeVariants["position"];
|
|
76
|
+
/**
|
|
77
|
+
* Render a tooltip for the avatar.
|
|
78
|
+
*/
|
|
79
|
+
renderTooltip?: () => React.ReactNode;
|
|
80
|
+
/**
|
|
81
|
+
* Custom classes for each part of the component.
|
|
82
|
+
*
|
|
83
|
+
* - `root` is the root element of the component.
|
|
84
|
+
* - `image` is the image element.
|
|
85
|
+
* - `fallback` is the fallback element.
|
|
86
|
+
* - `status` is the status element.
|
|
87
|
+
* - `badge` is the badge element.
|
|
88
|
+
* - `tooltipTrigger` is the tooltip trigger element.
|
|
89
|
+
* - `tooltipContent` is the tooltip content element.
|
|
90
|
+
*/
|
|
91
|
+
className?: Partial<Record<"root" | "image" | "fallback" | "status" | "badge" | "tooltipTrigger" | "tooltipContent", string>>;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* An image element with a fallback for representing the user.
|
|
95
|
+
*
|
|
96
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
97
|
+
* @see https://ui.shadcn.com/docs/components/avatar
|
|
98
|
+
* @see https://bundui.io/components/avatar
|
|
99
|
+
* @see https://www.shadcnui-blocks.com/components/avatar
|
|
100
|
+
* @see https://ktui.io/docs/avatar
|
|
101
|
+
*
|
|
102
|
+
* @version 0.1.0
|
|
103
|
+
* @author Forth
|
|
104
|
+
* @copyright 2025 Forth
|
|
105
|
+
*/
|
|
106
|
+
export declare function Avatar({ src, alt, fallback, fallbackVariant, shape, size, ring, status, position, badge, badgeVariant, badgePosition, className, renderTooltip, ...props }: AvatarProps): React.JSX.Element;
|
|
107
|
+
//# sourceMappingURL=avatar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EACL,MAAM,IAAI,eAAe,EAG1B,MAAM,4CAA4C,CAAC;AAQpD,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,cAAc,EACf,MAAM,YAAY,CAAC;AASpB,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,EAC5C,WAAW,GAAG,MAAM,CACrB,GAAG;IACF;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACtD;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACtC;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7C;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1C;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IAEtC;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,OAAO,CACjB,MAAM,CACF,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,OAAO,GACP,gBAAgB,GAChB,gBAAgB,EAClB,MAAM,CACP,CACF,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,EACrB,GAAG,EACH,GAAG,EACH,QAAQ,EACR,eAAe,EACf,KAAK,EACL,IAAI,EACJ,IAAY,EACZ,MAAM,EACN,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,aAAsC,EACtC,SAAS,EACT,aAAa,EACb,GAAG,KAAK,EACT,EAAE,WAAW,qBAgEb"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Avatar as AvatarPrimitive, AvatarFallback, AvatarImage, } from "@forthtilliath/shadcn-ui/components/avatar";
|
|
3
|
+
import { Tooltip, TooltipContent, TooltipTrigger, } from "@forthtilliath/shadcn-ui/components/tooltip";
|
|
4
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
5
|
+
import { DEFAULT_BADGE_POSITION, STATUS_LABEL } from "./constants";
|
|
6
|
+
import { avatarVariants, badgeVariants, fallbackVariants, statusVariants, tooltipTriggerVariants, } from "./variants";
|
|
7
|
+
/**
|
|
8
|
+
* An image element with a fallback for representing the user.
|
|
9
|
+
*
|
|
10
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
11
|
+
* @see https://ui.shadcn.com/docs/components/avatar
|
|
12
|
+
* @see https://bundui.io/components/avatar
|
|
13
|
+
* @see https://www.shadcnui-blocks.com/components/avatar
|
|
14
|
+
* @see https://ktui.io/docs/avatar
|
|
15
|
+
*
|
|
16
|
+
* @version 0.1.0
|
|
17
|
+
* @author Forth
|
|
18
|
+
* @copyright 2025 Forth
|
|
19
|
+
*/
|
|
20
|
+
export function Avatar({ src, alt, fallback, fallbackVariant, shape, size, ring = false, status, position, badge, badgeVariant, badgePosition = DEFAULT_BADGE_POSITION, className, renderTooltip, ...props }) {
|
|
21
|
+
const avatar = (_jsxs("div", { className: "relative", children: [_jsxs(AvatarPrimitive, { className: cn("block", avatarVariants({ shape, ring, size }), className?.root), ...props, children: [_jsx(AvatarImage, { src: src, alt: alt, className: className?.image }), _jsx(AvatarFallback, { className: cn(fallbackVariants({ fallbackVariant, shape }), className?.fallback), children: fallback })] }), status && (_jsx("div", { className: cn(statusVariants({ status, position }), className?.status), children: _jsx("span", { className: "sr-only", children: STATUS_LABEL[status] }) })), badge !== undefined && (_jsx("div", { className: cn(badgeVariants({ badgeVariant, position: badgePosition }), className?.badge), children: badge }))] }));
|
|
22
|
+
if (typeof renderTooltip === "function") {
|
|
23
|
+
return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { className: cn(tooltipTriggerVariants({ shape }), className?.tooltipTrigger), asChild: true, children: avatar }), _jsx(TooltipContent, { className: cn(className?.tooltipContent), children: renderTooltip() })] }));
|
|
24
|
+
}
|
|
25
|
+
return avatar;
|
|
26
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const STATUS_LABEL: Readonly<{
|
|
2
|
+
online: "Online";
|
|
3
|
+
offline: "Offline";
|
|
4
|
+
away: "Away";
|
|
5
|
+
busy: "Busy";
|
|
6
|
+
}>;
|
|
7
|
+
export type StatusLabel = keyof typeof STATUS_LABEL;
|
|
8
|
+
export type Shape = "square" | "rounded" | "circle";
|
|
9
|
+
export type Size = "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl";
|
|
10
|
+
export type IndicatorPosition = "top-right" | "bottom-right" | "top-left" | "bottom-left";
|
|
11
|
+
export declare const DEFAULT_SHAPE: Shape;
|
|
12
|
+
export declare const DEFAULT_BADGE_POSITION: IndicatorPosition;
|
|
13
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;EAKvB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,YAAY,CAAC;AAEpD,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AACpD,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AACpE,MAAM,MAAM,iBAAiB,GAC3B,WAAW,GAAG,cAAc,GAAG,UAAU,GAAG,aAAa,CAAC;AAE5D,eAAO,MAAM,aAAa,EAAE,KAAgB,CAAC;AAC7C,eAAO,MAAM,sBAAsB,EAAE,iBAA+B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { VariantProps } from "class-variance-authority";
|
|
2
|
+
export declare const avatarVariants: (props?: ({
|
|
3
|
+
ring?: boolean | null | undefined;
|
|
4
|
+
shape?: "circle" | "square" | "rounded" | null | undefined;
|
|
5
|
+
size?: "sm" | "lg" | "xs" | "md" | "xl" | "2xl" | "3xl" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export declare const statusVariants: (props?: ({
|
|
8
|
+
status?: "online" | "offline" | "away" | "busy" | null | undefined;
|
|
9
|
+
position?: "top-right" | "bottom-right" | "top-left" | "bottom-left" | null | undefined;
|
|
10
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
11
|
+
export type StatusVariants = VariantProps<typeof statusVariants>;
|
|
12
|
+
/**
|
|
13
|
+
* A badge overlay for arbitrary content (notification count, icon), distinct
|
|
14
|
+
* from `statusVariants`' plain color dot — positioned independently so both
|
|
15
|
+
* can be shown on the same avatar at once (e.g. status bottom-right, badge
|
|
16
|
+
* top-right).
|
|
17
|
+
*/
|
|
18
|
+
export declare const badgeVariants: (props?: ({
|
|
19
|
+
badgeVariant?: "default" | "outline" | "destructive" | "secondary" | null | undefined;
|
|
20
|
+
position?: "top-right" | "bottom-right" | "top-left" | "bottom-left" | null | undefined;
|
|
21
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
22
|
+
export type BadgeVariants = VariantProps<typeof badgeVariants>;
|
|
23
|
+
export declare const fallbackVariants: (props?: ({
|
|
24
|
+
fallbackVariant?: "default" | "amber" | "blue" | "cyan" | "emerald" | "fuchsia" | "gray" | "green" | "indigo" | "lime" | "orange" | "pink" | "purple" | "red" | "rose" | "slate" | "sky" | "teal" | "violet" | "yellow" | "amber-full" | "blue-full" | "cyan-full" | "emerald-full" | "fuchsia-full" | "gray-full" | "green-full" | "indigo-full" | "lime-full" | "orange-full" | "pink-full" | "purple-full" | "red-full" | "rose-full" | "slate-full" | "sky-full" | "teal-full" | "violet-full" | "yellow-full" | null | undefined;
|
|
25
|
+
shape?: "circle" | "square" | "rounded" | null | undefined;
|
|
26
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
27
|
+
export type FallbackVariants = VariantProps<typeof fallbackVariants>;
|
|
28
|
+
export declare const tooltipTriggerVariants: (props?: ({
|
|
29
|
+
shape?: "circle" | "square" | "rounded" | null | undefined;
|
|
30
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
31
|
+
//# sourceMappingURL=variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAM7D,eAAO,MAAM,cAAc;;;;8EA2BzB,CAAC;AAEH,eAAO,MAAM,cAAc;;;8EAwBzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC;AAEjE;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;;8EAsBzB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC;AAE/D,eAAO,MAAM,gBAAgB;;;8EAsD3B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAErE,eAAO,MAAM,sBAAsB;;8EAWjC,CAAC"}
|