jaci-ui 0.1.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/dist/components/accordion/accordion.cjs +83 -0
- package/dist/components/accordion/accordion.cjs.map +1 -0
- package/dist/components/accordion/accordion.d.cts +32 -0
- package/dist/components/accordion/accordion.d.ts +32 -0
- package/dist/components/accordion/accordion.js +77 -0
- package/dist/components/accordion/accordion.js.map +1 -0
- package/dist/components/accordion/index.d.cts +2 -0
- package/dist/components/accordion/index.d.ts +2 -0
- package/dist/components/alert/alert.cjs +76 -0
- package/dist/components/alert/alert.cjs.map +1 -0
- package/dist/components/alert/alert.d.cts +26 -0
- package/dist/components/alert/alert.d.ts +26 -0
- package/dist/components/alert/alert.js +72 -0
- package/dist/components/alert/alert.js.map +1 -0
- package/dist/components/alert/index.d.cts +2 -0
- package/dist/components/alert/index.d.ts +2 -0
- package/dist/components/alert-dialog/alert-dialog.cjs +147 -0
- package/dist/components/alert-dialog/alert-dialog.cjs.map +1 -0
- package/dist/components/alert-dialog/alert-dialog.d.cts +73 -0
- package/dist/components/alert-dialog/alert-dialog.d.ts +73 -0
- package/dist/components/alert-dialog/alert-dialog.js +133 -0
- package/dist/components/alert-dialog/alert-dialog.js.map +1 -0
- package/dist/components/alert-dialog/index.d.cts +2 -0
- package/dist/components/alert-dialog/index.d.ts +2 -0
- package/dist/components/avatar/avatar.cjs +89 -0
- package/dist/components/avatar/avatar.cjs.map +1 -0
- package/dist/components/avatar/avatar.d.cts +33 -0
- package/dist/components/avatar/avatar.d.ts +33 -0
- package/dist/components/avatar/avatar.js +86 -0
- package/dist/components/avatar/avatar.js.map +1 -0
- package/dist/components/avatar/index.d.cts +2 -0
- package/dist/components/avatar/index.d.ts +2 -0
- package/dist/components/base-ui.cjs +14 -0
- package/dist/components/base-ui.cjs.map +1 -0
- package/dist/components/base-ui.js +14 -0
- package/dist/components/base-ui.js.map +1 -0
- package/dist/components/breadcrumbs/breadcrumbs.cjs +84 -0
- package/dist/components/breadcrumbs/breadcrumbs.cjs.map +1 -0
- package/dist/components/breadcrumbs/breadcrumbs.d.cts +31 -0
- package/dist/components/breadcrumbs/breadcrumbs.d.ts +31 -0
- package/dist/components/breadcrumbs/breadcrumbs.js +78 -0
- package/dist/components/breadcrumbs/breadcrumbs.js.map +1 -0
- package/dist/components/breadcrumbs/index.d.cts +2 -0
- package/dist/components/breadcrumbs/index.d.ts +2 -0
- package/dist/components/button/button.cjs +54 -0
- package/dist/components/button/button.cjs.map +1 -0
- package/dist/components/button/button.d.cts +21 -0
- package/dist/components/button/button.d.ts +21 -0
- package/dist/components/button/button.js +54 -0
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/button/index.d.cts +2 -0
- package/dist/components/button/index.d.ts +2 -0
- package/dist/components/card/card.cjs +55 -0
- package/dist/components/card/card.cjs.map +1 -0
- package/dist/components/card/card.d.cts +13 -0
- package/dist/components/card/card.d.ts +13 -0
- package/dist/components/card/card.js +51 -0
- package/dist/components/card/card.js.map +1 -0
- package/dist/components/card/index.d.cts +2 -0
- package/dist/components/card/index.d.ts +2 -0
- package/dist/components/checkbox-group/checkbox-group.cjs +85 -0
- package/dist/components/checkbox-group/checkbox-group.cjs.map +1 -0
- package/dist/components/checkbox-group/checkbox-group.d.cts +37 -0
- package/dist/components/checkbox-group/checkbox-group.d.ts +37 -0
- package/dist/components/checkbox-group/checkbox-group.js +79 -0
- package/dist/components/checkbox-group/checkbox-group.js.map +1 -0
- package/dist/components/checkbox-group/index.d.cts +2 -0
- package/dist/components/checkbox-group/index.d.ts +2 -0
- package/dist/components/collapsible/collapsible.cjs +59 -0
- package/dist/components/collapsible/collapsible.cjs.map +1 -0
- package/dist/components/collapsible/collapsible.d.cts +22 -0
- package/dist/components/collapsible/collapsible.d.ts +22 -0
- package/dist/components/collapsible/collapsible.js +55 -0
- package/dist/components/collapsible/collapsible.js.map +1 -0
- package/dist/components/collapsible/index.d.cts +2 -0
- package/dist/components/collapsible/index.d.ts +2 -0
- package/dist/components/color-picker/color-picker.cjs +360 -0
- package/dist/components/color-picker/color-picker.cjs.map +1 -0
- package/dist/components/color-picker/color-picker.d.cts +94 -0
- package/dist/components/color-picker/color-picker.d.ts +94 -0
- package/dist/components/color-picker/color-picker.js +344 -0
- package/dist/components/color-picker/color-picker.js.map +1 -0
- package/dist/components/color-picker/color-utils.cjs +162 -0
- package/dist/components/color-picker/color-utils.cjs.map +1 -0
- package/dist/components/color-picker/color-utils.d.cts +14 -0
- package/dist/components/color-picker/color-utils.d.ts +14 -0
- package/dist/components/color-picker/color-utils.js +160 -0
- package/dist/components/color-picker/color-utils.js.map +1 -0
- package/dist/components/color-picker/index.d.cts +3 -0
- package/dist/components/color-picker/index.d.ts +3 -0
- package/dist/components/combobox/combobox.cjs +218 -0
- package/dist/components/combobox/combobox.cjs.map +1 -0
- package/dist/components/combobox/combobox.d.cts +81 -0
- package/dist/components/combobox/combobox.d.ts +81 -0
- package/dist/components/combobox/combobox.js +199 -0
- package/dist/components/combobox/combobox.js.map +1 -0
- package/dist/components/combobox/index.d.cts +2 -0
- package/dist/components/combobox/index.d.ts +2 -0
- package/dist/components/command/command.cjs +303 -0
- package/dist/components/command/command.cjs.map +1 -0
- package/dist/components/command/command.d.cts +50 -0
- package/dist/components/command/command.d.ts +50 -0
- package/dist/components/command/command.js +294 -0
- package/dist/components/command/command.js.map +1 -0
- package/dist/components/command/index.d.cts +2 -0
- package/dist/components/command/index.d.ts +2 -0
- package/dist/components/context-menu/context-menu.cjs +175 -0
- package/dist/components/context-menu/context-menu.cjs.map +1 -0
- package/dist/components/context-menu/context-menu.d.cts +69 -0
- package/dist/components/context-menu/context-menu.d.ts +69 -0
- package/dist/components/context-menu/context-menu.js +156 -0
- package/dist/components/context-menu/context-menu.js.map +1 -0
- package/dist/components/context-menu/index.d.cts +2 -0
- package/dist/components/context-menu/index.d.ts +2 -0
- package/dist/components/controls/checkbox.cjs +33 -0
- package/dist/components/controls/checkbox.cjs.map +1 -0
- package/dist/components/controls/checkbox.d.cts +12 -0
- package/dist/components/controls/checkbox.d.ts +12 -0
- package/dist/components/controls/checkbox.js +33 -0
- package/dist/components/controls/checkbox.js.map +1 -0
- package/dist/components/controls/index.d.cts +6 -0
- package/dist/components/controls/index.d.ts +6 -0
- package/dist/components/controls/input.cjs +29 -0
- package/dist/components/controls/input.cjs.map +1 -0
- package/dist/components/controls/input.d.cts +9 -0
- package/dist/components/controls/input.d.ts +9 -0
- package/dist/components/controls/input.js +29 -0
- package/dist/components/controls/input.js.map +1 -0
- package/dist/components/controls/radio.cjs +20 -0
- package/dist/components/controls/radio.cjs.map +1 -0
- package/dist/components/controls/radio.d.cts +7 -0
- package/dist/components/controls/radio.d.ts +7 -0
- package/dist/components/controls/radio.js +20 -0
- package/dist/components/controls/radio.js.map +1 -0
- package/dist/components/controls/switch.cjs +30 -0
- package/dist/components/controls/switch.cjs.map +1 -0
- package/dist/components/controls/switch.d.cts +10 -0
- package/dist/components/controls/switch.d.ts +10 -0
- package/dist/components/controls/switch.js +30 -0
- package/dist/components/controls/switch.js.map +1 -0
- package/dist/components/controls/textarea.cjs +30 -0
- package/dist/components/controls/textarea.cjs.map +1 -0
- package/dist/components/controls/textarea.d.cts +9 -0
- package/dist/components/controls/textarea.d.ts +9 -0
- package/dist/components/controls/textarea.js +30 -0
- package/dist/components/controls/textarea.js.map +1 -0
- package/dist/components/copyable/copyable.cjs +124 -0
- package/dist/components/copyable/copyable.cjs.map +1 -0
- package/dist/components/copyable/copyable.d.cts +27 -0
- package/dist/components/copyable/copyable.d.ts +27 -0
- package/dist/components/copyable/copyable.js +121 -0
- package/dist/components/copyable/copyable.js.map +1 -0
- package/dist/components/copyable/index.d.cts +2 -0
- package/dist/components/copyable/index.d.ts +2 -0
- package/dist/components/data-view/data-view.cjs +85 -0
- package/dist/components/data-view/data-view.cjs.map +1 -0
- package/dist/components/data-view/data-view.d.cts +31 -0
- package/dist/components/data-view/data-view.d.ts +31 -0
- package/dist/components/data-view/data-view.js +79 -0
- package/dist/components/data-view/data-view.js.map +1 -0
- package/dist/components/data-view/index.d.cts +2 -0
- package/dist/components/data-view/index.d.ts +2 -0
- package/dist/components/date-picker/date-picker.cjs +448 -0
- package/dist/components/date-picker/date-picker.cjs.map +1 -0
- package/dist/components/date-picker/date-picker.d.cts +118 -0
- package/dist/components/date-picker/date-picker.d.ts +118 -0
- package/dist/components/date-picker/date-picker.js +432 -0
- package/dist/components/date-picker/date-picker.js.map +1 -0
- package/dist/components/date-picker/date-utils.cjs +80 -0
- package/dist/components/date-picker/date-utils.cjs.map +1 -0
- package/dist/components/date-picker/date-utils.js +66 -0
- package/dist/components/date-picker/date-utils.js.map +1 -0
- package/dist/components/date-picker/index.d.cts +2 -0
- package/dist/components/date-picker/index.d.ts +2 -0
- package/dist/components/dialog/dialog.cjs +130 -0
- package/dist/components/dialog/dialog.cjs.map +1 -0
- package/dist/components/dialog/dialog.d.cts +55 -0
- package/dist/components/dialog/dialog.d.ts +55 -0
- package/dist/components/dialog/dialog.js +118 -0
- package/dist/components/dialog/dialog.js.map +1 -0
- package/dist/components/dialog/index.d.cts +2 -0
- package/dist/components/dialog/index.d.ts +2 -0
- package/dist/components/drawer/drawer.cjs +165 -0
- package/dist/components/drawer/drawer.cjs.map +1 -0
- package/dist/components/drawer/drawer.d.cts +58 -0
- package/dist/components/drawer/drawer.d.ts +58 -0
- package/dist/components/drawer/drawer.js +153 -0
- package/dist/components/drawer/drawer.js.map +1 -0
- package/dist/components/drawer/index.d.cts +2 -0
- package/dist/components/drawer/index.d.ts +2 -0
- package/dist/components/feedback/badge.cjs +18 -0
- package/dist/components/feedback/badge.cjs.map +1 -0
- package/dist/components/feedback/badge.d.cts +9 -0
- package/dist/components/feedback/badge.d.ts +9 -0
- package/dist/components/feedback/badge.js +18 -0
- package/dist/components/feedback/badge.js.map +1 -0
- package/dist/components/feedback/index.d.cts +2 -0
- package/dist/components/feedback/index.d.ts +2 -0
- package/dist/components/field/field.cjs +127 -0
- package/dist/components/field/field.cjs.map +1 -0
- package/dist/components/field/field.d.cts +47 -0
- package/dist/components/field/field.d.ts +47 -0
- package/dist/components/field/field.js +123 -0
- package/dist/components/field/field.js.map +1 -0
- package/dist/components/field/index.d.cts +2 -0
- package/dist/components/field/index.d.ts +2 -0
- package/dist/components/fieldset/fieldset.cjs +48 -0
- package/dist/components/fieldset/fieldset.cjs.map +1 -0
- package/dist/components/fieldset/fieldset.d.cts +17 -0
- package/dist/components/fieldset/fieldset.d.ts +17 -0
- package/dist/components/fieldset/fieldset.js +45 -0
- package/dist/components/fieldset/fieldset.js.map +1 -0
- package/dist/components/fieldset/index.d.cts +2 -0
- package/dist/components/fieldset/index.d.ts +2 -0
- package/dist/components/form/form.cjs +27 -0
- package/dist/components/form/form.cjs.map +1 -0
- package/dist/components/form/form.d.cts +18 -0
- package/dist/components/form/form.d.ts +18 -0
- package/dist/components/form/form.js +26 -0
- package/dist/components/form/form.js.map +1 -0
- package/dist/components/form/index.d.cts +2 -0
- package/dist/components/form/index.d.ts +2 -0
- package/dist/components/layout/index.cjs +73 -0
- package/dist/components/layout/index.cjs.map +1 -0
- package/dist/components/layout/index.d.cts +35 -0
- package/dist/components/layout/index.d.ts +35 -0
- package/dist/components/layout/index.js +69 -0
- package/dist/components/layout/index.js.map +1 -0
- package/dist/components/list/index.d.cts +2 -0
- package/dist/components/list/index.d.ts +2 -0
- package/dist/components/list/list.cjs +86 -0
- package/dist/components/list/list.cjs.map +1 -0
- package/dist/components/list/list.d.cts +37 -0
- package/dist/components/list/list.d.ts +37 -0
- package/dist/components/list/list.js +80 -0
- package/dist/components/list/list.js.map +1 -0
- package/dist/components/menu/index.d.cts +2 -0
- package/dist/components/menu/index.d.ts +2 -0
- package/dist/components/menu/menu.cjs +108 -0
- package/dist/components/menu/menu.cjs.map +1 -0
- package/dist/components/menu/menu.d.cts +47 -0
- package/dist/components/menu/menu.d.ts +47 -0
- package/dist/components/menu/menu.js +98 -0
- package/dist/components/menu/menu.js.map +1 -0
- package/dist/components/menubar/index.d.cts +2 -0
- package/dist/components/menubar/index.d.ts +2 -0
- package/dist/components/menubar/menubar.cjs +206 -0
- package/dist/components/menubar/menubar.cjs.map +1 -0
- package/dist/components/menubar/menubar.d.cts +74 -0
- package/dist/components/menubar/menubar.d.ts +74 -0
- package/dist/components/menubar/menubar.js +187 -0
- package/dist/components/menubar/menubar.js.map +1 -0
- package/dist/components/meter/index.d.cts +2 -0
- package/dist/components/meter/index.d.ts +2 -0
- package/dist/components/meter/meter.cjs +91 -0
- package/dist/components/meter/meter.cjs.map +1 -0
- package/dist/components/meter/meter.d.cts +30 -0
- package/dist/components/meter/meter.d.ts +30 -0
- package/dist/components/meter/meter.js +86 -0
- package/dist/components/meter/meter.js.map +1 -0
- package/dist/components/navigation/index.d.cts +2 -0
- package/dist/components/navigation/index.d.ts +2 -0
- package/dist/components/navigation/navigation.cjs +163 -0
- package/dist/components/navigation/navigation.cjs.map +1 -0
- package/dist/components/navigation/navigation.d.cts +75 -0
- package/dist/components/navigation/navigation.d.ts +75 -0
- package/dist/components/navigation/navigation.js +151 -0
- package/dist/components/navigation/navigation.js.map +1 -0
- package/dist/components/navigation-menu/index.d.cts +2 -0
- package/dist/components/navigation-menu/index.d.ts +2 -0
- package/dist/components/navigation-menu/navigation-menu.cjs +214 -0
- package/dist/components/navigation-menu/navigation-menu.cjs.map +1 -0
- package/dist/components/navigation-menu/navigation-menu.d.cts +54 -0
- package/dist/components/navigation-menu/navigation-menu.d.ts +54 -0
- package/dist/components/navigation-menu/navigation-menu.js +201 -0
- package/dist/components/navigation-menu/navigation-menu.js.map +1 -0
- package/dist/components/number-field/index.d.cts +2 -0
- package/dist/components/number-field/index.d.ts +2 -0
- package/dist/components/number-field/number-field.cjs +124 -0
- package/dist/components/number-field/number-field.cjs.map +1 -0
- package/dist/components/number-field/number-field.d.cts +48 -0
- package/dist/components/number-field/number-field.d.ts +48 -0
- package/dist/components/number-field/number-field.js +116 -0
- package/dist/components/number-field/number-field.js.map +1 -0
- package/dist/components/option-selector/index.d.cts +2 -0
- package/dist/components/option-selector/index.d.ts +2 -0
- package/dist/components/option-selector/option-selector.cjs +105 -0
- package/dist/components/option-selector/option-selector.cjs.map +1 -0
- package/dist/components/option-selector/option-selector.d.cts +46 -0
- package/dist/components/option-selector/option-selector.d.ts +46 -0
- package/dist/components/option-selector/option-selector.js +105 -0
- package/dist/components/option-selector/option-selector.js.map +1 -0
- package/dist/components/pagination/index.d.cts +2 -0
- package/dist/components/pagination/index.d.ts +2 -0
- package/dist/components/pagination/pagination.cjs +132 -0
- package/dist/components/pagination/pagination.cjs.map +1 -0
- package/dist/components/pagination/pagination.d.cts +44 -0
- package/dist/components/pagination/pagination.d.ts +44 -0
- package/dist/components/pagination/pagination.js +125 -0
- package/dist/components/pagination/pagination.js.map +1 -0
- package/dist/components/popover/index.d.cts +2 -0
- package/dist/components/popover/index.d.ts +2 -0
- package/dist/components/popover/popover.cjs +98 -0
- package/dist/components/popover/popover.cjs.map +1 -0
- package/dist/components/popover/popover.d.cts +61 -0
- package/dist/components/popover/popover.d.ts +61 -0
- package/dist/components/popover/popover.js +89 -0
- package/dist/components/popover/popover.js.map +1 -0
- package/dist/components/progress/index.d.cts +2 -0
- package/dist/components/progress/index.d.ts +2 -0
- package/dist/components/progress/progress.cjs +59 -0
- package/dist/components/progress/progress.cjs.map +1 -0
- package/dist/components/progress/progress.d.cts +20 -0
- package/dist/components/progress/progress.d.ts +20 -0
- package/dist/components/progress/progress.js +59 -0
- package/dist/components/progress/progress.js.map +1 -0
- package/dist/components/radio-group/index.d.cts +2 -0
- package/dist/components/radio-group/index.d.ts +2 -0
- package/dist/components/radio-group/radio-group.cjs +90 -0
- package/dist/components/radio-group/radio-group.cjs.map +1 -0
- package/dist/components/radio-group/radio-group.d.cts +40 -0
- package/dist/components/radio-group/radio-group.d.ts +40 -0
- package/dist/components/radio-group/radio-group.js +84 -0
- package/dist/components/radio-group/radio-group.js.map +1 -0
- package/dist/components/range-slider/index.d.cts +2 -0
- package/dist/components/range-slider/index.d.ts +2 -0
- package/dist/components/range-slider/range-slider.cjs +103 -0
- package/dist/components/range-slider/range-slider.cjs.map +1 -0
- package/dist/components/range-slider/range-slider.d.cts +40 -0
- package/dist/components/range-slider/range-slider.d.ts +40 -0
- package/dist/components/range-slider/range-slider.js +96 -0
- package/dist/components/range-slider/range-slider.js.map +1 -0
- package/dist/components/scroll-area/index.d.cts +2 -0
- package/dist/components/scroll-area/index.d.ts +2 -0
- package/dist/components/scroll-area/scroll-area.cjs +76 -0
- package/dist/components/scroll-area/scroll-area.cjs.map +1 -0
- package/dist/components/scroll-area/scroll-area.d.cts +26 -0
- package/dist/components/scroll-area/scroll-area.d.ts +26 -0
- package/dist/components/scroll-area/scroll-area.js +70 -0
- package/dist/components/scroll-area/scroll-area.js.map +1 -0
- package/dist/components/select/index.d.cts +2 -0
- package/dist/components/select/index.d.ts +2 -0
- package/dist/components/select/select.cjs +171 -0
- package/dist/components/select/select.cjs.map +1 -0
- package/dist/components/select/select.d.cts +74 -0
- package/dist/components/select/select.d.ts +74 -0
- package/dist/components/select/select.js +156 -0
- package/dist/components/select/select.js.map +1 -0
- package/dist/components/sidebar/index.d.cts +2 -0
- package/dist/components/sidebar/index.d.ts +2 -0
- package/dist/components/sidebar/sidebar.cjs +162 -0
- package/dist/components/sidebar/sidebar.cjs.map +1 -0
- package/dist/components/sidebar/sidebar.d.cts +64 -0
- package/dist/components/sidebar/sidebar.d.ts +64 -0
- package/dist/components/sidebar/sidebar.js +154 -0
- package/dist/components/sidebar/sidebar.js.map +1 -0
- package/dist/components/skeleton/index.d.cts +2 -0
- package/dist/components/skeleton/index.d.ts +2 -0
- package/dist/components/skeleton/skeleton.cjs +25 -0
- package/dist/components/skeleton/skeleton.cjs.map +1 -0
- package/dist/components/skeleton/skeleton.d.cts +13 -0
- package/dist/components/skeleton/skeleton.d.ts +13 -0
- package/dist/components/skeleton/skeleton.js +25 -0
- package/dist/components/skeleton/skeleton.js.map +1 -0
- package/dist/components/slider/index.d.cts +2 -0
- package/dist/components/slider/index.d.ts +2 -0
- package/dist/components/slider/slider.cjs +96 -0
- package/dist/components/slider/slider.cjs.map +1 -0
- package/dist/components/slider/slider.d.cts +39 -0
- package/dist/components/slider/slider.d.ts +39 -0
- package/dist/components/slider/slider.js +89 -0
- package/dist/components/slider/slider.js.map +1 -0
- package/dist/components/table/index.d.cts +2 -0
- package/dist/components/table/index.d.ts +2 -0
- package/dist/components/table/table.cjs +196 -0
- package/dist/components/table/table.cjs.map +1 -0
- package/dist/components/table/table.d.cts +66 -0
- package/dist/components/table/table.d.ts +66 -0
- package/dist/components/table/table.js +184 -0
- package/dist/components/table/table.js.map +1 -0
- package/dist/components/tabs/index.d.cts +2 -0
- package/dist/components/tabs/index.d.ts +2 -0
- package/dist/components/tabs/tabs.cjs +65 -0
- package/dist/components/tabs/tabs.cjs.map +1 -0
- package/dist/components/tabs/tabs.d.cts +23 -0
- package/dist/components/tabs/tabs.d.ts +23 -0
- package/dist/components/tabs/tabs.js +61 -0
- package/dist/components/tabs/tabs.js.map +1 -0
- package/dist/components/tags-input/index.d.cts +2 -0
- package/dist/components/tags-input/index.d.ts +2 -0
- package/dist/components/tags-input/tags-input.cjs +172 -0
- package/dist/components/tags-input/tags-input.cjs.map +1 -0
- package/dist/components/tags-input/tags-input.d.cts +26 -0
- package/dist/components/tags-input/tags-input.d.ts +26 -0
- package/dist/components/tags-input/tags-input.js +172 -0
- package/dist/components/tags-input/tags-input.js.map +1 -0
- package/dist/components/toast/index.d.cts +2 -0
- package/dist/components/toast/index.d.ts +2 -0
- package/dist/components/toast/toast.cjs +135 -0
- package/dist/components/toast/toast.cjs.map +1 -0
- package/dist/components/toast/toast.d.cts +61 -0
- package/dist/components/toast/toast.d.ts +61 -0
- package/dist/components/toast/toast.js +125 -0
- package/dist/components/toast/toast.js.map +1 -0
- package/dist/components/toggle/index.d.cts +2 -0
- package/dist/components/toggle/index.d.ts +2 -0
- package/dist/components/toggle/toggle.cjs +25 -0
- package/dist/components/toggle/toggle.cjs.map +1 -0
- package/dist/components/toggle/toggle.d.cts +16 -0
- package/dist/components/toggle/toggle.d.ts +16 -0
- package/dist/components/toggle/toggle.js +25 -0
- package/dist/components/toggle/toggle.js.map +1 -0
- package/dist/components/toggle-group/index.d.cts +2 -0
- package/dist/components/toggle-group/index.d.ts +2 -0
- package/dist/components/toggle-group/toggle-group.cjs +52 -0
- package/dist/components/toggle-group/toggle-group.cjs.map +1 -0
- package/dist/components/toggle-group/toggle-group.d.cts +25 -0
- package/dist/components/toggle-group/toggle-group.d.ts +25 -0
- package/dist/components/toggle-group/toggle-group.js +50 -0
- package/dist/components/toggle-group/toggle-group.js.map +1 -0
- package/dist/components/toolbar/index.d.cts +2 -0
- package/dist/components/toolbar/index.d.ts +2 -0
- package/dist/components/toolbar/toolbar.cjs +85 -0
- package/dist/components/toolbar/toolbar.cjs.map +1 -0
- package/dist/components/toolbar/toolbar.d.cts +34 -0
- package/dist/components/toolbar/toolbar.d.ts +34 -0
- package/dist/components/toolbar/toolbar.js +79 -0
- package/dist/components/toolbar/toolbar.js.map +1 -0
- package/dist/components/tooltip/index.d.cts +2 -0
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/components/tooltip/tooltip.cjs +65 -0
- package/dist/components/tooltip/tooltip.cjs.map +1 -0
- package/dist/components/tooltip/tooltip.d.cts +28 -0
- package/dist/components/tooltip/tooltip.d.ts +28 -0
- package/dist/components/tooltip/tooltip.js +59 -0
- package/dist/components/tooltip/tooltip.js.map +1 -0
- package/dist/components/tree-view/index.d.cts +2 -0
- package/dist/components/tree-view/index.d.ts +2 -0
- package/dist/components/tree-view/tree-view.cjs +345 -0
- package/dist/components/tree-view/tree-view.cjs.map +1 -0
- package/dist/components/tree-view/tree-view.d.cts +39 -0
- package/dist/components/tree-view/tree-view.d.ts +39 -0
- package/dist/components/tree-view/tree-view.js +340 -0
- package/dist/components/tree-view/tree-view.js.map +1 -0
- package/dist/components/typography/heading.cjs +28 -0
- package/dist/components/typography/heading.cjs.map +1 -0
- package/dist/components/typography/heading.d.cts +12 -0
- package/dist/components/typography/heading.d.ts +12 -0
- package/dist/components/typography/heading.js +28 -0
- package/dist/components/typography/heading.js.map +1 -0
- package/dist/components/typography/index.d.cts +5 -0
- package/dist/components/typography/index.d.ts +5 -0
- package/dist/components/typography/link.cjs +18 -0
- package/dist/components/typography/link.cjs.map +1 -0
- package/dist/components/typography/link.d.cts +9 -0
- package/dist/components/typography/link.d.ts +9 -0
- package/dist/components/typography/link.js +18 -0
- package/dist/components/typography/link.js.map +1 -0
- package/dist/components/typography/paragraph.cjs +18 -0
- package/dist/components/typography/paragraph.cjs.map +1 -0
- package/dist/components/typography/paragraph.d.cts +7 -0
- package/dist/components/typography/paragraph.d.ts +7 -0
- package/dist/components/typography/paragraph.js +18 -0
- package/dist/components/typography/paragraph.js.map +1 -0
- package/dist/components/typography/text.cjs +21 -0
- package/dist/components/typography/text.cjs.map +1 -0
- package/dist/components/typography/text.d.cts +14 -0
- package/dist/components/typography/text.d.ts +14 -0
- package/dist/components/typography/text.js +21 -0
- package/dist/components/typography/text.js.map +1 -0
- package/dist/components/upload/index.d.cts +2 -0
- package/dist/components/upload/index.d.ts +2 -0
- package/dist/components/upload/upload.cjs +411 -0
- package/dist/components/upload/upload.cjs.map +1 -0
- package/dist/components/upload/upload.d.cts +91 -0
- package/dist/components/upload/upload.d.ts +91 -0
- package/dist/components/upload/upload.js +398 -0
- package/dist/components/upload/upload.js.map +1 -0
- package/dist/components/visually-hidden/index.d.cts +2 -0
- package/dist/components/visually-hidden/index.d.ts +2 -0
- package/dist/components/visually-hidden/visually-hidden.cjs +18 -0
- package/dist/components/visually-hidden/visually-hidden.cjs.map +1 -0
- package/dist/components/visually-hidden/visually-hidden.d.cts +7 -0
- package/dist/components/visually-hidden/visually-hidden.d.ts +7 -0
- package/dist/components/visually-hidden/visually-hidden.js +18 -0
- package/dist/components/visually-hidden/visually-hidden.js.map +1 -0
- package/dist/index.cjs +494 -0
- package/dist/index.d.cts +116 -0
- package/dist/index.d.ts +116 -0
- package/dist/index.js +63 -0
- package/dist/panda-preset.cjs +11 -0
- package/dist/panda-preset.cjs.map +1 -0
- package/dist/panda-preset.d.cts +4 -0
- package/dist/panda-preset.d.ts +5 -0
- package/dist/panda-preset.js +12 -0
- package/dist/panda-preset.js.map +1 -0
- package/dist/styled-system/css/conditions.cjs +31 -0
- package/dist/styled-system/css/conditions.cjs.map +1 -0
- package/dist/styled-system/css/conditions.js +29 -0
- package/dist/styled-system/css/conditions.js.map +1 -0
- package/dist/styled-system/css/css.cjs +48 -0
- package/dist/styled-system/css/css.cjs.map +1 -0
- package/dist/styled-system/css/css.js +47 -0
- package/dist/styled-system/css/css.js.map +1 -0
- package/dist/styled-system/css/cva.cjs +20 -0
- package/dist/styled-system/css/cva.cjs.map +1 -0
- package/dist/styled-system/css/cva.js +19 -0
- package/dist/styled-system/css/cva.js.map +1 -0
- package/dist/styled-system/css/cx.cjs +13 -0
- package/dist/styled-system/css/cx.cjs.map +1 -0
- package/dist/styled-system/css/cx.js +13 -0
- package/dist/styled-system/css/cx.js.map +1 -0
- package/dist/styled-system/helpers.cjs +231 -0
- package/dist/styled-system/helpers.cjs.map +1 -0
- package/dist/styled-system/helpers.js +216 -0
- package/dist/styled-system/helpers.js.map +1 -0
- package/dist/styled-system/recipes/accordion.cjs +37 -0
- package/dist/styled-system/recipes/accordion.cjs.map +1 -0
- package/dist/styled-system/recipes/accordion.js +37 -0
- package/dist/styled-system/recipes/accordion.js.map +1 -0
- package/dist/styled-system/recipes/alert.cjs +40 -0
- package/dist/styled-system/recipes/alert.cjs.map +1 -0
- package/dist/styled-system/recipes/alert.js +40 -0
- package/dist/styled-system/recipes/alert.js.map +1 -0
- package/dist/styled-system/recipes/avatar.cjs +46 -0
- package/dist/styled-system/recipes/avatar.cjs.map +1 -0
- package/dist/styled-system/recipes/avatar.js +46 -0
- package/dist/styled-system/recipes/avatar.js.map +1 -0
- package/dist/styled-system/recipes/badge.cjs +31 -0
- package/dist/styled-system/recipes/badge.cjs.map +1 -0
- package/dist/styled-system/recipes/badge.js +31 -0
- package/dist/styled-system/recipes/badge.js.map +1 -0
- package/dist/styled-system/recipes/bottom-navigation.cjs +30 -0
- package/dist/styled-system/recipes/bottom-navigation.cjs.map +1 -0
- package/dist/styled-system/recipes/bottom-navigation.js +30 -0
- package/dist/styled-system/recipes/bottom-navigation.js.map +1 -0
- package/dist/styled-system/recipes/breadcrumbs.cjs +37 -0
- package/dist/styled-system/recipes/breadcrumbs.cjs.map +1 -0
- package/dist/styled-system/recipes/breadcrumbs.js +37 -0
- package/dist/styled-system/recipes/breadcrumbs.js.map +1 -0
- package/dist/styled-system/recipes/button.cjs +42 -0
- package/dist/styled-system/recipes/button.cjs.map +1 -0
- package/dist/styled-system/recipes/button.js +42 -0
- package/dist/styled-system/recipes/button.js.map +1 -0
- package/dist/styled-system/recipes/card.cjs +40 -0
- package/dist/styled-system/recipes/card.cjs.map +1 -0
- package/dist/styled-system/recipes/card.js +40 -0
- package/dist/styled-system/recipes/card.js.map +1 -0
- package/dist/styled-system/recipes/checkbox-group.cjs +37 -0
- package/dist/styled-system/recipes/checkbox-group.cjs.map +1 -0
- package/dist/styled-system/recipes/checkbox-group.js +37 -0
- package/dist/styled-system/recipes/checkbox-group.js.map +1 -0
- package/dist/styled-system/recipes/checkbox.cjs +30 -0
- package/dist/styled-system/recipes/checkbox.cjs.map +1 -0
- package/dist/styled-system/recipes/checkbox.js +30 -0
- package/dist/styled-system/recipes/checkbox.js.map +1 -0
- package/dist/styled-system/recipes/collapsible.cjs +35 -0
- package/dist/styled-system/recipes/collapsible.cjs.map +1 -0
- package/dist/styled-system/recipes/collapsible.js +35 -0
- package/dist/styled-system/recipes/collapsible.js.map +1 -0
- package/dist/styled-system/recipes/color-picker.cjs +46 -0
- package/dist/styled-system/recipes/color-picker.cjs.map +1 -0
- package/dist/styled-system/recipes/color-picker.js +46 -0
- package/dist/styled-system/recipes/color-picker.js.map +1 -0
- package/dist/styled-system/recipes/combobox.cjs +53 -0
- package/dist/styled-system/recipes/combobox.cjs.map +1 -0
- package/dist/styled-system/recipes/combobox.js +53 -0
- package/dist/styled-system/recipes/combobox.js.map +1 -0
- package/dist/styled-system/recipes/command.cjs +41 -0
- package/dist/styled-system/recipes/command.cjs.map +1 -0
- package/dist/styled-system/recipes/command.js +41 -0
- package/dist/styled-system/recipes/command.js.map +1 -0
- package/dist/styled-system/recipes/copyable.cjs +35 -0
- package/dist/styled-system/recipes/copyable.cjs.map +1 -0
- package/dist/styled-system/recipes/copyable.js +35 -0
- package/dist/styled-system/recipes/copyable.js.map +1 -0
- package/dist/styled-system/recipes/create-recipe.cjs +80 -0
- package/dist/styled-system/recipes/create-recipe.cjs.map +1 -0
- package/dist/styled-system/recipes/create-recipe.js +79 -0
- package/dist/styled-system/recipes/create-recipe.js.map +1 -0
- package/dist/styled-system/recipes/data-view.cjs +52 -0
- package/dist/styled-system/recipes/data-view.cjs.map +1 -0
- package/dist/styled-system/recipes/data-view.js +52 -0
- package/dist/styled-system/recipes/data-view.js.map +1 -0
- package/dist/styled-system/recipes/date-picker.cjs +51 -0
- package/dist/styled-system/recipes/date-picker.cjs.map +1 -0
- package/dist/styled-system/recipes/date-picker.js +51 -0
- package/dist/styled-system/recipes/date-picker.js.map +1 -0
- package/dist/styled-system/recipes/dialog.cjs +46 -0
- package/dist/styled-system/recipes/dialog.cjs.map +1 -0
- package/dist/styled-system/recipes/dialog.js +46 -0
- package/dist/styled-system/recipes/dialog.js.map +1 -0
- package/dist/styled-system/recipes/drawer.cjs +46 -0
- package/dist/styled-system/recipes/drawer.cjs.map +1 -0
- package/dist/styled-system/recipes/drawer.js +46 -0
- package/dist/styled-system/recipes/drawer.js.map +1 -0
- package/dist/styled-system/recipes/field.cjs +36 -0
- package/dist/styled-system/recipes/field.cjs.map +1 -0
- package/dist/styled-system/recipes/field.js +36 -0
- package/dist/styled-system/recipes/field.js.map +1 -0
- package/dist/styled-system/recipes/fieldset.cjs +34 -0
- package/dist/styled-system/recipes/fieldset.cjs.map +1 -0
- package/dist/styled-system/recipes/fieldset.js +34 -0
- package/dist/styled-system/recipes/fieldset.js.map +1 -0
- package/dist/styled-system/recipes/form.cjs +25 -0
- package/dist/styled-system/recipes/form.cjs.map +1 -0
- package/dist/styled-system/recipes/form.js +25 -0
- package/dist/styled-system/recipes/form.js.map +1 -0
- package/dist/styled-system/recipes/heading.cjs +32 -0
- package/dist/styled-system/recipes/heading.cjs.map +1 -0
- package/dist/styled-system/recipes/heading.js +32 -0
- package/dist/styled-system/recipes/heading.js.map +1 -0
- package/dist/styled-system/recipes/input.cjs +29 -0
- package/dist/styled-system/recipes/input.cjs.map +1 -0
- package/dist/styled-system/recipes/input.js +29 -0
- package/dist/styled-system/recipes/input.js.map +1 -0
- package/dist/styled-system/recipes/layout-grid.cjs +42 -0
- package/dist/styled-system/recipes/layout-grid.cjs.map +1 -0
- package/dist/styled-system/recipes/layout-grid.js +42 -0
- package/dist/styled-system/recipes/layout-grid.js.map +1 -0
- package/dist/styled-system/recipes/layout-stack.cjs +53 -0
- package/dist/styled-system/recipes/layout-stack.cjs.map +1 -0
- package/dist/styled-system/recipes/layout-stack.js +53 -0
- package/dist/styled-system/recipes/layout-stack.js.map +1 -0
- package/dist/styled-system/recipes/link.cjs +25 -0
- package/dist/styled-system/recipes/link.cjs.map +1 -0
- package/dist/styled-system/recipes/link.js +25 -0
- package/dist/styled-system/recipes/link.js.map +1 -0
- package/dist/styled-system/recipes/list.cjs +52 -0
- package/dist/styled-system/recipes/list.cjs.map +1 -0
- package/dist/styled-system/recipes/list.js +52 -0
- package/dist/styled-system/recipes/list.js.map +1 -0
- package/dist/styled-system/recipes/menu.cjs +38 -0
- package/dist/styled-system/recipes/menu.cjs.map +1 -0
- package/dist/styled-system/recipes/menu.js +38 -0
- package/dist/styled-system/recipes/menu.js.map +1 -0
- package/dist/styled-system/recipes/menubar.cjs +30 -0
- package/dist/styled-system/recipes/menubar.cjs.map +1 -0
- package/dist/styled-system/recipes/menubar.js +30 -0
- package/dist/styled-system/recipes/menubar.js.map +1 -0
- package/dist/styled-system/recipes/meter.cjs +52 -0
- package/dist/styled-system/recipes/meter.cjs.map +1 -0
- package/dist/styled-system/recipes/meter.js +52 -0
- package/dist/styled-system/recipes/meter.js.map +1 -0
- package/dist/styled-system/recipes/navbar.cjs +41 -0
- package/dist/styled-system/recipes/navbar.cjs.map +1 -0
- package/dist/styled-system/recipes/navbar.js +41 -0
- package/dist/styled-system/recipes/navbar.js.map +1 -0
- package/dist/styled-system/recipes/navigation-menu.cjs +43 -0
- package/dist/styled-system/recipes/navigation-menu.cjs.map +1 -0
- package/dist/styled-system/recipes/navigation-menu.js +43 -0
- package/dist/styled-system/recipes/navigation-menu.js.map +1 -0
- package/dist/styled-system/recipes/number-field.cjs +43 -0
- package/dist/styled-system/recipes/number-field.cjs.map +1 -0
- package/dist/styled-system/recipes/number-field.js +43 -0
- package/dist/styled-system/recipes/number-field.js.map +1 -0
- package/dist/styled-system/recipes/option-selector.cjs +52 -0
- package/dist/styled-system/recipes/option-selector.cjs.map +1 -0
- package/dist/styled-system/recipes/option-selector.js +52 -0
- package/dist/styled-system/recipes/option-selector.js.map +1 -0
- package/dist/styled-system/recipes/pagination.cjs +44 -0
- package/dist/styled-system/recipes/pagination.cjs.map +1 -0
- package/dist/styled-system/recipes/pagination.js +44 -0
- package/dist/styled-system/recipes/pagination.js.map +1 -0
- package/dist/styled-system/recipes/paragraph.cjs +25 -0
- package/dist/styled-system/recipes/paragraph.cjs.map +1 -0
- package/dist/styled-system/recipes/paragraph.js +25 -0
- package/dist/styled-system/recipes/paragraph.js.map +1 -0
- package/dist/styled-system/recipes/popover.cjs +38 -0
- package/dist/styled-system/recipes/popover.cjs.map +1 -0
- package/dist/styled-system/recipes/popover.js +38 -0
- package/dist/styled-system/recipes/popover.js.map +1 -0
- package/dist/styled-system/recipes/progress.cjs +35 -0
- package/dist/styled-system/recipes/progress.cjs.map +1 -0
- package/dist/styled-system/recipes/progress.js +35 -0
- package/dist/styled-system/recipes/progress.js.map +1 -0
- package/dist/styled-system/recipes/radio-group.cjs +37 -0
- package/dist/styled-system/recipes/radio-group.cjs.map +1 -0
- package/dist/styled-system/recipes/radio-group.js +37 -0
- package/dist/styled-system/recipes/radio-group.js.map +1 -0
- package/dist/styled-system/recipes/range-slider.cjs +42 -0
- package/dist/styled-system/recipes/range-slider.cjs.map +1 -0
- package/dist/styled-system/recipes/range-slider.js +42 -0
- package/dist/styled-system/recipes/range-slider.js.map +1 -0
- package/dist/styled-system/recipes/screen-reader-only.cjs +25 -0
- package/dist/styled-system/recipes/screen-reader-only.cjs.map +1 -0
- package/dist/styled-system/recipes/screen-reader-only.js +25 -0
- package/dist/styled-system/recipes/screen-reader-only.js.map +1 -0
- package/dist/styled-system/recipes/scroll-area.cjs +37 -0
- package/dist/styled-system/recipes/scroll-area.cjs.map +1 -0
- package/dist/styled-system/recipes/scroll-area.js +37 -0
- package/dist/styled-system/recipes/scroll-area.js.map +1 -0
- package/dist/styled-system/recipes/select.cjs +48 -0
- package/dist/styled-system/recipes/select.cjs.map +1 -0
- package/dist/styled-system/recipes/select.js +48 -0
- package/dist/styled-system/recipes/select.js.map +1 -0
- package/dist/styled-system/recipes/separator.cjs +25 -0
- package/dist/styled-system/recipes/separator.cjs.map +1 -0
- package/dist/styled-system/recipes/separator.js +25 -0
- package/dist/styled-system/recipes/separator.js.map +1 -0
- package/dist/styled-system/recipes/sidebar.cjs +44 -0
- package/dist/styled-system/recipes/sidebar.cjs.map +1 -0
- package/dist/styled-system/recipes/sidebar.js +44 -0
- package/dist/styled-system/recipes/sidebar.js.map +1 -0
- package/dist/styled-system/recipes/skeleton.cjs +35 -0
- package/dist/styled-system/recipes/skeleton.cjs.map +1 -0
- package/dist/styled-system/recipes/skeleton.js +35 -0
- package/dist/styled-system/recipes/skeleton.js.map +1 -0
- package/dist/styled-system/recipes/slider.cjs +42 -0
- package/dist/styled-system/recipes/slider.cjs.map +1 -0
- package/dist/styled-system/recipes/slider.js +42 -0
- package/dist/styled-system/recipes/slider.js.map +1 -0
- package/dist/styled-system/recipes/spinner.cjs +29 -0
- package/dist/styled-system/recipes/spinner.cjs.map +1 -0
- package/dist/styled-system/recipes/spinner.js +29 -0
- package/dist/styled-system/recipes/spinner.js.map +1 -0
- package/dist/styled-system/recipes/table.cjs +58 -0
- package/dist/styled-system/recipes/table.cjs.map +1 -0
- package/dist/styled-system/recipes/table.js +58 -0
- package/dist/styled-system/recipes/table.js.map +1 -0
- package/dist/styled-system/recipes/tabs.cjs +35 -0
- package/dist/styled-system/recipes/tabs.cjs.map +1 -0
- package/dist/styled-system/recipes/tabs.js +35 -0
- package/dist/styled-system/recipes/tabs.js.map +1 -0
- package/dist/styled-system/recipes/tags-input.cjs +43 -0
- package/dist/styled-system/recipes/tags-input.cjs.map +1 -0
- package/dist/styled-system/recipes/tags-input.js +43 -0
- package/dist/styled-system/recipes/tags-input.js.map +1 -0
- package/dist/styled-system/recipes/text.cjs +35 -0
- package/dist/styled-system/recipes/text.cjs.map +1 -0
- package/dist/styled-system/recipes/text.js +35 -0
- package/dist/styled-system/recipes/text.js.map +1 -0
- package/dist/styled-system/recipes/textarea.cjs +29 -0
- package/dist/styled-system/recipes/textarea.cjs.map +1 -0
- package/dist/styled-system/recipes/textarea.js +29 -0
- package/dist/styled-system/recipes/textarea.js.map +1 -0
- package/dist/styled-system/recipes/toast.cjs +45 -0
- package/dist/styled-system/recipes/toast.cjs.map +1 -0
- package/dist/styled-system/recipes/toast.js +45 -0
- package/dist/styled-system/recipes/toast.js.map +1 -0
- package/dist/styled-system/recipes/toggle-group.cjs +44 -0
- package/dist/styled-system/recipes/toggle-group.cjs.map +1 -0
- package/dist/styled-system/recipes/toggle-group.js +44 -0
- package/dist/styled-system/recipes/toggle-group.js.map +1 -0
- package/dist/styled-system/recipes/toggle-switch.cjs +30 -0
- package/dist/styled-system/recipes/toggle-switch.cjs.map +1 -0
- package/dist/styled-system/recipes/toggle-switch.js +30 -0
- package/dist/styled-system/recipes/toggle-switch.js.map +1 -0
- package/dist/styled-system/recipes/toggle.cjs +39 -0
- package/dist/styled-system/recipes/toggle.cjs.map +1 -0
- package/dist/styled-system/recipes/toggle.js +39 -0
- package/dist/styled-system/recipes/toggle.js.map +1 -0
- package/dist/styled-system/recipes/toolbar.cjs +51 -0
- package/dist/styled-system/recipes/toolbar.cjs.map +1 -0
- package/dist/styled-system/recipes/toolbar.js +51 -0
- package/dist/styled-system/recipes/toolbar.js.map +1 -0
- package/dist/styled-system/recipes/tooltip.cjs +35 -0
- package/dist/styled-system/recipes/tooltip.cjs.map +1 -0
- package/dist/styled-system/recipes/tooltip.js +35 -0
- package/dist/styled-system/recipes/tooltip.js.map +1 -0
- package/dist/styled-system/recipes/tree-view.cjs +37 -0
- package/dist/styled-system/recipes/tree-view.cjs.map +1 -0
- package/dist/styled-system/recipes/tree-view.js +37 -0
- package/dist/styled-system/recipes/tree-view.js.map +1 -0
- package/dist/styled-system/recipes/upload.cjs +55 -0
- package/dist/styled-system/recipes/upload.cjs.map +1 -0
- package/dist/styled-system/recipes/upload.js +55 -0
- package/dist/styled-system/recipes/upload.js.map +1 -0
- package/dist/styles/theme.cjs +137 -0
- package/dist/styles/theme.cjs.map +1 -0
- package/dist/styles/theme.js +136 -0
- package/dist/styles/theme.js.map +1 -0
- package/dist/styles.css +7706 -0
- package/package.json +107 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode } from "react";
|
|
2
|
+
//#region src/components/upload/upload.d.ts
|
|
3
|
+
type UploadRejectionReason = "type" | "size" | "count" | "duplicate";
|
|
4
|
+
interface UploadRejection {
|
|
5
|
+
file: File;
|
|
6
|
+
message: string;
|
|
7
|
+
reason: UploadRejectionReason;
|
|
8
|
+
}
|
|
9
|
+
interface UploadRootProps extends Omit<ComponentPropsWithoutRef<"div">, "onChange"> {
|
|
10
|
+
/** Accepted MIME types or file extensions, using the native input syntax. */
|
|
11
|
+
accept?: string;
|
|
12
|
+
/** Controlled files. Use with `onFilesChange`. */
|
|
13
|
+
files?: File[];
|
|
14
|
+
/** Initial files for an uncontrolled upload. */
|
|
15
|
+
defaultFiles?: File[];
|
|
16
|
+
/** Called whenever accepted files are added or removed. */
|
|
17
|
+
onFilesChange?: (files: File[]) => void;
|
|
18
|
+
/** Called with files rejected by `accept`, `maxSize`, `maxFiles` or duplicates. */
|
|
19
|
+
onReject?: (rejections: UploadRejection[]) => void;
|
|
20
|
+
/** Maximum number of accepted files. Defaults to one when `multiple` is false. */
|
|
21
|
+
maxFiles?: number;
|
|
22
|
+
/** Maximum size per file, in bytes. */
|
|
23
|
+
maxSize?: number;
|
|
24
|
+
/** Allows selecting more than one file. */
|
|
25
|
+
multiple?: boolean;
|
|
26
|
+
/** Disables file selection and drag-and-drop. */
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
children?: ReactNode;
|
|
29
|
+
}
|
|
30
|
+
declare const UploadRoot: import("react").ForwardRefExoticComponent<UploadRootProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
31
|
+
interface UploadDropzoneProps extends ComponentPropsWithoutRef<"label"> {
|
|
32
|
+
children?: ReactNode;
|
|
33
|
+
}
|
|
34
|
+
declare const UploadDropzone: import("react").ForwardRefExoticComponent<UploadDropzoneProps & import("react").RefAttributes<HTMLLabelElement>>;
|
|
35
|
+
type UploadInputProps = ComponentPropsWithoutRef<"input">;
|
|
36
|
+
declare const UploadInput: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & import("react").RefAttributes<HTMLInputElement>>;
|
|
37
|
+
type UploadTriggerProps = ComponentPropsWithoutRef<"button">;
|
|
38
|
+
declare const UploadTrigger: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
39
|
+
type UploadIconProps = ComponentPropsWithoutRef<"span">;
|
|
40
|
+
declare const UploadIcon: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
41
|
+
type UploadTextProps = ComponentPropsWithoutRef<"span">;
|
|
42
|
+
declare const UploadText: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
43
|
+
type UploadHintProps = ComponentPropsWithoutRef<"span">;
|
|
44
|
+
declare const UploadHint: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
45
|
+
interface UploadPreviewProps extends ComponentPropsWithoutRef<"span"> {
|
|
46
|
+
/** File whose preview should be rendered. Image files use a temporary object URL. */
|
|
47
|
+
file: File;
|
|
48
|
+
/** Alternative text for image previews. Defaults to the file name. */
|
|
49
|
+
alt?: string;
|
|
50
|
+
/** Content rendered while the preview is unavailable or the file is not an image. */
|
|
51
|
+
fallback?: ReactNode;
|
|
52
|
+
}
|
|
53
|
+
declare const UploadPreview: import("react").ForwardRefExoticComponent<UploadPreviewProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
54
|
+
interface UploadProgressProps extends Omit<ComponentPropsWithoutRef<"div">, "children"> {
|
|
55
|
+
/** Progress from 0 to 100. Omit it for an indeterminate upload. */
|
|
56
|
+
value?: number;
|
|
57
|
+
/** Accessible label and optional visible status text. */
|
|
58
|
+
label?: ReactNode;
|
|
59
|
+
}
|
|
60
|
+
declare const UploadProgress: import("react").ForwardRefExoticComponent<UploadProgressProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
61
|
+
type UploadListProps = ComponentPropsWithoutRef<"ul">;
|
|
62
|
+
declare const UploadList: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, "ref"> & import("react").RefAttributes<HTMLUListElement>>;
|
|
63
|
+
interface UploadItemProps extends Omit<ComponentPropsWithoutRef<"li">, "children"> {
|
|
64
|
+
file: File;
|
|
65
|
+
children?: ReactNode;
|
|
66
|
+
}
|
|
67
|
+
declare const UploadItem: import("react").ForwardRefExoticComponent<UploadItemProps & import("react").RefAttributes<HTMLLIElement>>;
|
|
68
|
+
interface UploadRemoveProps extends ComponentPropsWithoutRef<"button"> {
|
|
69
|
+
file: File;
|
|
70
|
+
}
|
|
71
|
+
declare const UploadRemove: import("react").ForwardRefExoticComponent<UploadRemoveProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
72
|
+
type UploadErrorProps = ComponentPropsWithoutRef<"p">;
|
|
73
|
+
declare const UploadError: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & import("react").RefAttributes<HTMLParagraphElement>>;
|
|
74
|
+
declare const Upload: {
|
|
75
|
+
Root: import("react").ForwardRefExoticComponent<UploadRootProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
76
|
+
Dropzone: import("react").ForwardRefExoticComponent<UploadDropzoneProps & import("react").RefAttributes<HTMLLabelElement>>;
|
|
77
|
+
Input: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & import("react").RefAttributes<HTMLInputElement>>;
|
|
78
|
+
Trigger: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
79
|
+
Icon: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
80
|
+
Text: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
81
|
+
Hint: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
82
|
+
Preview: import("react").ForwardRefExoticComponent<UploadPreviewProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
83
|
+
Progress: import("react").ForwardRefExoticComponent<UploadProgressProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
84
|
+
List: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, "ref"> & import("react").RefAttributes<HTMLUListElement>>;
|
|
85
|
+
Item: import("react").ForwardRefExoticComponent<UploadItemProps & import("react").RefAttributes<HTMLLIElement>>;
|
|
86
|
+
Remove: import("react").ForwardRefExoticComponent<UploadRemoveProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
87
|
+
Error: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & import("react").RefAttributes<HTMLParagraphElement>>;
|
|
88
|
+
};
|
|
89
|
+
//#endregion
|
|
90
|
+
export { Upload, UploadDropzone, UploadDropzoneProps, UploadError, UploadErrorProps, UploadHint, UploadHintProps, UploadIcon, UploadIconProps, UploadInput, UploadInputProps, UploadItem, UploadItemProps, UploadList, UploadListProps, UploadPreview, UploadPreviewProps, UploadProgress, UploadProgressProps, UploadRejection, UploadRejectionReason, UploadRemove, UploadRemoveProps, UploadRoot, UploadRootProps, UploadText, UploadTextProps, UploadTrigger, UploadTriggerProps };
|
|
91
|
+
//# sourceMappingURL=upload.d.cts.map
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode } from "react";
|
|
2
|
+
//#region src/components/upload/upload.d.ts
|
|
3
|
+
type UploadRejectionReason = "type" | "size" | "count" | "duplicate";
|
|
4
|
+
interface UploadRejection {
|
|
5
|
+
file: File;
|
|
6
|
+
message: string;
|
|
7
|
+
reason: UploadRejectionReason;
|
|
8
|
+
}
|
|
9
|
+
interface UploadRootProps extends Omit<ComponentPropsWithoutRef<"div">, "onChange"> {
|
|
10
|
+
/** Accepted MIME types or file extensions, using the native input syntax. */
|
|
11
|
+
accept?: string;
|
|
12
|
+
/** Controlled files. Use with `onFilesChange`. */
|
|
13
|
+
files?: File[];
|
|
14
|
+
/** Initial files for an uncontrolled upload. */
|
|
15
|
+
defaultFiles?: File[];
|
|
16
|
+
/** Called whenever accepted files are added or removed. */
|
|
17
|
+
onFilesChange?: (files: File[]) => void;
|
|
18
|
+
/** Called with files rejected by `accept`, `maxSize`, `maxFiles` or duplicates. */
|
|
19
|
+
onReject?: (rejections: UploadRejection[]) => void;
|
|
20
|
+
/** Maximum number of accepted files. Defaults to one when `multiple` is false. */
|
|
21
|
+
maxFiles?: number;
|
|
22
|
+
/** Maximum size per file, in bytes. */
|
|
23
|
+
maxSize?: number;
|
|
24
|
+
/** Allows selecting more than one file. */
|
|
25
|
+
multiple?: boolean;
|
|
26
|
+
/** Disables file selection and drag-and-drop. */
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
children?: ReactNode;
|
|
29
|
+
}
|
|
30
|
+
declare const UploadRoot: import("react").ForwardRefExoticComponent<UploadRootProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
31
|
+
interface UploadDropzoneProps extends ComponentPropsWithoutRef<"label"> {
|
|
32
|
+
children?: ReactNode;
|
|
33
|
+
}
|
|
34
|
+
declare const UploadDropzone: import("react").ForwardRefExoticComponent<UploadDropzoneProps & import("react").RefAttributes<HTMLLabelElement>>;
|
|
35
|
+
type UploadInputProps = ComponentPropsWithoutRef<"input">;
|
|
36
|
+
declare const UploadInput: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & import("react").RefAttributes<HTMLInputElement>>;
|
|
37
|
+
type UploadTriggerProps = ComponentPropsWithoutRef<"button">;
|
|
38
|
+
declare const UploadTrigger: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
39
|
+
type UploadIconProps = ComponentPropsWithoutRef<"span">;
|
|
40
|
+
declare const UploadIcon: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
41
|
+
type UploadTextProps = ComponentPropsWithoutRef<"span">;
|
|
42
|
+
declare const UploadText: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
43
|
+
type UploadHintProps = ComponentPropsWithoutRef<"span">;
|
|
44
|
+
declare const UploadHint: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
45
|
+
interface UploadPreviewProps extends ComponentPropsWithoutRef<"span"> {
|
|
46
|
+
/** File whose preview should be rendered. Image files use a temporary object URL. */
|
|
47
|
+
file: File;
|
|
48
|
+
/** Alternative text for image previews. Defaults to the file name. */
|
|
49
|
+
alt?: string;
|
|
50
|
+
/** Content rendered while the preview is unavailable or the file is not an image. */
|
|
51
|
+
fallback?: ReactNode;
|
|
52
|
+
}
|
|
53
|
+
declare const UploadPreview: import("react").ForwardRefExoticComponent<UploadPreviewProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
54
|
+
interface UploadProgressProps extends Omit<ComponentPropsWithoutRef<"div">, "children"> {
|
|
55
|
+
/** Progress from 0 to 100. Omit it for an indeterminate upload. */
|
|
56
|
+
value?: number;
|
|
57
|
+
/** Accessible label and optional visible status text. */
|
|
58
|
+
label?: ReactNode;
|
|
59
|
+
}
|
|
60
|
+
declare const UploadProgress: import("react").ForwardRefExoticComponent<UploadProgressProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
61
|
+
type UploadListProps = ComponentPropsWithoutRef<"ul">;
|
|
62
|
+
declare const UploadList: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, "ref"> & import("react").RefAttributes<HTMLUListElement>>;
|
|
63
|
+
interface UploadItemProps extends Omit<ComponentPropsWithoutRef<"li">, "children"> {
|
|
64
|
+
file: File;
|
|
65
|
+
children?: ReactNode;
|
|
66
|
+
}
|
|
67
|
+
declare const UploadItem: import("react").ForwardRefExoticComponent<UploadItemProps & import("react").RefAttributes<HTMLLIElement>>;
|
|
68
|
+
interface UploadRemoveProps extends ComponentPropsWithoutRef<"button"> {
|
|
69
|
+
file: File;
|
|
70
|
+
}
|
|
71
|
+
declare const UploadRemove: import("react").ForwardRefExoticComponent<UploadRemoveProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
72
|
+
type UploadErrorProps = ComponentPropsWithoutRef<"p">;
|
|
73
|
+
declare const UploadError: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & import("react").RefAttributes<HTMLParagraphElement>>;
|
|
74
|
+
declare const Upload: {
|
|
75
|
+
Root: import("react").ForwardRefExoticComponent<UploadRootProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
76
|
+
Dropzone: import("react").ForwardRefExoticComponent<UploadDropzoneProps & import("react").RefAttributes<HTMLLabelElement>>;
|
|
77
|
+
Input: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & import("react").RefAttributes<HTMLInputElement>>;
|
|
78
|
+
Trigger: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
79
|
+
Icon: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
80
|
+
Text: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
81
|
+
Hint: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
82
|
+
Preview: import("react").ForwardRefExoticComponent<UploadPreviewProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
83
|
+
Progress: import("react").ForwardRefExoticComponent<UploadProgressProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
84
|
+
List: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, "ref"> & import("react").RefAttributes<HTMLUListElement>>;
|
|
85
|
+
Item: import("react").ForwardRefExoticComponent<UploadItemProps & import("react").RefAttributes<HTMLLIElement>>;
|
|
86
|
+
Remove: import("react").ForwardRefExoticComponent<UploadRemoveProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
87
|
+
Error: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & import("react").RefAttributes<HTMLParagraphElement>>;
|
|
88
|
+
};
|
|
89
|
+
//#endregion
|
|
90
|
+
export { Upload, UploadDropzone, UploadDropzoneProps, UploadError, UploadErrorProps, UploadHint, UploadHintProps, UploadIcon, UploadIconProps, UploadInput, UploadInputProps, UploadItem, UploadItemProps, UploadList, UploadListProps, UploadPreview, UploadPreviewProps, UploadProgress, UploadProgressProps, UploadRejection, UploadRejectionReason, UploadRemove, UploadRemoveProps, UploadRoot, UploadRootProps, UploadText, UploadTextProps, UploadTrigger, UploadTriggerProps };
|
|
91
|
+
//# sourceMappingURL=upload.d.ts.map
|
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx } from "../../styled-system/css/cx.js";
|
|
3
|
+
import { upload } from "../../styled-system/recipes/upload.js";
|
|
4
|
+
import { createContext, forwardRef, useCallback, useContext, useEffect, useId, useMemo, useRef, useState } from "react";
|
|
5
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/components/upload/upload.tsx
|
|
7
|
+
const UploadContext = createContext(null);
|
|
8
|
+
function useUploadContext() {
|
|
9
|
+
const context = useContext(UploadContext);
|
|
10
|
+
if (!context) throw new Error("Upload parts must be rendered inside Upload.Root.");
|
|
11
|
+
return context;
|
|
12
|
+
}
|
|
13
|
+
function fileKey(file) {
|
|
14
|
+
return `${file.name}-${file.size}-${file.lastModified}`;
|
|
15
|
+
}
|
|
16
|
+
function formatBytes(bytes) {
|
|
17
|
+
if (bytes < 1024) return `${bytes} B`;
|
|
18
|
+
if (bytes < 1024 * 1024) return `${Math.round(bytes / 1024)} KB`;
|
|
19
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
20
|
+
}
|
|
21
|
+
function acceptsFile(file, accept) {
|
|
22
|
+
if (!accept) return true;
|
|
23
|
+
const fileName = file.name.toLowerCase();
|
|
24
|
+
const fileType = file.type.toLowerCase();
|
|
25
|
+
return accept.split(",").some((entry) => {
|
|
26
|
+
const pattern = entry.trim().toLowerCase();
|
|
27
|
+
if (!pattern) return true;
|
|
28
|
+
if (pattern.startsWith(".")) return fileName.endsWith(pattern);
|
|
29
|
+
if (pattern.endsWith("/*")) return fileType.startsWith(pattern.slice(0, -1));
|
|
30
|
+
return pattern === fileType;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const UploadRoot = forwardRef(function UploadRoot({ accept, children, className, defaultFiles = [], disabled = false, files: controlledFiles, maxFiles, maxSize, multiple = false, onFilesChange, onReject, ...props }, ref) {
|
|
34
|
+
const [uncontrolledFiles, setUncontrolledFiles] = useState(defaultFiles);
|
|
35
|
+
const [dropActive, setDropActive] = useState(false);
|
|
36
|
+
const [rejections, setRejections] = useState([]);
|
|
37
|
+
const inputRef = useRef(null);
|
|
38
|
+
const inputId = useId();
|
|
39
|
+
const styles = upload({
|
|
40
|
+
disabled,
|
|
41
|
+
dropActive
|
|
42
|
+
});
|
|
43
|
+
const currentFiles = controlledFiles ?? uncontrolledFiles;
|
|
44
|
+
const fileLimit = maxFiles ?? (multiple ? void 0 : 1);
|
|
45
|
+
const updateFiles = useCallback((nextFiles) => {
|
|
46
|
+
setUncontrolledFiles(nextFiles);
|
|
47
|
+
onFilesChange?.(nextFiles);
|
|
48
|
+
}, [onFilesChange]);
|
|
49
|
+
const addFiles = useCallback((fileList) => {
|
|
50
|
+
if (disabled) return;
|
|
51
|
+
const candidates = Array.from(fileList);
|
|
52
|
+
const acceptedFiles = [];
|
|
53
|
+
const nextRejections = [];
|
|
54
|
+
const existingKeys = new Set(currentFiles.map(fileKey));
|
|
55
|
+
for (const file of candidates) {
|
|
56
|
+
const key = fileKey(file);
|
|
57
|
+
if (existingKeys.has(key) || acceptedFiles.some((accepted) => fileKey(accepted) === key)) {
|
|
58
|
+
nextRejections.push({
|
|
59
|
+
file,
|
|
60
|
+
reason: "duplicate",
|
|
61
|
+
message: `${file.name} was already added.`
|
|
62
|
+
});
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (!acceptsFile(file, accept)) {
|
|
66
|
+
nextRejections.push({
|
|
67
|
+
file,
|
|
68
|
+
reason: "type",
|
|
69
|
+
message: `${file.name} is not an accepted file type.`
|
|
70
|
+
});
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (maxSize !== void 0 && file.size > maxSize) {
|
|
74
|
+
nextRejections.push({
|
|
75
|
+
file,
|
|
76
|
+
reason: "size",
|
|
77
|
+
message: `${file.name} is larger than the allowed limit.`
|
|
78
|
+
});
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (fileLimit !== void 0 && (multiple ? currentFiles.length + acceptedFiles.length : acceptedFiles.length) >= fileLimit) {
|
|
82
|
+
nextRejections.push({
|
|
83
|
+
file,
|
|
84
|
+
reason: "count",
|
|
85
|
+
message: `Only ${fileLimit} file${fileLimit === 1 ? "" : "s"} can be selected.`
|
|
86
|
+
});
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
acceptedFiles.push(file);
|
|
90
|
+
}
|
|
91
|
+
const nextFiles = multiple ? [...currentFiles, ...acceptedFiles] : acceptedFiles.slice(0, 1);
|
|
92
|
+
if (acceptedFiles.length > 0) updateFiles(nextFiles);
|
|
93
|
+
if (nextRejections.length > 0) {
|
|
94
|
+
setRejections(nextRejections);
|
|
95
|
+
onReject?.(nextRejections);
|
|
96
|
+
} else setRejections([]);
|
|
97
|
+
}, [
|
|
98
|
+
accept,
|
|
99
|
+
currentFiles,
|
|
100
|
+
disabled,
|
|
101
|
+
fileLimit,
|
|
102
|
+
maxSize,
|
|
103
|
+
multiple,
|
|
104
|
+
onReject,
|
|
105
|
+
updateFiles
|
|
106
|
+
]);
|
|
107
|
+
const removeFile = useCallback((file) => {
|
|
108
|
+
updateFiles(currentFiles.filter((current) => fileKey(current) !== fileKey(file)));
|
|
109
|
+
}, [currentFiles, updateFiles]);
|
|
110
|
+
const context = useMemo(() => ({
|
|
111
|
+
accept,
|
|
112
|
+
addFiles,
|
|
113
|
+
disabled,
|
|
114
|
+
dropActive,
|
|
115
|
+
files: currentFiles,
|
|
116
|
+
inputId,
|
|
117
|
+
inputRef,
|
|
118
|
+
maxFiles: fileLimit,
|
|
119
|
+
maxSize,
|
|
120
|
+
multiple,
|
|
121
|
+
removeFile,
|
|
122
|
+
rejections,
|
|
123
|
+
setDropActive,
|
|
124
|
+
styles
|
|
125
|
+
}), [
|
|
126
|
+
accept,
|
|
127
|
+
addFiles,
|
|
128
|
+
currentFiles,
|
|
129
|
+
disabled,
|
|
130
|
+
dropActive,
|
|
131
|
+
fileLimit,
|
|
132
|
+
inputId,
|
|
133
|
+
maxSize,
|
|
134
|
+
multiple,
|
|
135
|
+
rejections,
|
|
136
|
+
removeFile,
|
|
137
|
+
styles
|
|
138
|
+
]);
|
|
139
|
+
return /* @__PURE__ */ jsx(UploadContext.Provider, {
|
|
140
|
+
value: context,
|
|
141
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
142
|
+
...props,
|
|
143
|
+
ref,
|
|
144
|
+
className: cx(styles.root, className),
|
|
145
|
+
"data-disabled": disabled || void 0,
|
|
146
|
+
"data-jaci-component": "upload",
|
|
147
|
+
"data-slot": "upload",
|
|
148
|
+
children
|
|
149
|
+
})
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
const UploadDropzone = forwardRef(function UploadDropzone({ children, className, htmlFor, onDragEnter, onDragLeave, onDragOver, onDrop, ...props }, ref) {
|
|
153
|
+
const { addFiles, disabled, dropActive, inputId, setDropActive, styles } = useUploadContext();
|
|
154
|
+
return /* @__PURE__ */ jsx("label", {
|
|
155
|
+
...props,
|
|
156
|
+
ref,
|
|
157
|
+
"aria-disabled": disabled || void 0,
|
|
158
|
+
className: cx(styles.dropzone, className),
|
|
159
|
+
"data-drag-active": dropActive || void 0,
|
|
160
|
+
"data-slot": "upload-dropzone",
|
|
161
|
+
htmlFor: htmlFor ?? inputId,
|
|
162
|
+
onDragEnter: (event) => {
|
|
163
|
+
event.preventDefault();
|
|
164
|
+
if (!disabled) {
|
|
165
|
+
setDropActive(true);
|
|
166
|
+
event.currentTarget.dataset.dragActive = "true";
|
|
167
|
+
}
|
|
168
|
+
onDragEnter?.(event);
|
|
169
|
+
},
|
|
170
|
+
onDragLeave: (event) => {
|
|
171
|
+
event.preventDefault();
|
|
172
|
+
if (event.currentTarget === event.target) {
|
|
173
|
+
setDropActive(false);
|
|
174
|
+
event.currentTarget.dataset.dragActive = "false";
|
|
175
|
+
}
|
|
176
|
+
onDragLeave?.(event);
|
|
177
|
+
},
|
|
178
|
+
onDragOver: (event) => {
|
|
179
|
+
event.preventDefault();
|
|
180
|
+
if (!disabled) setDropActive(true);
|
|
181
|
+
onDragOver?.(event);
|
|
182
|
+
},
|
|
183
|
+
onDrop: (event) => {
|
|
184
|
+
event.preventDefault();
|
|
185
|
+
setDropActive(false);
|
|
186
|
+
event.currentTarget.dataset.dragActive = "false";
|
|
187
|
+
if (!disabled) addFiles(event.dataTransfer.files);
|
|
188
|
+
onDrop?.(event);
|
|
189
|
+
},
|
|
190
|
+
children
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
const UploadInput = forwardRef(function UploadInput({ accept, className, id, multiple, onChange, ...props }, ref) {
|
|
194
|
+
const { addFiles, accept: rootAccept, disabled, inputId, inputRef, multiple: rootMultiple, styles } = useUploadContext();
|
|
195
|
+
const handleChange = (event) => {
|
|
196
|
+
if (event.currentTarget.files) addFiles(event.currentTarget.files);
|
|
197
|
+
event.currentTarget.value = "";
|
|
198
|
+
onChange?.(event);
|
|
199
|
+
};
|
|
200
|
+
return /* @__PURE__ */ jsx("input", {
|
|
201
|
+
...props,
|
|
202
|
+
accept: accept ?? rootAccept,
|
|
203
|
+
"aria-label": props["aria-label"] ?? "Select files",
|
|
204
|
+
className: cx(styles.input, className),
|
|
205
|
+
disabled,
|
|
206
|
+
id: id ?? inputId,
|
|
207
|
+
multiple: multiple ?? rootMultiple,
|
|
208
|
+
onChange: handleChange,
|
|
209
|
+
ref: (node) => {
|
|
210
|
+
inputRef.current = node;
|
|
211
|
+
if (typeof ref === "function") ref(node);
|
|
212
|
+
else if (ref) ref.current = node;
|
|
213
|
+
},
|
|
214
|
+
tabIndex: -1,
|
|
215
|
+
type: "file"
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
const UploadTrigger = forwardRef(function UploadTrigger({ children = "Choose files", className, disabled, onClick, ...props }, ref) {
|
|
219
|
+
const { disabled: rootDisabled, inputRef, styles } = useUploadContext();
|
|
220
|
+
return /* @__PURE__ */ jsx("button", {
|
|
221
|
+
...props,
|
|
222
|
+
className: cx(styles.trigger, className),
|
|
223
|
+
"data-slot": "upload-trigger",
|
|
224
|
+
disabled: disabled ?? rootDisabled,
|
|
225
|
+
onClick: (event) => {
|
|
226
|
+
inputRef.current?.click();
|
|
227
|
+
onClick?.(event);
|
|
228
|
+
},
|
|
229
|
+
ref,
|
|
230
|
+
type: "button",
|
|
231
|
+
children
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
const UploadIcon = forwardRef(function UploadIcon({ children = "↥", className, ...props }, ref) {
|
|
235
|
+
const { styles } = useUploadContext();
|
|
236
|
+
return /* @__PURE__ */ jsx("span", {
|
|
237
|
+
...props,
|
|
238
|
+
ref,
|
|
239
|
+
"aria-hidden": "true",
|
|
240
|
+
className: cx(styles.icon, className),
|
|
241
|
+
"data-slot": "upload-icon",
|
|
242
|
+
children
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
const UploadText = forwardRef(function UploadText({ className, ...props }, ref) {
|
|
246
|
+
const { styles } = useUploadContext();
|
|
247
|
+
return /* @__PURE__ */ jsx("span", {
|
|
248
|
+
...props,
|
|
249
|
+
ref,
|
|
250
|
+
className: cx(styles.text, className),
|
|
251
|
+
"data-slot": "upload-text"
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
const UploadHint = forwardRef(function UploadHint({ className, ...props }, ref) {
|
|
255
|
+
const { styles } = useUploadContext();
|
|
256
|
+
return /* @__PURE__ */ jsx("span", {
|
|
257
|
+
...props,
|
|
258
|
+
ref,
|
|
259
|
+
className: cx(styles.hint, className),
|
|
260
|
+
"data-slot": "upload-hint"
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
const UploadPreview = forwardRef(function UploadPreview({ alt, className, fallback = "Preview unavailable", file, ...props }, ref) {
|
|
264
|
+
const { styles } = useUploadContext();
|
|
265
|
+
const [src, setSrc] = useState(null);
|
|
266
|
+
useEffect(() => {
|
|
267
|
+
if (!file.type.startsWith("image/") || typeof URL === "undefined" || typeof URL.createObjectURL !== "function") {
|
|
268
|
+
setSrc(null);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
const objectUrl = URL.createObjectURL(file);
|
|
272
|
+
setSrc(objectUrl);
|
|
273
|
+
return () => URL.revokeObjectURL(objectUrl);
|
|
274
|
+
}, [file]);
|
|
275
|
+
return /* @__PURE__ */ jsx("span", {
|
|
276
|
+
...props,
|
|
277
|
+
ref,
|
|
278
|
+
"aria-hidden": props["aria-label"] ? void 0 : true,
|
|
279
|
+
className: cx(styles.preview, className),
|
|
280
|
+
"data-slot": "upload-preview",
|
|
281
|
+
role: props["aria-label"] ? "img" : void 0,
|
|
282
|
+
children: src ? /* @__PURE__ */ jsx("img", {
|
|
283
|
+
alt: alt ?? file.name,
|
|
284
|
+
src
|
|
285
|
+
}) : fallback
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
const UploadProgress = forwardRef(function UploadProgress({ className, label = "Uploading", value, ...props }, ref) {
|
|
289
|
+
const { styles } = useUploadContext();
|
|
290
|
+
const normalizedValue = value === void 0 ? void 0 : Math.min(100, Math.max(0, value));
|
|
291
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
292
|
+
...props,
|
|
293
|
+
ref,
|
|
294
|
+
"aria-label": typeof label === "string" ? label : "Upload progress",
|
|
295
|
+
"aria-valuemax": 100,
|
|
296
|
+
"aria-valuemin": 0,
|
|
297
|
+
"aria-valuenow": normalizedValue,
|
|
298
|
+
className: cx(styles.progress, className),
|
|
299
|
+
"data-indeterminate": normalizedValue === void 0 || void 0,
|
|
300
|
+
"data-slot": "upload-progress",
|
|
301
|
+
role: "progressbar",
|
|
302
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
303
|
+
className: styles.progressTrack,
|
|
304
|
+
"data-slot": "upload-progress-track",
|
|
305
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
306
|
+
className: styles.progressIndicator,
|
|
307
|
+
"data-indeterminate": normalizedValue === void 0 || void 0,
|
|
308
|
+
"data-slot": "upload-progress-indicator",
|
|
309
|
+
style: { width: normalizedValue === void 0 ? void 0 : `${normalizedValue}%` }
|
|
310
|
+
})
|
|
311
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
312
|
+
className: styles.progressLabel,
|
|
313
|
+
"data-slot": "upload-progress-label",
|
|
314
|
+
children: label
|
|
315
|
+
})]
|
|
316
|
+
});
|
|
317
|
+
});
|
|
318
|
+
const UploadList = forwardRef(function UploadList({ children, className, ...props }, ref) {
|
|
319
|
+
const { files, styles } = useUploadContext();
|
|
320
|
+
return /* @__PURE__ */ jsx("ul", {
|
|
321
|
+
...props,
|
|
322
|
+
ref,
|
|
323
|
+
className: cx(styles.list, className),
|
|
324
|
+
"data-slot": "upload-list",
|
|
325
|
+
children: children ?? files.map((file) => /* @__PURE__ */ jsx(UploadItem, { file }, fileKey(file)))
|
|
326
|
+
});
|
|
327
|
+
});
|
|
328
|
+
const UploadItem = forwardRef(function UploadItem({ children, className, file, ...props }, ref) {
|
|
329
|
+
const { styles } = useUploadContext();
|
|
330
|
+
return /* @__PURE__ */ jsx("li", {
|
|
331
|
+
...props,
|
|
332
|
+
ref,
|
|
333
|
+
className: cx(styles.item, className),
|
|
334
|
+
"data-slot": "upload-item",
|
|
335
|
+
children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
336
|
+
/* @__PURE__ */ jsx("span", {
|
|
337
|
+
className: styles.itemName,
|
|
338
|
+
"data-slot": "upload-item-name",
|
|
339
|
+
title: file.name,
|
|
340
|
+
children: file.name
|
|
341
|
+
}),
|
|
342
|
+
/* @__PURE__ */ jsx("span", {
|
|
343
|
+
className: styles.itemMeta,
|
|
344
|
+
"data-slot": "upload-item-meta",
|
|
345
|
+
children: formatBytes(file.size)
|
|
346
|
+
}),
|
|
347
|
+
/* @__PURE__ */ jsx(UploadRemove, { file })
|
|
348
|
+
] })
|
|
349
|
+
});
|
|
350
|
+
});
|
|
351
|
+
const UploadRemove = forwardRef(function UploadRemove({ children = "×", className, file, onClick, ...props }, ref) {
|
|
352
|
+
const { disabled, removeFile, styles } = useUploadContext();
|
|
353
|
+
return /* @__PURE__ */ jsx("button", {
|
|
354
|
+
...props,
|
|
355
|
+
"aria-label": props["aria-label"] ?? `Remove ${file.name}`,
|
|
356
|
+
className: cx(styles.remove, className),
|
|
357
|
+
"data-slot": "upload-remove",
|
|
358
|
+
disabled,
|
|
359
|
+
onClick: (event) => {
|
|
360
|
+
removeFile(file);
|
|
361
|
+
onClick?.(event);
|
|
362
|
+
},
|
|
363
|
+
ref,
|
|
364
|
+
type: "button",
|
|
365
|
+
children
|
|
366
|
+
});
|
|
367
|
+
});
|
|
368
|
+
const UploadError = forwardRef(function UploadError({ children, className, ...props }, ref) {
|
|
369
|
+
const { rejections, styles } = useUploadContext();
|
|
370
|
+
if (children === void 0 && rejections.length === 0) return null;
|
|
371
|
+
return /* @__PURE__ */ jsx("p", {
|
|
372
|
+
...props,
|
|
373
|
+
ref,
|
|
374
|
+
className: cx(styles.error, className),
|
|
375
|
+
"data-slot": "upload-error",
|
|
376
|
+
role: "alert",
|
|
377
|
+
children: children ?? rejections.map((rejection) => rejection.message).join(" ")
|
|
378
|
+
});
|
|
379
|
+
});
|
|
380
|
+
const Upload = {
|
|
381
|
+
Root: UploadRoot,
|
|
382
|
+
Dropzone: UploadDropzone,
|
|
383
|
+
Input: UploadInput,
|
|
384
|
+
Trigger: UploadTrigger,
|
|
385
|
+
Icon: UploadIcon,
|
|
386
|
+
Text: UploadText,
|
|
387
|
+
Hint: UploadHint,
|
|
388
|
+
Preview: UploadPreview,
|
|
389
|
+
Progress: UploadProgress,
|
|
390
|
+
List: UploadList,
|
|
391
|
+
Item: UploadItem,
|
|
392
|
+
Remove: UploadRemove,
|
|
393
|
+
Error: UploadError
|
|
394
|
+
};
|
|
395
|
+
//#endregion
|
|
396
|
+
export { Upload, UploadDropzone, UploadError, UploadHint, UploadIcon, UploadInput, UploadItem, UploadList, UploadPreview, UploadProgress, UploadRemove, UploadRoot, UploadText, UploadTrigger };
|
|
397
|
+
|
|
398
|
+
//# sourceMappingURL=upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.js","names":[],"sources":["../../../src/components/upload/upload.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { ChangeEvent, ComponentPropsWithoutRef, ReactNode, RefObject } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { upload } from \"../../styled-system/recipes\";\n\nexport type UploadRejectionReason = \"type\" | \"size\" | \"count\" | \"duplicate\";\n\nexport interface UploadRejection {\n file: File;\n message: string;\n reason: UploadRejectionReason;\n}\n\ninterface UploadContextValue {\n accept: string | undefined;\n addFiles: (files: FileList | File[]) => void;\n disabled: boolean;\n dropActive: boolean;\n files: File[];\n inputId: string;\n inputRef: RefObject<HTMLInputElement | null>;\n maxFiles: number | undefined;\n maxSize: number | undefined;\n multiple: boolean;\n removeFile: (file: File) => void;\n rejections: UploadRejection[];\n setDropActive: (active: boolean) => void;\n styles: ReturnType<typeof upload>;\n}\n\nconst UploadContext = createContext<UploadContextValue | null>(null);\n\nfunction useUploadContext() {\n const context = useContext(UploadContext);\n if (!context) {\n throw new Error(\"Upload parts must be rendered inside Upload.Root.\");\n }\n\n return context;\n}\n\nfunction fileKey(file: File) {\n return `${file.name}-${file.size}-${file.lastModified}`;\n}\n\nfunction formatBytes(bytes: number) {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${Math.round(bytes / 1024)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nfunction acceptsFile(file: File, accept: string | undefined) {\n if (!accept) {\n return true;\n }\n\n const fileName = file.name.toLowerCase();\n const fileType = file.type.toLowerCase();\n\n return accept.split(\",\").some((entry) => {\n const pattern = entry.trim().toLowerCase();\n if (!pattern) return true;\n if (pattern.startsWith(\".\")) return fileName.endsWith(pattern);\n if (pattern.endsWith(\"/*\")) return fileType.startsWith(pattern.slice(0, -1));\n return pattern === fileType;\n });\n}\n\nexport interface UploadRootProps extends Omit<ComponentPropsWithoutRef<\"div\">, \"onChange\"> {\n /** Accepted MIME types or file extensions, using the native input syntax. */\n accept?: string;\n /** Controlled files. Use with `onFilesChange`. */\n files?: File[];\n /** Initial files for an uncontrolled upload. */\n defaultFiles?: File[];\n /** Called whenever accepted files are added or removed. */\n onFilesChange?: (files: File[]) => void;\n /** Called with files rejected by `accept`, `maxSize`, `maxFiles` or duplicates. */\n onReject?: (rejections: UploadRejection[]) => void;\n /** Maximum number of accepted files. Defaults to one when `multiple` is false. */\n maxFiles?: number;\n /** Maximum size per file, in bytes. */\n maxSize?: number;\n /** Allows selecting more than one file. */\n multiple?: boolean;\n /** Disables file selection and drag-and-drop. */\n disabled?: boolean;\n children?: ReactNode;\n}\n\nexport const UploadRoot = forwardRef<HTMLDivElement, UploadRootProps>(function UploadRoot(\n {\n accept,\n children,\n className,\n defaultFiles = [],\n disabled = false,\n files: controlledFiles,\n maxFiles,\n maxSize,\n multiple = false,\n onFilesChange,\n onReject,\n ...props\n },\n ref,\n) {\n const [uncontrolledFiles, setUncontrolledFiles] = useState<File[]>(defaultFiles);\n const [dropActive, setDropActive] = useState(false);\n const [rejections, setRejections] = useState<UploadRejection[]>([]);\n const inputRef = useRef<HTMLInputElement>(null);\n const inputId = useId();\n const styles = upload({ disabled, dropActive });\n const currentFiles = controlledFiles ?? uncontrolledFiles;\n const fileLimit = maxFiles ?? (multiple ? undefined : 1);\n\n const updateFiles = useCallback(\n (nextFiles: File[]) => {\n setUncontrolledFiles(nextFiles);\n onFilesChange?.(nextFiles);\n },\n [onFilesChange],\n );\n\n const addFiles = useCallback(\n (fileList: FileList | File[]) => {\n if (disabled) return;\n\n const candidates = Array.from(fileList);\n const acceptedFiles: File[] = [];\n const nextRejections: UploadRejection[] = [];\n const existingKeys = new Set(currentFiles.map(fileKey));\n\n for (const file of candidates) {\n const key = fileKey(file);\n if (existingKeys.has(key) || acceptedFiles.some((accepted) => fileKey(accepted) === key)) {\n nextRejections.push({\n file,\n reason: \"duplicate\",\n message: `${file.name} was already added.`,\n });\n continue;\n }\n if (!acceptsFile(file, accept)) {\n nextRejections.push({\n file,\n reason: \"type\",\n message: `${file.name} is not an accepted file type.`,\n });\n continue;\n }\n if (maxSize !== undefined && file.size > maxSize) {\n nextRejections.push({\n file,\n reason: \"size\",\n message: `${file.name} is larger than the allowed limit.`,\n });\n continue;\n }\n if (\n fileLimit !== undefined &&\n (multiple ? currentFiles.length + acceptedFiles.length : acceptedFiles.length) >=\n fileLimit\n ) {\n nextRejections.push({\n file,\n reason: \"count\",\n message: `Only ${fileLimit} file${fileLimit === 1 ? \"\" : \"s\"} can be selected.`,\n });\n continue;\n }\n acceptedFiles.push(file);\n }\n\n const nextFiles = multiple ? [...currentFiles, ...acceptedFiles] : acceptedFiles.slice(0, 1);\n if (acceptedFiles.length > 0) {\n updateFiles(nextFiles);\n }\n if (nextRejections.length > 0) {\n setRejections(nextRejections);\n onReject?.(nextRejections);\n } else {\n setRejections([]);\n }\n },\n [accept, currentFiles, disabled, fileLimit, maxSize, multiple, onReject, updateFiles],\n );\n\n const removeFile = useCallback(\n (file: File) => {\n updateFiles(currentFiles.filter((current) => fileKey(current) !== fileKey(file)));\n },\n [currentFiles, updateFiles],\n );\n\n const context = useMemo<UploadContextValue>(\n () => ({\n accept,\n addFiles,\n disabled,\n dropActive,\n files: currentFiles,\n inputId,\n inputRef,\n maxFiles: fileLimit,\n maxSize,\n multiple,\n removeFile,\n rejections,\n setDropActive,\n styles,\n }),\n [\n accept,\n addFiles,\n currentFiles,\n disabled,\n dropActive,\n fileLimit,\n inputId,\n maxSize,\n multiple,\n rejections,\n removeFile,\n styles,\n ],\n );\n\n return (\n <UploadContext.Provider value={context}>\n <div\n {...props}\n ref={ref}\n className={cx(styles.root, className)}\n data-disabled={disabled || undefined}\n data-jaci-component=\"upload\"\n data-slot=\"upload\"\n >\n {children}\n </div>\n </UploadContext.Provider>\n );\n});\n\nexport interface UploadDropzoneProps extends ComponentPropsWithoutRef<\"label\"> {\n children?: ReactNode;\n}\n\nexport const UploadDropzone = forwardRef<HTMLLabelElement, UploadDropzoneProps>(\n function UploadDropzone(\n { children, className, htmlFor, onDragEnter, onDragLeave, onDragOver, onDrop, ...props },\n ref,\n ) {\n const { addFiles, disabled, dropActive, inputId, setDropActive, styles } = useUploadContext();\n\n return (\n <label\n {...props}\n ref={ref}\n aria-disabled={disabled || undefined}\n className={cx(styles.dropzone, className)}\n data-drag-active={dropActive || undefined}\n data-slot=\"upload-dropzone\"\n htmlFor={htmlFor ?? inputId}\n onDragEnter={(event) => {\n event.preventDefault();\n if (!disabled) {\n setDropActive(true);\n event.currentTarget.dataset.dragActive = \"true\";\n }\n onDragEnter?.(event);\n }}\n onDragLeave={(event) => {\n event.preventDefault();\n if (event.currentTarget === event.target) {\n setDropActive(false);\n event.currentTarget.dataset.dragActive = \"false\";\n }\n onDragLeave?.(event);\n }}\n onDragOver={(event) => {\n event.preventDefault();\n if (!disabled) setDropActive(true);\n onDragOver?.(event);\n }}\n onDrop={(event) => {\n event.preventDefault();\n setDropActive(false);\n event.currentTarget.dataset.dragActive = \"false\";\n if (!disabled) addFiles(event.dataTransfer.files);\n onDrop?.(event);\n }}\n >\n {children}\n </label>\n );\n },\n);\n\nexport type UploadInputProps = ComponentPropsWithoutRef<\"input\">;\n\nexport const UploadInput = forwardRef<HTMLInputElement, UploadInputProps>(function UploadInput(\n { accept, className, id, multiple, onChange, ...props },\n ref,\n) {\n const {\n addFiles,\n accept: rootAccept,\n disabled,\n inputId,\n inputRef,\n multiple: rootMultiple,\n styles,\n } = useUploadContext();\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (event.currentTarget.files) addFiles(event.currentTarget.files);\n event.currentTarget.value = \"\";\n onChange?.(event);\n };\n\n return (\n <input\n {...props}\n accept={accept ?? rootAccept}\n aria-label={props[\"aria-label\"] ?? \"Select files\"}\n className={cx(styles.input, className)}\n disabled={disabled}\n id={id ?? inputId}\n multiple={multiple ?? rootMultiple}\n onChange={handleChange}\n ref={(node) => {\n inputRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n }}\n tabIndex={-1}\n type=\"file\"\n />\n );\n});\n\nexport type UploadTriggerProps = ComponentPropsWithoutRef<\"button\">;\n\nexport const UploadTrigger = forwardRef<HTMLButtonElement, UploadTriggerProps>(\n function UploadTrigger(\n { children = \"Choose files\", className, disabled, onClick, ...props },\n ref,\n ) {\n const { disabled: rootDisabled, inputRef, styles } = useUploadContext();\n\n return (\n <button\n {...props}\n className={cx(styles.trigger, className)}\n data-slot=\"upload-trigger\"\n disabled={disabled ?? rootDisabled}\n onClick={(event) => {\n inputRef.current?.click();\n onClick?.(event);\n }}\n ref={ref}\n type=\"button\"\n >\n {children}\n </button>\n );\n },\n);\n\nexport type UploadIconProps = ComponentPropsWithoutRef<\"span\">;\n\nexport const UploadIcon = forwardRef<HTMLSpanElement, UploadIconProps>(function UploadIcon(\n { children = \"↥\", className, ...props },\n ref,\n) {\n const { styles } = useUploadContext();\n return (\n <span\n {...props}\n ref={ref}\n aria-hidden=\"true\"\n className={cx(styles.icon, className)}\n data-slot=\"upload-icon\"\n >\n {children}\n </span>\n );\n});\n\nexport type UploadTextProps = ComponentPropsWithoutRef<\"span\">;\n\nexport const UploadText = forwardRef<HTMLSpanElement, UploadTextProps>(function UploadText(\n { className, ...props },\n ref,\n) {\n const { styles } = useUploadContext();\n return (\n <span {...props} ref={ref} className={cx(styles.text, className)} data-slot=\"upload-text\" />\n );\n});\n\nexport type UploadHintProps = ComponentPropsWithoutRef<\"span\">;\n\nexport const UploadHint = forwardRef<HTMLSpanElement, UploadHintProps>(function UploadHint(\n { className, ...props },\n ref,\n) {\n const { styles } = useUploadContext();\n return (\n <span {...props} ref={ref} className={cx(styles.hint, className)} data-slot=\"upload-hint\" />\n );\n});\n\nexport interface UploadPreviewProps extends ComponentPropsWithoutRef<\"span\"> {\n /** File whose preview should be rendered. Image files use a temporary object URL. */\n file: File;\n /** Alternative text for image previews. Defaults to the file name. */\n alt?: string;\n /** Content rendered while the preview is unavailable or the file is not an image. */\n fallback?: ReactNode;\n}\n\nexport const UploadPreview = forwardRef<HTMLSpanElement, UploadPreviewProps>(function UploadPreview(\n { alt, className, fallback = \"Preview unavailable\", file, ...props },\n ref,\n) {\n const { styles } = useUploadContext();\n const [src, setSrc] = useState<string | null>(null);\n\n useEffect(() => {\n if (\n !file.type.startsWith(\"image/\") ||\n typeof URL === \"undefined\" ||\n typeof URL.createObjectURL !== \"function\"\n ) {\n setSrc(null);\n return;\n }\n\n const objectUrl = URL.createObjectURL(file);\n setSrc(objectUrl);\n return () => URL.revokeObjectURL(objectUrl);\n }, [file]);\n\n return (\n <span\n {...props}\n ref={ref}\n aria-hidden={props[\"aria-label\"] ? undefined : true}\n className={cx(styles.preview, className)}\n data-slot=\"upload-preview\"\n role={props[\"aria-label\"] ? \"img\" : undefined}\n >\n {src ? <img alt={alt ?? file.name} src={src} /> : fallback}\n </span>\n );\n});\n\nexport interface UploadProgressProps extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\"> {\n /** Progress from 0 to 100. Omit it for an indeterminate upload. */\n value?: number;\n /** Accessible label and optional visible status text. */\n label?: ReactNode;\n}\n\nexport const UploadProgress = forwardRef<HTMLDivElement, UploadProgressProps>(\n function UploadProgress({ className, label = \"Uploading\", value, ...props }, ref) {\n const { styles } = useUploadContext();\n const normalizedValue = value === undefined ? undefined : Math.min(100, Math.max(0, value));\n\n return (\n <div\n {...props}\n ref={ref}\n aria-label={typeof label === \"string\" ? label : \"Upload progress\"}\n aria-valuemax={100}\n aria-valuemin={0}\n aria-valuenow={normalizedValue}\n className={cx(styles.progress, className)}\n data-indeterminate={normalizedValue === undefined || undefined}\n data-slot=\"upload-progress\"\n role=\"progressbar\"\n >\n <span className={styles.progressTrack} data-slot=\"upload-progress-track\">\n <span\n className={styles.progressIndicator}\n data-indeterminate={normalizedValue === undefined || undefined}\n data-slot=\"upload-progress-indicator\"\n style={{ width: normalizedValue === undefined ? undefined : `${normalizedValue}%` }}\n />\n </span>\n <span className={styles.progressLabel} data-slot=\"upload-progress-label\">\n {label}\n </span>\n </div>\n );\n },\n);\n\nexport type UploadListProps = ComponentPropsWithoutRef<\"ul\">;\n\nexport const UploadList = forwardRef<HTMLUListElement, UploadListProps>(function UploadList(\n { children, className, ...props },\n ref,\n) {\n const { files, styles } = useUploadContext();\n return (\n <ul {...props} ref={ref} className={cx(styles.list, className)} data-slot=\"upload-list\">\n {children ?? files.map((file) => <UploadItem file={file} key={fileKey(file)} />)}\n </ul>\n );\n});\n\nexport interface UploadItemProps extends Omit<ComponentPropsWithoutRef<\"li\">, \"children\"> {\n file: File;\n children?: ReactNode;\n}\n\nexport const UploadItem = forwardRef<HTMLLIElement, UploadItemProps>(function UploadItem(\n { children, className, file, ...props },\n ref,\n) {\n const { styles } = useUploadContext();\n return (\n <li {...props} ref={ref} className={cx(styles.item, className)} data-slot=\"upload-item\">\n {children ?? (\n <>\n <span className={styles.itemName} data-slot=\"upload-item-name\" title={file.name}>\n {file.name}\n </span>\n <span className={styles.itemMeta} data-slot=\"upload-item-meta\">\n {formatBytes(file.size)}\n </span>\n <UploadRemove file={file} />\n </>\n )}\n </li>\n );\n});\n\nexport interface UploadRemoveProps extends ComponentPropsWithoutRef<\"button\"> {\n file: File;\n}\n\nexport const UploadRemove = forwardRef<HTMLButtonElement, UploadRemoveProps>(function UploadRemove(\n { children = \"×\", className, file, onClick, ...props },\n ref,\n) {\n const { disabled, removeFile, styles } = useUploadContext();\n return (\n <button\n {...props}\n aria-label={props[\"aria-label\"] ?? `Remove ${file.name}`}\n className={cx(styles.remove, className)}\n data-slot=\"upload-remove\"\n disabled={disabled}\n onClick={(event) => {\n removeFile(file);\n onClick?.(event);\n }}\n ref={ref}\n type=\"button\"\n >\n {children}\n </button>\n );\n});\n\nexport type UploadErrorProps = ComponentPropsWithoutRef<\"p\">;\n\nexport const UploadError = forwardRef<HTMLParagraphElement, UploadErrorProps>(function UploadError(\n { children, className, ...props },\n ref,\n) {\n const { rejections, styles } = useUploadContext();\n if (children === undefined && rejections.length === 0) return null;\n\n return (\n <p\n {...props}\n ref={ref}\n className={cx(styles.error, className)}\n data-slot=\"upload-error\"\n role=\"alert\"\n >\n {children ?? rejections.map((rejection) => rejection.message).join(\" \")}\n </p>\n );\n});\n\nexport const Upload = {\n Root: UploadRoot,\n Dropzone: UploadDropzone,\n Input: UploadInput,\n Trigger: UploadTrigger,\n Icon: UploadIcon,\n Text: UploadText,\n Hint: UploadHint,\n Preview: UploadPreview,\n Progress: UploadProgress,\n List: UploadList,\n Item: UploadItem,\n Remove: UploadRemove,\n Error: UploadError,\n};\n"],"mappings":"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"}
|