@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,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
/**
|
|
4
|
+
* Repeat a component a specified number of times.
|
|
5
|
+
*
|
|
6
|
+
* @param {RepeatProps} props - The props for the Repeat component.
|
|
7
|
+
* @param {number} props.count - The number of times to repeat the component.
|
|
8
|
+
* @param {(index: number) => React.Key} [props.keyItem] - A function to generate a unique key for each item.
|
|
9
|
+
* @param {(index: number) => React.ReactNode} props.renderItem - A function to render each item.
|
|
10
|
+
*
|
|
11
|
+
* @returns {React.ReactNode[]} An array of React components, each rendered with the renderItem function.
|
|
12
|
+
*/
|
|
13
|
+
export function Repeat({ count, keyItem = (i) => i, renderItem, }) {
|
|
14
|
+
return Array.from({ length: count }).map((_, i) => (_jsx(React.Fragment, { children: renderItem(i) }, keyItem(i))));
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/scroll-progress/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ScrollProgress } from "./scroll-progress";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface ScrollProgressProps {
|
|
3
|
+
className?: string;
|
|
4
|
+
/** Tracks this element's own scroll instead of the window's. */
|
|
5
|
+
target?: React.RefObject<HTMLElement | null>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A fixed bar at the top of the page (or a scrollable container) that
|
|
9
|
+
* fills as the user scrolls through it.
|
|
10
|
+
*
|
|
11
|
+
* @see https://bundui.io/components/scroll-progress-bar
|
|
12
|
+
* @see https://motion-primitives.com/docs/scroll-progress
|
|
13
|
+
*
|
|
14
|
+
* @version 0.1.0
|
|
15
|
+
* @author Forth
|
|
16
|
+
* @copyright 2026 Forth
|
|
17
|
+
*/
|
|
18
|
+
export declare function ScrollProgress({ className, target }: ScrollProgressProps): React.JSX.Element;
|
|
19
|
+
//# sourceMappingURL=scroll-progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-progress.d.ts","sourceRoot":"","sources":["../../../src/components/scroll-progress/scroll-progress.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,mBAAmB,qBAiCxE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
5
|
+
/**
|
|
6
|
+
* A fixed bar at the top of the page (or a scrollable container) that
|
|
7
|
+
* fills as the user scrolls through it.
|
|
8
|
+
*
|
|
9
|
+
* @see https://bundui.io/components/scroll-progress-bar
|
|
10
|
+
* @see https://motion-primitives.com/docs/scroll-progress
|
|
11
|
+
*
|
|
12
|
+
* @version 0.1.0
|
|
13
|
+
* @author Forth
|
|
14
|
+
* @copyright 2026 Forth
|
|
15
|
+
*/
|
|
16
|
+
export function ScrollProgress({ className, target }) {
|
|
17
|
+
const [progress, setProgress] = React.useState(0);
|
|
18
|
+
React.useEffect(() => {
|
|
19
|
+
const el = target?.current;
|
|
20
|
+
function onScroll() {
|
|
21
|
+
const scrollTop = el ? el.scrollTop : window.scrollY;
|
|
22
|
+
const scrollHeight = el
|
|
23
|
+
? el.scrollHeight - el.clientHeight
|
|
24
|
+
: document.documentElement.scrollHeight - window.innerHeight;
|
|
25
|
+
// eslint-disable-next-line @eslint-react/set-state-in-effect -- also called from a real scroll event listener, not just the effect below; this disable only covers the mount-time initial read of the current scroll position
|
|
26
|
+
setProgress(scrollHeight > 0 ? (scrollTop / scrollHeight) * 100 : 0);
|
|
27
|
+
}
|
|
28
|
+
const node = el ?? window;
|
|
29
|
+
node.addEventListener("scroll", onScroll, { passive: true });
|
|
30
|
+
onScroll();
|
|
31
|
+
return () => {
|
|
32
|
+
node.removeEventListener("scroll", onScroll);
|
|
33
|
+
};
|
|
34
|
+
}, [target]);
|
|
35
|
+
return (_jsx("div", { "data-slot": "scroll-progress", className: cn("bg-primary fixed inset-x-0 top-0 z-50 h-1 origin-left", className), style: { transform: `scaleX(${(progress / 100).toString()})` } }));
|
|
36
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/scroll-shadow/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ScrollShadow } from "./scroll-shadow";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type ScrollShadowProps = React.ComponentProps<"div"> & {
|
|
3
|
+
/** Size of the fade gradient, in pixels. @default 40 */
|
|
4
|
+
shadowSize?: number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* A vertically-scrollable container with fade-out gradient shadows at the
|
|
8
|
+
* top/bottom edges, hidden once scrolled all the way to that edge — built
|
|
9
|
+
* as a plain native-scroll `<div>` rather than wrapping shadcn-ui's
|
|
10
|
+
* `ScrollArea`, since that component doesn't forward a ref to its inner
|
|
11
|
+
* viewport (needed here to track scroll position for the fade toggling).
|
|
12
|
+
*
|
|
13
|
+
* @see https://www.heroui.com/docs/components/scroll-shadow
|
|
14
|
+
*
|
|
15
|
+
* @version 0.1.0
|
|
16
|
+
* @author Forth
|
|
17
|
+
* @copyright 2026 Forth
|
|
18
|
+
*/
|
|
19
|
+
export declare function ScrollShadow({ className, shadowSize, onScroll, ...props }: ScrollShadowProps): React.JSX.Element;
|
|
20
|
+
//# sourceMappingURL=scroll-shadow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-shadow.d.ts","sourceRoot":"","sources":["../../../src/components/scroll-shadow/scroll-shadow.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC5D,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,UAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,iBAAiB,qBAyCnB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
5
|
+
/**
|
|
6
|
+
* A vertically-scrollable container with fade-out gradient shadows at the
|
|
7
|
+
* top/bottom edges, hidden once scrolled all the way to that edge — built
|
|
8
|
+
* as a plain native-scroll `<div>` rather than wrapping shadcn-ui's
|
|
9
|
+
* `ScrollArea`, since that component doesn't forward a ref to its inner
|
|
10
|
+
* viewport (needed here to track scroll position for the fade toggling).
|
|
11
|
+
*
|
|
12
|
+
* @see https://www.heroui.com/docs/components/scroll-shadow
|
|
13
|
+
*
|
|
14
|
+
* @version 0.1.0
|
|
15
|
+
* @author Forth
|
|
16
|
+
* @copyright 2026 Forth
|
|
17
|
+
*/
|
|
18
|
+
export function ScrollShadow({ className, shadowSize = 40, onScroll, ...props }) {
|
|
19
|
+
const ref = React.useRef(null);
|
|
20
|
+
const [atTop, setAtTop] = React.useState(true);
|
|
21
|
+
const [atBottom, setAtBottom] = React.useState(false);
|
|
22
|
+
function updateEdges(el) {
|
|
23
|
+
// Also called from the onScroll handler below (a normal event, not an
|
|
24
|
+
// effect) — these two disables only cover the mount-time effect call,
|
|
25
|
+
// reading the element's scroll geometry that isn't known until after
|
|
26
|
+
// the first paint.
|
|
27
|
+
// eslint-disable-next-line @eslint-react/set-state-in-effect
|
|
28
|
+
setAtTop(el.scrollTop <= 0);
|
|
29
|
+
// eslint-disable-next-line @eslint-react/set-state-in-effect
|
|
30
|
+
setAtBottom(el.scrollTop + el.clientHeight >= el.scrollHeight - 1);
|
|
31
|
+
}
|
|
32
|
+
React.useEffect(() => {
|
|
33
|
+
if (ref.current !== null) {
|
|
34
|
+
updateEdges(ref.current);
|
|
35
|
+
}
|
|
36
|
+
}, []);
|
|
37
|
+
const maskFrom = atTop ? "black" : "transparent";
|
|
38
|
+
const maskTo = atBottom ? "black" : "transparent";
|
|
39
|
+
const mask = `linear-gradient(to bottom, ${maskFrom}, black ${shadowSize.toString()}px, black calc(100% - ${shadowSize.toString()}px), ${maskTo})`;
|
|
40
|
+
return (_jsx("div", { ref: ref, "data-slot": "scroll-shadow", "data-at-top": atTop, "data-at-bottom": atBottom, onScroll: (e) => {
|
|
41
|
+
updateEdges(e.currentTarget);
|
|
42
|
+
onScroll?.(e);
|
|
43
|
+
}, style: { maskImage: mask, WebkitMaskImage: mask }, className: cn("overflow-y-auto", className), ...props }));
|
|
44
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/scrollspy/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useScrollspy } from "./use-scrollspy";
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface UseScrollspyOptions {
|
|
3
|
+
/** Element `id`s to track, in document order. */
|
|
4
|
+
ids: string[];
|
|
5
|
+
/**
|
|
6
|
+
* Passed to `IntersectionObserver`. The default treats a section as
|
|
7
|
+
* active once it's within the top 20% of the viewport.
|
|
8
|
+
* @default "0px 0px -80% 0px"
|
|
9
|
+
*/
|
|
10
|
+
rootMargin?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Tracks scroll position within this element instead of the whole page
|
|
13
|
+
* (e.g. a scrollable docs pane) — passed through as the observer's
|
|
14
|
+
* `root`.
|
|
15
|
+
*/
|
|
16
|
+
root?: React.RefObject<HTMLElement | null>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Tracks which of the given element `id`s is currently scrolled into
|
|
20
|
+
* view, via `IntersectionObserver` — for highlighting the active link in
|
|
21
|
+
* a table-of-contents/side nav as the page scrolls.
|
|
22
|
+
*
|
|
23
|
+
* @see https://ktui.io/docs/scrollspy
|
|
24
|
+
*
|
|
25
|
+
* @version 0.1.0
|
|
26
|
+
* @author Forth
|
|
27
|
+
* @copyright 2026 Forth
|
|
28
|
+
*/
|
|
29
|
+
export declare function useScrollspy({ ids, rootMargin, root, }: UseScrollspyOptions): string | null;
|
|
30
|
+
//# sourceMappingURL=use-scrollspy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-scrollspy.d.ts","sourceRoot":"","sources":["../../../src/components/scrollspy/use-scrollspy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,GAAG,EAAE,MAAM,EAAE,CAAC;IACd;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC5C;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,EAC3B,GAAG,EACH,UAAgC,EAChC,IAAI,GACL,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CA2BrC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
const DEFAULT_ROOT_MARGIN = "0px 0px -80% 0px";
|
|
4
|
+
/**
|
|
5
|
+
* Tracks which of the given element `id`s is currently scrolled into
|
|
6
|
+
* view, via `IntersectionObserver` — for highlighting the active link in
|
|
7
|
+
* a table-of-contents/side nav as the page scrolls.
|
|
8
|
+
*
|
|
9
|
+
* @see https://ktui.io/docs/scrollspy
|
|
10
|
+
*
|
|
11
|
+
* @version 0.1.0
|
|
12
|
+
* @author Forth
|
|
13
|
+
* @copyright 2026 Forth
|
|
14
|
+
*/
|
|
15
|
+
export function useScrollspy({ ids, rootMargin = DEFAULT_ROOT_MARGIN, root, }) {
|
|
16
|
+
const [activeId, setActiveId] = React.useState(null);
|
|
17
|
+
React.useEffect(() => {
|
|
18
|
+
const elements = ids
|
|
19
|
+
.map((id) => document.getElementById(id))
|
|
20
|
+
.filter((el) => el !== null);
|
|
21
|
+
const observer = new IntersectionObserver((entries) => {
|
|
22
|
+
const visible = entries.find((entry) => entry.isIntersecting);
|
|
23
|
+
if (visible !== undefined) {
|
|
24
|
+
setActiveId(visible.target.id);
|
|
25
|
+
}
|
|
26
|
+
}, { root: root?.current, rootMargin });
|
|
27
|
+
for (const el of elements) {
|
|
28
|
+
observer.observe(el);
|
|
29
|
+
}
|
|
30
|
+
return () => {
|
|
31
|
+
observer.disconnect();
|
|
32
|
+
};
|
|
33
|
+
}, [ids, rootMargin, root]);
|
|
34
|
+
return activeId;
|
|
35
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/separator/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Separator } from "./separator";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
import { Separator as SeparatorPrimitive } from "@forthtilliath/shadcn-ui/components/separator";
|
|
3
|
+
export type SeparatorProps = React.ComponentProps<typeof SeparatorPrimitive> & {
|
|
4
|
+
/**
|
|
5
|
+
* Centered text between two line segments (e.g. `"OR"`) — only applies
|
|
6
|
+
* when `orientation` is `"horizontal"` (the default).
|
|
7
|
+
*/
|
|
8
|
+
label?: React.ReactNode;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Visually or semantically separates content.
|
|
12
|
+
*
|
|
13
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
14
|
+
* @see https://ui.shadcn.com/docs/components/separator
|
|
15
|
+
* @see https://ktui.io/docs/separator
|
|
16
|
+
*
|
|
17
|
+
* @version 0.1.0
|
|
18
|
+
* @author Forth
|
|
19
|
+
* @copyright 2026 Forth
|
|
20
|
+
*/
|
|
21
|
+
export declare function Separator({ label, className, orientation, ...props }: SeparatorProps): React.JSX.Element;
|
|
22
|
+
//# sourceMappingURL=separator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../../src/components/separator/separator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AAGhG,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,GAAG;IAC7E;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,SAAS,EACT,WAA0B,EAC1B,GAAG,KAAK,EACT,EAAE,cAAc,qBA0BhB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Separator as SeparatorPrimitive } from "@forthtilliath/shadcn-ui/components/separator";
|
|
3
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
4
|
+
/**
|
|
5
|
+
* Visually or semantically separates content.
|
|
6
|
+
*
|
|
7
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
8
|
+
* @see https://ui.shadcn.com/docs/components/separator
|
|
9
|
+
* @see https://ktui.io/docs/separator
|
|
10
|
+
*
|
|
11
|
+
* @version 0.1.0
|
|
12
|
+
* @author Forth
|
|
13
|
+
* @copyright 2026 Forth
|
|
14
|
+
*/
|
|
15
|
+
export function Separator({ label, className, orientation = "horizontal", ...props }) {
|
|
16
|
+
const hasLabel = label !== undefined && label !== null;
|
|
17
|
+
if (hasLabel && orientation === "horizontal") {
|
|
18
|
+
return (_jsxs("div", { role: "separator", "aria-orientation": "horizontal", className: cn("flex items-center gap-3", className), children: [_jsx("span", { className: "bg-border h-px flex-1" }), _jsx("span", { className: "text-muted-foreground text-xs whitespace-nowrap", children: label }), _jsx("span", { className: "bg-border h-px flex-1" })] }));
|
|
19
|
+
}
|
|
20
|
+
return (_jsx(SeparatorPrimitive, { orientation: orientation, className: className, ...props }));
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/snippet/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Snippet } from "./snippet";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface SnippetItem {
|
|
3
|
+
value: string;
|
|
4
|
+
label: React.ReactNode;
|
|
5
|
+
code: string;
|
|
6
|
+
}
|
|
7
|
+
export interface SnippetProps {
|
|
8
|
+
items: SnippetItem[];
|
|
9
|
+
/** @default items[0]?.value */
|
|
10
|
+
defaultValue?: string;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Displays and copies code in a tabbed interface — the "npm install /
|
|
15
|
+
* yarn add / pnpm add" pattern.
|
|
16
|
+
*
|
|
17
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
18
|
+
* @see https://www.kibo-ui.com/components/snippet
|
|
19
|
+
*
|
|
20
|
+
* @version 0.1.0
|
|
21
|
+
* @author Forth
|
|
22
|
+
* @copyright 2026 Forth
|
|
23
|
+
*/
|
|
24
|
+
export declare function Snippet({ items, defaultValue, className }: SnippetProps): React.JSX.Element;
|
|
25
|
+
//# sourceMappingURL=snippet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippet.d.ts","sourceRoot":"","sources":["../../../src/components/snippet/snippet.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,YAAY,qBAuDvE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { CheckIcon, CopyIcon } from "lucide-react";
|
|
5
|
+
import { Button } from "@forthtilliath/shadcn-ui/components/button";
|
|
6
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger, } from "@forthtilliath/shadcn-ui/components/tabs";
|
|
7
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
8
|
+
const COPY_FEEDBACK_MS = 2000;
|
|
9
|
+
/**
|
|
10
|
+
* Displays and copies code in a tabbed interface — the "npm install /
|
|
11
|
+
* yarn add / pnpm add" pattern.
|
|
12
|
+
*
|
|
13
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
14
|
+
* @see https://www.kibo-ui.com/components/snippet
|
|
15
|
+
*
|
|
16
|
+
* @version 0.1.0
|
|
17
|
+
* @author Forth
|
|
18
|
+
* @copyright 2026 Forth
|
|
19
|
+
*/
|
|
20
|
+
export function Snippet({ items, defaultValue, className }) {
|
|
21
|
+
const [copiedValue, setCopiedValue] = React.useState(null);
|
|
22
|
+
function handleCopy(item) {
|
|
23
|
+
void navigator.clipboard.writeText(item.code).then(() => {
|
|
24
|
+
setCopiedValue(item.value);
|
|
25
|
+
setTimeout(() => {
|
|
26
|
+
setCopiedValue(null);
|
|
27
|
+
}, COPY_FEEDBACK_MS);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return (_jsxs(Tabs, { defaultValue: defaultValue ?? items[0]?.value, className: cn("border-border overflow-hidden rounded-lg border", className), children: [_jsx(TabsList, { className: "bg-muted/40 h-auto w-full justify-start rounded-none border-b p-0", children: items.map((item) => (_jsx(TabsTrigger, { value: item.value, className: "data-[state=active]:bg-background rounded-none font-mono text-xs", children: item.label }, item.value))) }), items.map((item) => (_jsxs(TabsContent, { value: item.value, className: "relative m-0", children: [_jsx("pre", { className: "overflow-x-auto p-4 pr-12 font-mono text-sm", children: _jsx("code", { children: item.code }) }), _jsx(Button, { variant: "ghost", size: "icon", onClick: () => {
|
|
31
|
+
handleCopy(item);
|
|
32
|
+
}, "aria-label": copiedValue === item.value ? "Copied" : "Copy", className: "absolute top-2 right-2 size-7", children: copiedValue === item.value ? _jsx(CheckIcon, {}) : _jsx(CopyIcon, {}) })] }, item.value)))] }));
|
|
33
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/sortable/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Sortable } from "./sortable";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface SortableProps<T> {
|
|
3
|
+
items: T[];
|
|
4
|
+
onReorder: (items: T[]) => void;
|
|
5
|
+
getKey: (item: T) => string;
|
|
6
|
+
renderItem: (item: T, index: number) => React.ReactNode;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A drag-to-reorder list — built on the browser's native HTML5 drag
|
|
12
|
+
* events rather than a drag-and-drop library, since reordering a flat
|
|
13
|
+
* list (no cross-container drops, no sortable grids) doesn't need one.
|
|
14
|
+
*
|
|
15
|
+
* @see https://ui-x.junwen-k.dev/docs/utilities/sortable
|
|
16
|
+
*
|
|
17
|
+
* @version 0.1.0
|
|
18
|
+
* @author Forth
|
|
19
|
+
* @copyright 2026 Forth
|
|
20
|
+
*/
|
|
21
|
+
export declare function Sortable<T>({ items, onReorder, getKey, renderItem, disabled, className, }: SortableProps<T>): React.JSX.Element;
|
|
22
|
+
//# sourceMappingURL=sortable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sortable.d.ts","sourceRoot":"","sources":["../../../src/components/sortable/sortable.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAChC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC5B,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAC1B,KAAK,EACL,SAAS,EACT,MAAM,EACN,UAAU,EACV,QAAgB,EAChB,SAAS,GACV,EAAE,aAAa,CAAC,CAAC,CAAC,qBAsDlB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
5
|
+
/**
|
|
6
|
+
* A drag-to-reorder list — built on the browser's native HTML5 drag
|
|
7
|
+
* events rather than a drag-and-drop library, since reordering a flat
|
|
8
|
+
* list (no cross-container drops, no sortable grids) doesn't need one.
|
|
9
|
+
*
|
|
10
|
+
* @see https://ui-x.junwen-k.dev/docs/utilities/sortable
|
|
11
|
+
*
|
|
12
|
+
* @version 0.1.0
|
|
13
|
+
* @author Forth
|
|
14
|
+
* @copyright 2026 Forth
|
|
15
|
+
*/
|
|
16
|
+
export function Sortable({ items, onReorder, getKey, renderItem, disabled = false, className, }) {
|
|
17
|
+
const dragIndexRef = React.useRef(null);
|
|
18
|
+
const [overIndex, setOverIndex] = React.useState(null);
|
|
19
|
+
function handleDrop(targetIndex) {
|
|
20
|
+
const from = dragIndexRef.current;
|
|
21
|
+
if (from === null || from === targetIndex) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const next = [...items];
|
|
25
|
+
const [moved] = next.splice(from, 1);
|
|
26
|
+
if (moved !== undefined) {
|
|
27
|
+
next.splice(targetIndex, 0, moved);
|
|
28
|
+
onReorder(next);
|
|
29
|
+
}
|
|
30
|
+
dragIndexRef.current = null;
|
|
31
|
+
setOverIndex(null);
|
|
32
|
+
}
|
|
33
|
+
return (_jsx("ul", { "data-slot": "sortable", className: cn("grid gap-2", className), children: items.map((item, index) => (_jsx("li", { draggable: !disabled, "data-dragging-over": overIndex === index, onDragStart: () => {
|
|
34
|
+
dragIndexRef.current = index;
|
|
35
|
+
}, onDragOver: (e) => {
|
|
36
|
+
e.preventDefault();
|
|
37
|
+
setOverIndex(index);
|
|
38
|
+
}, onDragLeave: () => {
|
|
39
|
+
setOverIndex((prev) => (prev === index ? null : prev));
|
|
40
|
+
}, onDrop: (e) => {
|
|
41
|
+
e.preventDefault();
|
|
42
|
+
handleDrop(index);
|
|
43
|
+
}, onDragEnd: () => {
|
|
44
|
+
dragIndexRef.current = null;
|
|
45
|
+
setOverIndex(null);
|
|
46
|
+
}, className: cn("data-[dragging-over=true]:ring-primary rounded-md data-[dragging-over=true]:ring-2", !disabled && "cursor-grab active:cursor-grabbing"), children: renderItem(item, index) }, getKey(item)))) }));
|
|
47
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/spacer/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Spacer } from "./spacer";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
export type SpacerProps = React.ComponentProps<"div"> & {
|
|
3
|
+
/**
|
|
4
|
+
* A fixed gap, in Tailwind's spacing scale (e.g. `4` = 1rem). Omit for a
|
|
5
|
+
* flexible spacer that grows to fill the remaining space in a flex
|
|
6
|
+
* container instead (the more common use in a flex row/column).
|
|
7
|
+
*/
|
|
8
|
+
size?: number;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Adds space between components — a flexible filler by default (`flex-1`),
|
|
12
|
+
* or a fixed gap via `size`.
|
|
13
|
+
*
|
|
14
|
+
* The single reference source for this component (heroui.com/docs/
|
|
15
|
+
* components/spacer) 404'd — this keeps to the minimal, well-established
|
|
16
|
+
* shape of this pattern across UI kits rather than guessing at a richer
|
|
17
|
+
* API that couldn't be verified.
|
|
18
|
+
*
|
|
19
|
+
* @version 0.1.0
|
|
20
|
+
* @author Forth
|
|
21
|
+
* @copyright 2026 Forth
|
|
22
|
+
*/
|
|
23
|
+
export declare function Spacer({ size, className, ...props }: SpacerProps): React.JSX.Element;
|
|
24
|
+
//# sourceMappingURL=spacer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spacer.d.ts","sourceRoot":"","sources":["../../../src/components/spacer/spacer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IACtD;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW,qBAiBhE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
3
|
+
/**
|
|
4
|
+
* Adds space between components — a flexible filler by default (`flex-1`),
|
|
5
|
+
* or a fixed gap via `size`.
|
|
6
|
+
*
|
|
7
|
+
* The single reference source for this component (heroui.com/docs/
|
|
8
|
+
* components/spacer) 404'd — this keeps to the minimal, well-established
|
|
9
|
+
* shape of this pattern across UI kits rather than guessing at a richer
|
|
10
|
+
* API that couldn't be verified.
|
|
11
|
+
*
|
|
12
|
+
* @version 0.1.0
|
|
13
|
+
* @author Forth
|
|
14
|
+
* @copyright 2026 Forth
|
|
15
|
+
*/
|
|
16
|
+
export function Spacer({ size, className, ...props }) {
|
|
17
|
+
return (_jsx("div", { "aria-hidden": "true", "data-slot": "spacer", className: cn(size === undefined ? "flex-1" : "shrink-0", className), style: size === undefined
|
|
18
|
+
? undefined
|
|
19
|
+
: {
|
|
20
|
+
width: `calc(var(--spacing) * ${size.toString()})`,
|
|
21
|
+
height: `calc(var(--spacing) * ${size.toString()})`,
|
|
22
|
+
}, ...props }));
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Spinner } from "./spinner";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
import type { SpinnerSizeVariants } from "./variants";
|
|
3
|
+
export type SpinnerVariant = "default" | "ring" | "bars" | "ellipsis";
|
|
4
|
+
export type SpinnerProps = React.ComponentProps<"span"> & SpinnerSizeVariants & {
|
|
5
|
+
/**
|
|
6
|
+
* @default "default"
|
|
7
|
+
*/
|
|
8
|
+
variant?: SpinnerVariant;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* An accessible loading indicator, in one of a few visual styles.
|
|
12
|
+
*
|
|
13
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
14
|
+
* @see https://www.kibo-ui.com/components/spinner
|
|
15
|
+
* @see https://www.shadcnui-blocks.com/components/spinner
|
|
16
|
+
*
|
|
17
|
+
* @version 0.1.0
|
|
18
|
+
* @author Forth
|
|
19
|
+
* @copyright 2026 Forth
|
|
20
|
+
*/
|
|
21
|
+
export declare function Spinner({ variant, size, className, ...props }: SpinnerProps): React.JSX.Element;
|
|
22
|
+
//# sourceMappingURL=spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGtD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAEtE,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GACrD,mBAAmB,GAAG;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,EACtB,OAAmB,EACnB,IAAI,EACJ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,YAAY,qBAyCd"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Loader2Icon } from "lucide-react";
|
|
3
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
4
|
+
import { spinnerSizeVariants } from "./variants";
|
|
5
|
+
/**
|
|
6
|
+
* An accessible loading indicator, in one of a few visual styles.
|
|
7
|
+
*
|
|
8
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
9
|
+
* @see https://www.kibo-ui.com/components/spinner
|
|
10
|
+
* @see https://www.shadcnui-blocks.com/components/spinner
|
|
11
|
+
*
|
|
12
|
+
* @version 0.1.0
|
|
13
|
+
* @author Forth
|
|
14
|
+
* @copyright 2026 Forth
|
|
15
|
+
*/
|
|
16
|
+
export function Spinner({ variant = "default", size, className, ...props }) {
|
|
17
|
+
const sizeClass = spinnerSizeVariants({ size });
|
|
18
|
+
return (_jsxs("span", { role: "status", "aria-label": "Loading", ...props, children: [variant === "ring" && (_jsx("span", { className: cn(sizeClass, "block animate-spin rounded-full border-2 border-current border-t-transparent", className) })), variant === "bars" && (_jsx("span", { className: cn(sizeClass, "flex items-center gap-0.5", className), children: [0, 150, 300].map((delay) => (_jsx("span", { className: "h-full w-1 animate-pulse rounded-full bg-current", style: { animationDelay: `${delay.toString()}ms` } }, delay))) })), variant === "ellipsis" && (_jsx("span", { className: cn(sizeClass, "flex items-center gap-1", className), children: [0, 150, 300].map((delay) => (_jsx("span", { className: "size-1/4 animate-bounce rounded-full bg-current", style: { animationDelay: `${delay.toString()}ms` } }, delay))) })), variant === "default" && (_jsx(Loader2Icon, { className: cn(sizeClass, "animate-spin", className) }))] }));
|
|
19
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { VariantProps } from "class-variance-authority";
|
|
2
|
+
export declare const spinnerSizeVariants: (props?: ({
|
|
3
|
+
size?: "default" | "sm" | "lg" | null | undefined;
|
|
4
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
5
|
+
export type SpinnerSizeVariants = VariantProps<typeof spinnerSizeVariants>;
|
|
6
|
+
//# sourceMappingURL=variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,eAAO,MAAM,mBAAmB;;8EAW9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|