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,315 @@
|
|
|
1
|
+
## COMPONENT IDENTITY
|
|
2
|
+
- **Import**: `import { FloatButton } from 'solid-tom-ui';`
|
|
3
|
+
- **Export**: `FloatButton` (named export)
|
|
4
|
+
- **Framework**: SolidJS
|
|
5
|
+
- **Purpose**: Fixed-position floating action button (FAB)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## TYPE SIGNATURE
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
// ─── Shared base ────────────────────────────────────────────────
|
|
13
|
+
type FloatButtonBaseProps = {
|
|
14
|
+
color?: string; // any CSS color value or CSS variable; default: 'var(--color-warning)'
|
|
15
|
+
size?: number; // button diameter in px; default: 24
|
|
16
|
+
icon?: SolidComponent;
|
|
17
|
+
animate?: 'ripple' | 'pulse' | 'bounce' | 'heartBeat' | 'headShake' | 'swing' | 'jello' | 'none';
|
|
18
|
+
class?: string;
|
|
19
|
+
onClickOpen?: (e: MouseEvent) => void;
|
|
20
|
+
badge?: {
|
|
21
|
+
count?: number;
|
|
22
|
+
animate?: 'bounce' | 'heartBeat' | 'swing' | 'jello' | 'none';
|
|
23
|
+
class?: string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
type CloseIcon = {
|
|
28
|
+
label: string;
|
|
29
|
+
icon: SolidComponent;
|
|
30
|
+
color?: string;
|
|
31
|
+
onClickClose?: (e: MouseEvent) => void;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
// ─── Discriminated union on `type` ──────────────────────────────
|
|
35
|
+
type FloatButtonSingleProps = FloatButtonBaseProps & { type: 'single' };
|
|
36
|
+
type FloatButtonDefaultProps = FloatButtonBaseProps & {
|
|
37
|
+
type: 'default';
|
|
38
|
+
actions?: SolidComponent[];
|
|
39
|
+
closeIcon?: CloseIcon;
|
|
40
|
+
};
|
|
41
|
+
type FloatButtonFlowerProps = FloatButtonBaseProps & {
|
|
42
|
+
type: 'flower';
|
|
43
|
+
actions?: SolidComponent[];
|
|
44
|
+
closeIcon?: CloseIcon;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export type FloatButtonProps =
|
|
48
|
+
| FloatButtonSingleProps
|
|
49
|
+
| FloatButtonDefaultProps
|
|
50
|
+
| FloatButtonFlowerProps;
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## DEFAULT VALUES (applied via `mergeProps`)
|
|
56
|
+
|
|
57
|
+
| Prop | Default |
|
|
58
|
+
| ----------------- | ------------------------ |
|
|
59
|
+
| `type` | `'default'` |
|
|
60
|
+
| `color` | `'var(--color-warning)'` |
|
|
61
|
+
| `size` | `24` |
|
|
62
|
+
| `animate` | `'none'` |
|
|
63
|
+
| `closeIcon.label` | `'Close'` |
|
|
64
|
+
| `closeIcon.icon` | `'X'` |
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## PROP REFERENCE
|
|
69
|
+
|
|
70
|
+
| Prop | Type | Required | Description |
|
|
71
|
+
| ------------------------ | ----------------------------------------------------------------------------------------------- | ------------------------------- | --------------------------------------------------------------------------- |
|
|
72
|
+
| `type` | `'single' \| 'default' \| 'flower'` | ✅ YES | Controls which FAB variant is rendered (see Type Variants below) |
|
|
73
|
+
| `icon` | `SolidComponent` | ❌ NO | Icon rendered inside the main trigger button |
|
|
74
|
+
| `color` | `string` | ❌ NO | Background color of the main button — any CSS color or CSS variable |
|
|
75
|
+
| `size` | `number` | ❌ NO | Diameter of main button in px (applied to both `width` and `height`) |
|
|
76
|
+
| `animate` | `'ripple' \| 'pulse' \| 'bounce' \| 'heartBeat' \| 'headShake' \| 'swing' \| 'jello' \| 'none'` | ❌ NO | Infinite animation applied to the main button |
|
|
77
|
+
| `class` | `string` | ❌ NO | Extra Tailwind classes on the root wrapper div (use for position overrides) |
|
|
78
|
+
| `onClickOpen` | `(e: MouseEvent) => void` | ❌ NO | Click handler on the main button |
|
|
79
|
+
| `badge.count` | `number` | ❌ NO | Number shown in the red badge bubble on the main button |
|
|
80
|
+
| `badge.animate` | `'bounce' \| 'heartBeat' \| 'swing' \| 'jello' \| 'none'` | ❌ NO | Animation applied to the badge bubble |
|
|
81
|
+
| `badge.class` | `string` | ❌ NO | Extra classes on the badge div (e.g. override background color) |
|
|
82
|
+
| `actions` | `SolidComponent[]` | ❌ NO (`default`/`flower` only) | Array of action items shown when FAB is opened |
|
|
83
|
+
| `closeIcon.label` | `string` | ❌ NO (`default`/`flower` only) | Text label next to the close button (shown in `default` type) |
|
|
84
|
+
| `closeIcon.icon` | `SolidComponent` | ❌ NO (`default`/`flower` only) | Icon inside the close button |
|
|
85
|
+
| `closeIcon.color` | `string` | ❌ NO | Color override for the close button |
|
|
86
|
+
| `closeIcon.onClickClose` | `(e: MouseEvent) => void` | ❌ NO | Click handler on the close button |
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## TYPE VARIANTS — Detailed behavior per `type`
|
|
91
|
+
|
|
92
|
+
### `type="single"`
|
|
93
|
+
|
|
94
|
+
- Renders **only** the main trigger button — no menu, no close button, no actions
|
|
95
|
+
- `actions` and `closeIcon` props are **unavailable** (TypeScript enforces this)
|
|
96
|
+
- Clicking is handled entirely by `onClickOpen`
|
|
97
|
+
- Best for: back-to-top, open chat, single-action triggers
|
|
98
|
+
|
|
99
|
+
```tsx
|
|
100
|
+
<FloatButton
|
|
101
|
+
type="single"
|
|
102
|
+
size={40}
|
|
103
|
+
icon={<ArrowUp color="white" size={20} />}
|
|
104
|
+
color="var(--color-primary)"
|
|
105
|
+
animate="heartBeat"
|
|
106
|
+
onClickOpen={() => window.scrollTo({ top: 0, behavior: 'smooth' })}
|
|
107
|
+
badge={{ count: 3, animate: 'bounce' }}
|
|
108
|
+
/>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
### `type="default"`
|
|
114
|
+
|
|
115
|
+
- Renders main button + **vertical list menu** of action items
|
|
116
|
+
- Menu opens on hover/focus (`tabIndex={0}` on inner div)
|
|
117
|
+
- `actions` array: each item renders as `<div class="flex gap-2">{item}</div>` — items can be any JSX (Button, custom div, etc.)
|
|
118
|
+
- `closeIcon.label` is shown as text **next to** the close button (unique to this type)
|
|
119
|
+
- No hard limit on `actions` length
|
|
120
|
+
|
|
121
|
+
```tsx
|
|
122
|
+
<FloatButton
|
|
123
|
+
type="default"
|
|
124
|
+
size={40}
|
|
125
|
+
icon={<Plus color="white" size={20} />}
|
|
126
|
+
color="red"
|
|
127
|
+
closeIcon={{
|
|
128
|
+
label: 'Close',
|
|
129
|
+
icon: 'X',
|
|
130
|
+
onClickClose: () => console.log('closed'),
|
|
131
|
+
}}
|
|
132
|
+
actions={[
|
|
133
|
+
<Button variant="solid" color="neutral" icon={<Activity color="white" size={20} />}>
|
|
134
|
+
Activity
|
|
135
|
+
</Button>,
|
|
136
|
+
<div class="flex items-center gap-2">
|
|
137
|
+
<span>With Label</span>
|
|
138
|
+
<Button variant="solid" color="error" icon="C" shape="square" />
|
|
139
|
+
</div>,
|
|
140
|
+
]}
|
|
141
|
+
badge={{ count: 500, class: 'bg-primary' }}
|
|
142
|
+
/>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
### `type="flower"`
|
|
148
|
+
|
|
149
|
+
- Renders main button + **radial/flower menu** of action items spreading outward
|
|
150
|
+
- Root div gets additional class `fab-flower`
|
|
151
|
+
- `actions` array: items rendered **directly** without a wrapping flex div
|
|
152
|
+
- **HARD LIMIT: maximum 4 items in `actions`** — items beyond index 3 are silently dropped with a `console.warn`
|
|
153
|
+
- Use `shape="circle"` Buttons inside `actions` to preserve the circular flower layout
|
|
154
|
+
|
|
155
|
+
```tsx
|
|
156
|
+
<FloatButton
|
|
157
|
+
type="flower"
|
|
158
|
+
size={40}
|
|
159
|
+
icon={<Plus color="white" size={20} />}
|
|
160
|
+
color="orange"
|
|
161
|
+
closeIcon={{ label: 'Close', icon: 'X', onClickClose: () => {} }}
|
|
162
|
+
actions={[
|
|
163
|
+
<Button variant="solid" color="neutral" shape="circle" icon="A" />,
|
|
164
|
+
<Button variant="solid" color="primary" shape="circle" icon="B" />,
|
|
165
|
+
<Button variant="solid" color="error" shape="circle" icon="C" />,
|
|
166
|
+
<Button variant="solid" color="accent" shape="circle" icon="D" />,
|
|
167
|
+
// ⛔ 5th item would be dropped — console.warn fired
|
|
168
|
+
]}
|
|
169
|
+
/>
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## ANIMATION REFERENCE
|
|
175
|
+
|
|
176
|
+
### Main button (`animate` prop)
|
|
177
|
+
|
|
178
|
+
| Value | CSS class applied |
|
|
179
|
+
| ------------- | ------------------- |
|
|
180
|
+
| `'ripple'` | `animate-ripple` |
|
|
181
|
+
| `'pulse'` | `animate-pulse` |
|
|
182
|
+
| `'bounce'` | `animate-bounce` |
|
|
183
|
+
| `'heartBeat'` | `animate-heartBeat` |
|
|
184
|
+
| `'headShake'` | `animate-headShake` |
|
|
185
|
+
| `'swing'` | `animate-swing` |
|
|
186
|
+
| `'jello'` | `animate-jello` |
|
|
187
|
+
| `'none'` | _(no class)_ |
|
|
188
|
+
|
|
189
|
+
### Badge (`badge.animate` prop)
|
|
190
|
+
|
|
191
|
+
Applies `animate-{value}` class directly to the badge div. Supports: `bounce`, `heartBeat`, `swing`, `jello`, `none`.
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## BADGE SIZING — Automatic width adjustment
|
|
196
|
+
|
|
197
|
+
The badge width adapts to `badge.count` automatically:
|
|
198
|
+
| Count range | Applied classes |
|
|
199
|
+
|-----------------|--------------------------------------|
|
|
200
|
+
| `< 100` | `w-5` (fixed circle) |
|
|
201
|
+
| `100 – 999` | `px-1` (pill shape) |
|
|
202
|
+
| `1000 – 9999` | `px-1 translate-x-1 -translate-y-1` |
|
|
203
|
+
| `≥ 10000` | `px-1 translate-x-2` |
|
|
204
|
+
|
|
205
|
+
Agents do NOT need to handle badge sizing — it is automatic.
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## POSITIONING
|
|
210
|
+
|
|
211
|
+
- The component renders with class `fab` by default. CSS for `.fab` is defined in `mockup.style.css` / project global styles.
|
|
212
|
+
- Default position is typically `bottom-right` (defined by `.fab` global CSS).
|
|
213
|
+
- To override position, use the `class` prop with Tailwind positioning utilities:
|
|
214
|
+
|
|
215
|
+
```tsx
|
|
216
|
+
// Move to bottom-left
|
|
217
|
+
<FloatButton type="single" class="bottom-10 left-10" ... />
|
|
218
|
+
|
|
219
|
+
// Move to top-right
|
|
220
|
+
<FloatButton type="single" class="top-10 right-10" ... />
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## BEHAVIOR NOTES FOR AGENTS
|
|
226
|
+
|
|
227
|
+
1. **`type` is a discriminated union** — TypeScript will error if `actions` or `closeIcon` are passed to `type="single"`. Only pass those props to `type="default"` or `type="flower"`.
|
|
228
|
+
|
|
229
|
+
2. **Menu open/close is CSS-driven** — the `.fab` class uses CSS (`:focus-within`, `:hover`) to toggle the menu visibility. There is no JS open/close state. `onClickOpen` is only an additional callback, not the toggle mechanism.
|
|
230
|
+
|
|
231
|
+
3. **`color` sets both `background-color` and CSS custom properties** — internally it sets `--innner-color` and `--btn-color` on the button's inline style. Any value valid in CSS works: named colors, hex, rgb, hsl, `var(--css-variable)`.
|
|
232
|
+
|
|
233
|
+
4. **`size` is in pixels as a `number`** — internally converted to `"${size}px"` string. Do NOT pass a string like `"40px"`.
|
|
234
|
+
|
|
235
|
+
5. **`flower` type silently drops items beyond index 3** — a `console.warn` is fired but no error is thrown. Always cap `actions` at 4 items for `type="flower"`.
|
|
236
|
+
|
|
237
|
+
6. **`actions` in `default` type wrap each item in `<div class="flex gap-2">`** — items can be any JSX shape (Button, span+Button, div, etc.). Items in `flower` type are rendered without any wrapper.
|
|
238
|
+
|
|
239
|
+
7. **Badge only renders when `badge.count` is truthy** — passing `badge={{ count: 0 }}` will NOT render a badge (0 is falsy).
|
|
240
|
+
|
|
241
|
+
8. **Main button always has `shape="circle"`** — this cannot be changed via props.
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## COMMON MISTAKES TO AVOID
|
|
246
|
+
|
|
247
|
+
| Mistake | Correct approach |
|
|
248
|
+
| --------------------------------------------------- | --------------------------------------------------------------------- |
|
|
249
|
+
| Passing `actions` to `type="single"` | `single` has no menu — use `type="default"` or `type="flower"` |
|
|
250
|
+
| Passing `size="40px"` (string) | `size` is a `number` — pass `size={40}` |
|
|
251
|
+
| Adding more than 4 items to `type="flower"` actions | Cap at 4 — excess items are silently dropped |
|
|
252
|
+
| Using non-circle Buttons in `type="flower"` actions | Always use `shape="circle"` for flower layout integrity |
|
|
253
|
+
| Expecting `onClickOpen` to toggle the menu | Menu toggle is CSS-only; `onClickOpen` is a side-effect callback only |
|
|
254
|
+
| Setting `badge={{ count: 0 }}` expecting a badge | `0` is falsy — badge will not render; use a positive number |
|
|
255
|
+
| Passing CSS string to `size` | `size` expects `number` (px unit is appended internally) |
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## FULL EXAMPLE — All three variants
|
|
260
|
+
|
|
261
|
+
```tsx
|
|
262
|
+
import { FloatButton, Button } from 'solid-tom-ui';
|
|
263
|
+
import { Plus, ArrowUp, Activity } from 'lucide-solid';
|
|
264
|
+
|
|
265
|
+
// 1. Single — one-action FAB
|
|
266
|
+
<FloatButton
|
|
267
|
+
type="single"
|
|
268
|
+
size={40}
|
|
269
|
+
icon={<ArrowUp color="white" size={20} />}
|
|
270
|
+
color="var(--color-primary)"
|
|
271
|
+
animate="bounce"
|
|
272
|
+
onClickOpen={() => window.scrollTo({ top: 0, behavior: 'smooth' })}
|
|
273
|
+
/>
|
|
274
|
+
|
|
275
|
+
// 2. Default — vertical menu
|
|
276
|
+
<FloatButton
|
|
277
|
+
type="default"
|
|
278
|
+
size={44}
|
|
279
|
+
icon={<Plus color="white" size={22} />}
|
|
280
|
+
color="#e74c3c"
|
|
281
|
+
animate="ripple"
|
|
282
|
+
closeIcon={{ label: 'Close', icon: 'X', onClickClose: () => {} }}
|
|
283
|
+
actions={[
|
|
284
|
+
<Button variant="solid" color="neutral" icon={<Activity color="white" size={18} />}>
|
|
285
|
+
Analytics
|
|
286
|
+
</Button>,
|
|
287
|
+
<Button variant="solid" color="primary">
|
|
288
|
+
Settings
|
|
289
|
+
</Button>,
|
|
290
|
+
]}
|
|
291
|
+
badge={{ count: 12, animate: 'heartBeat', class: 'bg-error' }}
|
|
292
|
+
/>
|
|
293
|
+
|
|
294
|
+
// 3. Flower — radial menu (max 4 actions, circle buttons)
|
|
295
|
+
<FloatButton
|
|
296
|
+
type="flower"
|
|
297
|
+
size={44}
|
|
298
|
+
icon={<Plus color="white" size={22} />}
|
|
299
|
+
color="orange"
|
|
300
|
+
closeIcon={{ label: 'Close', icon: 'X', onClickClose: () => {} }}
|
|
301
|
+
actions={[
|
|
302
|
+
<Button variant="solid" color="neutral" shape="circle" icon="A" />,
|
|
303
|
+
<Button variant="solid" color="primary" shape="circle" icon="B" />,
|
|
304
|
+
<Button variant="solid" color="error" shape="circle" icon="C" />,
|
|
305
|
+
<Button variant="solid" color="accent" shape="circle" icon="D" />,
|
|
306
|
+
]}
|
|
307
|
+
/>
|
|
308
|
+
```
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Component Conventions
|
|
312
|
+
|
|
313
|
+
> **CSS encoding**: internal CSS classes use short encoded names (e.g. `fb01`, `fb02`) per project convention.
|
|
314
|
+
|
|
315
|
+
> **Unique IDs**: if this component needs to generate HTML `id` attributes, always use `createUniqueId()` from `solid-js` — never `Math.random()` or `Date.now()`.
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
## COMPONENT IDENTITY
|
|
2
|
+
- **Import**: `import { Hover3DImage } from 'solid-tom-ui';`
|
|
3
|
+
- **Export**: `Hover3DImage` (named export)
|
|
4
|
+
- **Framework**: SolidJS
|
|
5
|
+
- **Purpose**: Interactive 3D tilt image card — responds to mouse movement with a CSS perspective effect; requires global `hover-3d` CSS class
|
|
6
|
+
|
|
7
|
+
## TYPE SIGNATURE
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import { Hover3DImage } from 'solid-tom-ui';
|
|
11
|
+
import type { Image } from 'solid-tom-ui';
|
|
12
|
+
|
|
13
|
+
<Hover3DImage
|
|
14
|
+
image={Image} // REQUIRED: image descriptor object
|
|
15
|
+
class?={Partial<Record<'root' | 'figure' | 'image', string>>} // optional per-slot class overrides
|
|
16
|
+
/>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### `Image` type (from `@/utils/helper`)
|
|
20
|
+
```typescript
|
|
21
|
+
type Image = {
|
|
22
|
+
src: string; // image URL
|
|
23
|
+
alt?: string; // alt text
|
|
24
|
+
class?: string; // class on the <img> element
|
|
25
|
+
[key: string]: any; // other img attributes (width, height, loading, etc.)
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## INTERNAL STRUCTURE
|
|
30
|
+
```
|
|
31
|
+
div.hover-3d[class.root]
|
|
32
|
+
figure.rounded-2xl[class.figure]
|
|
33
|
+
img[...image props][class.image] ← spreads all Image props onto <img>
|
|
34
|
+
div × 8 ← required overlay divs for 3D CSS effect
|
|
35
|
+
```
|
|
36
|
+
> The 9 child divs (1 figure + 8 empty divs) are structural requirements for the CSS 3D hover effect. Do NOT remove or reorder them.
|
|
37
|
+
|
|
38
|
+
## USAGE PATTERNS
|
|
39
|
+
|
|
40
|
+
### Basic usage
|
|
41
|
+
```tsx
|
|
42
|
+
import { Hover3DImage } from 'solid-tom-ui';
|
|
43
|
+
|
|
44
|
+
<Hover3DImage
|
|
45
|
+
image={{ src: '/images/product.jpg', alt: 'Product showcase' }}
|
|
46
|
+
/>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### With width constraint on image
|
|
50
|
+
```tsx
|
|
51
|
+
<Hover3DImage
|
|
52
|
+
image={{
|
|
53
|
+
src: 'https://example.com/photo.jpg',
|
|
54
|
+
alt: '3D card',
|
|
55
|
+
class: 'w-[500px]',
|
|
56
|
+
}}
|
|
57
|
+
/>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### With layout centering
|
|
61
|
+
```tsx
|
|
62
|
+
<Hover3DImage
|
|
63
|
+
class={{ root: 'mx-auto' }}
|
|
64
|
+
image={{ src: '/hero.jpg', alt: 'Hero image', class: 'w-full' }}
|
|
65
|
+
/>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### With custom figure and image classes
|
|
69
|
+
```tsx
|
|
70
|
+
<Hover3DImage
|
|
71
|
+
image={{ src: '/banner.webp', alt: 'Banner', class: 'object-cover h-64' }}
|
|
72
|
+
class={{
|
|
73
|
+
root: 'max-w-md',
|
|
74
|
+
figure: 'shadow-xl',
|
|
75
|
+
image: 'rounded-xl',
|
|
76
|
+
}}
|
|
77
|
+
/>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## CLASS SLOTS
|
|
81
|
+
| Slot | Targets | Notes |
|
|
82
|
+
|------|---------|-------|
|
|
83
|
+
| `root` | `div.hover-3d` | Outermost wrapper — use for sizing/positioning |
|
|
84
|
+
| `figure` | `figure` | Always has `rounded-2xl`; extend here for shadow, overflow, etc. |
|
|
85
|
+
| `image` | `img` | Applied via `image.class` prop (not via `class.image` — `class.image` is not wired in current impl) |
|
|
86
|
+
|
|
87
|
+
> **Note**: `class.image` slot is declared in the type but the `<img>` element only spreads the `image` object props. To add classes to the `<img>`, put them in `image.class`.
|
|
88
|
+
|
|
89
|
+
## CONSTRAINTS
|
|
90
|
+
- The component requires the `hover-3d` CSS utility class to be globally available. Ensure the project's global stylesheet includes the 3D hover animation rules.
|
|
91
|
+
- The 8 empty `<div>` children inside `.hover-3d` are part of the CSS trick (grid/overlay for mouse tracking). They must not be conditionally removed.
|
|
92
|
+
- This component is purely presentational — no internal state or events.
|
|
93
|
+
|
|
94
|
+
## ANTI-PATTERNS
|
|
95
|
+
```tsx
|
|
96
|
+
// ❌ Missing required image prop
|
|
97
|
+
<Hover3DImage />
|
|
98
|
+
|
|
99
|
+
// ❌ Trying to class the img via class.image (not wired)
|
|
100
|
+
<Hover3DImage image={{ src: '...' }} class={{ image: 'w-64' }} />
|
|
101
|
+
// ✅ Correct: put image class inside the image object
|
|
102
|
+
<Hover3DImage image={{ src: '...', class: 'w-64' }} />
|
|
103
|
+
|
|
104
|
+
// ❌ Wrapping in another container that constrains height unexpectedly
|
|
105
|
+
// ✅ Use class.root for sizing instead
|
|
106
|
+
<Hover3DImage image={{ src: '...' }} class={{ root: 'w-72' }} />
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## DECISION RULES
|
|
110
|
+
- Use this component for hero images, product showcases, or any image that benefits from an interactive 3D tilt effect on hover.
|
|
111
|
+
- Control the image size via `image.class` (e.g., `class: 'w-[400px]'`).
|
|
112
|
+
- Control component placement/layout via `class.root`.
|
|
113
|
+
- Control card shape/shadow via `class.figure`.
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Component Conventions
|
|
117
|
+
|
|
118
|
+
> **CSS encoding**: internal CSS classes use short encoded names (e.g. `h301`, `h302`) per project convention.
|
|
119
|
+
|
|
120
|
+
> **Unique IDs**: if this component needs to generate HTML `id` attributes, always use `createUniqueId()` from `solid-js` — never `Math.random()` or `Date.now()`.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
## COMPONENT IDENTITY
|
|
2
|
+
- **Import**: `import { Iframe } from 'solid-tom-ui';`
|
|
3
|
+
- **Export**: `Iframe` (named export)
|
|
4
|
+
- **Framework**: SolidJS
|
|
5
|
+
- **Purpose**: Renders a SolidJS component inside a sandboxed `<iframe>` — inherits parent styles, sets up event delegation, and preserves reactivity across the iframe boundary
|
|
6
|
+
|
|
7
|
+
## PURPOSE
|
|
8
|
+
Renders a SolidJS component inside a sandboxed `<iframe>` element while:
|
|
9
|
+
1. Cloning all parent `<style>` and `<link rel="stylesheet">` tags into the iframe `<head>` so styles are inherited.
|
|
10
|
+
2. Setting up SolidJS event delegation inside the iframe document (`click`, `mousedown`, `input`, `change`, `focus`, `blur`).
|
|
11
|
+
3. Running the component under the parent's reactive owner context, preserving reactivity and signal updates across the iframe boundary.
|
|
12
|
+
|
|
13
|
+
## TYPE SIGNATURE
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { Iframe } from 'solid-tom-ui';
|
|
17
|
+
import { SolidComponent } from '@/type';
|
|
18
|
+
|
|
19
|
+
<Iframe
|
|
20
|
+
element={SolidComponent} // REQUIRED: a SolidJS component (not JSX, not an element — the component function itself)
|
|
21
|
+
/>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### `SolidComponent` type (from `@/type`)
|
|
25
|
+
```typescript
|
|
26
|
+
type SolidComponent = Component<any> | (() => JSX.Element);
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## INTERNAL BEHAVIOR
|
|
30
|
+
- The iframe has class `size-full` (fills its parent container).
|
|
31
|
+
- Mounting is deferred by `setTimeout(..., 200)` to wait for the iframe DOM to be ready.
|
|
32
|
+
- The component is rendered via `render(props.element as () => Element, iframeDoc.body)`.
|
|
33
|
+
|
|
34
|
+
## USAGE PATTERNS
|
|
35
|
+
|
|
36
|
+
### Basic: render a component in an isolated iframe
|
|
37
|
+
```tsx
|
|
38
|
+
import { Iframe } from '@/components/iframe';
|
|
39
|
+
import { MyWidget } from '@/components/my-widget';
|
|
40
|
+
|
|
41
|
+
// Wrap in a sized container — Iframe fills 100% of its parent
|
|
42
|
+
<div class="h-64 w-full border rounded">
|
|
43
|
+
<Iframe element={MyWidget} />
|
|
44
|
+
</div>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Render an inline arrow function component
|
|
48
|
+
```tsx
|
|
49
|
+
const PreviewContent = () => (
|
|
50
|
+
<div class="p-4 bg-base-100">
|
|
51
|
+
<p>This renders inside an iframe</p>
|
|
52
|
+
</div>
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
<div class="h-96 w-full">
|
|
56
|
+
<Iframe element={PreviewContent} />
|
|
57
|
+
</div>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Use case: component preview sandbox (e.g., documentation page)
|
|
61
|
+
```tsx
|
|
62
|
+
import { CodePreview } from '@/components/doc/CodePreview';
|
|
63
|
+
import { Iframe } from '@/components/iframe';
|
|
64
|
+
|
|
65
|
+
// Wrapping a preview inside Iframe ensures style isolation
|
|
66
|
+
<div class="h-80 overflow-hidden rounded-lg border">
|
|
67
|
+
<Iframe element={() => <SomeExampleComponent />} />
|
|
68
|
+
</div>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## CONSTRAINTS
|
|
72
|
+
- **Pass the component function, NOT rendered JSX.** `element` expects a component reference or factory function, not `<MyWidget />`.
|
|
73
|
+
```tsx
|
|
74
|
+
// ✅ Correct
|
|
75
|
+
<Iframe element={MyWidget} />
|
|
76
|
+
<Iframe element={() => <MyWidget someProp="value" />} />
|
|
77
|
+
|
|
78
|
+
// ❌ Wrong — passing already-rendered JSX
|
|
79
|
+
<Iframe element={<MyWidget />} />
|
|
80
|
+
```
|
|
81
|
+
- **Iframe fills its parent** via `size-full` (`width: 100%; height: 100%`). Always wrap it in a container with explicit dimensions.
|
|
82
|
+
- **Mounting delay**: the component renders after ~200ms. Do not rely on immediate DOM availability.
|
|
83
|
+
- **No scrollbars by default**: the iframe body inherits styles from the parent. Add `overflow: auto` to the rendered component if scrolling is needed.
|
|
84
|
+
- **No cross-origin support**: this component only works for same-origin content (it directly accesses `contentDocument`).
|
|
85
|
+
|
|
86
|
+
## ANTI-PATTERNS
|
|
87
|
+
```tsx
|
|
88
|
+
// ❌ No wrapper size — iframe renders but is invisible (0 height)
|
|
89
|
+
<Iframe element={MyWidget} />
|
|
90
|
+
|
|
91
|
+
// ✅ Always provide a sized wrapper
|
|
92
|
+
<div class="h-64 w-full">
|
|
93
|
+
<Iframe element={MyWidget} />
|
|
94
|
+
</div>
|
|
95
|
+
|
|
96
|
+
// ❌ Passing JSX instead of component function
|
|
97
|
+
<Iframe element={<MyWidget />} />
|
|
98
|
+
|
|
99
|
+
// ✅ Pass component reference or factory
|
|
100
|
+
<Iframe element={MyWidget} />
|
|
101
|
+
<Iframe element={() => <MyWidget foo="bar" />} />
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## DECISION RULES
|
|
105
|
+
- Use `Iframe` when you need to render a SolidJS component in a visually isolated sandbox (e.g., live component previews, documentation demos, embedded widgets).
|
|
106
|
+
- Do NOT use `Iframe` for external URLs — it only renders SolidJS components inside the iframe body.
|
|
107
|
+
- For component demos in documentation, prefer wrapping with `<div class="h-[desired-height] w-full">` around `<Iframe>`.
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Component Conventions
|
|
111
|
+
|
|
112
|
+
> **CSS encoding**: internal CSS classes use short encoded names (e.g. `if01`, `if02`) per project convention.
|
|
113
|
+
|
|
114
|
+
> **Unique IDs**: if this component needs to generate HTML `id` attributes, always use `createUniqueId()` from `solid-js` — never `Math.random()` or `Date.now()`.
|