solid-tom-ui 1.0.7 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +246 -246
- package/dist/README.md +246 -0
- package/dist/components/avatar/avatar.js.map +1 -0
- package/dist/components/avatar/index.d.ts +3 -0
- package/{components → dist/components}/avatar/index.d.ts.map +1 -1
- package/dist/components/badge/badge.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/button/index.d.ts +3 -0
- package/{components → dist/components}/button/index.d.ts.map +1 -1
- package/dist/components/carousel/carousel.js.map +1 -0
- package/dist/components/chat-bubble/chatBubble.js.map +1 -0
- package/dist/components/checkbox/checkbox.js.map +1 -0
- package/dist/components/collapse/collapse.js.map +1 -0
- package/dist/components/collapse/index.d.ts +3 -0
- package/{components → dist/components}/collapse/index.d.ts.map +1 -1
- package/dist/components/context-menu/context-menu.js.map +1 -0
- package/dist/components/context-menu/context-menu.store.js.map +1 -0
- package/dist/components/divider/divider.js.map +1 -0
- package/dist/components/dropdown/dropdown.js.map +1 -0
- package/dist/components/dropdown/dropdown.store.js.map +1 -0
- package/dist/components/float-button/float-button.js.map +1 -0
- package/dist/components/float-button/index.d.ts +3 -0
- package/{components → dist/components}/float-button/index.d.ts.map +1 -1
- package/dist/components/hover-3d-image/hover-3d-image.js.map +1 -0
- package/dist/components/image-preview/image-preview.js.map +1 -0
- package/dist/components/input/index.d.ts +3 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/input/input.js.map +1 -0
- package/dist/components/input/input.utils.js.map +1 -0
- package/dist/components/input/variants/input-color.js.map +1 -0
- package/dist/components/input/variants/input-date.js.map +1 -0
- package/dist/components/input/variants/input-number.js.map +1 -0
- package/dist/components/input/variants/input-otp.js.map +1 -0
- package/dist/components/input/variants/input-password.js.map +1 -0
- package/dist/components/input/variants/input-radio.js.map +1 -0
- package/dist/components/input/variants/input-range.js.map +1 -0
- package/dist/components/input/variants/input-text.js.map +1 -0
- package/dist/components/input/variants/input-textarea.js.map +1 -0
- package/dist/components/loading/loading.js.map +1 -0
- package/dist/components/mansory/mansory.js.map +1 -0
- package/dist/components/menu/index.d.ts +4 -0
- package/{components → dist/components}/menu/index.d.ts.map +1 -1
- package/dist/components/menu/menu.js.map +1 -0
- package/{components → dist/components}/menu/menu.types.d.ts +7 -7
- package/{components → dist/components}/menu/menu.types.d.ts.map +1 -1
- package/dist/components/modal/modal.js.map +1 -0
- package/dist/components/modal/modalContext.js.map +1 -0
- package/dist/components/pagination/pagination.js.map +1 -0
- package/dist/components/progress-bar/progress-bar.js.map +1 -0
- package/dist/components/qr-code/qr-code.js.map +1 -0
- package/dist/components/rating/index.d.ts +3 -0
- package/{components → dist/components}/rating/index.d.ts.map +1 -1
- package/dist/components/select/select.js.map +1 -0
- package/dist/components/select-zone/select-zone.js.map +1 -0
- package/dist/components/skeleton/skeleton.js.map +1 -0
- package/dist/components/slider/index.d.ts +3 -0
- package/{components → dist/components}/slider/index.d.ts.map +1 -1
- package/dist/components/slider/slider.js.map +1 -0
- package/dist/components/splitter/splitter.js.map +1 -0
- package/dist/components/steps/steps.js.map +1 -0
- package/dist/components/swap/swap.js.map +1 -0
- package/dist/components/switch/switch.js.map +1 -0
- package/dist/components/tab/tab.js.map +1 -0
- package/dist/components/table/table.js.map +1 -0
- package/dist/components/timeline/timeline.js.map +1 -0
- package/dist/components/toast/icons/ErrorIcon.js.map +1 -0
- package/dist/components/toast/icons/IconCircle.js.map +1 -0
- package/dist/components/toast/icons/InfoIcon.js.map +1 -0
- package/dist/components/toast/icons/LoaderIcon.js.map +1 -0
- package/dist/components/toast/icons/SuccessIcon.js.map +1 -0
- package/dist/components/toast/icons/WarningIcon.js.map +1 -0
- package/dist/components/toast/toast.js.map +1 -0
- package/dist/components/toast/toast.store.js.map +1 -0
- package/dist/components/tooltip/tooltip.js.map +1 -0
- package/{components → dist/components}/tour/tour.d.ts.map +1 -1
- package/{components → dist/components}/tour/tour.js +1 -1
- package/dist/components/tour/tour.js.map +1 -0
- package/dist/components/upload/upload.js.map +1 -0
- package/dist/components/z-index/z-index.context.js.map +1 -0
- package/dist/components/z-index/z-index.js.map +1 -0
- package/dist/components/z-index/z-index.store.js.map +1 -0
- package/dist/components/z-index/z-index.types.js.map +1 -0
- package/dist/package.json +45 -0
- package/dist/skill/avatar.skill.md.txt +255 -0
- package/dist/skill/badge.skill.md.txt +223 -0
- package/dist/skill/blank.skill.md.txt +0 -0
- package/dist/skill/breadcrumb.skill.md.txt +177 -0
- package/dist/skill/button.skill.md.txt +198 -0
- package/dist/skill/carousel.skill.md.txt +406 -0
- package/dist/skill/chat-bubble.skill.md.txt +342 -0
- package/dist/skill/checkbox.skill.md.txt +326 -0
- package/dist/skill/code-preview.skill.md.txt +240 -0
- package/dist/skill/collapse.skill.md.txt +329 -0
- package/dist/skill/context-menu.skill.md.txt +233 -0
- package/dist/skill/diff.skill.md.txt +244 -0
- package/dist/skill/divider.skill.md.txt +151 -0
- package/dist/skill/doc.skill.md.txt +191 -0
- package/dist/skill/drawer.skill.md.txt +157 -0
- package/dist/skill/dropdown.skill.md.txt +198 -0
- package/dist/skill/float-button.skill.md.txt +315 -0
- package/dist/skill/hover-3d-image.skill.md.txt +120 -0
- package/dist/skill/iframe.skill.md.txt +114 -0
- package/dist/skill/image-preview.skill.md.txt +162 -0
- package/dist/skill/indicator.skill.md.txt +60 -0
- package/dist/skill/input.skill.md.txt +489 -0
- package/dist/skill/loading.skill.md.txt +127 -0
- package/dist/skill/mansory.skill.md.txt +0 -0
- package/dist/skill/menu.skill.md.txt +476 -0
- package/dist/skill/modal.skill.md.txt +359 -0
- package/dist/skill/pagination.skill.md.txt +405 -0
- package/dist/skill/progress-bar.skill.md.txt +207 -0
- package/dist/skill/qr-code.skill.md.txt +136 -0
- package/dist/skill/rating.skill.md.txt +167 -0
- package/dist/skill/select-zone.skill.md.txt +93 -0
- package/dist/skill/select.skill.md.txt +663 -0
- package/dist/skill/skeleton.skill.md.txt +192 -0
- package/dist/skill/slider.skill.md.txt +404 -0
- package/dist/skill/splitter.skill.md.txt +411 -0
- package/dist/skill/steps.skill.md.txt +264 -0
- package/dist/skill/swap.skill.md.txt +139 -0
- package/dist/skill/switch.skill.md.txt +191 -0
- package/dist/skill/tab.skill.md.txt +484 -0
- package/dist/skill/table.example.header.md.txt +667 -0
- package/dist/skill/table.skill.md.txt +1407 -0
- package/dist/skill/text-rotate.skill.md.txt +186 -0
- package/dist/skill/timeline.skill.md.txt +247 -0
- package/dist/skill/toast.skill.md.txt +531 -0
- package/dist/skill/tooltip.skill.md.txt +222 -0
- package/dist/skill/tour.skill.md.txt +156 -0
- package/dist/skill/upload.skill.md.txt +358 -0
- package/dist/skill/z-index.skill.md.txt +0 -0
- package/{solid-ui.css → dist/solid-ui.css} +2 -2
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/element-tracker.js.map +1 -0
- package/dist/utils/helper.js.map +1 -0
- package/dist/utils/hoc.js.map +1 -0
- package/package.json +101 -7
- package/components/avatar/avatar.js.map +0 -1
- package/components/avatar/index.d.ts +0 -2
- package/components/badge/badge.js.map +0 -1
- package/components/breadcrumb/breadcrumb.js.map +0 -1
- package/components/button/button.js.map +0 -1
- package/components/button/index.d.ts +0 -2
- package/components/carousel/carousel.js.map +0 -1
- package/components/chat-bubble/chatBubble.js.map +0 -1
- package/components/checkbox/checkbox.js.map +0 -1
- package/components/collapse/collapse.js.map +0 -1
- package/components/collapse/index.d.ts +0 -2
- package/components/context-menu/context-menu.js.map +0 -1
- package/components/context-menu/context-menu.store.js.map +0 -1
- package/components/divider/divider.js.map +0 -1
- package/components/dropdown/dropdown.js.map +0 -1
- package/components/dropdown/dropdown.store.js.map +0 -1
- package/components/float-button/float-button.js.map +0 -1
- package/components/float-button/index.d.ts +0 -2
- package/components/hover-3d-image/hover-3d-image.js.map +0 -1
- package/components/image-preview/image-preview.js.map +0 -1
- package/components/input/index.d.ts +0 -2
- package/components/input/index.d.ts.map +0 -1
- package/components/input/input.js.map +0 -1
- package/components/input/input.utils.js.map +0 -1
- package/components/input/variants/input-color.js.map +0 -1
- package/components/input/variants/input-date.js.map +0 -1
- package/components/input/variants/input-number.js.map +0 -1
- package/components/input/variants/input-otp.js.map +0 -1
- package/components/input/variants/input-password.js.map +0 -1
- package/components/input/variants/input-radio.js.map +0 -1
- package/components/input/variants/input-range.js.map +0 -1
- package/components/input/variants/input-text.js.map +0 -1
- package/components/input/variants/input-textarea.js.map +0 -1
- package/components/loading/loading.js.map +0 -1
- package/components/mansory/mansory.js.map +0 -1
- package/components/menu/index.d.ts +0 -4
- package/components/menu/menu.js.map +0 -1
- package/components/modal/modal.js.map +0 -1
- package/components/modal/modalContext.js.map +0 -1
- package/components/pagination/pagination.js.map +0 -1
- package/components/progress-bar/progress-bar.js.map +0 -1
- package/components/qr-code/qr-code.js.map +0 -1
- package/components/rating/index.d.ts +0 -2
- package/components/select/select.js.map +0 -1
- package/components/select-zone/select-zone.js.map +0 -1
- package/components/skeleton/skeleton.js.map +0 -1
- package/components/slider/index.d.ts +0 -2
- package/components/slider/slider.js.map +0 -1
- package/components/splitter/splitter.js.map +0 -1
- package/components/steps/steps.js.map +0 -1
- package/components/swap/swap.js.map +0 -1
- package/components/switch/switch.js.map +0 -1
- package/components/tab/tab.js.map +0 -1
- package/components/table/table.js.map +0 -1
- package/components/timeline/timeline.js.map +0 -1
- package/components/toast/icons/ErrorIcon.js.map +0 -1
- package/components/toast/icons/IconCircle.js.map +0 -1
- package/components/toast/icons/InfoIcon.js.map +0 -1
- package/components/toast/icons/LoaderIcon.js.map +0 -1
- package/components/toast/icons/SuccessIcon.js.map +0 -1
- package/components/toast/icons/WarningIcon.js.map +0 -1
- package/components/toast/toast.js.map +0 -1
- package/components/toast/toast.store.js.map +0 -1
- package/components/tooltip/tooltip.js.map +0 -1
- package/components/tour/tour.js.map +0 -1
- package/components/upload/upload.js.map +0 -1
- package/components/z-index/z-index.context.js.map +0 -1
- package/components/z-index/z-index.js.map +0 -1
- package/components/z-index/z-index.store.js.map +0 -1
- package/components/z-index/z-index.types.js.map +0 -1
- package/utils/cn.js.map +0 -1
- package/utils/element-tracker.js.map +0 -1
- package/utils/helper.js.map +0 -1
- package/utils/hoc.js.map +0 -1
- package/workspace.code-workspace +0 -8
- /package/{components → dist/components}/avatar/avatar.d.ts +0 -0
- /package/{components → dist/components}/avatar/avatar.d.ts.map +0 -0
- /package/{components → dist/components}/avatar/avatar.js +0 -0
- /package/{components → dist/components}/avatar/avatar.types.d.ts +0 -0
- /package/{components → dist/components}/avatar/avatar.types.d.ts.map +0 -0
- /package/{components → dist/components}/badge/badge.d.ts +0 -0
- /package/{components → dist/components}/badge/badge.d.ts.map +0 -0
- /package/{components → dist/components}/badge/badge.js +0 -0
- /package/{components → dist/components}/badge/badge.types.d.ts +0 -0
- /package/{components → dist/components}/badge/badge.types.d.ts.map +0 -0
- /package/{components → dist/components}/badge/index.d.ts +0 -0
- /package/{components → dist/components}/badge/index.d.ts.map +0 -0
- /package/{components → dist/components}/blank/blank.d.ts +0 -0
- /package/{components → dist/components}/blank/blank.d.ts.map +0 -0
- /package/{components → dist/components}/blank/index.d.ts +0 -0
- /package/{components → dist/components}/blank/index.d.ts.map +0 -0
- /package/{components → dist/components}/breadcrumb/breadcrumb.d.ts +0 -0
- /package/{components → dist/components}/breadcrumb/breadcrumb.d.ts.map +0 -0
- /package/{components → dist/components}/breadcrumb/breadcrumb.js +0 -0
- /package/{components → dist/components}/breadcrumb/index.d.ts +0 -0
- /package/{components → dist/components}/breadcrumb/index.d.ts.map +0 -0
- /package/{components → dist/components}/button/button.d.ts +0 -0
- /package/{components → dist/components}/button/button.d.ts.map +0 -0
- /package/{components → dist/components}/button/button.js +0 -0
- /package/{components → dist/components}/button/button.types.d.ts +0 -0
- /package/{components → dist/components}/button/button.types.d.ts.map +0 -0
- /package/{components → dist/components}/carousel/carousel.d.ts +0 -0
- /package/{components → dist/components}/carousel/carousel.d.ts.map +0 -0
- /package/{components → dist/components}/carousel/carousel.js +0 -0
- /package/{components → dist/components}/carousel/carousel.types.d.ts +0 -0
- /package/{components → dist/components}/carousel/carousel.types.d.ts.map +0 -0
- /package/{components → dist/components}/carousel/index.d.ts +0 -0
- /package/{components → dist/components}/carousel/index.d.ts.map +0 -0
- /package/{components → dist/components}/chat-bubble/chatBubble.d.ts +0 -0
- /package/{components → dist/components}/chat-bubble/chatBubble.d.ts.map +0 -0
- /package/{components → dist/components}/chat-bubble/chatBubble.js +0 -0
- /package/{components → dist/components}/chat-bubble/chatBubble.type.d.ts +0 -0
- /package/{components → dist/components}/chat-bubble/chatBubble.type.d.ts.map +0 -0
- /package/{components → dist/components}/chat-bubble/index.d.ts +0 -0
- /package/{components → dist/components}/chat-bubble/index.d.ts.map +0 -0
- /package/{components → dist/components}/checkbox/checkbox.d.ts +0 -0
- /package/{components → dist/components}/checkbox/checkbox.d.ts.map +0 -0
- /package/{components → dist/components}/checkbox/checkbox.js +0 -0
- /package/{components → dist/components}/checkbox/index.d.ts +0 -0
- /package/{components → dist/components}/checkbox/index.d.ts.map +0 -0
- /package/{components → dist/components}/collapse/collapse.d.ts +0 -0
- /package/{components → dist/components}/collapse/collapse.d.ts.map +0 -0
- /package/{components → dist/components}/collapse/collapse.js +0 -0
- /package/{components → dist/components}/collapse/collapse.types.d.ts +0 -0
- /package/{components → dist/components}/collapse/collapse.types.d.ts.map +0 -0
- /package/{components → dist/components}/context-menu/context-menu.d.ts +0 -0
- /package/{components → dist/components}/context-menu/context-menu.d.ts.map +0 -0
- /package/{components → dist/components}/context-menu/context-menu.js +0 -0
- /package/{components → dist/components}/context-menu/context-menu.store.d.ts +0 -0
- /package/{components → dist/components}/context-menu/context-menu.store.d.ts.map +0 -0
- /package/{components → dist/components}/context-menu/context-menu.store.js +0 -0
- /package/{components → dist/components}/context-menu/context-menu.types.d.ts +0 -0
- /package/{components → dist/components}/context-menu/context-menu.types.d.ts.map +0 -0
- /package/{components → dist/components}/context-menu/index.d.ts +0 -0
- /package/{components → dist/components}/context-menu/index.d.ts.map +0 -0
- /package/{components → dist/components}/diff/diff.d.ts +0 -0
- /package/{components → dist/components}/diff/diff.d.ts.map +0 -0
- /package/{components → dist/components}/diff/diff.js +0 -0
- /package/{components → dist/components}/diff/diff.js.map +0 -0
- /package/{components → dist/components}/diff/index.d.ts +0 -0
- /package/{components → dist/components}/diff/index.d.ts.map +0 -0
- /package/{components → dist/components}/divider/divider.d.ts +0 -0
- /package/{components → dist/components}/divider/divider.d.ts.map +0 -0
- /package/{components → dist/components}/divider/divider.js +0 -0
- /package/{components → dist/components}/divider/divider.types.d.ts +0 -0
- /package/{components → dist/components}/divider/divider.types.d.ts.map +0 -0
- /package/{components → dist/components}/divider/index.d.ts +0 -0
- /package/{components → dist/components}/divider/index.d.ts.map +0 -0
- /package/{components → dist/components}/drawer/drawer.d.ts +0 -0
- /package/{components → dist/components}/drawer/drawer.d.ts.map +0 -0
- /package/{components → dist/components}/drawer/drawer.js +0 -0
- /package/{components → dist/components}/drawer/drawer.js.map +0 -0
- /package/{components → dist/components}/drawer/drawer.types.d.ts +0 -0
- /package/{components → dist/components}/drawer/drawer.types.d.ts.map +0 -0
- /package/{components → dist/components}/drawer/index.d.ts +0 -0
- /package/{components → dist/components}/drawer/index.d.ts.map +0 -0
- /package/{components → dist/components}/dropdown/dropdown.d.ts +0 -0
- /package/{components → dist/components}/dropdown/dropdown.d.ts.map +0 -0
- /package/{components → dist/components}/dropdown/dropdown.js +0 -0
- /package/{components → dist/components}/dropdown/dropdown.store.d.ts +0 -0
- /package/{components → dist/components}/dropdown/dropdown.store.d.ts.map +0 -0
- /package/{components → dist/components}/dropdown/dropdown.store.js +0 -0
- /package/{components → dist/components}/dropdown/dropdown.types.d.ts +0 -0
- /package/{components → dist/components}/dropdown/dropdown.types.d.ts.map +0 -0
- /package/{components → dist/components}/dropdown/index.d.ts +0 -0
- /package/{components → dist/components}/dropdown/index.d.ts.map +0 -0
- /package/{components → dist/components}/float-button/float-button.d.ts +0 -0
- /package/{components → dist/components}/float-button/float-button.d.ts.map +0 -0
- /package/{components → dist/components}/float-button/float-button.js +0 -0
- /package/{components → dist/components}/float-button/float-button.types.d.ts +0 -0
- /package/{components → dist/components}/float-button/float-button.types.d.ts.map +0 -0
- /package/{components → dist/components}/hover-3d-image/hover-3d-example.d.ts +0 -0
- /package/{components → dist/components}/hover-3d-image/hover-3d-example.d.ts.map +0 -0
- /package/{components → dist/components}/hover-3d-image/hover-3d-image.d.ts +0 -0
- /package/{components → dist/components}/hover-3d-image/hover-3d-image.d.ts.map +0 -0
- /package/{components → dist/components}/hover-3d-image/hover-3d-image.js +0 -0
- /package/{components → dist/components}/hover-3d-image/index.d.ts +0 -0
- /package/{components → dist/components}/hover-3d-image/index.d.ts.map +0 -0
- /package/{components → dist/components}/image-preview/image-preview.d.ts +0 -0
- /package/{components → dist/components}/image-preview/image-preview.d.ts.map +0 -0
- /package/{components → dist/components}/image-preview/image-preview.js +0 -0
- /package/{components → dist/components}/image-preview/index.d.ts +0 -0
- /package/{components → dist/components}/image-preview/index.d.ts.map +0 -0
- /package/{components → dist/components}/indicator/index.d.ts +0 -0
- /package/{components → dist/components}/indicator/index.d.ts.map +0 -0
- /package/{components → dist/components}/indicator/indicator.d.ts +0 -0
- /package/{components → dist/components}/indicator/indicator.d.ts.map +0 -0
- /package/{components → dist/components}/indicator/indicator.js +0 -0
- /package/{components → dist/components}/indicator/indicator.js.map +0 -0
- /package/{components → dist/components}/indicator/indicator.types.d.ts +0 -0
- /package/{components → dist/components}/indicator/indicator.types.d.ts.map +0 -0
- /package/{components → dist/components}/input/input.d.ts +0 -0
- /package/{components → dist/components}/input/input.d.ts.map +0 -0
- /package/{components → dist/components}/input/input.js +0 -0
- /package/{components → dist/components}/input/input.types.d.ts +0 -0
- /package/{components → dist/components}/input/input.types.d.ts.map +0 -0
- /package/{components → dist/components}/input/input.utils.d.ts +0 -0
- /package/{components → dist/components}/input/input.utils.d.ts.map +0 -0
- /package/{components → dist/components}/input/input.utils.js +0 -0
- /package/{components → dist/components}/input/variants/input-color.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-color.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-color.js +0 -0
- /package/{components → dist/components}/input/variants/input-date.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-date.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-date.js +0 -0
- /package/{components → dist/components}/input/variants/input-number.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-number.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-number.js +0 -0
- /package/{components → dist/components}/input/variants/input-otp.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-otp.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-otp.js +0 -0
- /package/{components → dist/components}/input/variants/input-password.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-password.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-password.js +0 -0
- /package/{components → dist/components}/input/variants/input-radio.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-radio.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-radio.js +0 -0
- /package/{components → dist/components}/input/variants/input-range.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-range.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-range.js +0 -0
- /package/{components → dist/components}/input/variants/input-text.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-text.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-text.js +0 -0
- /package/{components → dist/components}/input/variants/input-textarea.d.ts +0 -0
- /package/{components → dist/components}/input/variants/input-textarea.d.ts.map +0 -0
- /package/{components → dist/components}/input/variants/input-textarea.js +0 -0
- /package/{components → dist/components}/loading/index.d.ts +0 -0
- /package/{components → dist/components}/loading/index.d.ts.map +0 -0
- /package/{components → dist/components}/loading/loading.d.ts +0 -0
- /package/{components → dist/components}/loading/loading.d.ts.map +0 -0
- /package/{components → dist/components}/loading/loading.js +0 -0
- /package/{components → dist/components}/mansory/index.d.ts +0 -0
- /package/{components → dist/components}/mansory/index.d.ts.map +0 -0
- /package/{components → dist/components}/mansory/mansory.d.ts +0 -0
- /package/{components → dist/components}/mansory/mansory.d.ts.map +0 -0
- /package/{components → dist/components}/mansory/mansory.js +0 -0
- /package/{components → dist/components}/mansory/mansory.types.d.ts +0 -0
- /package/{components → dist/components}/mansory/mansory.types.d.ts.map +0 -0
- /package/{components → dist/components}/menu/menu.d.ts +0 -0
- /package/{components → dist/components}/menu/menu.d.ts.map +0 -0
- /package/{components → dist/components}/menu/menu.data-example.d.ts +0 -0
- /package/{components → dist/components}/menu/menu.data-example.d.ts.map +0 -0
- /package/{components → dist/components}/menu/menu.js +0 -0
- /package/{components → dist/components}/modal/index.d.ts +0 -0
- /package/{components → dist/components}/modal/index.d.ts.map +0 -0
- /package/{components → dist/components}/modal/modal.d.ts +0 -0
- /package/{components → dist/components}/modal/modal.d.ts.map +0 -0
- /package/{components → dist/components}/modal/modal.js +0 -0
- /package/{components → dist/components}/modal/modalContext.d.ts +0 -0
- /package/{components → dist/components}/modal/modalContext.d.ts.map +0 -0
- /package/{components → dist/components}/modal/modalContext.js +0 -0
- /package/{components → dist/components}/pagination/index.d.ts +0 -0
- /package/{components → dist/components}/pagination/index.d.ts.map +0 -0
- /package/{components → dist/components}/pagination/pagination.d.ts +0 -0
- /package/{components → dist/components}/pagination/pagination.d.ts.map +0 -0
- /package/{components → dist/components}/pagination/pagination.js +0 -0
- /package/{components → dist/components}/pagination/pagination.types.d.ts +0 -0
- /package/{components → dist/components}/pagination/pagination.types.d.ts.map +0 -0
- /package/{components → dist/components}/progress-bar/index.d.ts +0 -0
- /package/{components → dist/components}/progress-bar/index.d.ts.map +0 -0
- /package/{components → dist/components}/progress-bar/progress-bar.d.ts +0 -0
- /package/{components → dist/components}/progress-bar/progress-bar.d.ts.map +0 -0
- /package/{components → dist/components}/progress-bar/progress-bar.js +0 -0
- /package/{components → dist/components}/progress-bar/progress-bar.types.d.ts +0 -0
- /package/{components → dist/components}/progress-bar/progress-bar.types.d.ts.map +0 -0
- /package/{components → dist/components}/qr-code/index.d.ts +0 -0
- /package/{components → dist/components}/qr-code/index.d.ts.map +0 -0
- /package/{components → dist/components}/qr-code/qr-code.d.ts +0 -0
- /package/{components → dist/components}/qr-code/qr-code.d.ts.map +0 -0
- /package/{components → dist/components}/qr-code/qr-code.js +0 -0
- /package/{components → dist/components}/qr-code/qr-code.types.d.ts +0 -0
- /package/{components → dist/components}/qr-code/qr-code.types.d.ts.map +0 -0
- /package/{components → dist/components}/rating/rating.d.ts +0 -0
- /package/{components → dist/components}/rating/rating.d.ts.map +0 -0
- /package/{components → dist/components}/rating/rating.js +0 -0
- /package/{components → dist/components}/rating/rating.js.map +0 -0
- /package/{components → dist/components}/rating/rating.types.d.ts +0 -0
- /package/{components → dist/components}/rating/rating.types.d.ts.map +0 -0
- /package/{components → dist/components}/select/index.d.ts +0 -0
- /package/{components → dist/components}/select/index.d.ts.map +0 -0
- /package/{components → dist/components}/select/select.d.ts +0 -0
- /package/{components → dist/components}/select/select.d.ts.map +0 -0
- /package/{components → dist/components}/select/select.js +0 -0
- /package/{components → dist/components}/select/select.types.d.ts +0 -0
- /package/{components → dist/components}/select/select.types.d.ts.map +0 -0
- /package/{components → dist/components}/select-zone/index.d.ts +0 -0
- /package/{components → dist/components}/select-zone/index.d.ts.map +0 -0
- /package/{components → dist/components}/select-zone/select-zone.d.ts +0 -0
- /package/{components → dist/components}/select-zone/select-zone.d.ts.map +0 -0
- /package/{components → dist/components}/select-zone/select-zone.js +0 -0
- /package/{components → dist/components}/select-zone/select-zone.types.d.ts +0 -0
- /package/{components → dist/components}/select-zone/select-zone.types.d.ts.map +0 -0
- /package/{components → dist/components}/skeleton/index.d.ts +0 -0
- /package/{components → dist/components}/skeleton/index.d.ts.map +0 -0
- /package/{components → dist/components}/skeleton/skeleton.d.ts +0 -0
- /package/{components → dist/components}/skeleton/skeleton.d.ts.map +0 -0
- /package/{components → dist/components}/skeleton/skeleton.js +0 -0
- /package/{components → dist/components}/slider/slider.d.ts +0 -0
- /package/{components → dist/components}/slider/slider.d.ts.map +0 -0
- /package/{components → dist/components}/slider/slider.js +0 -0
- /package/{components → dist/components}/slider/slider.types.d.ts +0 -0
- /package/{components → dist/components}/slider/slider.types.d.ts.map +0 -0
- /package/{components → dist/components}/splitter/index.d.ts +0 -0
- /package/{components → dist/components}/splitter/index.d.ts.map +0 -0
- /package/{components → dist/components}/splitter/splitter.d.ts +0 -0
- /package/{components → dist/components}/splitter/splitter.d.ts.map +0 -0
- /package/{components → dist/components}/splitter/splitter.js +0 -0
- /package/{components → dist/components}/splitter/splitter.types.d.ts +0 -0
- /package/{components → dist/components}/splitter/splitter.types.d.ts.map +0 -0
- /package/{components → dist/components}/steps/index.d.ts +0 -0
- /package/{components → dist/components}/steps/index.d.ts.map +0 -0
- /package/{components → dist/components}/steps/steps.d.ts +0 -0
- /package/{components → dist/components}/steps/steps.d.ts.map +0 -0
- /package/{components → dist/components}/steps/steps.js +0 -0
- /package/{components → dist/components}/swap/index.d.ts +0 -0
- /package/{components → dist/components}/swap/index.d.ts.map +0 -0
- /package/{components → dist/components}/swap/swap.d.ts +0 -0
- /package/{components → dist/components}/swap/swap.d.ts.map +0 -0
- /package/{components → dist/components}/swap/swap.js +0 -0
- /package/{components → dist/components}/switch/index.d.ts +0 -0
- /package/{components → dist/components}/switch/index.d.ts.map +0 -0
- /package/{components → dist/components}/switch/switch.d.ts +0 -0
- /package/{components → dist/components}/switch/switch.d.ts.map +0 -0
- /package/{components → dist/components}/switch/switch.js +0 -0
- /package/{components → dist/components}/switch/switch.types.d.ts +0 -0
- /package/{components → dist/components}/switch/switch.types.d.ts.map +0 -0
- /package/{components → dist/components}/tab/index.d.ts +0 -0
- /package/{components → dist/components}/tab/index.d.ts.map +0 -0
- /package/{components → dist/components}/tab/tab.d.ts +0 -0
- /package/{components → dist/components}/tab/tab.d.ts.map +0 -0
- /package/{components → dist/components}/tab/tab.js +0 -0
- /package/{components → dist/components}/tab/tab.types.d.ts +0 -0
- /package/{components → dist/components}/tab/tab.types.d.ts.map +0 -0
- /package/{components → dist/components}/table/index.d.ts +0 -0
- /package/{components → dist/components}/table/index.d.ts.map +0 -0
- /package/{components → dist/components}/table/index.js +0 -0
- /package/{components → dist/components}/table/table.d.ts +0 -0
- /package/{components → dist/components}/table/table.d.ts.map +0 -0
- /package/{components → dist/components}/table/table.js +0 -0
- /package/{components → dist/components}/table/table.types.d.ts +0 -0
- /package/{components → dist/components}/table/table.types.d.ts.map +0 -0
- /package/{components → dist/components}/text-rotate/index.d.ts +0 -0
- /package/{components → dist/components}/text-rotate/index.d.ts.map +0 -0
- /package/{components → dist/components}/text-rotate/text-rotate.d.ts +0 -0
- /package/{components → dist/components}/text-rotate/text-rotate.d.ts.map +0 -0
- /package/{components → dist/components}/text-rotate/text-rotate.js +0 -0
- /package/{components → dist/components}/text-rotate/text-rotate.js.map +0 -0
- /package/{components → dist/components}/timeline/index.d.ts +0 -0
- /package/{components → dist/components}/timeline/index.d.ts.map +0 -0
- /package/{components → dist/components}/timeline/timeline.d.ts +0 -0
- /package/{components → dist/components}/timeline/timeline.d.ts.map +0 -0
- /package/{components → dist/components}/timeline/timeline.js +0 -0
- /package/{components → dist/components}/timeline/timeline.types.d.ts +0 -0
- /package/{components → dist/components}/timeline/timeline.types.d.ts.map +0 -0
- /package/{components → dist/components}/toast/icons/ErrorIcon.d.ts +0 -0
- /package/{components → dist/components}/toast/icons/ErrorIcon.d.ts.map +0 -0
- /package/{components → dist/components}/toast/icons/ErrorIcon.js +0 -0
- /package/{components → dist/components}/toast/icons/IconCircle.d.ts +0 -0
- /package/{components → dist/components}/toast/icons/IconCircle.d.ts.map +0 -0
- /package/{components → dist/components}/toast/icons/IconCircle.js +0 -0
- /package/{components → dist/components}/toast/icons/InfoIcon.d.ts +0 -0
- /package/{components → dist/components}/toast/icons/InfoIcon.d.ts.map +0 -0
- /package/{components → dist/components}/toast/icons/InfoIcon.js +0 -0
- /package/{components → dist/components}/toast/icons/LoaderIcon.d.ts +0 -0
- /package/{components → dist/components}/toast/icons/LoaderIcon.d.ts.map +0 -0
- /package/{components → dist/components}/toast/icons/LoaderIcon.js +0 -0
- /package/{components → dist/components}/toast/icons/SuccessIcon.d.ts +0 -0
- /package/{components → dist/components}/toast/icons/SuccessIcon.d.ts.map +0 -0
- /package/{components → dist/components}/toast/icons/SuccessIcon.js +0 -0
- /package/{components → dist/components}/toast/icons/WarningIcon.d.ts +0 -0
- /package/{components → dist/components}/toast/icons/WarningIcon.d.ts.map +0 -0
- /package/{components → dist/components}/toast/icons/WarningIcon.js +0 -0
- /package/{components → dist/components}/toast/icons/index.d.ts +0 -0
- /package/{components → dist/components}/toast/icons/index.d.ts.map +0 -0
- /package/{components → dist/components}/toast/index.d.ts +0 -0
- /package/{components → dist/components}/toast/index.d.ts.map +0 -0
- /package/{components → dist/components}/toast/toast.d.ts +0 -0
- /package/{components → dist/components}/toast/toast.d.ts.map +0 -0
- /package/{components → dist/components}/toast/toast.js +0 -0
- /package/{components → dist/components}/toast/toast.store.d.ts +0 -0
- /package/{components → dist/components}/toast/toast.store.d.ts.map +0 -0
- /package/{components → dist/components}/toast/toast.store.js +0 -0
- /package/{components → dist/components}/toast/toast.type.d.ts +0 -0
- /package/{components → dist/components}/toast/toast.type.d.ts.map +0 -0
- /package/{components → dist/components}/tooltip/index.d.ts +0 -0
- /package/{components → dist/components}/tooltip/index.d.ts.map +0 -0
- /package/{components → dist/components}/tooltip/tooltip.d.ts +0 -0
- /package/{components → dist/components}/tooltip/tooltip.d.ts.map +0 -0
- /package/{components → dist/components}/tooltip/tooltip.js +0 -0
- /package/{components → dist/components}/tooltip/tooltip.types.d.ts +0 -0
- /package/{components → dist/components}/tooltip/tooltip.types.d.ts.map +0 -0
- /package/{components → dist/components}/tour/index.d.ts +0 -0
- /package/{components → dist/components}/tour/index.d.ts.map +0 -0
- /package/{components → dist/components}/tour/tour.d.ts +0 -0
- /package/{components → dist/components}/tour/tour.types.d.ts +0 -0
- /package/{components → dist/components}/tour/tour.types.d.ts.map +0 -0
- /package/{components → dist/components}/upload/index.d.ts +0 -0
- /package/{components → dist/components}/upload/index.d.ts.map +0 -0
- /package/{components → dist/components}/upload/upload.d.ts +0 -0
- /package/{components → dist/components}/upload/upload.d.ts.map +0 -0
- /package/{components → dist/components}/upload/upload.js +0 -0
- /package/{components → dist/components}/upload/upload.types.d.ts +0 -0
- /package/{components → dist/components}/upload/upload.types.d.ts.map +0 -0
- /package/{components → dist/components}/z-index/index.d.ts +0 -0
- /package/{components → dist/components}/z-index/index.d.ts.map +0 -0
- /package/{components → dist/components}/z-index/z-index.context.d.ts +0 -0
- /package/{components → dist/components}/z-index/z-index.context.d.ts.map +0 -0
- /package/{components → dist/components}/z-index/z-index.context.js +0 -0
- /package/{components → dist/components}/z-index/z-index.d.ts +0 -0
- /package/{components → dist/components}/z-index/z-index.d.ts.map +0 -0
- /package/{components → dist/components}/z-index/z-index.js +0 -0
- /package/{components → dist/components}/z-index/z-index.store.d.ts +0 -0
- /package/{components → dist/components}/z-index/z-index.store.d.ts.map +0 -0
- /package/{components → dist/components}/z-index/z-index.store.js +0 -0
- /package/{components → dist/components}/z-index/z-index.types.d.ts +0 -0
- /package/{components → dist/components}/z-index/z-index.types.d.ts.map +0 -0
- /package/{components → dist/components}/z-index/z-index.types.js +0 -0
- /package/{lib.d.ts → dist/lib.d.ts} +0 -0
- /package/{lib.d.ts.map → dist/lib.d.ts.map} +0 -0
- /package/{lib.js → dist/lib.js} +0 -0
- /package/{type.d.ts → dist/type.d.ts} +0 -0
- /package/{type.d.ts.map → dist/type.d.ts.map} +0 -0
- /package/{utils → dist/utils}/cn.d.ts +0 -0
- /package/{utils → dist/utils}/cn.d.ts.map +0 -0
- /package/{utils → dist/utils}/cn.js +0 -0
- /package/{utils → dist/utils}/element-tracker.js +0 -0
- /package/{utils → dist/utils}/helper.d.ts +0 -0
- /package/{utils → dist/utils}/helper.d.ts.map +0 -0
- /package/{utils → dist/utils}/helper.js +0 -0
- /package/{utils → dist/utils}/hoc.js +0 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
## COMPONENT IDENTITY
|
|
2
|
+
- **Import**: `import { Tooltip } from 'solid-tom-ui';`
|
|
3
|
+
- **Export**: `Tooltip` (named export)
|
|
4
|
+
- **Framework**: SolidJS
|
|
5
|
+
- **Purpose**: Tooltip component — DaisyUI + CVA styling engine; two render modes (default / portal) controlled by `type` prop
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## TYPE SIGNATURE
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
// Unified entry point — render mode controlled by `type` prop
|
|
13
|
+
type TooltipProps = TooltipDefaultProps | TooltipPortalProps;
|
|
14
|
+
|
|
15
|
+
// Default mode (IO-based, no overflow clip)
|
|
16
|
+
type TooltipDefaultProps = {
|
|
17
|
+
type?: 'default'; // omit or set 'default'
|
|
18
|
+
hidden?: boolean;
|
|
19
|
+
children: JSX.Element;
|
|
20
|
+
position?: 'top' | 'bottom' | 'left' | 'right'; // default: 'top'
|
|
21
|
+
color?: BaseColorProps; // default: 'neutral'
|
|
22
|
+
zIndex?: number;
|
|
23
|
+
class?: {
|
|
24
|
+
root?: string;
|
|
25
|
+
content?: string;
|
|
26
|
+
};
|
|
27
|
+
} & (WithContent | WithCustomContent);
|
|
28
|
+
|
|
29
|
+
// Portal mode (event-delegation, escapes overflow:hidden)
|
|
30
|
+
type TooltipPortalProps = {
|
|
31
|
+
type: 'portal'; // REQUIRED to activate portal mode
|
|
32
|
+
hidden?: boolean;
|
|
33
|
+
children: SolidComponent;
|
|
34
|
+
position?: 'top' | 'bottom' | 'left' | 'right'; // default: 'top'
|
|
35
|
+
color?: BaseColorProps; // default: 'neutral'
|
|
36
|
+
zIndex?: number;
|
|
37
|
+
class?: {
|
|
38
|
+
root?: string;
|
|
39
|
+
content?: string;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* `id` of the overflow:hidden parent container.
|
|
43
|
+
* Required when type='portal'.
|
|
44
|
+
*/
|
|
45
|
+
containerId: string;
|
|
46
|
+
} & (WithContent | WithCustomContent);
|
|
47
|
+
|
|
48
|
+
// MUTUALLY EXCLUSIVE — use ONE of the two below:
|
|
49
|
+
type WithContent = {
|
|
50
|
+
content: string; // plain text tooltip
|
|
51
|
+
customContent?: never;
|
|
52
|
+
};
|
|
53
|
+
type WithCustomContent = {
|
|
54
|
+
content?: never;
|
|
55
|
+
customContent: JSX.Element; // arbitrary JSX tooltip body
|
|
56
|
+
};
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### CONSTRAINTS
|
|
60
|
+
|
|
61
|
+
- `content` and `customContent` are mutually exclusive.
|
|
62
|
+
- `containerId` is **required** when `type='portal'`. TypeScript will error if omitted.
|
|
63
|
+
- `TooltipPortal` is still exported as a backward-compat alias for `<Tooltip type="portal" ...>`.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## PROP REFERENCE
|
|
68
|
+
|
|
69
|
+
| Prop | Type | Default | Description |
|
|
70
|
+
| --------------- | ---------------------------------------- | ----------- | ----------------------------------------------------------------------------- |
|
|
71
|
+
| `type` | `'default' \| 'portal'` | `'default'` | Render mode: IO-based (default) or event-delegation portal |
|
|
72
|
+
| `children` | `JSX.Element` / `SolidComponent` | — | **Required.** The element that triggers the tooltip on hover |
|
|
73
|
+
| `content` | `string` | — | Plain text shown in tooltip |
|
|
74
|
+
| `customContent` | `JSX.Element` | — | Arbitrary JSX rendered inside tooltip bubble |
|
|
75
|
+
| `position` | `'top' \| 'bottom' \| 'left' \| 'right'` | `'top'` | Direction tooltip appears relative to trigger |
|
|
76
|
+
| `color` | `BaseColorProps` | `'neutral'` | DaisyUI color variant |
|
|
77
|
+
| `hidden` | `boolean` | `undefined` | When `true`, bypasses tooltip wrapper entirely — renders children only |
|
|
78
|
+
| `zIndex` | `number` | `undefined` | Override automatic z-index management |
|
|
79
|
+
| `containerId` | `string` | — | **Required when `type='portal'`.** The `id` of the element causing clipping |
|
|
80
|
+
| `class.root` | `string` | `undefined` | Extra Tailwind classes on the outer wrapper div |
|
|
81
|
+
| `class.content` | `string` | `undefined` | Extra Tailwind classes on the tooltip bubble |
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## TYPE DECISION RULE
|
|
86
|
+
|
|
87
|
+
> **Always default to `type='default'` (or omit the `type` prop entirely).**
|
|
88
|
+
> Only switch to `type='portal'` when the tooltip is **clipped by `overflow:hidden`, `overflow:clip`, or `clip-path`** on a parent container.
|
|
89
|
+
|
|
90
|
+
| Situation | Choice |
|
|
91
|
+
| ---------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
|
|
92
|
+
| Tooltip renders normally, not clipped | `type='default'` _(default — no declaration needed)_ |
|
|
93
|
+
| Tooltip is inside a container with `overflow:hidden` / `overflow:clip` | `type='portal'` + `containerId` pointing to that specific container |
|
|
94
|
+
| Tooltip inside a scrollable table with hundreds of cells | `type='portal'` + same `containerId` for all tooltips (the table's wrapper) |
|
|
95
|
+
| Not sure whether it will be clipped | Try default first; switch to portal only if you observe the tooltip being cut |
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## CHOOSING THE RIGHT `containerId`
|
|
100
|
+
|
|
101
|
+
> **`containerId` must identify the specific element that is causing the tooltip to be hidden — not a global ancestor.**
|
|
102
|
+
|
|
103
|
+
1. Find the element with `overflow:hidden` / `overflow:clip`.
|
|
104
|
+
2. Assign that element an `id`.
|
|
105
|
+
3. Pass that `id` as `containerId`.
|
|
106
|
+
|
|
107
|
+
### What NOT to use as `containerId`
|
|
108
|
+
|
|
109
|
+
| ❌ Avoid | Why |
|
|
110
|
+
| ---------------------------------------------- | ----------------------------------------------------------- |
|
|
111
|
+
| `containerId="html-root"` (pointing to `<html>`) | Near-global listener — defeats all scoping |
|
|
112
|
+
| `containerId="root"` (app root div) | Too broad — still covers the entire application |
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## USAGE PATTERNS
|
|
117
|
+
|
|
118
|
+
### Pattern 1 — Plain text tooltip (most common)
|
|
119
|
+
|
|
120
|
+
```tsx
|
|
121
|
+
<Tooltip content="Save your work" position="top" color="primary">
|
|
122
|
+
<Button>Save</Button>
|
|
123
|
+
</Tooltip>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Pattern 2 — Custom JSX content
|
|
127
|
+
|
|
128
|
+
```tsx
|
|
129
|
+
<Tooltip
|
|
130
|
+
position="bottom"
|
|
131
|
+
color="info"
|
|
132
|
+
customContent={
|
|
133
|
+
<div class="bg-info text-info-content rounded-lg p-2">
|
|
134
|
+
<p class="font-bold">Title</p>
|
|
135
|
+
<p class="text-sm">Description text</p>
|
|
136
|
+
</div>
|
|
137
|
+
}
|
|
138
|
+
>
|
|
139
|
+
<Button>Hover me</Button>
|
|
140
|
+
</Tooltip>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Pattern 3 — Conditionally hidden tooltip
|
|
144
|
+
|
|
145
|
+
```tsx
|
|
146
|
+
<Tooltip content="Only when permitted" hidden={!userHasPermission}>
|
|
147
|
+
<Button>Action</Button>
|
|
148
|
+
</Tooltip>
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Pattern 4 — Portal mode (only when tooltip is clipped by overflow:hidden)
|
|
152
|
+
|
|
153
|
+
```tsx
|
|
154
|
+
<div id="my-overflow-box" style={{ overflow: 'hidden' }}>
|
|
155
|
+
<Tooltip type="portal" content="Escapes overflow!" containerId="my-overflow-box" position="top">
|
|
156
|
+
<Button>Hover me</Button>
|
|
157
|
+
</Tooltip>
|
|
158
|
+
</div>
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Pattern 5 — Portal on many cells in a table (performance-optimized)
|
|
162
|
+
|
|
163
|
+
```tsx
|
|
164
|
+
// All tooltips sharing the same containerId use ONE pair of listeners
|
|
165
|
+
<div id="my-table-container" class="max-h-64 overflow-auto">
|
|
166
|
+
<table>
|
|
167
|
+
<tbody>
|
|
168
|
+
<For each={rows}>
|
|
169
|
+
{row => (
|
|
170
|
+
<tr>
|
|
171
|
+
<td>
|
|
172
|
+
<Tooltip
|
|
173
|
+
type="portal"
|
|
174
|
+
content={row.label}
|
|
175
|
+
position="top"
|
|
176
|
+
color="primary"
|
|
177
|
+
containerId="my-table-container"
|
|
178
|
+
>
|
|
179
|
+
<span>{row.value}</span>
|
|
180
|
+
</Tooltip>
|
|
181
|
+
</td>
|
|
182
|
+
</tr>
|
|
183
|
+
)}
|
|
184
|
+
</For>
|
|
185
|
+
</tbody>
|
|
186
|
+
</table>
|
|
187
|
+
</div>
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## BEHAVIOR NOTES FOR AGENTS
|
|
193
|
+
|
|
194
|
+
1. **`hidden` prop short-circuits all tooltip logic** — when `hidden={true}`, renders `<>{children}</>` only.
|
|
195
|
+
|
|
196
|
+
2. **`type='default'` uses IntersectionObserver** — a CSS sentinel (`too08`) inside the wrapper becomes visible on `:hover`, triggering the IO callback which appends the bubble to `document.body`. Zero JS event listeners on the trigger.
|
|
197
|
+
|
|
198
|
+
3. **`type='portal'` uses event delegation** — internally uses a `WeakMap<Element, ContainerState>` keyed by the resolved container. Multiple tooltips with the same `containerId` share a single `mouseover`/`mouseout` listener pair.
|
|
199
|
+
|
|
200
|
+
4. **`containerId` timing** — registration is deferred via `queueMicrotask` so it is safe even when the container is a parent in the same JSX tree.
|
|
201
|
+
|
|
202
|
+
5. **`TooltipPortal` is a backward-compat alias** — `<TooltipPortal containerId="x" ...>` is equivalent to `<Tooltip type="portal" containerId="x" ...>`.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## COMMON MISTAKES TO AVOID
|
|
207
|
+
|
|
208
|
+
| Mistake | Correct approach |
|
|
209
|
+
| ------------------------------------------------------------ | -------------------------------------------------------------------------- |
|
|
210
|
+
| Providing both `content` and `customContent` | Use only one — they are mutually exclusive |
|
|
211
|
+
| Using `type='portal'` as the default for every tooltip | Only use it when the tooltip is actually clipped by overflow |
|
|
212
|
+
| Using `type='portal'` without `containerId` | TypeScript will error — always provide `containerId` |
|
|
213
|
+
| Using `containerId="html-root"` or pointing to `<html>` | Creates a near-global listener. Point to the specific overflow container |
|
|
214
|
+
| Using different `containerId` values in a loop | All tooltips in the same container should share the same `containerId` |
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Component Conventions
|
|
219
|
+
|
|
220
|
+
> **CSS encoding**: internal CSS classes use short encoded names (e.g. `too01`, `too06`) per project convention.
|
|
221
|
+
|
|
222
|
+
> **Unique IDs**: uses `createUniqueId()` from `solid-js` — never `Math.random()` or `Date.now()`.
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
## COMPONENT IDENTITY
|
|
2
|
+
- **Import**: `import { createTour } from 'solid-tom-ui';`
|
|
3
|
+
- **Export**: `createTour` (factory function)
|
|
4
|
+
- **Framework**: SolidJS
|
|
5
|
+
- **Purpose**: Step-by-step walkthrough — highlights elements with a spotlight overlay and shows a popup at each step; uses a factory pattern, NOT a JSX component
|
|
6
|
+
|
|
7
|
+
## API: createTour()
|
|
8
|
+
|
|
9
|
+
`Tour` is NOT declared as a regular JSX component. Instead, use `createTour()` which returns:
|
|
10
|
+
- **`api`**: object with control methods
|
|
11
|
+
- **`TourUI`**: component that must be mounted in JSX
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
import { createTour } from 'solid-tom-ui';
|
|
15
|
+
|
|
16
|
+
const MyPage = () => {
|
|
17
|
+
const [tour, TourUI] = createTour({
|
|
18
|
+
steps: [...],
|
|
19
|
+
onFinish: () => console.log('Done!'),
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<>
|
|
24
|
+
<TourUI /> {/* Must be mounted */}
|
|
25
|
+
<button onClick={() => tour.start()}>Start</button>
|
|
26
|
+
</>
|
|
27
|
+
);
|
|
28
|
+
};
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## TourProps
|
|
32
|
+
|
|
33
|
+
| Prop | Type | Default | Description |
|
|
34
|
+
|------|------|---------|-------------|
|
|
35
|
+
| `steps` | `TourStep[]` | required | Array of step definitions |
|
|
36
|
+
| `onFinish` | `() => void` | - | Callback when all steps are completed |
|
|
37
|
+
| `onClose` | `(step: number) => void` | - | Callback when closed before finishing |
|
|
38
|
+
| `onStepChange` | `(step: number) => void` | - | Callback on each step change |
|
|
39
|
+
| `showClose` | `boolean` | `true` | Show the X close button |
|
|
40
|
+
| `prevLabel` | `string` | `'Prev'` | Label for the Previous button |
|
|
41
|
+
| `nextLabel` | `string` | `'Next'` | Label for the Next button |
|
|
42
|
+
| `doneLabel` | `string` | `'Done'` | Label for the button on the last step |
|
|
43
|
+
| `showProgress` | `boolean` | `true` | Show dot progress indicator |
|
|
44
|
+
| `maskClosable` | `boolean` | `false` | Click overlay to close |
|
|
45
|
+
| `class` | `Partial<Record<SlotName, string>>` | - | Override CSS per slot |
|
|
46
|
+
|
|
47
|
+
## TourStep
|
|
48
|
+
|
|
49
|
+
| Prop | Type | Default | Description |
|
|
50
|
+
|------|------|---------|-------------|
|
|
51
|
+
| `target` | `string` | - | HTML `id` of the element to highlight |
|
|
52
|
+
| `title` | `JSX.Element` | - | Popup title |
|
|
53
|
+
| `content` | `JSX.Element` | - | Popup body content |
|
|
54
|
+
| `footer` | `JSX.Element` | - | Custom footer (overrides Prev/Next buttons) |
|
|
55
|
+
| `placement` | `TourPlacement` | `'bottom'` | Popup position relative to the element |
|
|
56
|
+
| `spotlightPadding` | `number` | `8` | Padding (px) around the highlighted area |
|
|
57
|
+
| `onEnter` | `(step: number) => void` | - | Callback when step is shown |
|
|
58
|
+
| `onLeave` | `(step: number) => void` | - | Callback when leaving step |
|
|
59
|
+
|
|
60
|
+
## TourAPI (control methods)
|
|
61
|
+
|
|
62
|
+
| Method | Description |
|
|
63
|
+
|--------|-------------|
|
|
64
|
+
| `start(stepIndex?)` | Start tour from step 0 (or specified index) |
|
|
65
|
+
| `stop()` | Stop and close the tour |
|
|
66
|
+
| `next()` | Go to next step |
|
|
67
|
+
| `prev()` | Go to previous step |
|
|
68
|
+
| `goTo(stepIndex)` | Jump to a specific step (0-indexed) |
|
|
69
|
+
| `isActive()` | Signal → boolean: whether tour is running |
|
|
70
|
+
| `currentStep()` | Signal → number: current step index |
|
|
71
|
+
|
|
72
|
+
## TourPlacement
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
'top' | 'top-start' | 'top-end'
|
|
76
|
+
'bottom' | 'bottom-start' | 'bottom-end'
|
|
77
|
+
'left' | 'left-start' | 'left-end'
|
|
78
|
+
'right' | 'right-start' | 'right-end'
|
|
79
|
+
'center' ← popup centered on screen, not anchored to any element
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Common examples
|
|
83
|
+
|
|
84
|
+
### Basic tour
|
|
85
|
+
|
|
86
|
+
```tsx
|
|
87
|
+
const [tour, TourUI] = createTour({
|
|
88
|
+
steps: [
|
|
89
|
+
{
|
|
90
|
+
target: 'header-logo',
|
|
91
|
+
title: 'Logo',
|
|
92
|
+
content: 'Click to go back to homepage.',
|
|
93
|
+
placement: 'bottom',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
target: 'nav-search',
|
|
97
|
+
title: 'Search',
|
|
98
|
+
content: 'Enter keywords to find content.',
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
onFinish: () => console.log('Finished!'),
|
|
102
|
+
});
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Start from step 2
|
|
106
|
+
|
|
107
|
+
```tsx
|
|
108
|
+
tour.start(1); // 0-indexed
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Center popup (no element highlight)
|
|
112
|
+
|
|
113
|
+
```tsx
|
|
114
|
+
const [tour, TourUI] = createTour({
|
|
115
|
+
steps: [
|
|
116
|
+
{ title: 'Welcome!', content: 'Quick guide...', placement: 'center' },
|
|
117
|
+
],
|
|
118
|
+
});
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Custom footer
|
|
122
|
+
|
|
123
|
+
```tsx
|
|
124
|
+
{
|
|
125
|
+
target: 'my-element',
|
|
126
|
+
title: 'Special step',
|
|
127
|
+
footer: (
|
|
128
|
+
<div class="flex justify-between w-full">
|
|
129
|
+
<button onClick={() => tour.stop()}>Skip</button>
|
|
130
|
+
<button onClick={() => tour.next()}>Continue →</button>
|
|
131
|
+
</div>
|
|
132
|
+
),
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Class override (slots)
|
|
137
|
+
|
|
138
|
+
Slots: `root`, `mask`, `spotlight`, `popup`, `header`, `body`, `footer`, `progress`
|
|
139
|
+
|
|
140
|
+
```tsx
|
|
141
|
+
const [tour, TourUI] = createTour({
|
|
142
|
+
steps: [...],
|
|
143
|
+
class: {
|
|
144
|
+
popup: 'border border-primary',
|
|
145
|
+
header: 'bg-primary/10',
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Gotchas
|
|
151
|
+
|
|
152
|
+
- **`TourUI` MUST be mounted in JSX** — without it, the overlay and popup will not render.
|
|
153
|
+
- **`target` must be an HTML `id`** — not a class or CSS selector; the element must exist in the DOM.
|
|
154
|
+
- `goTo()` and `start(n)` both trigger `onLeave` for the old step and `onEnter` for the new step.
|
|
155
|
+
- When `maskClosable: false` (default), users must use Prev/Next/Done buttons to navigate.
|
|
156
|
+
- Tour auto-scrolls the target element into the viewport if it is out of view.
|