solid-tom-ui 1.0.8 → 1.0.11
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 +9 -10
- 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,531 @@
|
|
|
1
|
+
## COMPONENT IDENTITY
|
|
2
|
+
- **Import**: `import { toast, Toaster } from 'solid-tom-ui';`
|
|
3
|
+
- **Exports**: `toast` (imperative API singleton), `Toaster` (optional config component), all toast type exports
|
|
4
|
+
- **Framework**: SolidJS
|
|
5
|
+
- **Purpose**: Imperative toast notification system — call `toast.success()`, `toast.error()` etc. from anywhere; `<Toaster>` is optional for customizing position and appearance
|
|
6
|
+
```
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## CORE CONCEPT
|
|
11
|
+
|
|
12
|
+
`toast` is a **fully imperative, zero-setup** notification API. No context provider or `<Toaster>` component is required — calling any `toast.*` method auto-mounts a container into `document.body` on first use.
|
|
13
|
+
|
|
14
|
+
The store is a **module-level singleton** (`createRoot`). All calls share the same reactive state across the entire app regardless of component tree.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## `toast` API REFERENCE
|
|
19
|
+
|
|
20
|
+
### Signature
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
toast(message, options?) → string // blank type
|
|
24
|
+
toast.success(message, options?) → string
|
|
25
|
+
toast.error(message, options?) → string
|
|
26
|
+
toast.info(message, options?) → string
|
|
27
|
+
toast.warning(message, options?) → string
|
|
28
|
+
toast.loading(message, options?) → string
|
|
29
|
+
toast.custom(message: (t: ToastData) => JSXElement, options?) → string
|
|
30
|
+
toast.dismiss(toastId?: string) → void
|
|
31
|
+
toast.remove(toastId?: string) → void
|
|
32
|
+
toast.pop(options?: PopShiftOptions) → void
|
|
33
|
+
toast.shift(options?: PopShiftOptions) → void
|
|
34
|
+
toast.promise<T>(promise, promiseOptions, toastOptions?) → Promise<T>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
All creation methods return the **toast ID** (`string`) which can be used for dismiss/remove/update.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## `ToastOptions`
|
|
42
|
+
|
|
43
|
+
| Field | Type | Default | Description |
|
|
44
|
+
| --------------- | ------------------------------------------------------------------------ | ----------------------------------------- | ---------------------------------------------------------------------------------------------- |
|
|
45
|
+
| `duration` | `number` | see per-type table | Auto-dismiss delay in ms. `Infinity` = never auto-dismiss. |
|
|
46
|
+
| `position` | `ToastPosition` | `'top-right'` | Where this toast appears. Can override per-toast. |
|
|
47
|
+
| `icon` | `SolidComponent` | type-specific | Custom icon. Replaces built-in icon. Accepts string emoji, JSX element, or component. |
|
|
48
|
+
| `iconTheme` | `{ primary?: string; secondary?: string }` | — | Colors for built-in SVG icons. |
|
|
49
|
+
| `class` | `string` | — | Extra CSS class appended to `.sui-toast`. |
|
|
50
|
+
| `style` | `JSX.CSSProperties` | — | Inline styles on `.sui-toast`. |
|
|
51
|
+
| `ariaProps` | `{ role: 'status'\|'alert'; 'aria-live': 'assertive'\|'off'\|'polite' }` | `{ role:'status', 'aria-live':'polite' }` | ARIA attributes on the toast bar. |
|
|
52
|
+
| `unmountDelay` | `number` | `400` | Ms to wait after `visible=false` before removing from DOM (allows exit animation to complete). |
|
|
53
|
+
| `canPause` | `boolean` | `true` | Pause auto-dismiss timer on mouse hover; resume on mouse leave. |
|
|
54
|
+
| `showCloseIcon` | `boolean` | `true` | Show the X close button (appears on hover). |
|
|
55
|
+
|
|
56
|
+
### Default durations per type
|
|
57
|
+
|
|
58
|
+
| Type | Duration |
|
|
59
|
+
| --------- | ---------- |
|
|
60
|
+
| `blank` | 3000ms |
|
|
61
|
+
| `success` | 3000ms |
|
|
62
|
+
| `error` | 3000ms |
|
|
63
|
+
| `info` | 3000ms |
|
|
64
|
+
| `warning` | 3000ms |
|
|
65
|
+
| `loading` | `Infinity` |
|
|
66
|
+
| `custom` | 3000ms |
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## `ToastPosition` values
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
'top-left' | 'top-center' | 'top-right'
|
|
74
|
+
'bottom-left' | 'bottom-center' | 'bottom-right'
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Default global position: `'top-right'`.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## `Message` type
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
type Message = SolidComponent | ((toast: ToastData) => SolidComponent);
|
|
85
|
+
// SolidComponent = string | JSX.Element | (() => JSX.Element)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
- **String**: rendered as-is inside `<div class="flex-1 text-sm">`.
|
|
89
|
+
- **JSX.Element**: rendered directly.
|
|
90
|
+
- **Function**: called with the `ToastData` object → enables reactive content that reads `t.visible`, `t.paused`, `t.pauseDuration`.
|
|
91
|
+
|
|
92
|
+
For `toast.custom`, `message` is always `(t: ToastData) => JSXElement` — full control over rendering.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## `ToasterProps` — Optional `<Toaster>` component
|
|
97
|
+
|
|
98
|
+
```ts
|
|
99
|
+
interface ToasterProps {
|
|
100
|
+
position?: ToastPosition; // Default position for all toasts (default: 'top-right')
|
|
101
|
+
toastOptions?: DefaultToastOptions; // Global defaults per type (not yet applied in impl — reserved)
|
|
102
|
+
gutter?: number; // Gap between toasts in px (default: 10)
|
|
103
|
+
containerStyle?: JSX.CSSProperties; // Style on the outer container div (not implemented in current render)
|
|
104
|
+
containerClassName?: string; // Class on the outer container div (not implemented in current render)
|
|
105
|
+
maxToasts?: number; // Max simultaneous toasts (not implemented — store uses 10)
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
> `<Toaster>` is optional. If omitted, the container is auto-mounted with defaults when `toast.*` is first called. Mounting `<Toaster>` does NOT prevent the auto-mount — it just configures the `ToasterInternal` with custom props.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## `PromiseOptions<T>`
|
|
114
|
+
|
|
115
|
+
```ts
|
|
116
|
+
interface PromiseOptions<T> {
|
|
117
|
+
loading: SolidComponent; // Message while promise is pending
|
|
118
|
+
success: SolidComponent | ((result: T) => SolidComponent); // Message on resolve
|
|
119
|
+
error: SolidComponent | ((error: any) => SolidComponent); // Message on reject
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
`success` and `error` accept `ValueOrFunction` — pass a static value or a function receiving the resolved/rejected value.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## `PopShiftOptions`
|
|
128
|
+
|
|
129
|
+
```ts
|
|
130
|
+
interface PopShiftOptions {
|
|
131
|
+
animate?: boolean; // default: true
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
- `animate: true` (default) → calls `dismissPop/dismissShift` — sets `visible=false`, plays exit animation, then removes after `unmountDelay`.
|
|
136
|
+
- `animate: false` → calls `removePop/removeShift` — removes immediately from store with no animation.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## BEHAVIORAL RULES (inferred from implementation)
|
|
141
|
+
|
|
142
|
+
### Auto-mount
|
|
143
|
+
|
|
144
|
+
`ensureContainer()` is called at the start of every toast creation method. Creates `#sui-toast-container` div and renders `<ToasterInternal />` into it via SolidJS `render()`. Runs **once** per page load (`containerMounted` flag). Subsequent calls are no-ops.
|
|
145
|
+
|
|
146
|
+
### Toast store (singleton)
|
|
147
|
+
|
|
148
|
+
- Module-level singleton via `createRoot(createToastStore)`.
|
|
149
|
+
- Holds `toasts: Accessor<ToastData[]>` and `pausedAt: Accessor<number | null>`.
|
|
150
|
+
- New toasts are **prepended** (most recent first) capped at **10** (`MAX_TOASTS`).
|
|
151
|
+
- Older toasts beyond the limit are sliced off immediately.
|
|
152
|
+
- `upsertToast`: if a toast with the same id exists, merges updates into it (sets `updatedAt`). Otherwise prepends.
|
|
153
|
+
|
|
154
|
+
### dismiss vs remove
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
toast.dismiss(id?)
|
|
158
|
+
→ sets visible=false on matching toast(es)
|
|
159
|
+
→ triggers exit animation (unmountDelay ms) then auto-removes via removeToast
|
|
160
|
+
|
|
161
|
+
toast.remove(id?)
|
|
162
|
+
→ immediately filters toast(es) from array
|
|
163
|
+
→ NO animation
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Omitting `id` from either method affects **all** toasts.
|
|
167
|
+
|
|
168
|
+
### pop vs shift
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
toast.pop() → targets the OLDEST visible toast (last in array, index from end)
|
|
172
|
+
toast.shift() → targets the NEWEST visible toast (first visible, index from start)
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Array order: newest first (`[toast5, toast4, toast3, toast2, toast1]`).
|
|
176
|
+
|
|
177
|
+
- `pop` → traverses from end → oldest = `toast1`.
|
|
178
|
+
- `shift` → traverses from start → newest = `toast5`.
|
|
179
|
+
|
|
180
|
+
### Pause on hover
|
|
181
|
+
|
|
182
|
+
When `canPause=true` (default):
|
|
183
|
+
|
|
184
|
+
- `mouseenter` on `ToastWrapper` → pauses dismiss timer; records remaining time.
|
|
185
|
+
- `mouseleave` → restarts timer with remaining time (not original duration).
|
|
186
|
+
- Remaining time is tracked as a local variable in `ToastWrapper` (not in store).
|
|
187
|
+
|
|
188
|
+
### toast.promise lifecycle
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
1. Creates loading toast (duration=Infinity by default from options)
|
|
192
|
+
2. On promise resolve → updateToast(id, { type:'success', message: resolved, icon: undefined })
|
|
193
|
+
3. Schedules dismissToast(id) after toastOptions.duration ?? 3000ms
|
|
194
|
+
4. On promise reject → updateToast(id, { type:'error', message: error, icon: undefined })
|
|
195
|
+
5. Schedules dismissToast(id) after toastOptions.duration ?? 3000ms
|
|
196
|
+
6. Re-throws the error
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Position grouping
|
|
200
|
+
|
|
201
|
+
`ToasterInternal` renders 6 `PositionContainer` components (one per position). Each filters from `toastStore.toasts()`. Per-toast `position` field overrides the `Toaster`'s default position.
|
|
202
|
+
|
|
203
|
+
### Animation (Web Animations API)
|
|
204
|
+
|
|
205
|
+
**Enter** (when `visible` becomes `true`):
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
translate3d(0, direction*-200%, 0) scale(0.6) opacity:0.5
|
|
209
|
+
→ translate3d(0,0,0) scale(1) opacity:1
|
|
210
|
+
duration: 350ms, easing: cubic-bezier(.21,1.02,.73,1)
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
**Exit** (when `visible` becomes `false`):
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
translate3d(0,0,-1px) scale(1) opacity:1
|
|
217
|
+
→ translate3d(0, direction*-150%, -1px) scale(0.4) opacity:0
|
|
218
|
+
duration: 400ms, easing: cubic-bezier(.06,.71,.55,1)
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
`direction`: `+1` for top positions (slides up), `-1` for bottom positions (slides down).
|
|
222
|
+
|
|
223
|
+
### Close button positioning
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
position includes 'right' → isCloseOnRight = false → close btn at -left-2
|
|
227
|
+
position does NOT include 'right' → isCloseOnRight = true → close btn at -right-2
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
The close button is absolutely positioned at `-top-2` and appears on hover (`opacity-0` → `opacity-100`).
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## USAGE PATTERNS
|
|
235
|
+
|
|
236
|
+
### 1. Basic types (no setup needed)
|
|
237
|
+
|
|
238
|
+
```tsx
|
|
239
|
+
import { toast } from 'solid-tom-ui';
|
|
240
|
+
|
|
241
|
+
toast('Plain notification');
|
|
242
|
+
toast.success('Operation completed!');
|
|
243
|
+
toast.error('Something went wrong.');
|
|
244
|
+
toast.info('Just so you know...');
|
|
245
|
+
toast.warning('Be careful!');
|
|
246
|
+
toast.loading('Fetching data...'); // duration=Infinity, dismiss manually
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### 2. Capture id for later control
|
|
250
|
+
|
|
251
|
+
```tsx
|
|
252
|
+
const id = toast.loading('Saving...');
|
|
253
|
+
|
|
254
|
+
// Later:
|
|
255
|
+
toast.dismiss(id); // animate out
|
|
256
|
+
toast.remove(id); // instant remove
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### 3. Custom position per toast
|
|
260
|
+
|
|
261
|
+
```tsx
|
|
262
|
+
toast.success('Saved!', { position: 'bottom-center' });
|
|
263
|
+
toast.error('Failed!', { position: 'top-left' });
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### 4. Custom duration
|
|
267
|
+
|
|
268
|
+
```tsx
|
|
269
|
+
toast('Quick!', { duration: 1000 }); // 1 second
|
|
270
|
+
toast('Slow...', { duration: 8000 }); // 8 seconds
|
|
271
|
+
toast('Until dismissed', { duration: Infinity }); // never auto-dismiss
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### 5. Custom icon
|
|
275
|
+
|
|
276
|
+
```tsx
|
|
277
|
+
// Emoji string
|
|
278
|
+
toast('Fire alert!', { icon: '🔥' });
|
|
279
|
+
|
|
280
|
+
// JSX element
|
|
281
|
+
toast.success('Done!', { icon: <MyCheckIcon size={20} /> });
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### 6. Custom icon colors (built-in icons)
|
|
285
|
+
|
|
286
|
+
```tsx
|
|
287
|
+
toast.success('Dark theme', {
|
|
288
|
+
iconTheme: { primary: '#38bdf8', secondary: '#1f2937' },
|
|
289
|
+
style: { background: '#1f2937', color: '#f3f4f6' },
|
|
290
|
+
});
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### 7. JSX message content
|
|
294
|
+
|
|
295
|
+
```tsx
|
|
296
|
+
toast(
|
|
297
|
+
<div>
|
|
298
|
+
<strong>Upload complete</strong>
|
|
299
|
+
<p class="text-sm text-gray-500">3 files uploaded successfully</p>
|
|
300
|
+
</div>,
|
|
301
|
+
{ duration: 4000 },
|
|
302
|
+
);
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### 8. Message as function (reactive, accesses ToastData)
|
|
306
|
+
|
|
307
|
+
```tsx
|
|
308
|
+
toast.success(t => `Toast ID: ${t.id}`, { duration: 5000 });
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### 9. toast.promise — async flow
|
|
312
|
+
|
|
313
|
+
```tsx
|
|
314
|
+
// Static messages
|
|
315
|
+
toast.promise(fetchData(), {
|
|
316
|
+
loading: 'Loading...',
|
|
317
|
+
success: 'Data loaded!',
|
|
318
|
+
error: 'Failed to load.',
|
|
319
|
+
});
|
|
320
|
+
|
|
321
|
+
// Dynamic messages using resolved/rejected value
|
|
322
|
+
toast.promise(
|
|
323
|
+
saveUser(userData),
|
|
324
|
+
{
|
|
325
|
+
loading: 'Saving user...',
|
|
326
|
+
success: user => `Welcome, ${user.name}!`,
|
|
327
|
+
error: err => `Error: ${err.message}`,
|
|
328
|
+
},
|
|
329
|
+
{ duration: 4000 }, // how long success/error stays visible
|
|
330
|
+
);
|
|
331
|
+
|
|
332
|
+
// Await the promise result
|
|
333
|
+
const result = await toast.promise(apiCall(), { loading: '...', success: 'Done', error: 'Failed' });
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### 10. Fully custom toast (`toast.custom`)
|
|
337
|
+
|
|
338
|
+
```tsx
|
|
339
|
+
// Receives ToastData, full control over rendering
|
|
340
|
+
toast.custom(
|
|
341
|
+
t => (
|
|
342
|
+
<div class="flex items-center gap-3 rounded-lg bg-white px-4 py-3 shadow-lg">
|
|
343
|
+
<span>Custom notification</span>
|
|
344
|
+
<button onClick={() => toast.dismiss(t.id)}>✕</button>
|
|
345
|
+
</div>
|
|
346
|
+
),
|
|
347
|
+
{ duration: 5000 },
|
|
348
|
+
);
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### 11. Custom toast with progress bar (using t.paused, t.pauseDuration)
|
|
352
|
+
|
|
353
|
+
```tsx
|
|
354
|
+
const duration = 6000;
|
|
355
|
+
|
|
356
|
+
toast.custom(
|
|
357
|
+
t => {
|
|
358
|
+
const [life, setLife] = createSignal(100);
|
|
359
|
+
const startTime = Date.now();
|
|
360
|
+
|
|
361
|
+
createEffect(() => {
|
|
362
|
+
if (t.paused) return;
|
|
363
|
+
const interval = setInterval(() => {
|
|
364
|
+
const elapsed = Date.now() - startTime - t.pauseDuration;
|
|
365
|
+
setLife(100 - (elapsed / duration) * 100);
|
|
366
|
+
}, 50);
|
|
367
|
+
onCleanup(() => clearInterval(interval));
|
|
368
|
+
});
|
|
369
|
+
|
|
370
|
+
return (
|
|
371
|
+
<div class="min-w-[300px] rounded-lg bg-white p-4 shadow-lg">
|
|
372
|
+
<p>Processing...</p>
|
|
373
|
+
<div class="mt-2 h-1 w-full rounded bg-gray-200">
|
|
374
|
+
<div class="h-1 rounded bg-blue-500" style={{ width: `${life()}%` }} />
|
|
375
|
+
</div>
|
|
376
|
+
</div>
|
|
377
|
+
);
|
|
378
|
+
},
|
|
379
|
+
{ duration, canPause: true },
|
|
380
|
+
);
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### 12. Dismiss all / remove all
|
|
384
|
+
|
|
385
|
+
```tsx
|
|
386
|
+
toast.dismiss(); // animate out all
|
|
387
|
+
toast.remove(); // instant remove all
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
### 13. pop and shift
|
|
391
|
+
|
|
392
|
+
```tsx
|
|
393
|
+
// Remove oldest visible toast (with animation)
|
|
394
|
+
toast.pop();
|
|
395
|
+
|
|
396
|
+
// Remove oldest visible toast (instant, no animation)
|
|
397
|
+
toast.pop({ animate: false });
|
|
398
|
+
|
|
399
|
+
// Remove newest visible toast (with animation)
|
|
400
|
+
toast.shift();
|
|
401
|
+
|
|
402
|
+
// Remove newest visible toast (instant)
|
|
403
|
+
toast.shift({ animate: false });
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
### 14. Disable hover-pause
|
|
407
|
+
|
|
408
|
+
```tsx
|
|
409
|
+
toast.info('No pause on hover', { canPause: false });
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
### 15. Hide close button
|
|
413
|
+
|
|
414
|
+
```tsx
|
|
415
|
+
toast.loading('Processing (no X)...', { showCloseIcon: false });
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### 16. Custom class and style
|
|
419
|
+
|
|
420
|
+
```tsx
|
|
421
|
+
toast.error('Red Alert!', {
|
|
422
|
+
class: 'border-2 border-red-500',
|
|
423
|
+
style: { background: '#fef2f2', color: '#991b1b' },
|
|
424
|
+
});
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
### 17. Optional `<Toaster>` for global config
|
|
428
|
+
|
|
429
|
+
```tsx
|
|
430
|
+
// In your app root (optional — only needed to set non-default global position/gutter)
|
|
431
|
+
import { Toaster } from 'solid-tom-ui';
|
|
432
|
+
|
|
433
|
+
<Toaster position="bottom-right" gutter={16} />;
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
### 18. Stress test / max toasts
|
|
437
|
+
|
|
438
|
+
```tsx
|
|
439
|
+
// Only 10 toasts are shown simultaneously; oldest are dropped when limit exceeded
|
|
440
|
+
for (let i = 0; i < 15; i++) {
|
|
441
|
+
toast.success(`Toast #${i + 1}`, { duration: 8000 });
|
|
442
|
+
}
|
|
443
|
+
// Toasts 11-15 push out toasts 1-5 from the store
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
## CSS CLASSES (public API for customization)
|
|
449
|
+
|
|
450
|
+
| Class | Applied to |
|
|
451
|
+
| ----------------------- | ------------------------------------------------------------------ |
|
|
452
|
+
| `sui-toast` | Toast bar `<div>` (icon + message + close) |
|
|
453
|
+
| `sui-toast-with-close` | Root `<div>` when `showCloseIcon=true` (adds `position: relative`) |
|
|
454
|
+
| `sui-toast-close-btn` | Close button `<div>` (absolutely positioned, opacity-0 by default) |
|
|
455
|
+
| `sui-toast-close-right` | Close button when NOT on a right-position toast (`-right-2`) |
|
|
456
|
+
| `sui-toast-close-left` | Close button when on a right-position toast (`-left-2`) |
|
|
457
|
+
|
|
458
|
+
Custom classes can be appended via `options.class` (string, appended to `.sui-toast`).
|
|
459
|
+
|
|
460
|
+
> Note: `sui-toast-with-close` is defined in CSS but the `ToastBar` component does not currently add it — close button positioning relies on `position: relative` on `.sui-toast` itself via the absolute `sui-toast-close-btn`.
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
## `ToastData` — Internal toast object (available in `toast.custom` and `Message` functions)
|
|
465
|
+
|
|
466
|
+
| Field | Type | Description |
|
|
467
|
+
| --------------- | -------------------------------- | --------------------------------------------------------------------------------- |
|
|
468
|
+
| `id` | `string` | Unique ID (from `createUniqueId`). Use with `toast.dismiss(t.id)`. |
|
|
469
|
+
| `type` | `ToastType` | `'success' \| 'error' \| 'info' \| 'warning' \| 'loading' \| 'blank' \| 'custom'` |
|
|
470
|
+
| `message` | `Message` | Original message passed to the creator. |
|
|
471
|
+
| `visible` | `boolean` | `true` = shown, `false` = exit animation playing. |
|
|
472
|
+
| `paused` | `boolean` | `true` when hover-paused. |
|
|
473
|
+
| `pauseDuration` | `number` | Total accumulated ms the toast has been paused. Use to offset timers. |
|
|
474
|
+
| `duration` | `number` | Auto-dismiss duration in ms. |
|
|
475
|
+
| `position` | `ToastPosition` | Effective position of this toast. |
|
|
476
|
+
| `createdAt` | `number` | `Date.now()` at creation. |
|
|
477
|
+
| `updatedAt` | `number \| undefined` | `Date.now()` at last upsert/update. |
|
|
478
|
+
| `canPause` | `boolean` | Whether hover pausing is active. |
|
|
479
|
+
| `showCloseIcon` | `boolean` | Whether X button is rendered. |
|
|
480
|
+
| `icon` | `SolidComponent \| undefined` | Custom icon override. |
|
|
481
|
+
| `iconTheme` | `IconTheme \| undefined` | Colors for built-in icons. |
|
|
482
|
+
| `style` | `JSX.CSSProperties \| undefined` | Inline styles on toast bar. |
|
|
483
|
+
| `class` | `string \| undefined` | Extra class on toast bar. |
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
## CONSTRAINTS & EDGE CASES
|
|
488
|
+
|
|
489
|
+
- **No setup required**: `toast.*` auto-mounts the container on first call. Never call `toast` before `document.body` exists (i.e., not during SSR without a DOM).
|
|
490
|
+
- **Singleton store**: all calls share one store. There is no per-component scope. Calling `toast.remove()` clears toasts from ALL components.
|
|
491
|
+
- **Max 10 toasts**: hardcoded `MAX_TOASTS = 10` in the store. Toasts beyond this limit are sliced off the end (oldest dropped). `ToasterProps.maxToasts` is defined but not connected to the store limit.
|
|
492
|
+
- **`toast.loading` is `duration=Infinity`** by default — it will never auto-dismiss. Always call `toast.dismiss(id)` when the operation completes, or use `toast.promise`.
|
|
493
|
+
- **`toast.promise` re-throws on error**: it catches the rejection, updates the toast to error state, then `throw error` — callers must handle the rejection themselves.
|
|
494
|
+
- **`toast.promise` uses `toastOptions.duration ?? 3000`** for the success/error display window, regardless of the type's default duration. Pass `{ duration: 5000 }` as `toastOptions` for a longer window.
|
|
495
|
+
- **`toast.custom` message signature is different**: must be `(t: ToastData) => JSXElement`, not `SolidComponent`. The `t` parameter gives access to `t.id`, `t.visible`, `t.paused`, `t.pauseDuration`.
|
|
496
|
+
- **Close button position depends on toast position**, not on layout: right-side positions (`top-right`, `bottom-right`) get `-left-2`; all others get `-right-2`.
|
|
497
|
+
- **`Toaster` component must be mounted before first `toast.*` call** if you want custom config. If `toast.*` fires first, the auto-mounted `ToasterInternal` uses defaults and ignores a later `<Toaster>` (because `containerMounted` is already `true`).
|
|
498
|
+
- **`unmountDelay` default is 400ms** — must be ≥ exit animation duration (400ms) for animations to complete before DOM removal.
|
|
499
|
+
- **`pop` targets oldest, `shift` targets newest**: in the store array (newest-first), `pop` scans from the end, `shift` from the start.
|
|
500
|
+
- **Pause resume uses remaining time**, not original duration — hover-pause is accurate to the ms.
|
|
501
|
+
- Custom toasts using `createSignal`/`createEffect` inside `toast.custom` are valid — they run in a reactive scope because `render()` creates one. Always use `onCleanup` to clear intervals.
|
|
502
|
+
|
|
503
|
+
---
|
|
504
|
+
|
|
505
|
+
## DO / DON'T
|
|
506
|
+
|
|
507
|
+
**DO**
|
|
508
|
+
|
|
509
|
+
- Call `toast.*` directly from event handlers, async functions, or anywhere in the app — no setup needed.
|
|
510
|
+
- Save the returned id when you need to dismiss/update a specific toast: `const id = toast.loading(...)`.
|
|
511
|
+
- Use `toast.promise` for async operations — it handles loading → success/error transition automatically.
|
|
512
|
+
- Pass `duration: Infinity` for toasts that should stay until explicitly dismissed.
|
|
513
|
+
- Use `toast.custom(t => ...)` for complex interactive notifications (progress bars, action buttons, reactive content).
|
|
514
|
+
- Access `t.paused` and `t.pauseDuration` inside `toast.custom` to build accurate progress indicators.
|
|
515
|
+
- Use `toast.dismiss()` (no id) to clear all toasts, e.g., on route navigation.
|
|
516
|
+
- Import from the barrel: `import { toast } from 'solid-tom-ui'`.
|
|
517
|
+
|
|
518
|
+
**DON'T**
|
|
519
|
+
|
|
520
|
+
- Don't add `<Toaster>` expecting it to clear existing auto-mounted container — `containerMounted` prevents double-mounting. Place `<Toaster>` before any `toast.*` calls if you need custom config.
|
|
521
|
+
- Don't use `toast.remove()` when you want the exit animation — use `toast.dismiss()` instead.
|
|
522
|
+
- Don't forget to dismiss `toast.loading` — it has `duration: Infinity` and will stay forever without manual dismissal or `toast.promise`.
|
|
523
|
+
- Don't mutate `ToastData` directly — always use `toastStore.updateToast(id, updates)` (or `toast.dismiss`/`toast.remove` via the public API).
|
|
524
|
+
- Don't pass `(t: ToastData) => JSX` to `toast.success/error/info/warning` — that pattern is only valid for `toast.custom`. For other types, the function receives `ToastData` but must return `SolidComponent`, not necessarily `JSXElement`.
|
|
525
|
+
- Don't import `ToastExample` in production — it is a demo component only (not exported from `solid-tom-ui`).
|
|
526
|
+
- Don't rely on more than 10 simultaneous toasts — extras are silently dropped from the store.
|
|
527
|
+
---
|
|
528
|
+
|
|
529
|
+
## Component Conventions
|
|
530
|
+
|
|
531
|
+
> **CSS encoding**: internal CSS classes use short encoded names (e.g. `ts01`, `ts02`) per project convention.
|