solid-tom-ui 1.0.7 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +246 -246
- package/dist/README.md +246 -0
- package/dist/components/avatar/avatar.js.map +1 -0
- package/dist/components/avatar/index.d.ts +3 -0
- package/{components → dist/components}/avatar/index.d.ts.map +1 -1
- package/dist/components/badge/badge.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/button/index.d.ts +3 -0
- package/{components → dist/components}/button/index.d.ts.map +1 -1
- package/dist/components/carousel/carousel.js.map +1 -0
- package/dist/components/chat-bubble/chatBubble.js.map +1 -0
- package/dist/components/checkbox/checkbox.js.map +1 -0
- package/dist/components/collapse/collapse.js.map +1 -0
- package/dist/components/collapse/index.d.ts +3 -0
- package/{components → dist/components}/collapse/index.d.ts.map +1 -1
- package/dist/components/context-menu/context-menu.js.map +1 -0
- package/dist/components/context-menu/context-menu.store.js.map +1 -0
- package/dist/components/divider/divider.js.map +1 -0
- package/dist/components/dropdown/dropdown.js.map +1 -0
- package/dist/components/dropdown/dropdown.store.js.map +1 -0
- package/dist/components/float-button/float-button.js.map +1 -0
- package/dist/components/float-button/index.d.ts +3 -0
- package/{components → dist/components}/float-button/index.d.ts.map +1 -1
- package/dist/components/hover-3d-image/hover-3d-image.js.map +1 -0
- package/dist/components/image-preview/image-preview.js.map +1 -0
- package/dist/components/input/index.d.ts +3 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/input/input.js.map +1 -0
- package/dist/components/input/input.utils.js.map +1 -0
- package/dist/components/input/variants/input-color.js.map +1 -0
- package/dist/components/input/variants/input-date.js.map +1 -0
- package/dist/components/input/variants/input-number.js.map +1 -0
- package/dist/components/input/variants/input-otp.js.map +1 -0
- package/dist/components/input/variants/input-password.js.map +1 -0
- package/dist/components/input/variants/input-radio.js.map +1 -0
- package/dist/components/input/variants/input-range.js.map +1 -0
- package/dist/components/input/variants/input-text.js.map +1 -0
- package/dist/components/input/variants/input-textarea.js.map +1 -0
- package/dist/components/loading/loading.js.map +1 -0
- package/dist/components/mansory/mansory.js.map +1 -0
- package/dist/components/menu/index.d.ts +4 -0
- package/{components → dist/components}/menu/index.d.ts.map +1 -1
- package/dist/components/menu/menu.js.map +1 -0
- package/{components → dist/components}/menu/menu.types.d.ts +7 -7
- package/{components → dist/components}/menu/menu.types.d.ts.map +1 -1
- package/dist/components/modal/modal.js.map +1 -0
- package/dist/components/modal/modalContext.js.map +1 -0
- package/dist/components/pagination/pagination.js.map +1 -0
- package/dist/components/progress-bar/progress-bar.js.map +1 -0
- package/dist/components/qr-code/qr-code.js.map +1 -0
- package/dist/components/rating/index.d.ts +3 -0
- package/{components → dist/components}/rating/index.d.ts.map +1 -1
- package/dist/components/select/select.js.map +1 -0
- package/dist/components/select-zone/select-zone.js.map +1 -0
- package/dist/components/skeleton/skeleton.js.map +1 -0
- package/dist/components/slider/index.d.ts +3 -0
- package/{components → dist/components}/slider/index.d.ts.map +1 -1
- package/dist/components/slider/slider.js.map +1 -0
- package/dist/components/splitter/splitter.js.map +1 -0
- package/dist/components/steps/steps.js.map +1 -0
- package/dist/components/swap/swap.js.map +1 -0
- package/dist/components/switch/switch.js.map +1 -0
- package/dist/components/tab/tab.js.map +1 -0
- package/dist/components/table/table.js.map +1 -0
- package/dist/components/timeline/timeline.js.map +1 -0
- package/dist/components/toast/icons/ErrorIcon.js.map +1 -0
- package/dist/components/toast/icons/IconCircle.js.map +1 -0
- package/dist/components/toast/icons/InfoIcon.js.map +1 -0
- package/dist/components/toast/icons/LoaderIcon.js.map +1 -0
- package/dist/components/toast/icons/SuccessIcon.js.map +1 -0
- package/dist/components/toast/icons/WarningIcon.js.map +1 -0
- package/dist/components/toast/toast.js.map +1 -0
- package/dist/components/toast/toast.store.js.map +1 -0
- package/dist/components/tooltip/tooltip.js.map +1 -0
- package/{components → dist/components}/tour/tour.d.ts.map +1 -1
- package/{components → dist/components}/tour/tour.js +1 -1
- package/dist/components/tour/tour.js.map +1 -0
- package/dist/components/upload/upload.js.map +1 -0
- package/dist/components/z-index/z-index.context.js.map +1 -0
- package/dist/components/z-index/z-index.js.map +1 -0
- package/dist/components/z-index/z-index.store.js.map +1 -0
- package/dist/components/z-index/z-index.types.js.map +1 -0
- package/dist/package.json +45 -0
- package/dist/skill/avatar.skill.md.txt +255 -0
- package/dist/skill/badge.skill.md.txt +223 -0
- package/dist/skill/blank.skill.md.txt +0 -0
- package/dist/skill/breadcrumb.skill.md.txt +177 -0
- package/dist/skill/button.skill.md.txt +198 -0
- package/dist/skill/carousel.skill.md.txt +406 -0
- package/dist/skill/chat-bubble.skill.md.txt +342 -0
- package/dist/skill/checkbox.skill.md.txt +326 -0
- package/dist/skill/code-preview.skill.md.txt +240 -0
- package/dist/skill/collapse.skill.md.txt +329 -0
- package/dist/skill/context-menu.skill.md.txt +233 -0
- package/dist/skill/diff.skill.md.txt +244 -0
- package/dist/skill/divider.skill.md.txt +151 -0
- package/dist/skill/doc.skill.md.txt +191 -0
- package/dist/skill/drawer.skill.md.txt +157 -0
- package/dist/skill/dropdown.skill.md.txt +198 -0
- package/dist/skill/float-button.skill.md.txt +315 -0
- package/dist/skill/hover-3d-image.skill.md.txt +120 -0
- package/dist/skill/iframe.skill.md.txt +114 -0
- package/dist/skill/image-preview.skill.md.txt +162 -0
- package/dist/skill/indicator.skill.md.txt +60 -0
- package/dist/skill/input.skill.md.txt +489 -0
- package/dist/skill/loading.skill.md.txt +127 -0
- package/dist/skill/mansory.skill.md.txt +0 -0
- package/dist/skill/menu.skill.md.txt +476 -0
- package/dist/skill/modal.skill.md.txt +359 -0
- package/dist/skill/pagination.skill.md.txt +405 -0
- package/dist/skill/progress-bar.skill.md.txt +207 -0
- package/dist/skill/qr-code.skill.md.txt +136 -0
- package/dist/skill/rating.skill.md.txt +167 -0
- package/dist/skill/select-zone.skill.md.txt +93 -0
- package/dist/skill/select.skill.md.txt +663 -0
- package/dist/skill/skeleton.skill.md.txt +192 -0
- package/dist/skill/slider.skill.md.txt +404 -0
- package/dist/skill/splitter.skill.md.txt +411 -0
- package/dist/skill/steps.skill.md.txt +264 -0
- package/dist/skill/swap.skill.md.txt +139 -0
- package/dist/skill/switch.skill.md.txt +191 -0
- package/dist/skill/tab.skill.md.txt +484 -0
- package/dist/skill/table.example.header.md.txt +667 -0
- package/dist/skill/table.skill.md.txt +1407 -0
- package/dist/skill/text-rotate.skill.md.txt +186 -0
- package/dist/skill/timeline.skill.md.txt +247 -0
- package/dist/skill/toast.skill.md.txt +531 -0
- package/dist/skill/tooltip.skill.md.txt +222 -0
- package/dist/skill/tour.skill.md.txt +156 -0
- package/dist/skill/upload.skill.md.txt +358 -0
- package/dist/skill/z-index.skill.md.txt +0 -0
- package/{solid-ui.css → dist/solid-ui.css} +2 -2
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/element-tracker.js.map +1 -0
- package/dist/utils/helper.js.map +1 -0
- package/dist/utils/hoc.js.map +1 -0
- package/package.json +101 -7
- package/components/avatar/avatar.js.map +0 -1
- package/components/avatar/index.d.ts +0 -2
- package/components/badge/badge.js.map +0 -1
- package/components/breadcrumb/breadcrumb.js.map +0 -1
- package/components/button/button.js.map +0 -1
- package/components/button/index.d.ts +0 -2
- package/components/carousel/carousel.js.map +0 -1
- package/components/chat-bubble/chatBubble.js.map +0 -1
- package/components/checkbox/checkbox.js.map +0 -1
- package/components/collapse/collapse.js.map +0 -1
- package/components/collapse/index.d.ts +0 -2
- package/components/context-menu/context-menu.js.map +0 -1
- package/components/context-menu/context-menu.store.js.map +0 -1
- package/components/divider/divider.js.map +0 -1
- package/components/dropdown/dropdown.js.map +0 -1
- package/components/dropdown/dropdown.store.js.map +0 -1
- package/components/float-button/float-button.js.map +0 -1
- package/components/float-button/index.d.ts +0 -2
- package/components/hover-3d-image/hover-3d-image.js.map +0 -1
- package/components/image-preview/image-preview.js.map +0 -1
- package/components/input/index.d.ts +0 -2
- package/components/input/index.d.ts.map +0 -1
- package/components/input/input.js.map +0 -1
- package/components/input/input.utils.js.map +0 -1
- package/components/input/variants/input-color.js.map +0 -1
- package/components/input/variants/input-date.js.map +0 -1
- package/components/input/variants/input-number.js.map +0 -1
- package/components/input/variants/input-otp.js.map +0 -1
- package/components/input/variants/input-password.js.map +0 -1
- package/components/input/variants/input-radio.js.map +0 -1
- package/components/input/variants/input-range.js.map +0 -1
- package/components/input/variants/input-text.js.map +0 -1
- package/components/input/variants/input-textarea.js.map +0 -1
- package/components/loading/loading.js.map +0 -1
- package/components/mansory/mansory.js.map +0 -1
- package/components/menu/index.d.ts +0 -4
- package/components/menu/menu.js.map +0 -1
- package/components/modal/modal.js.map +0 -1
- package/components/modal/modalContext.js.map +0 -1
- package/components/pagination/pagination.js.map +0 -1
- package/components/progress-bar/progress-bar.js.map +0 -1
- package/components/qr-code/qr-code.js.map +0 -1
- package/components/rating/index.d.ts +0 -2
- package/components/select/select.js.map +0 -1
- package/components/select-zone/select-zone.js.map +0 -1
- package/components/skeleton/skeleton.js.map +0 -1
- package/components/slider/index.d.ts +0 -2
- package/components/slider/slider.js.map +0 -1
- package/components/splitter/splitter.js.map +0 -1
- package/components/steps/steps.js.map +0 -1
- package/components/swap/swap.js.map +0 -1
- package/components/switch/switch.js.map +0 -1
- package/components/tab/tab.js.map +0 -1
- package/components/table/table.js.map +0 -1
- package/components/timeline/timeline.js.map +0 -1
- package/components/toast/icons/ErrorIcon.js.map +0 -1
- package/components/toast/icons/IconCircle.js.map +0 -1
- package/components/toast/icons/InfoIcon.js.map +0 -1
- package/components/toast/icons/LoaderIcon.js.map +0 -1
- package/components/toast/icons/SuccessIcon.js.map +0 -1
- package/components/toast/icons/WarningIcon.js.map +0 -1
- package/components/toast/toast.js.map +0 -1
- package/components/toast/toast.store.js.map +0 -1
- package/components/tooltip/tooltip.js.map +0 -1
- package/components/tour/tour.js.map +0 -1
- package/components/upload/upload.js.map +0 -1
- package/components/z-index/z-index.context.js.map +0 -1
- package/components/z-index/z-index.js.map +0 -1
- package/components/z-index/z-index.store.js.map +0 -1
- package/components/z-index/z-index.types.js.map +0 -1
- package/utils/cn.js.map +0 -1
- package/utils/element-tracker.js.map +0 -1
- package/utils/helper.js.map +0 -1
- package/utils/hoc.js.map +0 -1
- package/workspace.code-workspace +0 -8
- /package/{components → dist/components}/avatar/avatar.d.ts +0 -0
- /package/{components → dist/components}/avatar/avatar.d.ts.map +0 -0
- /package/{components → dist/components}/avatar/avatar.js +0 -0
- /package/{components → dist/components}/avatar/avatar.types.d.ts +0 -0
- /package/{components → dist/components}/avatar/avatar.types.d.ts.map +0 -0
- /package/{components → dist/components}/badge/badge.d.ts +0 -0
- /package/{components → dist/components}/badge/badge.d.ts.map +0 -0
- /package/{components → dist/components}/badge/badge.js +0 -0
- /package/{components → dist/components}/badge/badge.types.d.ts +0 -0
- /package/{components → dist/components}/badge/badge.types.d.ts.map +0 -0
- /package/{components → dist/components}/badge/index.d.ts +0 -0
- /package/{components → dist/components}/badge/index.d.ts.map +0 -0
- /package/{components → dist/components}/blank/blank.d.ts +0 -0
- /package/{components → dist/components}/blank/blank.d.ts.map +0 -0
- /package/{components → dist/components}/blank/index.d.ts +0 -0
- /package/{components → dist/components}/blank/index.d.ts.map +0 -0
- /package/{components → dist/components}/breadcrumb/breadcrumb.d.ts +0 -0
- /package/{components → dist/components}/breadcrumb/breadcrumb.d.ts.map +0 -0
- /package/{components → dist/components}/breadcrumb/breadcrumb.js +0 -0
- /package/{components → dist/components}/breadcrumb/index.d.ts +0 -0
- /package/{components → dist/components}/breadcrumb/index.d.ts.map +0 -0
- /package/{components → dist/components}/button/button.d.ts +0 -0
- /package/{components → dist/components}/button/button.d.ts.map +0 -0
- /package/{components → dist/components}/button/button.js +0 -0
- /package/{components → dist/components}/button/button.types.d.ts +0 -0
- /package/{components → dist/components}/button/button.types.d.ts.map +0 -0
- /package/{components → dist/components}/carousel/carousel.d.ts +0 -0
- /package/{components → dist/components}/carousel/carousel.d.ts.map +0 -0
- /package/{components → dist/components}/carousel/carousel.js +0 -0
- /package/{components → dist/components}/carousel/carousel.types.d.ts +0 -0
- /package/{components → dist/components}/carousel/carousel.types.d.ts.map +0 -0
- /package/{components → dist/components}/carousel/index.d.ts +0 -0
- /package/{components → dist/components}/carousel/index.d.ts.map +0 -0
- /package/{components → dist/components}/chat-bubble/chatBubble.d.ts +0 -0
- /package/{components → dist/components}/chat-bubble/chatBubble.d.ts.map +0 -0
- /package/{components → dist/components}/chat-bubble/chatBubble.js +0 -0
- /package/{components → dist/components}/chat-bubble/chatBubble.type.d.ts +0 -0
- /package/{components → dist/components}/chat-bubble/chatBubble.type.d.ts.map +0 -0
- /package/{components → dist/components}/chat-bubble/index.d.ts +0 -0
- /package/{components → dist/components}/chat-bubble/index.d.ts.map +0 -0
- /package/{components → dist/components}/checkbox/checkbox.d.ts +0 -0
- /package/{components → dist/components}/checkbox/checkbox.d.ts.map +0 -0
- /package/{components → dist/components}/checkbox/checkbox.js +0 -0
- /package/{components → dist/components}/checkbox/index.d.ts +0 -0
- /package/{components → dist/components}/checkbox/index.d.ts.map +0 -0
- /package/{components → dist/components}/collapse/collapse.d.ts +0 -0
- /package/{components → dist/components}/collapse/collapse.d.ts.map +0 -0
- /package/{components → dist/components}/collapse/collapse.js +0 -0
- /package/{components → dist/components}/collapse/collapse.types.d.ts +0 -0
- /package/{components → dist/components}/collapse/collapse.types.d.ts.map +0 -0
- /package/{components → dist/components}/context-menu/context-menu.d.ts +0 -0
- /package/{components → dist/components}/context-menu/context-menu.d.ts.map +0 -0
- /package/{components → dist/components}/context-menu/context-menu.js +0 -0
- /package/{components → dist/components}/context-menu/context-menu.store.d.ts +0 -0
- /package/{components → dist/components}/context-menu/context-menu.store.d.ts.map +0 -0
- /package/{components → dist/components}/context-menu/context-menu.store.js +0 -0
- /package/{components → dist/components}/context-menu/context-menu.types.d.ts +0 -0
- /package/{components → dist/components}/context-menu/context-menu.types.d.ts.map +0 -0
- /package/{components → dist/components}/context-menu/index.d.ts +0 -0
- /package/{components → dist/components}/context-menu/index.d.ts.map +0 -0
- /package/{components → dist/components}/diff/diff.d.ts +0 -0
- /package/{components → dist/components}/diff/diff.d.ts.map +0 -0
- /package/{components → dist/components}/diff/diff.js +0 -0
- /package/{components → dist/components}/diff/diff.js.map +0 -0
- /package/{components → dist/components}/diff/index.d.ts +0 -0
- /package/{components → dist/components}/diff/index.d.ts.map +0 -0
- /package/{components → dist/components}/divider/divider.d.ts +0 -0
- /package/{components → dist/components}/divider/divider.d.ts.map +0 -0
- /package/{components → dist/components}/divider/divider.js +0 -0
- /package/{components → dist/components}/divider/divider.types.d.ts +0 -0
- /package/{components → dist/components}/divider/divider.types.d.ts.map +0 -0
- /package/{components → dist/components}/divider/index.d.ts +0 -0
- /package/{components → dist/components}/divider/index.d.ts.map +0 -0
- /package/{components → dist/components}/drawer/drawer.d.ts +0 -0
- /package/{components → dist/components}/drawer/drawer.d.ts.map +0 -0
- /package/{components → dist/components}/drawer/drawer.js +0 -0
- /package/{components → dist/components}/drawer/drawer.js.map +0 -0
- /package/{components → dist/components}/drawer/drawer.types.d.ts +0 -0
- /package/{components → dist/components}/drawer/drawer.types.d.ts.map +0 -0
- /package/{components → dist/components}/drawer/index.d.ts +0 -0
- /package/{components → dist/components}/drawer/index.d.ts.map +0 -0
- /package/{components → dist/components}/dropdown/dropdown.d.ts +0 -0
- /package/{components → dist/components}/dropdown/dropdown.d.ts.map +0 -0
- /package/{components → dist/components}/dropdown/dropdown.js +0 -0
- /package/{components → dist/components}/dropdown/dropdown.store.d.ts +0 -0
- /package/{components → dist/components}/dropdown/dropdown.store.d.ts.map +0 -0
- /package/{components → dist/components}/dropdown/dropdown.store.js +0 -0
- /package/{components → dist/components}/dropdown/dropdown.types.d.ts +0 -0
- /package/{components → dist/components}/dropdown/dropdown.types.d.ts.map +0 -0
- /package/{components → dist/components}/dropdown/index.d.ts +0 -0
- /package/{components → dist/components}/dropdown/index.d.ts.map +0 -0
- /package/{components → dist/components}/float-button/float-button.d.ts +0 -0
- /package/{components → dist/components}/float-button/float-button.d.ts.map +0 -0
- /package/{components → dist/components}/float-button/float-button.js +0 -0
- /package/{components → dist/components}/float-button/float-button.types.d.ts +0 -0
- /package/{components → dist/components}/float-button/float-button.types.d.ts.map +0 -0
- /package/{components → dist/components}/hover-3d-image/hover-3d-example.d.ts +0 -0
- /package/{components → dist/components}/hover-3d-image/hover-3d-example.d.ts.map +0 -0
- /package/{components → dist/components}/hover-3d-image/hover-3d-image.d.ts +0 -0
- /package/{components → dist/components}/hover-3d-image/hover-3d-image.d.ts.map +0 -0
- /package/{components → dist/components}/hover-3d-image/hover-3d-image.js +0 -0
- /package/{components → dist/components}/hover-3d-image/index.d.ts +0 -0
- /package/{components → dist/components}/hover-3d-image/index.d.ts.map +0 -0
- /package/{components → dist/components}/image-preview/image-preview.d.ts +0 -0
- /package/{components → dist/components}/image-preview/image-preview.d.ts.map +0 -0
- /package/{components → dist/components}/image-preview/image-preview.js +0 -0
- /package/{components → dist/components}/image-preview/index.d.ts +0 -0
- /package/{components → dist/components}/image-preview/index.d.ts.map +0 -0
- /package/{components → dist/components}/indicator/index.d.ts +0 -0
- /package/{components → dist/components}/indicator/index.d.ts.map +0 -0
- /package/{components → dist/components}/indicator/indicator.d.ts +0 -0
- /package/{components → dist/components}/indicator/indicator.d.ts.map +0 -0
- /package/{components → dist/components}/indicator/indicator.js +0 -0
- /package/{components → dist/components}/indicator/indicator.js.map +0 -0
- /package/{components → dist/components}/indicator/indicator.types.d.ts +0 -0
- /package/{components → dist/components}/indicator/indicator.types.d.ts.map +0 -0
- /package/{components → dist/components}/input/input.d.ts +0 -0
- /package/{components → dist/components}/input/input.d.ts.map +0 -0
- /package/{components → dist/components}/input/input.js +0 -0
- /package/{components → dist/components}/input/input.types.d.ts +0 -0
- /package/{components → dist/components}/input/input.types.d.ts.map +0 -0
- /package/{components → dist/components}/input/input.utils.d.ts +0 -0
- /package/{components → dist/components}/input/input.utils.d.ts.map +0 -0
- /package/{components → dist/components}/input/input.utils.js +0 -0
- /package/{components → dist/components}/input/variants/input-color.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-color.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-color.js +0 -0
- /package/{components → dist/components}/input/variants/input-date.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-date.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-date.js +0 -0
- /package/{components → dist/components}/input/variants/input-number.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-number.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-number.js +0 -0
- /package/{components → dist/components}/input/variants/input-otp.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-otp.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-otp.js +0 -0
- /package/{components → dist/components}/input/variants/input-password.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-password.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-password.js +0 -0
- /package/{components → dist/components}/input/variants/input-radio.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-radio.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-radio.js +0 -0
- /package/{components → dist/components}/input/variants/input-range.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-range.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-range.js +0 -0
- /package/{components → dist/components}/input/variants/input-text.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-text.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-text.js +0 -0
- /package/{components → dist/components}/input/variants/input-textarea.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-textarea.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-textarea.js +0 -0
- /package/{components → dist/components}/loading/index.d.ts +0 -0
- /package/{components → dist/components}/loading/index.d.ts.map +0 -0
- /package/{components → dist/components}/loading/loading.d.ts +0 -0
- /package/{components → dist/components}/loading/loading.d.ts.map +0 -0
- /package/{components → dist/components}/loading/loading.js +0 -0
- /package/{components → dist/components}/mansory/index.d.ts +0 -0
- /package/{components → dist/components}/mansory/index.d.ts.map +0 -0
- /package/{components → dist/components}/mansory/mansory.d.ts +0 -0
- /package/{components → dist/components}/mansory/mansory.d.ts.map +0 -0
- /package/{components → dist/components}/mansory/mansory.js +0 -0
- /package/{components → dist/components}/mansory/mansory.types.d.ts +0 -0
- /package/{components → dist/components}/mansory/mansory.types.d.ts.map +0 -0
- /package/{components → dist/components}/menu/menu.d.ts +0 -0
- /package/{components → dist/components}/menu/menu.d.ts.map +0 -0
- /package/{components → dist/components}/menu/menu.data-example.d.ts +0 -0
- /package/{components → dist/components}/menu/menu.data-example.d.ts.map +0 -0
- /package/{components → dist/components}/menu/menu.js +0 -0
- /package/{components → dist/components}/modal/index.d.ts +0 -0
- /package/{components → dist/components}/modal/index.d.ts.map +0 -0
- /package/{components → dist/components}/modal/modal.d.ts +0 -0
- /package/{components → dist/components}/modal/modal.d.ts.map +0 -0
- /package/{components → dist/components}/modal/modal.js +0 -0
- /package/{components → dist/components}/modal/modalContext.d.ts +0 -0
- /package/{components → dist/components}/modal/modalContext.d.ts.map +0 -0
- /package/{components → dist/components}/modal/modalContext.js +0 -0
- /package/{components → dist/components}/pagination/index.d.ts +0 -0
- /package/{components → dist/components}/pagination/index.d.ts.map +0 -0
- /package/{components → dist/components}/pagination/pagination.d.ts +0 -0
- /package/{components → dist/components}/pagination/pagination.d.ts.map +0 -0
- /package/{components → dist/components}/pagination/pagination.js +0 -0
- /package/{components → dist/components}/pagination/pagination.types.d.ts +0 -0
- /package/{components → dist/components}/pagination/pagination.types.d.ts.map +0 -0
- /package/{components → dist/components}/progress-bar/index.d.ts +0 -0
- /package/{components → dist/components}/progress-bar/index.d.ts.map +0 -0
- /package/{components → dist/components}/progress-bar/progress-bar.d.ts +0 -0
- /package/{components → dist/components}/progress-bar/progress-bar.d.ts.map +0 -0
- /package/{components → dist/components}/progress-bar/progress-bar.js +0 -0
- /package/{components → dist/components}/progress-bar/progress-bar.types.d.ts +0 -0
- /package/{components → dist/components}/progress-bar/progress-bar.types.d.ts.map +0 -0
- /package/{components → dist/components}/qr-code/index.d.ts +0 -0
- /package/{components → dist/components}/qr-code/index.d.ts.map +0 -0
- /package/{components → dist/components}/qr-code/qr-code.d.ts +0 -0
- /package/{components → dist/components}/qr-code/qr-code.d.ts.map +0 -0
- /package/{components → dist/components}/qr-code/qr-code.js +0 -0
- /package/{components → dist/components}/qr-code/qr-code.types.d.ts +0 -0
- /package/{components → dist/components}/qr-code/qr-code.types.d.ts.map +0 -0
- /package/{components → dist/components}/rating/rating.d.ts +0 -0
- /package/{components → dist/components}/rating/rating.d.ts.map +0 -0
- /package/{components → dist/components}/rating/rating.js +0 -0
- /package/{components → dist/components}/rating/rating.js.map +0 -0
- /package/{components → dist/components}/rating/rating.types.d.ts +0 -0
- /package/{components → dist/components}/rating/rating.types.d.ts.map +0 -0
- /package/{components → dist/components}/select/index.d.ts +0 -0
- /package/{components → dist/components}/select/index.d.ts.map +0 -0
- /package/{components → dist/components}/select/select.d.ts +0 -0
- /package/{components → dist/components}/select/select.d.ts.map +0 -0
- /package/{components → dist/components}/select/select.js +0 -0
- /package/{components → dist/components}/select/select.types.d.ts +0 -0
- /package/{components → dist/components}/select/select.types.d.ts.map +0 -0
- /package/{components → dist/components}/select-zone/index.d.ts +0 -0
- /package/{components → dist/components}/select-zone/index.d.ts.map +0 -0
- /package/{components → dist/components}/select-zone/select-zone.d.ts +0 -0
- /package/{components → dist/components}/select-zone/select-zone.d.ts.map +0 -0
- /package/{components → dist/components}/select-zone/select-zone.js +0 -0
- /package/{components → dist/components}/select-zone/select-zone.types.d.ts +0 -0
- /package/{components → dist/components}/select-zone/select-zone.types.d.ts.map +0 -0
- /package/{components → dist/components}/skeleton/index.d.ts +0 -0
- /package/{components → dist/components}/skeleton/index.d.ts.map +0 -0
- /package/{components → dist/components}/skeleton/skeleton.d.ts +0 -0
- /package/{components → dist/components}/skeleton/skeleton.d.ts.map +0 -0
- /package/{components → dist/components}/skeleton/skeleton.js +0 -0
- /package/{components → dist/components}/slider/slider.d.ts +0 -0
- /package/{components → dist/components}/slider/slider.d.ts.map +0 -0
- /package/{components → dist/components}/slider/slider.js +0 -0
- /package/{components → dist/components}/slider/slider.types.d.ts +0 -0
- /package/{components → dist/components}/slider/slider.types.d.ts.map +0 -0
- /package/{components → dist/components}/splitter/index.d.ts +0 -0
- /package/{components → dist/components}/splitter/index.d.ts.map +0 -0
- /package/{components → dist/components}/splitter/splitter.d.ts +0 -0
- /package/{components → dist/components}/splitter/splitter.d.ts.map +0 -0
- /package/{components → dist/components}/splitter/splitter.js +0 -0
- /package/{components → dist/components}/splitter/splitter.types.d.ts +0 -0
- /package/{components → dist/components}/splitter/splitter.types.d.ts.map +0 -0
- /package/{components → dist/components}/steps/index.d.ts +0 -0
- /package/{components → dist/components}/steps/index.d.ts.map +0 -0
- /package/{components → dist/components}/steps/steps.d.ts +0 -0
- /package/{components → dist/components}/steps/steps.d.ts.map +0 -0
- /package/{components → dist/components}/steps/steps.js +0 -0
- /package/{components → dist/components}/swap/index.d.ts +0 -0
- /package/{components → dist/components}/swap/index.d.ts.map +0 -0
- /package/{components → dist/components}/swap/swap.d.ts +0 -0
- /package/{components → dist/components}/swap/swap.d.ts.map +0 -0
- /package/{components → dist/components}/swap/swap.js +0 -0
- /package/{components → dist/components}/switch/index.d.ts +0 -0
- /package/{components → dist/components}/switch/index.d.ts.map +0 -0
- /package/{components → dist/components}/switch/switch.d.ts +0 -0
- /package/{components → dist/components}/switch/switch.d.ts.map +0 -0
- /package/{components → dist/components}/switch/switch.js +0 -0
- /package/{components → dist/components}/switch/switch.types.d.ts +0 -0
- /package/{components → dist/components}/switch/switch.types.d.ts.map +0 -0
- /package/{components → dist/components}/tab/index.d.ts +0 -0
- /package/{components → dist/components}/tab/index.d.ts.map +0 -0
- /package/{components → dist/components}/tab/tab.d.ts +0 -0
- /package/{components → dist/components}/tab/tab.d.ts.map +0 -0
- /package/{components → dist/components}/tab/tab.js +0 -0
- /package/{components → dist/components}/tab/tab.types.d.ts +0 -0
- /package/{components → dist/components}/tab/tab.types.d.ts.map +0 -0
- /package/{components → dist/components}/table/index.d.ts +0 -0
- /package/{components → dist/components}/table/index.d.ts.map +0 -0
- /package/{components → dist/components}/table/index.js +0 -0
- /package/{components → dist/components}/table/table.d.ts +0 -0
- /package/{components → dist/components}/table/table.d.ts.map +0 -0
- /package/{components → dist/components}/table/table.js +0 -0
- /package/{components → dist/components}/table/table.types.d.ts +0 -0
- /package/{components → dist/components}/table/table.types.d.ts.map +0 -0
- /package/{components → dist/components}/text-rotate/index.d.ts +0 -0
- /package/{components → dist/components}/text-rotate/index.d.ts.map +0 -0
- /package/{components → dist/components}/text-rotate/text-rotate.d.ts +0 -0
- /package/{components → dist/components}/text-rotate/text-rotate.d.ts.map +0 -0
- /package/{components → dist/components}/text-rotate/text-rotate.js +0 -0
- /package/{components → dist/components}/text-rotate/text-rotate.js.map +0 -0
- /package/{components → dist/components}/timeline/index.d.ts +0 -0
- /package/{components → dist/components}/timeline/index.d.ts.map +0 -0
- /package/{components → dist/components}/timeline/timeline.d.ts +0 -0
- /package/{components → dist/components}/timeline/timeline.d.ts.map +0 -0
- /package/{components → dist/components}/timeline/timeline.js +0 -0
- /package/{components → dist/components}/timeline/timeline.types.d.ts +0 -0
- /package/{components → dist/components}/timeline/timeline.types.d.ts.map +0 -0
- /package/{components → dist/components}/toast/icons/ErrorIcon.d.ts +0 -0
- /package/{components → dist/components}/toast/icons/ErrorIcon.d.ts.map +0 -0
- /package/{components → dist/components}/toast/icons/ErrorIcon.js +0 -0
- /package/{components → dist/components}/toast/icons/IconCircle.d.ts +0 -0
- /package/{components → dist/components}/toast/icons/IconCircle.d.ts.map +0 -0
- /package/{components → dist/components}/toast/icons/IconCircle.js +0 -0
- /package/{components → dist/components}/toast/icons/InfoIcon.d.ts +0 -0
- /package/{components → dist/components}/toast/icons/InfoIcon.d.ts.map +0 -0
- /package/{components → dist/components}/toast/icons/InfoIcon.js +0 -0
- /package/{components → dist/components}/toast/icons/LoaderIcon.d.ts +0 -0
- /package/{components → dist/components}/toast/icons/LoaderIcon.d.ts.map +0 -0
- /package/{components → dist/components}/toast/icons/LoaderIcon.js +0 -0
- /package/{components → dist/components}/toast/icons/SuccessIcon.d.ts +0 -0
- /package/{components → dist/components}/toast/icons/SuccessIcon.d.ts.map +0 -0
- /package/{components → dist/components}/toast/icons/SuccessIcon.js +0 -0
- /package/{components → dist/components}/toast/icons/WarningIcon.d.ts +0 -0
- /package/{components → dist/components}/toast/icons/WarningIcon.d.ts.map +0 -0
- /package/{components → dist/components}/toast/icons/WarningIcon.js +0 -0
- /package/{components → dist/components}/toast/icons/index.d.ts +0 -0
- /package/{components → dist/components}/toast/icons/index.d.ts.map +0 -0
- /package/{components → dist/components}/toast/index.d.ts +0 -0
- /package/{components → dist/components}/toast/index.d.ts.map +0 -0
- /package/{components → dist/components}/toast/toast.d.ts +0 -0
- /package/{components → dist/components}/toast/toast.d.ts.map +0 -0
- /package/{components → dist/components}/toast/toast.js +0 -0
- /package/{components → dist/components}/toast/toast.store.d.ts +0 -0
- /package/{components → dist/components}/toast/toast.store.d.ts.map +0 -0
- /package/{components → dist/components}/toast/toast.store.js +0 -0
- /package/{components → dist/components}/toast/toast.type.d.ts +0 -0
- /package/{components → dist/components}/toast/toast.type.d.ts.map +0 -0
- /package/{components → dist/components}/tooltip/index.d.ts +0 -0
- /package/{components → dist/components}/tooltip/index.d.ts.map +0 -0
- /package/{components → dist/components}/tooltip/tooltip.d.ts +0 -0
- /package/{components → dist/components}/tooltip/tooltip.d.ts.map +0 -0
- /package/{components → dist/components}/tooltip/tooltip.js +0 -0
- /package/{components → dist/components}/tooltip/tooltip.types.d.ts +0 -0
- /package/{components → dist/components}/tooltip/tooltip.types.d.ts.map +0 -0
- /package/{components → dist/components}/tour/index.d.ts +0 -0
- /package/{components → dist/components}/tour/index.d.ts.map +0 -0
- /package/{components → dist/components}/tour/tour.d.ts +0 -0
- /package/{components → dist/components}/tour/tour.types.d.ts +0 -0
- /package/{components → dist/components}/tour/tour.types.d.ts.map +0 -0
- /package/{components → dist/components}/upload/index.d.ts +0 -0
- /package/{components → dist/components}/upload/index.d.ts.map +0 -0
- /package/{components → dist/components}/upload/upload.d.ts +0 -0
- /package/{components → dist/components}/upload/upload.d.ts.map +0 -0
- /package/{components → dist/components}/upload/upload.js +0 -0
- /package/{components → dist/components}/upload/upload.types.d.ts +0 -0
- /package/{components → dist/components}/upload/upload.types.d.ts.map +0 -0
- /package/{components → dist/components}/z-index/index.d.ts +0 -0
- /package/{components → dist/components}/z-index/index.d.ts.map +0 -0
- /package/{components → dist/components}/z-index/z-index.context.d.ts +0 -0
- /package/{components → dist/components}/z-index/z-index.context.d.ts.map +0 -0
- /package/{components → dist/components}/z-index/z-index.context.js +0 -0
- /package/{components → dist/components}/z-index/z-index.d.ts +0 -0
- /package/{components → dist/components}/z-index/z-index.d.ts.map +0 -0
- /package/{components → dist/components}/z-index/z-index.js +0 -0
- /package/{components → dist/components}/z-index/z-index.store.d.ts +0 -0
- /package/{components → dist/components}/z-index/z-index.store.d.ts.map +0 -0
- /package/{components → dist/components}/z-index/z-index.store.js +0 -0
- /package/{components → dist/components}/z-index/z-index.types.d.ts +0 -0
- /package/{components → dist/components}/z-index/z-index.types.d.ts.map +0 -0
- /package/{components → dist/components}/z-index/z-index.types.js +0 -0
- /package/{lib.d.ts → dist/lib.d.ts} +0 -0
- /package/{lib.d.ts.map → dist/lib.d.ts.map} +0 -0
- /package/{lib.js → dist/lib.js} +0 -0
- /package/{type.d.ts → dist/type.d.ts} +0 -0
- /package/{type.d.ts.map → dist/type.d.ts.map} +0 -0
- /package/{utils → dist/utils}/cn.d.ts +0 -0
- /package/{utils → dist/utils}/cn.d.ts.map +0 -0
- /package/{utils → dist/utils}/cn.js +0 -0
- /package/{utils → dist/utils}/element-tracker.js +0 -0
- /package/{utils → dist/utils}/helper.d.ts +0 -0
- /package/{utils → dist/utils}/helper.d.ts.map +0 -0
- /package/{utils → dist/utils}/helper.js +0 -0
- /package/{utils → dist/utils}/hoc.js +0 -0
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
## COMPONENT IDENTITY
|
|
2
|
+
- **Import**: `import { Upload } from 'solid-tom-ui';`
|
|
3
|
+
- **Exports**: `Upload` (main), `Upload.Dragger` (sub-component)
|
|
4
|
+
- **Framework**: SolidJS
|
|
5
|
+
- **Purpose**: Feature-rich file upload — button-triggered and drag-and-drop modes, multiple list display types, file validation, progress tracking, image preview, custom request handling
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Props
|
|
10
|
+
|
|
11
|
+
### Shared Props (both `Upload` and `Upload.Dragger`)
|
|
12
|
+
|
|
13
|
+
| Prop | Type | Default | Description |
|
|
14
|
+
| ---------------- | ------------------------------------------- | ----------- | ------------------------------------------------------------- |
|
|
15
|
+
| `multiple` | `boolean` | `true` | Allow selecting multiple files at once |
|
|
16
|
+
| `directory` | `boolean` | `false` | Upload an entire folder (sets `showClearAll` true) |
|
|
17
|
+
| `accept` | `string` | — | MIME types filter, e.g. `"image/*,.pdf"` |
|
|
18
|
+
| `listType` | `'text' \| 'picture' \| 'picture-card'` | `'text'` | How the file list is rendered |
|
|
19
|
+
| `showUploadList` | `boolean` | `true` | Whether to show the file list below the trigger |
|
|
20
|
+
| `maxCount` | `number` | — | Max number of files; trigger is hidden when reached |
|
|
21
|
+
| `maxFileSize` | `number` | — | Max size per file in **bytes**. Rejected batches fire `onError` |
|
|
22
|
+
| `maxTotalSize` | `number` | — | Max combined size of all files in **bytes** |
|
|
23
|
+
| `showClearAll` | `boolean` | `false` | Show a "Clear all" button (auto-enabled for `directory`) |
|
|
24
|
+
| `showTooltip` | `boolean` | `false` | Show tooltip with full filename in the `text` list |
|
|
25
|
+
| `onChange` | `(info: UploadChangeInfo) => void` | — | Called on file add, progress update, and completion |
|
|
26
|
+
| `onError` | `(error: UploadValidationError) => void` | — | Called when a batch fails validation (before upload starts) |
|
|
27
|
+
| `customRequest` | `UploadCustomRequest` | — | Override the default simulated upload |
|
|
28
|
+
| `class` | `string \| UploadClassConfig` | — | String → applied to wrapper. Object → per-element overrides |
|
|
29
|
+
| `errorMessage` | `JSXElement` | — | JSX slot rendered inside the component when an error occurs |
|
|
30
|
+
| `children` | `JSXElement` | — | Trigger content (`Upload` only); also works as custom dragger content |
|
|
31
|
+
|
|
32
|
+
### `Upload.Dragger`-only Props
|
|
33
|
+
|
|
34
|
+
| Prop | Type | Default | Description |
|
|
35
|
+
| ------ | ------------ | ------------------------------------------- | ------------------------ |
|
|
36
|
+
| `hint` | `string` | `"Support for a single or bulk upload"` | Subtitle below main text |
|
|
37
|
+
| `icon` | `JSXElement` | `<CloudUpload />` (lucide) | Icon above the text |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Key Types
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
type UploadErrorType = 'maxCount' | 'maxFileSize' | 'maxTotalSize' | 'accept'
|
|
45
|
+
|
|
46
|
+
interface UploadValidationError {
|
|
47
|
+
type: UploadErrorType
|
|
48
|
+
file?: File // the first file in the rejected batch (when relevant)
|
|
49
|
+
message: string // human-readable description
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
interface UploadFile {
|
|
53
|
+
uid: string
|
|
54
|
+
name: string
|
|
55
|
+
size: number // bytes
|
|
56
|
+
type: string // MIME type
|
|
57
|
+
status: 'uploading' | 'done' | 'error' | 'removed'
|
|
58
|
+
thumbUrl?: string // object URL (images only)
|
|
59
|
+
originFile: File // original File object
|
|
60
|
+
percent?: number // 0–100 (emitted in onChange during progress)
|
|
61
|
+
error?: Error
|
|
62
|
+
dimensions?: { width: number; height: number } // images only
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
interface UploadChangeInfo {
|
|
66
|
+
file: UploadFile // the file that triggered the event
|
|
67
|
+
fileList: UploadFile[]
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// customRequest signature
|
|
71
|
+
type UploadCustomRequest = (options: {
|
|
72
|
+
file: File
|
|
73
|
+
onSuccess: (response?: unknown) => void
|
|
74
|
+
onError: (error: Error) => void
|
|
75
|
+
onProgress: (percent: number) => void
|
|
76
|
+
}) => (() => void) | void // return a cancel fn to support abort
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## UploadClassConfig — Per-element Class Overrides
|
|
82
|
+
|
|
83
|
+
Pass an `UploadClassConfig` object to `class` to style individual elements inside the component. Each key is optional and its value is merged with the default CSS class using `cn()`.
|
|
84
|
+
|
|
85
|
+
```ts
|
|
86
|
+
interface UploadClassConfig {
|
|
87
|
+
// Layout
|
|
88
|
+
wrapper?: string // outer container
|
|
89
|
+
// Dragger
|
|
90
|
+
dragger?: string // dragger zone div
|
|
91
|
+
draggerIcon?: string // icon wrapper inside dragger
|
|
92
|
+
draggerTitle?: string // main text in dragger
|
|
93
|
+
draggerHint?: string // hint/subtitle in dragger
|
|
94
|
+
// Shared header
|
|
95
|
+
listHeader?: string // header row (count + clear btn)
|
|
96
|
+
listCount?: string // "N files" text
|
|
97
|
+
clearBtn?: string // "Clear all" button
|
|
98
|
+
// Text list
|
|
99
|
+
textList?: string // text list wrapper
|
|
100
|
+
textItem?: string // each row in text list
|
|
101
|
+
textBadge?: string // file-type badge (PDF/IMG/DOC...)
|
|
102
|
+
textName?: string // filename span
|
|
103
|
+
textSize?: string // file size span
|
|
104
|
+
// Picture list
|
|
105
|
+
pictureList?: string
|
|
106
|
+
pictureItem?: string
|
|
107
|
+
pictureThumb?: string // 52×52 thumbnail wrapper
|
|
108
|
+
pictureIcon?: string // fallback icon wrapper
|
|
109
|
+
pictureInfo?: string // name/size/progress column
|
|
110
|
+
pictureActions?: string // actions column
|
|
111
|
+
progressTrack?: string // progress bar track (picture & text lists)
|
|
112
|
+
progressFill?: string // progress bar fill (picture & text lists)
|
|
113
|
+
// Picture-card
|
|
114
|
+
cardGrid?: string // flex grid wrapper
|
|
115
|
+
card?: string // each 96×96 card
|
|
116
|
+
cardImg?: string // img inside card
|
|
117
|
+
cardIcon?: string // fallback icon inside card
|
|
118
|
+
cardAdd?: string // the "Upload" add button card
|
|
119
|
+
// Shared buttons
|
|
120
|
+
removeBtn?: string
|
|
121
|
+
actionBtn?: string // preview button
|
|
122
|
+
// Error message
|
|
123
|
+
errorMessage?: string // container div of the errorMessage slot
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
> **Note**: There are no separate `textProgressBar` / `textProgressTrack` / `textProgressFill` keys.
|
|
128
|
+
> The shared `progressTrack` / `progressFill` keys apply to both the text and picture lists.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Usage Examples
|
|
133
|
+
|
|
134
|
+
### Basic Button Upload
|
|
135
|
+
|
|
136
|
+
```tsx
|
|
137
|
+
<Upload accept="image/*,.pdf" onChange={({ file, fileList }) => console.log(file, fileList)}>
|
|
138
|
+
<Button>Click to Upload</Button>
|
|
139
|
+
</Upload>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Single File Only
|
|
143
|
+
|
|
144
|
+
```tsx
|
|
145
|
+
<Upload multiple={false} maxCount={1}>
|
|
146
|
+
<Button>Select File</Button>
|
|
147
|
+
</Upload>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Folder Upload
|
|
151
|
+
|
|
152
|
+
```tsx
|
|
153
|
+
<Upload directory>
|
|
154
|
+
<Button>Upload Folder</Button>
|
|
155
|
+
</Upload>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
> `showClearAll` is automatically enabled when `directory={true}`.
|
|
159
|
+
|
|
160
|
+
### Drag & Drop Dragger
|
|
161
|
+
|
|
162
|
+
```tsx
|
|
163
|
+
<Upload.Dragger accept="image/*" maxCount={8} listType="picture" />
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
> `children` is optional — Dragger renders its own default UI (icon + title + hint).
|
|
167
|
+
> If `children` is provided it replaces the default title/hint but keeps the dragger zone.
|
|
168
|
+
|
|
169
|
+
### Custom Icon & Hint
|
|
170
|
+
|
|
171
|
+
```tsx
|
|
172
|
+
import ImageIcon from 'lucide-solid/icons/image'
|
|
173
|
+
|
|
174
|
+
<Upload.Dragger
|
|
175
|
+
icon={<ImageIcon size={40} class="text-primary" />}
|
|
176
|
+
hint="Only PNG, JPG, WEBP supported. Max 5 MB per file."
|
|
177
|
+
accept="image/png,image/jpeg,image/webp"
|
|
178
|
+
/>
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Picture List Type
|
|
182
|
+
|
|
183
|
+
```tsx
|
|
184
|
+
<Upload listType="picture" accept="image/*">
|
|
185
|
+
<Button>Upload Images</Button>
|
|
186
|
+
</Upload>
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
> Shows a 52×52 thumbnail, file dimensions, name, and size per item.
|
|
190
|
+
|
|
191
|
+
### Picture-Card Grid
|
|
192
|
+
|
|
193
|
+
```tsx
|
|
194
|
+
<Upload listType="picture-card" accept="image/*" maxCount={8}>
|
|
195
|
+
{/* children not used in picture-card mode — the grid manages its own add button */}
|
|
196
|
+
</Upload>
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
> When `maxCount` is reached the "Upload" add card disappears automatically.
|
|
200
|
+
> For `Upload.Dragger` with `listType="picture-card"`, the dragger zone is also hidden — only the grid is shown.
|
|
201
|
+
|
|
202
|
+
### Tooltip on Filenames (text list)
|
|
203
|
+
|
|
204
|
+
```tsx
|
|
205
|
+
<Upload showTooltip accept="*/*">
|
|
206
|
+
<Button>Upload</Button>
|
|
207
|
+
</Upload>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
> `showTooltip` only applies to the `text` list type. Long filenames are shown in a tooltip on hover.
|
|
211
|
+
|
|
212
|
+
### Validation — maxFileSize / maxTotalSize
|
|
213
|
+
|
|
214
|
+
```tsx
|
|
215
|
+
const [errorMsg, setErrorMsg] = createSignal<string | null>(null)
|
|
216
|
+
|
|
217
|
+
<Upload
|
|
218
|
+
multiple
|
|
219
|
+
maxCount={5}
|
|
220
|
+
maxFileSize={2 * 1024 * 1024} // 2 MB per file
|
|
221
|
+
maxTotalSize={8 * 1024 * 1024} // 8 MB total
|
|
222
|
+
onError={err => {
|
|
223
|
+
setErrorMsg(err.message)
|
|
224
|
+
setTimeout(() => setErrorMsg(null), 4000)
|
|
225
|
+
}}
|
|
226
|
+
errorMessage={
|
|
227
|
+
errorMsg() && (
|
|
228
|
+
<span class="text-error flex items-center gap-1">
|
|
229
|
+
<AlertCircle size={13} />
|
|
230
|
+
{errorMsg()}
|
|
231
|
+
</span>
|
|
232
|
+
)
|
|
233
|
+
}
|
|
234
|
+
>
|
|
235
|
+
<Button>Upload</Button>
|
|
236
|
+
</Upload>
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
> **Batch validation**: validation runs on the whole selection before any file is added.
|
|
240
|
+
> If any file in the batch fails validation, the **entire batch** is rejected — no files from that selection enter the list.
|
|
241
|
+
> `onError` is called with the first failing file and a typed `UploadValidationError`.
|
|
242
|
+
> `errorMessage` is a JSX slot rendered inside the component wrapper below the file list.
|
|
243
|
+
|
|
244
|
+
### ClassConfig — Custom Theme
|
|
245
|
+
|
|
246
|
+
```tsx
|
|
247
|
+
const classConfig: UploadClassConfig = {
|
|
248
|
+
wrapper: 'w-full max-w-sm',
|
|
249
|
+
dragger: 'rounded-2xl border-purple-400 bg-purple-50 hover:border-purple-600',
|
|
250
|
+
draggerTitle: 'text-purple-700 font-bold',
|
|
251
|
+
textItem: 'border-purple-200 bg-purple-50/50',
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
<Upload.Dragger class={classConfig} hint="Custom purple theme" />
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### ClassConfig — Badge Style by File Type
|
|
258
|
+
|
|
259
|
+
```tsx
|
|
260
|
+
// textBadge adds classes on top of the auto color class
|
|
261
|
+
const classConfig: UploadClassConfig = {
|
|
262
|
+
textBadge: '!rounded-full !px-2.5 !text-[9px] tracking-widest uppercase',
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
<Upload multiple class={classConfig}>
|
|
266
|
+
<Button>Upload</Button>
|
|
267
|
+
</Upload>
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
> Badge color is still determined automatically by MIME type. `textBadge` only adds extra classes.
|
|
271
|
+
|
|
272
|
+
### ClassConfig — Custom errorMessage Container
|
|
273
|
+
|
|
274
|
+
```tsx
|
|
275
|
+
const classConfig: UploadClassConfig = {
|
|
276
|
+
errorMessage: 'bg-error/10 border border-error/30 rounded-lg px-3 py-2 text-error text-xs flex items-center gap-2 mt-2',
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
<Upload class={classConfig} maxFileSize={500 * 1024} onError={...} errorMessage={...}>
|
|
280
|
+
<Button>Upload</Button>
|
|
281
|
+
</Upload>
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Custom Upload Request (real HTTP)
|
|
285
|
+
|
|
286
|
+
```tsx
|
|
287
|
+
<Upload
|
|
288
|
+
customRequest={({ file, onSuccess, onError, onProgress }) => {
|
|
289
|
+
const controller = new AbortController()
|
|
290
|
+
const formData = new FormData()
|
|
291
|
+
formData.append('file', file)
|
|
292
|
+
|
|
293
|
+
fetch('/api/upload', {
|
|
294
|
+
method: 'POST',
|
|
295
|
+
body: formData,
|
|
296
|
+
signal: controller.signal,
|
|
297
|
+
})
|
|
298
|
+
.then(res => res.json())
|
|
299
|
+
.then(data => onSuccess(data))
|
|
300
|
+
.catch(err => onError(err))
|
|
301
|
+
|
|
302
|
+
// Return cancel fn — called when the user removes the file mid-upload
|
|
303
|
+
return () => controller.abort()
|
|
304
|
+
}}
|
|
305
|
+
>
|
|
306
|
+
<Button>Upload to Server</Button>
|
|
307
|
+
</Upload>
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### Avatar Uploader (single picture-card)
|
|
311
|
+
|
|
312
|
+
```tsx
|
|
313
|
+
<Upload
|
|
314
|
+
listType="picture-card"
|
|
315
|
+
multiple={false}
|
|
316
|
+
maxCount={1}
|
|
317
|
+
accept="image/*"
|
|
318
|
+
showUploadList={false}
|
|
319
|
+
onChange={handleChange}
|
|
320
|
+
>
|
|
321
|
+
{/* custom circular UI */}
|
|
322
|
+
</Upload>
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Behavioral Notes
|
|
328
|
+
|
|
329
|
+
- **Batch validation** — All files in a selection are validated together before any upload begins. Validation order: `maxFileSize` (per file) → `maxCount` (whole batch) → `maxTotalSize` (whole batch). If any check fails, the **entire batch** is rejected and `onError` is called. No files from that selection are added to the list.
|
|
330
|
+
- **Default request** — When `customRequest` is not provided, a simulated upload runs (progress increases by 8–18% per tick at 100–180ms intervals, stalls at 95%, then completes after a 400–700ms delay). Replace with a real `customRequest` in production.
|
|
331
|
+
- **Progress isolation** — Each file's progress is a separate `Accessor<number>` signal stored in an internal `progressMap`. Updating one file's progress does **not** re-render sibling list items.
|
|
332
|
+
- **Request cancellation** — If a file is removed while uploading, the cancel function returned by `customRequest` (or the default sim) is called automatically.
|
|
333
|
+
- **Object URL cleanup** — `thumbUrl` object URLs are revoked automatically when files are removed.
|
|
334
|
+
- **Image load abort** — If a file is removed before its image dimensions finish loading, the pending `Image.onload` is cancelled to prevent stale state updates.
|
|
335
|
+
- **Image dimensions** — Detected automatically for image files and stored in `UploadFile.dimensions`.
|
|
336
|
+
- **`maxCount` enforcement** — The trigger UI (button or "Upload" card) hides itself when the limit is reached.
|
|
337
|
+
- **`showClearAll` behavior** — The "Clear all" button appears only when there are 2 or more files in the list.
|
|
338
|
+
- **`class` backward compatibility** — Passing a plain `string` still works exactly as before (applied to the wrapper).
|
|
339
|
+
- **`showTooltip`** — Only active in `listType="text"`. Has no effect on `picture` or `picture-card` lists.
|
|
340
|
+
- **`Upload.Dragger` + `listType="picture-card"`** — The dragger zone is hidden; only the picture-card grid is rendered.
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## listType Visual Summary
|
|
345
|
+
|
|
346
|
+
| `listType` | Layout | Thumbnail | Progress style | Built-in Preview |
|
|
347
|
+
| ---------------- | ------------------ | --------- | ------------------------- | ---------------- |
|
|
348
|
+
| `text` | Compact rows | No | Thin bar at bottom of row | No |
|
|
349
|
+
| `picture` | Vertical rows | 52×52 | Bar below name | Yes (modal) |
|
|
350
|
+
| `picture-card` | Grid (96×96 cards) | 96×96 | Circular overlay | Yes (modal) |
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## Component Conventions
|
|
355
|
+
|
|
356
|
+
> **CSS encoding**: internal CSS classes use short encoded names (e.g. `up01`, `up02`, …, `up76`) per project convention. Do not reference these directly — use `UploadClassConfig` keys to override styles.
|
|
357
|
+
|
|
358
|
+
> **Unique IDs**: `createUniqueId()` from `solid-js` is used wherever HTML `id` attributes are needed — never `Math.random()` or `Date.now()`.
|
|
File without changes
|