solid-tom-ui 1.0.8 → 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/dist/README.md +246 -0
- package/dist/components/avatar/index.d.ts +3 -0
- package/{components → dist/components}/avatar/index.d.ts.map +1 -1
- package/dist/components/button/index.d.ts +3 -0
- package/{components → dist/components}/button/index.d.ts.map +1 -1
- package/dist/components/collapse/index.d.ts +3 -0
- package/{components → dist/components}/collapse/index.d.ts.map +1 -1
- 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/input/index.d.ts +3 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/menu/index.d.ts +4 -0
- package/{components → dist/components}/menu/index.d.ts.map +1 -1
- 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/rating/index.d.ts +3 -0
- package/{components → dist/components}/rating/index.d.ts.map +1 -1
- package/dist/components/slider/index.d.ts +3 -0
- package/{components → dist/components}/slider/index.d.ts.map +1 -1
- package/{components → dist/components}/tour/tour.d.ts.map +1 -1
- package/{components → dist/components}/tour/tour.js +1 -1
- package/{components → dist/components}/tour/tour.js.map +1 -1
- package/{components → dist/components}/z-index/z-index.types.js.map +1 -1
- 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/package.json +97 -9
- package/components/avatar/index.d.ts +0 -2
- package/components/button/index.d.ts +0 -2
- package/components/collapse/index.d.ts +0 -2
- package/components/float-button/index.d.ts +0 -2
- package/components/input/index.d.ts +0 -2
- package/components/input/index.d.ts.map +0 -1
- package/components/menu/index.d.ts +0 -4
- package/components/rating/index.d.ts +0 -2
- package/components/slider/index.d.ts +0 -2
- package/macos.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.js.map +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.js.map +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/breadcrumb.js.map +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.js.map +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.js.map +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.js.map +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/checkbox.js.map +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.js.map +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.js.map +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.store.js.map +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.js.map +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.js.map +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.store.js.map +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.js.map +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/hover-3d-image.js.map +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/image-preview.js.map +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.js.map +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/input.utils.js.map +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-color.js.map +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-date.js.map +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-number.js.map +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-otp.js.map +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-password.js.map +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-radio.js.map +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-range.js.map +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-text.js.map +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}/input/variants/input-textarea.js.map +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}/loading/loading.js.map +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.js.map +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}/menu/menu.js.map +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/modal.js.map +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}/modal/modalContext.js.map +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.js.map +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.js.map +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.js.map +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.js.map +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.js.map +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}/skeleton/skeleton.js.map +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.js.map +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.js.map +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}/steps/steps.js.map +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}/swap/swap.js.map +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.js.map +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.js.map +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.js.map +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.js.map +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/ErrorIcon.js.map +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/IconCircle.js.map +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/InfoIcon.js.map +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/LoaderIcon.js.map +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/SuccessIcon.js.map +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/WarningIcon.js.map +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.js.map +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.store.js.map +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.js.map +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.js.map +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.context.js.map +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.js.map +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.store.js.map +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}/cn.js.map +0 -0
- /package/{utils → dist/utils}/element-tracker.js +0 -0
- /package/{utils → dist/utils}/element-tracker.js.map +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}/helper.js.map +0 -0
- /package/{utils → dist/utils}/hoc.js +0 -0
- /package/{utils → dist/utils}/hoc.js.map +0 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
## COMPONENT IDENTITY
|
|
2
|
+
- **Import**: `import { QrCode } from 'solid-tom-ui';`
|
|
3
|
+
- **Export**: `QrCode` (named export)
|
|
4
|
+
- **Framework**: SolidJS
|
|
5
|
+
- **Purpose**: Renders a QR code onto an HTML `<canvas>` using the `qrcode` library; supports custom colors, logo overlay, and four status overlays (active, loading, expired, scanned)
|
|
6
|
+
|
|
7
|
+
## When to use
|
|
8
|
+
|
|
9
|
+
- Sharing URLs or text as a scannable QR code
|
|
10
|
+
- Payment or authentication flows that need status feedback (loading, expired, scanned)
|
|
11
|
+
- Branded QR codes with a center logo
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Prop Reference
|
|
16
|
+
|
|
17
|
+
| Prop | Type | Default | Description |
|
|
18
|
+
|---------------|-----------------------------------------|----------------|----------------------------------------------------------|
|
|
19
|
+
| `value` | `string` | — | **Required.** Text / URL to encode. |
|
|
20
|
+
| `size` | `number` | `160` | Canvas size in px (square). |
|
|
21
|
+
| `color` | `string` (hex) | `'#000000'` | Foreground dot color. |
|
|
22
|
+
| `bgColor` | `string` (hex) | `'#ffffff'` | Background fill color. |
|
|
23
|
+
| `errorLevel` | `'L' \| 'M' \| 'Q' \| 'H'` | `'M'` | Error correction level. Use `'H'` when adding a logo. |
|
|
24
|
+
| `logo` | `QrCodeLogo` | — | Optional center logo config (see below). |
|
|
25
|
+
| `status` | `'active' \| 'loading' \| 'expired' \| 'scanned'` | `'active'` | Controls overlay state. |
|
|
26
|
+
| `expiredText` | `string` | `'QR code expired'` | Text shown in the expired overlay. |
|
|
27
|
+
| `onRefresh` | `() => void` | — | Called when user clicks the refresh button (expired). |
|
|
28
|
+
| `accentColor` | `BaseColorProps` | `'primary'` | Color of the loading / expired overlay icon + text. |
|
|
29
|
+
| `class` | `Partial<Record<SlotName, string>>` | — | Per-slot class overrides (see Slots below). |
|
|
30
|
+
|
|
31
|
+
### QrCodeLogo
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
interface QrCodeLogo {
|
|
35
|
+
src: string; // Image URL
|
|
36
|
+
width?: number; // Logo width in px (default: 20% of size)
|
|
37
|
+
height?: number; // Logo height in px (default: same as width)
|
|
38
|
+
padding?: number; // Background padding (default: 4)
|
|
39
|
+
background?: string; // Background color (default: '#ffffff')
|
|
40
|
+
borderRadius?: number; // Corner radius (default: 4)
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Slots (`class` prop)
|
|
45
|
+
|
|
46
|
+
| Slot | Element |
|
|
47
|
+
|----------------|----------------------------------|
|
|
48
|
+
| `root` | Outer wrapper `<div>` |
|
|
49
|
+
| `canvas` | `<canvas>` element |
|
|
50
|
+
| `overlay` | Status overlay `<div>` |
|
|
51
|
+
| `overlayIcon` | Icon / button inside overlay |
|
|
52
|
+
| `overlayText` | Text label inside expired overlay|
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Usage Patterns
|
|
57
|
+
|
|
58
|
+
### Basic
|
|
59
|
+
|
|
60
|
+
```tsx
|
|
61
|
+
<QrCode value="https://solidjs.com" />
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Custom size and colors
|
|
65
|
+
|
|
66
|
+
```tsx
|
|
67
|
+
<QrCode
|
|
68
|
+
value="https://example.com"
|
|
69
|
+
size={200}
|
|
70
|
+
color="#7c3aed"
|
|
71
|
+
bgColor="#ede9fe"
|
|
72
|
+
/>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### With logo (always use errorLevel="H")
|
|
76
|
+
|
|
77
|
+
```tsx
|
|
78
|
+
<QrCode
|
|
79
|
+
value="https://example.com"
|
|
80
|
+
size={180}
|
|
81
|
+
errorLevel="H"
|
|
82
|
+
logo={{
|
|
83
|
+
src: '/logo.svg',
|
|
84
|
+
width: 36,
|
|
85
|
+
height: 36,
|
|
86
|
+
padding: 6,
|
|
87
|
+
borderRadius: 8,
|
|
88
|
+
}}
|
|
89
|
+
/>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Status: loading
|
|
93
|
+
|
|
94
|
+
```tsx
|
|
95
|
+
<QrCode value="https://example.com" status="loading" accentColor="info" />
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Status: expired with refresh handler
|
|
99
|
+
|
|
100
|
+
```tsx
|
|
101
|
+
const [status, setStatus] = createSignal<QrCodeStatus>('expired');
|
|
102
|
+
|
|
103
|
+
<QrCode
|
|
104
|
+
value="https://example.com"
|
|
105
|
+
status={status()}
|
|
106
|
+
expiredText="Scan timed out"
|
|
107
|
+
onRefresh={() => {
|
|
108
|
+
setStatus('loading');
|
|
109
|
+
fetchNewQrValue().then(() => setStatus('active'));
|
|
110
|
+
}}
|
|
111
|
+
/>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Status: scanned
|
|
115
|
+
|
|
116
|
+
```tsx
|
|
117
|
+
<QrCode value="https://example.com" status="scanned" />
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Reactive value (re-renders automatically)
|
|
121
|
+
|
|
122
|
+
```tsx
|
|
123
|
+
const [url, setUrl] = createSignal('https://solidjs.com');
|
|
124
|
+
|
|
125
|
+
<QrCode value={url()} size={160} />
|
|
126
|
+
<input value={url()} onInput={e => setUrl(e.currentTarget.value)} />
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Known Gotchas
|
|
132
|
+
|
|
133
|
+
- **Logo requires `errorLevel="H"`** — lower levels don't have enough redundancy to recover from the obscured center modules.
|
|
134
|
+
- **Cross-origin logos** — ensure the logo image server sends `Access-Control-Allow-Origin` headers; otherwise the canvas `drawImage` call will taint the canvas and throw a security error.
|
|
135
|
+
- **Empty value** — pass `' '` (a space) instead of `''` to avoid a qrcode library error when the value is empty.
|
|
136
|
+
- **Canvas pixel density** — the canvas renders at 1× DPR by default. For retina displays you can scale `size` up and use CSS to constrain the rendered size.
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
## COMPONENT IDENTITY
|
|
2
|
+
- **Import**: `import { Rating } from 'solid-tom-ui';`
|
|
3
|
+
- **Export**: `Rating` (named export), `RatingProps`, `RatingSize`, `RatingMask` (type exports)
|
|
4
|
+
- **Framework**: SolidJS
|
|
5
|
+
- **Purpose**: Star/heart rating component built on DaisyUI's `mask` utility; supports controlled and uncontrolled modes, half-star steps, multiple shapes, and read-only display
|
|
6
|
+
|
|
7
|
+
## Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
| -------------- | --------------------------------- | ------------ | ------------------------------------------------------------------------ |
|
|
11
|
+
| `value` | `number` | — | Controlled value. When set, component is in controlled mode |
|
|
12
|
+
| `defaultValue` | `number` | — | Initial value for uncontrolled mode |
|
|
13
|
+
| `count` | `number` | `5` | Total number of items |
|
|
14
|
+
| `color` | `BaseColorProps \| string` | *(per mask)* | Item color. Accepts a `BaseColorProps` token or a Tailwind `bg-*` class |
|
|
15
|
+
| `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | `'md'` | Size of each item |
|
|
16
|
+
| `mask` | `'star' \| 'star-2' \| 'heart'` | `'star-2'` | Shape of each item |
|
|
17
|
+
| `readOnly` | `boolean` | `false` | Disables interaction; renders `<div>` elements instead of `<input>` |
|
|
18
|
+
| `half` | `boolean` | `false` | Enables half-step increments (0.5, 1.0, 1.5 …) |
|
|
19
|
+
| `allowClear` | `boolean` | `true` | Adds a hidden reset input; clicking the selected item resets to 0 |
|
|
20
|
+
| `gap` | `boolean` | *(per mask)* | Adds `gap-1` between items. Defaults to `true` for `heart`, `false` for stars |
|
|
21
|
+
| `onChange` | `(value: number) => void` | — | Called when the user selects a value |
|
|
22
|
+
| `class` | `string` | — | Extra class on the wrapper `<div>` |
|
|
23
|
+
| `ariaLabel` | `string` | — | Prefix for each item's `aria-label` (e.g. `"Product rating"` → `"Product rating 3 star"`) |
|
|
24
|
+
|
|
25
|
+
All other `HTMLDivElement` attributes are forwarded to the wrapper (except `onChange`, which is intercepted).
|
|
26
|
+
|
|
27
|
+
## Class Slots
|
|
28
|
+
|
|
29
|
+
`Rating` is a single-element component — `class` appends to the root wrapper `<div>`. No named sub-element slots.
|
|
30
|
+
|
|
31
|
+
> **CSS encoding**: internal CSS classes use short encoded names (e.g. `rt01`, `rt02`) per project convention.
|
|
32
|
+
|
|
33
|
+
> **Unique IDs**: each `Rating` instance generates a unique `name` attribute for its radio inputs using `createUniqueId()` from `solid-js` — multiple instances on the same page won't interfere.
|
|
34
|
+
|
|
35
|
+
## Controlled vs Uncontrolled
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
// Uncontrolled — component manages its own state
|
|
39
|
+
<Rating defaultValue={3} />
|
|
40
|
+
|
|
41
|
+
// Controlled — you manage state
|
|
42
|
+
const [value, setValue] = createSignal(3);
|
|
43
|
+
<Rating value={value()} onChange={setValue} />
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
When `value` is provided, the internal signal syncs to it via `createEffect`. When `value` is `undefined`, the component is uncontrolled.
|
|
47
|
+
|
|
48
|
+
## Default Colors per Mask
|
|
49
|
+
|
|
50
|
+
When `color` is not specified, each mask has a built-in default color:
|
|
51
|
+
|
|
52
|
+
| Mask | Default color |
|
|
53
|
+
| --------- | ------------------ |
|
|
54
|
+
| `star` | `bg-yellow-400` |
|
|
55
|
+
| `star-2` | `bg-orange-400` |
|
|
56
|
+
| `heart` | `bg-red-400` |
|
|
57
|
+
|
|
58
|
+
## Examples
|
|
59
|
+
|
|
60
|
+
### Basic (uncontrolled)
|
|
61
|
+
|
|
62
|
+
```tsx
|
|
63
|
+
<Rating defaultValue={3} />
|
|
64
|
+
<Rating defaultValue={4} mask="star" />
|
|
65
|
+
<Rating defaultValue={2} mask="heart" />
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Custom count
|
|
69
|
+
|
|
70
|
+
```tsx
|
|
71
|
+
<Rating count={3} defaultValue={2} />
|
|
72
|
+
<Rating count={7} defaultValue={4} />
|
|
73
|
+
<Rating count={10} defaultValue={6} />
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Sizes
|
|
77
|
+
|
|
78
|
+
```tsx
|
|
79
|
+
<Rating size="xs" defaultValue={3} />
|
|
80
|
+
<Rating size="sm" defaultValue={3} />
|
|
81
|
+
<Rating size="md" defaultValue={3} /> {/* default */}
|
|
82
|
+
<Rating size="lg" defaultValue={3} />
|
|
83
|
+
<Rating size="xl" defaultValue={3} />
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Custom color
|
|
87
|
+
|
|
88
|
+
`color` accepts either a `BaseColorProps` token or a Tailwind `bg-*` class:
|
|
89
|
+
|
|
90
|
+
```tsx
|
|
91
|
+
{/* Tailwind color class */}
|
|
92
|
+
<Rating color="bg-orange-400" defaultValue={4} />
|
|
93
|
+
<Rating color="bg-blue-400" defaultValue={4} />
|
|
94
|
+
|
|
95
|
+
{/* DaisyUI token */}
|
|
96
|
+
<Rating color="primary" defaultValue={4} />
|
|
97
|
+
<Rating color="success" defaultValue={4} />
|
|
98
|
+
<Rating color="error" defaultValue={4} />
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Half-star mode
|
|
102
|
+
|
|
103
|
+
When `half={true}`, values step by 0.5. Each item is split into two halves.
|
|
104
|
+
|
|
105
|
+
```tsx
|
|
106
|
+
<Rating half defaultValue={2.5} color="bg-orange-400" />
|
|
107
|
+
<Rating half defaultValue={3.5} color="bg-yellow-400" size="lg" />
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Read-only
|
|
111
|
+
|
|
112
|
+
Read-only renders `<div>` elements instead of `<input>` radio buttons — no interactivity, no tab stops.
|
|
113
|
+
|
|
114
|
+
```tsx
|
|
115
|
+
<Rating readOnly value={3} />
|
|
116
|
+
<Rating readOnly value={4.5} half color="bg-orange-400" size="lg" />
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Allow clear (reset to 0)
|
|
120
|
+
|
|
121
|
+
When `allowClear={true}` (default), a hidden radio at value 0 is inserted. Re-clicking the currently selected star resets the rating to 0.
|
|
122
|
+
|
|
123
|
+
```tsx
|
|
124
|
+
<Rating allowClear defaultValue={3} /> {/* can reset */}
|
|
125
|
+
<Rating allowClear={false} defaultValue={3} /> {/* cannot reset */}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Gap between items
|
|
129
|
+
|
|
130
|
+
`gap` defaults to `true` for `heart`, `false` for `star`/`star-2`. Override explicitly:
|
|
131
|
+
|
|
132
|
+
```tsx
|
|
133
|
+
<Rating mask="heart" gap={false} defaultValue={3} /> {/* no gap */}
|
|
134
|
+
<Rating mask="star-2" gap={true} defaultValue={3} /> {/* force gap */}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Controlled with signal
|
|
138
|
+
|
|
139
|
+
```tsx
|
|
140
|
+
const [rating, setRating] = createSignal(3);
|
|
141
|
+
|
|
142
|
+
<Rating value={rating()} onChange={setRating} color="bg-yellow-400" size="lg" />
|
|
143
|
+
<p>Current: {rating()}</p>
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Render Behavior
|
|
147
|
+
|
|
148
|
+
- **Interactive** (`readOnly=false`): renders `<input type="radio">` elements inside a `<div class="rating ...">`. Each input has `name` scoped to the instance via an auto-incrementing UID.
|
|
149
|
+
- **Read-only** (`readOnly=true`): renders `<div class="mask ...">` elements. No form inputs, no keyboard interaction.
|
|
150
|
+
- **`allowClear`**: inserts an extra hidden `<input class="rating-hidden">` as the first radio at value 0.
|
|
151
|
+
|
|
152
|
+
## Accessibility
|
|
153
|
+
|
|
154
|
+
- Each interactive input gets an `aria-label` like `"3 star"` or `"2.5 stars"`.
|
|
155
|
+
- Provide `ariaLabel` to prefix all labels: `ariaLabel="Product rating"` → `"Product rating 3 star"`.
|
|
156
|
+
- Read-only items use `aria-current="true"` on the active item.
|
|
157
|
+
- The component renders as a radio group with a unique `name` per instance.
|
|
158
|
+
|
|
159
|
+
## Common Mistakes
|
|
160
|
+
|
|
161
|
+
| Mistake | Fix |
|
|
162
|
+
| --- | --- |
|
|
163
|
+
| Passing a Tailwind color name like `"orange-400"` to `color` | Pass the full class: `color="bg-orange-400"` |
|
|
164
|
+
| Expecting `onChange` to fire in read-only mode | `readOnly` silently blocks all changes — remove `readOnly` |
|
|
165
|
+
| Setting `half` but passing an integer `defaultValue` | Valid — integers work in half mode (e.g., `defaultValue={3}`) |
|
|
166
|
+
| Controlled component not responding to `onChange` | Ensure you update the signal: `onChange={val => setValue(val)}` |
|
|
167
|
+
| `allowClear` not resetting | Works only when re-clicking the already-selected star; `allowClear={false}` disables it |
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
## COMPONENT IDENTITY
|
|
2
|
+
- **Import**: `import { SelectZone, SelectZoneItem } from 'solid-tom-ui';`
|
|
3
|
+
- **Exports**: `SelectZone` (container), `SelectZoneItem` (item wrapper)
|
|
4
|
+
- **Framework**: SolidJS
|
|
5
|
+
- **Purpose**: Rubber band selection — drag to select multiple items simultaneously, like Notion/File Explorer
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- Selection rectangle appears on drag (≥ 4px), disappears on release
|
|
10
|
+
- Supports all 4 drag directions (decreasing x/y included)
|
|
11
|
+
- Auto-scroll when mouse reaches viewport edge; speed scales with distance
|
|
12
|
+
- Hold Shift/Ctrl to add to existing selection without resetting
|
|
13
|
+
- Single click on empty area → deselect all
|
|
14
|
+
- Elements with `data-no-select` or `input/button/a` do not trigger drag
|
|
15
|
+
|
|
16
|
+
## API
|
|
17
|
+
|
|
18
|
+
### `<SelectZone>`
|
|
19
|
+
|
|
20
|
+
| Prop | Type | Default | Description |
|
|
21
|
+
|------|------|---------|-------------|
|
|
22
|
+
| `onSelect` | `(keys: Set<string>) => void` | — | Callback when selection changes |
|
|
23
|
+
| `additive` | `boolean` | `true` | Support Shift/Ctrl to add to selection |
|
|
24
|
+
| `scrollThreshold` | `number` | `40` | Distance from viewport edge (px) to activate auto-scroll |
|
|
25
|
+
| `scrollSpeed` | `number` | `12` | Max scroll speed (px/frame) |
|
|
26
|
+
| `disabled` | `boolean` | `false` | Disable SelectZone |
|
|
27
|
+
| `class` | `{ root?, overlay? }` | — | Override classes per slot |
|
|
28
|
+
|
|
29
|
+
### `<SelectZoneItem>`
|
|
30
|
+
|
|
31
|
+
| Prop | Type | Description |
|
|
32
|
+
|------|------|-------------|
|
|
33
|
+
| `itemKey` | `string` | **Required** — unique key to track the item |
|
|
34
|
+
| `children` | `(selected: () => boolean) => JSX.Element` | Render prop receiving `isSelected` accessor |
|
|
35
|
+
| `class` | `string` | Extra classes on the wrapper div |
|
|
36
|
+
|
|
37
|
+
## Basic usage
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
import { SelectZone, SelectZoneItem } from 'solid-tom-ui';
|
|
41
|
+
|
|
42
|
+
const items = ['a', 'b', 'c', 'd'];
|
|
43
|
+
|
|
44
|
+
const MyComponent = () => {
|
|
45
|
+
const [selected, setSelected] = createSignal(new Set<string>());
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<SelectZone onSelect={setSelected}>
|
|
49
|
+
<div class="grid grid-cols-4 gap-2">
|
|
50
|
+
<For each={items}>
|
|
51
|
+
{item => (
|
|
52
|
+
<SelectZoneItem itemKey={item}>
|
|
53
|
+
{isSelected => (
|
|
54
|
+
<div class={isSelected() ? 'bg-primary/20' : 'bg-base-100'}>
|
|
55
|
+
{item}
|
|
56
|
+
</div>
|
|
57
|
+
)}
|
|
58
|
+
</SelectZoneItem>
|
|
59
|
+
)}
|
|
60
|
+
</For>
|
|
61
|
+
</div>
|
|
62
|
+
</SelectZone>
|
|
63
|
+
);
|
|
64
|
+
};
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Excluding elements from drag
|
|
68
|
+
|
|
69
|
+
Add `data-no-select` to elements that should not trigger drag:
|
|
70
|
+
|
|
71
|
+
```tsx
|
|
72
|
+
<button data-no-select onClick={clearAll}>Deselect all</button>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Override overlay style
|
|
76
|
+
|
|
77
|
+
```tsx
|
|
78
|
+
<SelectZone
|
|
79
|
+
class={{
|
|
80
|
+
root: 'p-4 border rounded-xl',
|
|
81
|
+
overlay: 'bg-blue-500/20 border-blue-500',
|
|
82
|
+
}}
|
|
83
|
+
>
|
|
84
|
+
...
|
|
85
|
+
</SelectZone>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Technical notes
|
|
89
|
+
|
|
90
|
+
- Overlay uses `position: fixed` so it works correctly even when the container scrolls
|
|
91
|
+
- AABB intersection detection: O(n) — suitable for up to a few thousand items
|
|
92
|
+
- `startX/Y` is adjusted for scroll amount so the overlay stays accurate during auto-scroll
|
|
93
|
+
- `SelectZoneItem` wrapper div has `data-select-key` to distinguish item clicks from empty-area clicks
|