@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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/grid/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { VariantProps } from "class-variance-authority";
|
|
2
|
+
export declare const gridVariants: (props?: ({
|
|
3
|
+
cols?: 1 | 2 | 3 | 7 | 12 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | null | undefined;
|
|
4
|
+
spacing?: "sm" | "lg" | "none" | "xs" | "md" | "xl" | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
+
export type GridVariants = VariantProps<typeof gridVariants>;
|
|
7
|
+
export declare const gridItemVariants: (props?: ({
|
|
8
|
+
cols?: "default" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "full" | null | undefined;
|
|
9
|
+
debug?: boolean | null | undefined;
|
|
10
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
11
|
+
export type GridItemVariants = VariantProps<typeof gridItemVariants>;
|
|
12
|
+
export declare const gridItemDebugVariants: (props?: ({
|
|
13
|
+
active?: boolean | null | undefined;
|
|
14
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
15
|
+
export type GridItemDebugVariants = VariantProps<typeof gridItemDebugVariants>;
|
|
16
|
+
//# sourceMappingURL=variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/components/grid/variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,eAAO,MAAM,YAAY;;;8EA6BvB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AAE7D,eAAO,MAAM,gBAAgB;;;8EA0B3B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAErE,eAAO,MAAM,qBAAqB;;8EAkBjC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { cva } from "class-variance-authority";
|
|
2
|
+
export const gridVariants = cva("grid", {
|
|
3
|
+
variants: {
|
|
4
|
+
cols: {
|
|
5
|
+
1: "grid-cols-1",
|
|
6
|
+
2: "grid-cols-2",
|
|
7
|
+
3: "grid-cols-3",
|
|
8
|
+
4: "grid-cols-4",
|
|
9
|
+
5: "grid-cols-5",
|
|
10
|
+
6: "grid-cols-6",
|
|
11
|
+
7: "grid-cols-7",
|
|
12
|
+
8: "grid-cols-8",
|
|
13
|
+
9: "grid-cols-9",
|
|
14
|
+
10: "grid-cols-10",
|
|
15
|
+
11: "grid-cols-11",
|
|
16
|
+
12: "grid-cols-12",
|
|
17
|
+
},
|
|
18
|
+
spacing: {
|
|
19
|
+
none: "gap-0",
|
|
20
|
+
xs: "gap-1",
|
|
21
|
+
sm: "gap-2",
|
|
22
|
+
md: "gap-4",
|
|
23
|
+
lg: "gap-8",
|
|
24
|
+
xl: "gap-12",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
defaultVariants: {
|
|
28
|
+
cols: 12,
|
|
29
|
+
spacing: "md",
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
export const gridItemVariants = cva("flex justify-center items-center", {
|
|
33
|
+
variants: {
|
|
34
|
+
cols: {
|
|
35
|
+
default: "col-span-1",
|
|
36
|
+
"2": "col-span-2",
|
|
37
|
+
"3": "col-span-3",
|
|
38
|
+
"4": "col-span-4",
|
|
39
|
+
"5": "col-span-5",
|
|
40
|
+
"6": "col-span-6",
|
|
41
|
+
"7": "col-span-7",
|
|
42
|
+
"8": "col-span-8",
|
|
43
|
+
"9": "col-span-9",
|
|
44
|
+
"10": "col-span-10",
|
|
45
|
+
"11": "col-span-11",
|
|
46
|
+
"12": "col-span-12",
|
|
47
|
+
full: "col-span-full",
|
|
48
|
+
},
|
|
49
|
+
debug: {
|
|
50
|
+
false: "",
|
|
51
|
+
true: "relative",
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
defaultVariants: {
|
|
55
|
+
cols: "default",
|
|
56
|
+
debug: false,
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
export const gridItemDebugVariants = cva([
|
|
60
|
+
"absolute inset-0 z-[999] pointer-events-none",
|
|
61
|
+
"w-full h-full bg-red-500/10",
|
|
62
|
+
"transition-transform duration-500 ease-in-out origin-top",
|
|
63
|
+
"border-dashed border-red-500/30 border",
|
|
64
|
+
], {
|
|
65
|
+
variants: {
|
|
66
|
+
active: {
|
|
67
|
+
true: "scale-y-100",
|
|
68
|
+
false: "scale-y-0",
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
defaultVariants: {
|
|
72
|
+
active: true,
|
|
73
|
+
},
|
|
74
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface ImageInputProps {
|
|
3
|
+
/** An existing image URL to preview (e.g. editing something that already has one). */
|
|
4
|
+
value?: string | null;
|
|
5
|
+
onFileChange?: (file: File | null) => void;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
className?: string;
|
|
8
|
+
/** @default "16/9" */
|
|
9
|
+
aspectRatio?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A click-to-upload image picker with a live preview.
|
|
13
|
+
*
|
|
14
|
+
* @see https://ktui.io/docs/image-input
|
|
15
|
+
*
|
|
16
|
+
* @version 0.1.0
|
|
17
|
+
* @author Forth
|
|
18
|
+
* @copyright 2026 Forth
|
|
19
|
+
*/
|
|
20
|
+
export declare function ImageInput({ value, onFileChange, disabled, className, aspectRatio, }: ImageInputProps): React.JSX.Element;
|
|
21
|
+
//# sourceMappingURL=image-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-input.d.ts","sourceRoot":"","sources":["../../../src/components/image-input/image-input.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,eAAe;IAC9B,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,YAAY,EACZ,QAAgB,EAChB,SAAS,EACT,WAAoB,GACrB,EAAE,eAAe,qBA4EjB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { ImageIcon, XIcon } from "lucide-react";
|
|
5
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
6
|
+
/**
|
|
7
|
+
* A click-to-upload image picker with a live preview.
|
|
8
|
+
*
|
|
9
|
+
* @see https://ktui.io/docs/image-input
|
|
10
|
+
*
|
|
11
|
+
* @version 0.1.0
|
|
12
|
+
* @author Forth
|
|
13
|
+
* @copyright 2026 Forth
|
|
14
|
+
*/
|
|
15
|
+
export function ImageInput({ value, onFileChange, disabled = false, className, aspectRatio = "16/9", }) {
|
|
16
|
+
const [file, setFile] = React.useState(null);
|
|
17
|
+
const [objectUrl, setObjectUrl] = React.useState(null);
|
|
18
|
+
const inputRef = React.useRef(null);
|
|
19
|
+
React.useEffect(() => {
|
|
20
|
+
if (file === null) {
|
|
21
|
+
// eslint-disable-next-line @eslint-react/set-state-in-effect, react-hooks/set-state-in-effect -- syncs the object URL lifecycle (create/revoke) with the selected File, an external browser resource that can't be derived during render
|
|
22
|
+
setObjectUrl(null);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const url = URL.createObjectURL(file);
|
|
26
|
+
// eslint-disable-next-line @eslint-react/set-state-in-effect -- see above
|
|
27
|
+
setObjectUrl(url);
|
|
28
|
+
return () => {
|
|
29
|
+
URL.revokeObjectURL(url);
|
|
30
|
+
};
|
|
31
|
+
}, [file]);
|
|
32
|
+
const preview = objectUrl ?? value ?? null;
|
|
33
|
+
function handleFile(next) {
|
|
34
|
+
setFile(next);
|
|
35
|
+
onFileChange?.(next);
|
|
36
|
+
}
|
|
37
|
+
return (_jsxs("div", { "data-slot": "image-input", className: cn("border-input relative flex items-center justify-center overflow-hidden rounded-lg border border-dashed", disabled && "pointer-events-none opacity-50", className), style: { aspectRatio }, children: [preview !== null ? (_jsxs(_Fragment, { children: [_jsx("img", { src: preview, alt: "", className: "size-full object-cover" }), _jsx("button", { type: "button", onClick: () => {
|
|
38
|
+
handleFile(null);
|
|
39
|
+
}, "aria-label": "Remove image", className: "bg-background/80 text-foreground hover:bg-background absolute top-2 right-2 rounded-full p-1 shadow-xs", children: _jsx(XIcon, { className: "size-4" }) })] })) : (_jsxs("button", { type: "button", onClick: () => {
|
|
40
|
+
inputRef.current?.click();
|
|
41
|
+
}, disabled: disabled, className: "text-muted-foreground hover:text-foreground flex flex-col items-center gap-2 p-8 text-sm", children: [_jsx(ImageIcon, { className: "size-8" }), "Click to upload an image"] })), _jsx("input", { ref: inputRef, type: "file", accept: "image/*", disabled: disabled, className: "hidden", onChange: (e) => {
|
|
42
|
+
handleFile(e.target.files?.[0] ?? null);
|
|
43
|
+
e.target.value = "";
|
|
44
|
+
} })] }));
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/image-input/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ImageInput } from "./image-input";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/infinite-scroll/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 { InfiniteScroll } from "./infinite-scroll";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface InfiniteScrollProps {
|
|
3
|
+
onLoadMore: () => void;
|
|
4
|
+
hasMore: boolean;
|
|
5
|
+
loading?: boolean;
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Calls `onLoadMore` once a sentinel at the bottom of `children` scrolls
|
|
11
|
+
* into view, via `IntersectionObserver` — no scroll-event polling.
|
|
12
|
+
*
|
|
13
|
+
* @see https://www.rigidui.com/docs/components/infinite-scroll
|
|
14
|
+
*
|
|
15
|
+
* @version 0.1.0
|
|
16
|
+
* @author Forth
|
|
17
|
+
* @copyright 2026 Forth
|
|
18
|
+
*/
|
|
19
|
+
export declare function InfiniteScroll({ onLoadMore, hasMore, loading, children, className, }: InfiniteScrollProps): React.JSX.Element;
|
|
20
|
+
//# sourceMappingURL=infinite-scroll.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infinite-scroll.d.ts","sourceRoot":"","sources":["../../../src/components/infinite-scroll/infinite-scroll.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,OAAO,EACP,OAAe,EACf,QAAQ,EACR,SAAS,GACV,EAAE,mBAAmB,qBAgCrB"}
|
|
@@ -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 { Loader2Icon } from "lucide-react";
|
|
5
|
+
/**
|
|
6
|
+
* Calls `onLoadMore` once a sentinel at the bottom of `children` scrolls
|
|
7
|
+
* into view, via `IntersectionObserver` — no scroll-event polling.
|
|
8
|
+
*
|
|
9
|
+
* @see https://www.rigidui.com/docs/components/infinite-scroll
|
|
10
|
+
*
|
|
11
|
+
* @version 0.1.0
|
|
12
|
+
* @author Forth
|
|
13
|
+
* @copyright 2026 Forth
|
|
14
|
+
*/
|
|
15
|
+
export function InfiniteScroll({ onLoadMore, hasMore, loading = false, children, className, }) {
|
|
16
|
+
const sentinelRef = React.useRef(null);
|
|
17
|
+
React.useEffect(() => {
|
|
18
|
+
const sentinel = sentinelRef.current;
|
|
19
|
+
if (sentinel === null || !hasMore) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const observer = new IntersectionObserver((entries) => {
|
|
23
|
+
if (entries[0]?.isIntersecting === true) {
|
|
24
|
+
onLoadMore();
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
observer.observe(sentinel);
|
|
28
|
+
return () => {
|
|
29
|
+
observer.disconnect();
|
|
30
|
+
};
|
|
31
|
+
}, [hasMore, onLoadMore]);
|
|
32
|
+
return (_jsxs("div", { "data-slot": "infinite-scroll", className: className, children: [children, hasMore && (_jsx("div", { ref: sentinelRef, className: "flex justify-center py-4", children: loading && (_jsx(Loader2Icon, { className: "text-muted-foreground size-5 animate-spin" })) }))] }));
|
|
33
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/kbd/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Kbd, KbdGroup } from "./kbd";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Displays which key or combination of keys performs a given action.
|
|
4
|
+
*
|
|
5
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
6
|
+
* @see https://ui.shadcn.com/docs/components/kbd
|
|
7
|
+
*
|
|
8
|
+
* @version 0.1.0
|
|
9
|
+
* @author Forth
|
|
10
|
+
* @copyright 2026 Forth
|
|
11
|
+
*/
|
|
12
|
+
export declare function Kbd({ className, ...props }: React.ComponentProps<"kbd">): React.JSX.Element;
|
|
13
|
+
/** Groups several `Kbd`s together, e.g. for a "Ctrl + Shift + P" sequence. */
|
|
14
|
+
export declare function KbdGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
15
|
+
//# sourceMappingURL=kbd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kbd.d.ts","sourceRoot":"","sources":["../../../src/components/kbd/kbd.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;;GASG;AACH,wBAAgB,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAYvE;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ5E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
3
|
+
/**
|
|
4
|
+
* Displays which key or combination of keys performs a given action.
|
|
5
|
+
*
|
|
6
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
7
|
+
* @see https://ui.shadcn.com/docs/components/kbd
|
|
8
|
+
*
|
|
9
|
+
* @version 0.1.0
|
|
10
|
+
* @author Forth
|
|
11
|
+
* @copyright 2026 Forth
|
|
12
|
+
*/
|
|
13
|
+
export function Kbd({ className, ...props }) {
|
|
14
|
+
return (_jsx("kbd", { "data-slot": "kbd", className: cn("bg-muted text-muted-foreground pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs font-medium select-none", "[&_svg:not([class*='size-'])]:size-3", className), ...props }));
|
|
15
|
+
}
|
|
16
|
+
/** Groups several `Kbd`s together, e.g. for a "Ctrl + Shift + P" sequence. */
|
|
17
|
+
export function KbdGroup({ className, ...props }) {
|
|
18
|
+
return (_jsx("div", { "data-slot": "kbd-group", className: cn("inline-flex items-center gap-1", className), ...props }));
|
|
19
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { LinkProps } from "./link";
|
|
2
|
+
export { Link } from "./link";
|
|
3
|
+
export type { LinkPreviewMetadata, LinkPreviewProps } from "./link-preview";
|
|
4
|
+
export { LinkPreview } from "./link-preview";
|
|
5
|
+
export type { LinkVariants } from "./variants";
|
|
6
|
+
export { linkVariants } from "./variants";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/link/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
export interface LinkPreviewMetadata {
|
|
3
|
+
title: React.ReactNode;
|
|
4
|
+
description?: React.ReactNode;
|
|
5
|
+
image?: string;
|
|
6
|
+
favicon?: string;
|
|
7
|
+
url?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface LinkPreviewProps {
|
|
10
|
+
metadata: LinkPreviewMetadata;
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Reveals a metadata card (title/description/image) on hover over its
|
|
16
|
+
* trigger — the "unfurl" pattern used for link previews.
|
|
17
|
+
*
|
|
18
|
+
* Metadata is supplied by the caller rather than fetched live: both
|
|
19
|
+
* reference sources (kibo-ui's Glimpse, aceternity's Link Preview) depend
|
|
20
|
+
* on a live external fetch (an Open Graph scrape via an RSC / server
|
|
21
|
+
* action, or a screenshot from the Microlink API respectively) — a
|
|
22
|
+
* network/backend dependency out of scope for a UI-only package. Wire this
|
|
23
|
+
* to your own metadata source (a server action, a cached lookup, etc.) and
|
|
24
|
+
* pass the result in as `metadata`.
|
|
25
|
+
*
|
|
26
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
27
|
+
* @see https://ui.shadcn.com/docs/components/hover-card
|
|
28
|
+
* @see https://www.kibo-ui.com/components/glimpse
|
|
29
|
+
* @see https://ui.aceternity.com/components/link-preview
|
|
30
|
+
*
|
|
31
|
+
* @version 0.1.0
|
|
32
|
+
* @author Forth
|
|
33
|
+
* @copyright 2026 Forth
|
|
34
|
+
*/
|
|
35
|
+
export declare function LinkPreview({ metadata, children, className, }: LinkPreviewProps): React.JSX.Element;
|
|
36
|
+
//# sourceMappingURL=link-preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-preview.d.ts","sourceRoot":"","sources":["../../../src/components/link/link-preview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AASpC,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,qBAiClB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { HoverCard, HoverCardContent, HoverCardTrigger, } from "@forthtilliath/shadcn-ui/components/hover-card";
|
|
3
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
4
|
+
/**
|
|
5
|
+
* Reveals a metadata card (title/description/image) on hover over its
|
|
6
|
+
* trigger — the "unfurl" pattern used for link previews.
|
|
7
|
+
*
|
|
8
|
+
* Metadata is supplied by the caller rather than fetched live: both
|
|
9
|
+
* reference sources (kibo-ui's Glimpse, aceternity's Link Preview) depend
|
|
10
|
+
* on a live external fetch (an Open Graph scrape via an RSC / server
|
|
11
|
+
* action, or a screenshot from the Microlink API respectively) — a
|
|
12
|
+
* network/backend dependency out of scope for a UI-only package. Wire this
|
|
13
|
+
* to your own metadata source (a server action, a cached lookup, etc.) and
|
|
14
|
+
* pass the result in as `metadata`.
|
|
15
|
+
*
|
|
16
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
17
|
+
* @see https://ui.shadcn.com/docs/components/hover-card
|
|
18
|
+
* @see https://www.kibo-ui.com/components/glimpse
|
|
19
|
+
* @see https://ui.aceternity.com/components/link-preview
|
|
20
|
+
*
|
|
21
|
+
* @version 0.1.0
|
|
22
|
+
* @author Forth
|
|
23
|
+
* @copyright 2026 Forth
|
|
24
|
+
*/
|
|
25
|
+
export function LinkPreview({ metadata, children, className, }) {
|
|
26
|
+
return (_jsxs(HoverCard, { openDelay: 150, children: [_jsx(HoverCardTrigger, { asChild: true, children: children }), _jsxs(HoverCardContent, { className: cn("w-80 overflow-hidden p-0", className), children: [metadata.image !== undefined && (_jsx("img", { src: metadata.image, alt: "", className: "aspect-video w-full object-cover" })), _jsxs("div", { className: "space-y-1 p-3", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [metadata.favicon !== undefined && (_jsx("img", { src: metadata.favicon, alt: "", className: "size-3.5" })), metadata.url !== undefined && (_jsx("span", { className: "text-muted-foreground truncate text-xs", children: metadata.url }))] }), _jsx("p", { className: "text-sm leading-none font-medium", children: metadata.title }), metadata.description !== undefined && (_jsx("p", { className: "text-muted-foreground line-clamp-2 text-xs", children: metadata.description }))] })] })] }));
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
import type { LinkVariants } from "./variants";
|
|
3
|
+
export type LinkProps = React.ComponentProps<"a"> & LinkVariants & {
|
|
4
|
+
/**
|
|
5
|
+
* Renders the passed child instead of an `<a>` (e.g. a framework's own
|
|
6
|
+
* `Link`), keeping this component's styling and `isExternal` behavior.
|
|
7
|
+
*/
|
|
8
|
+
asChild?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Adds `target="_blank"` + `rel="noopener noreferrer"` and a trailing
|
|
11
|
+
* arrow icon. Auto-detected from `href` when omitted.
|
|
12
|
+
*/
|
|
13
|
+
isExternal?: boolean;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* A styled hyperlink, or a component that looks like one.
|
|
18
|
+
*
|
|
19
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
20
|
+
* @see https://ktui.io/docs/link
|
|
21
|
+
*
|
|
22
|
+
* @version 0.1.0
|
|
23
|
+
* @author Forth
|
|
24
|
+
* @copyright 2026 Forth
|
|
25
|
+
*/
|
|
26
|
+
export declare function Link({ className, variant, underline, size, asChild, isExternal, disabled, href, children, ...props }: LinkProps): React.JSX.Element;
|
|
27
|
+
//# sourceMappingURL=link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/components/link/link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAMpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAC/C,YAAY,GAAG;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAMJ;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,EACnB,SAAS,EACT,OAAO,EACP,SAAS,EACT,IAAI,EACJ,OAAe,EACf,UAAU,EACV,QAAgB,EAChB,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,SAAS,qBAgCX"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
3
|
+
import { ArrowUpRightIcon } from "lucide-react";
|
|
4
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
5
|
+
import { linkVariants } from "./variants";
|
|
6
|
+
function isExternalHref(href) {
|
|
7
|
+
return href !== undefined && /^https?:\/\//.test(href);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* A styled hyperlink, or a component that looks like one.
|
|
11
|
+
*
|
|
12
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
13
|
+
* @see https://ktui.io/docs/link
|
|
14
|
+
*
|
|
15
|
+
* @version 0.1.0
|
|
16
|
+
* @author Forth
|
|
17
|
+
* @copyright 2026 Forth
|
|
18
|
+
*/
|
|
19
|
+
export function Link({ className, variant, underline, size, asChild = false, isExternal, disabled = false, href, children, ...props }) {
|
|
20
|
+
const external = isExternal ?? isExternalHref(href);
|
|
21
|
+
const sharedProps = {
|
|
22
|
+
"data-slot": "link",
|
|
23
|
+
"data-disabled": disabled,
|
|
24
|
+
href,
|
|
25
|
+
"aria-disabled": disabled,
|
|
26
|
+
target: external ? "_blank" : undefined,
|
|
27
|
+
rel: external ? "noopener noreferrer" : undefined,
|
|
28
|
+
className: cn(linkVariants({ variant, underline, size }), disabled && "pointer-events-none opacity-50", className),
|
|
29
|
+
...props,
|
|
30
|
+
};
|
|
31
|
+
// `Slot` requires a single child to clone props onto, so the
|
|
32
|
+
// auto-appended external-link icon (which would make it two children)
|
|
33
|
+
// is only added for the plain `<a>` case — `asChild` callers own their
|
|
34
|
+
// entire subtree already.
|
|
35
|
+
if (asChild) {
|
|
36
|
+
return _jsx(Slot, { ...sharedProps, children: children });
|
|
37
|
+
}
|
|
38
|
+
return (_jsxs("a", { ...sharedProps, children: [children, external && _jsx(ArrowUpRightIcon, { className: "size-[0.9em]" })] }));
|
|
39
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { VariantProps } from "class-variance-authority";
|
|
2
|
+
export declare const linkVariants: (props?: ({
|
|
3
|
+
variant?: "default" | "primary" | "destructive" | "muted" | null | undefined;
|
|
4
|
+
underline?: "none" | "always" | "hover" | null | undefined;
|
|
5
|
+
size?: "default" | "sm" | "lg" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export type LinkVariants = VariantProps<typeof linkVariants>;
|
|
8
|
+
//# sourceMappingURL=variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/components/link/variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,eAAO,MAAM,YAAY;;;;8EA2BxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { cva } from "class-variance-authority";
|
|
2
|
+
export const linkVariants = cva("focus-visible:ring-ring/50 inline-flex items-center gap-1 rounded-xs outline-none transition-colors focus-visible:ring-2", {
|
|
3
|
+
variants: {
|
|
4
|
+
variant: {
|
|
5
|
+
default: "text-foreground hover:text-primary",
|
|
6
|
+
primary: "text-primary hover:text-primary/80",
|
|
7
|
+
muted: "text-muted-foreground hover:text-foreground",
|
|
8
|
+
destructive: "text-destructive hover:text-destructive/80",
|
|
9
|
+
},
|
|
10
|
+
underline: {
|
|
11
|
+
none: "no-underline",
|
|
12
|
+
hover: "no-underline hover:underline",
|
|
13
|
+
always: "underline",
|
|
14
|
+
},
|
|
15
|
+
size: {
|
|
16
|
+
sm: "text-sm",
|
|
17
|
+
default: "text-base",
|
|
18
|
+
lg: "text-lg",
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
defaultVariants: {
|
|
22
|
+
variant: "default",
|
|
23
|
+
underline: "hover",
|
|
24
|
+
size: "default",
|
|
25
|
+
},
|
|
26
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/marquee/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Marquee } from "./marquee";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
export type MarqueeProps = React.ComponentProps<"div"> & {
|
|
3
|
+
/** Duration for one full loop, in seconds. @default 20 */
|
|
4
|
+
duration?: number;
|
|
5
|
+
reverse?: boolean;
|
|
6
|
+
pauseOnHover?: boolean;
|
|
7
|
+
vertical?: boolean;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Infinitely scrolls its children (a logo wall, a ticker) — two duplicated
|
|
11
|
+
* tracks looped via a pure CSS keyframe, no animation library.
|
|
12
|
+
*
|
|
13
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
14
|
+
* @see https://www.hextaui.com/docs/ui/components/marquee
|
|
15
|
+
* @see https://www.kibo-ui.com/components/marquee
|
|
16
|
+
*
|
|
17
|
+
* @version 0.1.0
|
|
18
|
+
* @author Forth
|
|
19
|
+
* @copyright 2026 Forth
|
|
20
|
+
*/
|
|
21
|
+
export declare function Marquee({ duration, reverse, pauseOnHover, vertical, className, children, ...props }: MarqueeProps): React.JSX.Element;
|
|
22
|
+
//# sourceMappingURL=marquee.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marquee.d.ts","sourceRoot":"","sources":["../../../src/components/marquee/marquee.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IACvD,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,EACtB,QAAa,EACb,OAAe,EACf,YAAoB,EACpB,QAAgB,EAChB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,YAAY,qBA8Bd"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
|
|
3
|
+
/**
|
|
4
|
+
* Infinitely scrolls its children (a logo wall, a ticker) — two duplicated
|
|
5
|
+
* tracks looped via a pure CSS keyframe, no animation library.
|
|
6
|
+
*
|
|
7
|
+
* _Inspired from multiple sources, to make a consistent and reusable component._
|
|
8
|
+
* @see https://www.hextaui.com/docs/ui/components/marquee
|
|
9
|
+
* @see https://www.kibo-ui.com/components/marquee
|
|
10
|
+
*
|
|
11
|
+
* @version 0.1.0
|
|
12
|
+
* @author Forth
|
|
13
|
+
* @copyright 2026 Forth
|
|
14
|
+
*/
|
|
15
|
+
export function Marquee({ duration = 20, reverse = false, pauseOnHover = false, vertical = false, className, children, ...props }) {
|
|
16
|
+
return (_jsx("div", { "data-slot": "marquee", className: cn("group flex overflow-hidden", vertical ? "flex-col" : "flex-row", className), ...props, children: [0, 1].map((track) => (_jsx("div", { "aria-hidden": track === 1, style: { animationDuration: `${duration.toString()}s` }, className: cn("flex shrink-0 justify-around gap-4", vertical
|
|
17
|
+
? "animate-marquee-vertical flex-col"
|
|
18
|
+
: "animate-marquee flex-row", pauseOnHover && "group-hover:[animation-play-state:paused]", reverse && "[animation-direction:reverse]"), children: children }, track))) }));
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/multi-step-loader/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { MultiStepLoader } from "./multi-step-loader";
|