@coze-arch/cli 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/__templates__/expo/AGENTS.md +3 -3
- package/lib/__templates__/expo/README.md +3 -3
- package/lib/__templates__/expo/client/components/Provider.tsx +4 -1
- package/lib/__templates__/expo/client/components/Screen.tsx +4 -1
- package/lib/__templates__/expo/client/eslint.config.mjs +2 -0
- package/lib/__templates__/expo/client/global.css +1 -0
- package/lib/__templates__/expo/client/heroui/components/accordion/accordion.animation.ts +178 -0
- package/lib/__templates__/expo/client/heroui/components/accordion/accordion.constants.ts +62 -0
- package/lib/__templates__/expo/client/heroui/components/accordion/accordion.md +437 -0
- package/lib/__templates__/expo/client/heroui/components/accordion/accordion.styles.ts +95 -0
- package/lib/__templates__/expo/client/heroui/components/accordion/accordion.tsx +340 -0
- package/lib/__templates__/expo/client/heroui/components/accordion/accordion.types.ts +267 -0
- package/lib/__templates__/expo/client/heroui/components/accordion/index.ts +17 -0
- package/lib/__templates__/expo/client/heroui/components/alert/alert.constants.ts +13 -0
- package/lib/__templates__/expo/client/heroui/components/alert/alert.hooks.ts +28 -0
- package/lib/__templates__/expo/client/heroui/components/alert/alert.md +263 -0
- package/lib/__templates__/expo/client/heroui/components/alert/alert.styles.ts +65 -0
- package/lib/__templates__/expo/client/heroui/components/alert/alert.tsx +181 -0
- package/lib/__templates__/expo/client/heroui/components/alert/alert.types.ts +99 -0
- package/lib/__templates__/expo/client/heroui/components/alert/alert.utils.tsx +25 -0
- package/lib/__templates__/expo/client/heroui/components/alert/default-icon.tsx +28 -0
- package/lib/__templates__/expo/client/heroui/components/alert/index.ts +15 -0
- package/lib/__templates__/expo/client/heroui/components/alert/success-icon.tsx +28 -0
- package/lib/__templates__/expo/client/heroui/components/alert/warning-icon.tsx +28 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/avatar.animation.ts +123 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/avatar.constants.ts +19 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/avatar.context.ts +11 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/avatar.md +386 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/avatar.styles.ts +145 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/avatar.tsx +307 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/avatar.types.ts +239 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/index.ts +13 -0
- package/lib/__templates__/expo/client/heroui/components/avatar/person-icon.tsx +23 -0
- package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.animation.ts +42 -0
- package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.constants.ts +13 -0
- package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.md +349 -0
- package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.styles.ts +66 -0
- package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.tsx +351 -0
- package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.types.ts +150 -0
- package/lib/__templates__/expo/client/heroui/components/bottom-sheet/index.ts +16 -0
- package/lib/__templates__/expo/client/heroui/components/button/button.constants.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/button/button.md +381 -0
- package/lib/__templates__/expo/client/heroui/components/button/button.styles.ts +89 -0
- package/lib/__templates__/expo/client/heroui/components/button/button.tsx +284 -0
- package/lib/__templates__/expo/client/heroui/components/button/button.types.ts +175 -0
- package/lib/__templates__/expo/client/heroui/components/button/button.utils.ts +34 -0
- package/lib/__templates__/expo/client/heroui/components/button/index.ts +9 -0
- package/lib/__templates__/expo/client/heroui/components/card/card.constants.ts +11 -0
- package/lib/__templates__/expo/client/heroui/components/card/card.md +186 -0
- package/lib/__templates__/expo/client/heroui/components/card/card.styles.ts +35 -0
- package/lib/__templates__/expo/client/heroui/components/card/card.tsx +153 -0
- package/lib/__templates__/expo/client/heroui/components/card/card.types.ts +77 -0
- package/lib/__templates__/expo/client/heroui/components/card/index.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.animation.ts +202 -0
- package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.md +311 -0
- package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.styles.ts +105 -0
- package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.tsx +251 -0
- package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.types.ts +216 -0
- package/lib/__templates__/expo/client/heroui/components/checkbox/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/chip/chip.animation.ts +18 -0
- package/lib/__templates__/expo/client/heroui/components/chip/chip.constants.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/chip/chip.md +190 -0
- package/lib/__templates__/expo/client/heroui/components/chip/chip.styles.ts +234 -0
- package/lib/__templates__/expo/client/heroui/components/chip/chip.tsx +125 -0
- package/lib/__templates__/expo/client/heroui/components/chip/chip.types.ts +69 -0
- package/lib/__templates__/expo/client/heroui/components/chip/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/close-button/close-button.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/close-button/close-button.md +109 -0
- package/lib/__templates__/expo/client/heroui/components/close-button/close-button.styles.ts +13 -0
- package/lib/__templates__/expo/client/heroui/components/close-button/close-button.tsx +57 -0
- package/lib/__templates__/expo/client/heroui/components/close-button/close-button.types.ts +30 -0
- package/lib/__templates__/expo/client/heroui/components/close-button/index.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/control-field.animation.ts +18 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/control-field.constants.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/control-field.context.ts +14 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/control-field.md +241 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/control-field.styles.ts +15 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/control-field.tsx +245 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/control-field.types.ts +67 -0
- package/lib/__templates__/expo/client/heroui/components/control-field/index.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/description/description.animation.ts +53 -0
- package/lib/__templates__/expo/client/heroui/components/description/description.constants.ts +30 -0
- package/lib/__templates__/expo/client/heroui/components/description/description.md +129 -0
- package/lib/__templates__/expo/client/heroui/components/description/description.styles.ts +25 -0
- package/lib/__templates__/expo/client/heroui/components/description/description.tsx +81 -0
- package/lib/__templates__/expo/client/heroui/components/description/description.types.ts +77 -0
- package/lib/__templates__/expo/client/heroui/components/description/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/dialog/dialog.animation.ts +9 -0
- package/lib/__templates__/expo/client/heroui/components/dialog/dialog.constants.ts +13 -0
- package/lib/__templates__/expo/client/heroui/components/dialog/dialog.md +288 -0
- package/lib/__templates__/expo/client/heroui/components/dialog/dialog.styles.ts +77 -0
- package/lib/__templates__/expo/client/heroui/components/dialog/dialog.tsx +379 -0
- package/lib/__templates__/expo/client/heroui/components/dialog/dialog.types.ts +199 -0
- package/lib/__templates__/expo/client/heroui/components/dialog/index.ts +12 -0
- package/lib/__templates__/expo/client/heroui/components/field-error/field-error.animation.ts +50 -0
- package/lib/__templates__/expo/client/heroui/components/field-error/field-error.constants.ts +31 -0
- package/lib/__templates__/expo/client/heroui/components/field-error/field-error.md +204 -0
- package/lib/__templates__/expo/client/heroui/components/field-error/field-error.styles.ts +23 -0
- package/lib/__templates__/expo/client/heroui/components/field-error/field-error.tsx +91 -0
- package/lib/__templates__/expo/client/heroui/components/field-error/field-error.types.ts +79 -0
- package/lib/__templates__/expo/client/heroui/components/field-error/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/input/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/input/input.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/input/input.md +193 -0
- package/lib/__templates__/expo/client/heroui/components/input/input.styles.ts +51 -0
- package/lib/__templates__/expo/client/heroui/components/input/input.tsx +96 -0
- package/lib/__templates__/expo/client/heroui/components/input/input.types.ts +44 -0
- package/lib/__templates__/expo/client/heroui/components/input-group/index.ts +9 -0
- package/lib/__templates__/expo/client/heroui/components/input-group/input-group.animation.ts +14 -0
- package/lib/__templates__/expo/client/heroui/components/input-group/input-group.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/input-group/input-group.md +197 -0
- package/lib/__templates__/expo/client/heroui/components/input-group/input-group.styles.ts +31 -0
- package/lib/__templates__/expo/client/heroui/components/input-group/input-group.tsx +239 -0
- package/lib/__templates__/expo/client/heroui/components/input-group/input-group.types.ts +98 -0
- package/lib/__templates__/expo/client/heroui/components/input-otp/index.ts +9 -0
- package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.animation.ts +199 -0
- package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.constants.ts +12 -0
- package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.md +376 -0
- package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.styles.ts +68 -0
- package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.tsx +414 -0
- package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.types.ts +275 -0
- package/lib/__templates__/expo/client/heroui/components/label/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/label/label.animation.ts +18 -0
- package/lib/__templates__/expo/client/heroui/components/label/label.constants.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/label/label.md +187 -0
- package/lib/__templates__/expo/client/heroui/components/label/label.styles.ts +44 -0
- package/lib/__templates__/expo/client/heroui/components/label/label.tsx +172 -0
- package/lib/__templates__/expo/client/heroui/components/label/label.types.ts +86 -0
- package/lib/__templates__/expo/client/heroui/components/list-group/index.ts +17 -0
- package/lib/__templates__/expo/client/heroui/components/list-group/list-group.constants.ts +17 -0
- package/lib/__templates__/expo/client/heroui/components/list-group/list-group.md +387 -0
- package/lib/__templates__/expo/client/heroui/components/list-group/list-group.styles.ts +40 -0
- package/lib/__templates__/expo/client/heroui/components/list-group/list-group.tsx +206 -0
- package/lib/__templates__/expo/client/heroui/components/list-group/list-group.types.ts +132 -0
- package/lib/__templates__/expo/client/heroui/components/menu/index.ts +38 -0
- package/lib/__templates__/expo/client/heroui/components/menu/menu.animation.ts +121 -0
- package/lib/__templates__/expo/client/heroui/components/menu/menu.constants.ts +37 -0
- package/lib/__templates__/expo/client/heroui/components/menu/menu.md +620 -0
- package/lib/__templates__/expo/client/heroui/components/menu/menu.styles.ts +107 -0
- package/lib/__templates__/expo/client/heroui/components/menu/menu.tsx +664 -0
- package/lib/__templates__/expo/client/heroui/components/menu/menu.types.ts +394 -0
- package/lib/__templates__/expo/client/heroui/components/popover/arrow-svg.tsx +180 -0
- package/lib/__templates__/expo/client/heroui/components/popover/index.ts +18 -0
- package/lib/__templates__/expo/client/heroui/components/popover/popover.animation.ts +9 -0
- package/lib/__templates__/expo/client/heroui/components/popover/popover.constants.ts +34 -0
- package/lib/__templates__/expo/client/heroui/components/popover/popover.md +508 -0
- package/lib/__templates__/expo/client/heroui/components/popover/popover.styles.ts +98 -0
- package/lib/__templates__/expo/client/heroui/components/popover/popover.tsx +624 -0
- package/lib/__templates__/expo/client/heroui/components/popover/popover.types.ts +290 -0
- package/lib/__templates__/expo/client/heroui/components/pressable-feedback/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.animation.ts +450 -0
- package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.constants.ts +12 -0
- package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.md +328 -0
- package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.styles.ts +84 -0
- package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.tsx +330 -0
- package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.types.ts +386 -0
- package/lib/__templates__/expo/client/heroui/components/radio/index.ts +9 -0
- package/lib/__templates__/expo/client/heroui/components/radio/radio.animation.ts +92 -0
- package/lib/__templates__/expo/client/heroui/components/radio/radio.constants.ts +11 -0
- package/lib/__templates__/expo/client/heroui/components/radio/radio.md +339 -0
- package/lib/__templates__/expo/client/heroui/components/radio/radio.styles.ts +80 -0
- package/lib/__templates__/expo/client/heroui/components/radio/radio.tsx +217 -0
- package/lib/__templates__/expo/client/heroui/components/radio/radio.types.ts +106 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/index.ts +9 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.animation.ts +20 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.constants.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.context.ts +14 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.md +273 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.styles.ts +15 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.tsx +220 -0
- package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.types.ts +64 -0
- package/lib/__templates__/expo/client/heroui/components/scroll-shadow/index.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.animation.ts +132 -0
- package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.constants.ts +21 -0
- package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.md +206 -0
- package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.styles.ts +52 -0
- package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.tsx +262 -0
- package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.types.ts +121 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/index.ts +17 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/search-field.animation.ts +18 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/search-field.constants.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/search-field.md +231 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/search-field.styles.ts +35 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/search-field.tsx +253 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/search-field.types.ts +160 -0
- package/lib/__templates__/expo/client/heroui/components/search-field/search-icon.tsx +37 -0
- package/lib/__templates__/expo/client/heroui/components/select/index.ts +28 -0
- package/lib/__templates__/expo/client/heroui/components/select/select.animation.ts +92 -0
- package/lib/__templates__/expo/client/heroui/components/select/select.constants.ts +53 -0
- package/lib/__templates__/expo/client/heroui/components/select/select.md +796 -0
- package/lib/__templates__/expo/client/heroui/components/select/select.styles.ts +149 -0
- package/lib/__templates__/expo/client/heroui/components/select/select.tsx +828 -0
- package/lib/__templates__/expo/client/heroui/components/select/select.types.ts +438 -0
- package/lib/__templates__/expo/client/heroui/components/separator/index.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/separator/separator.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/separator/separator.md +106 -0
- package/lib/__templates__/expo/client/heroui/components/separator/separator.styles.ts +50 -0
- package/lib/__templates__/expo/client/heroui/components/separator/separator.tsx +62 -0
- package/lib/__templates__/expo/client/heroui/components/separator/separator.types.ts +40 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/index.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/linear-gradient.tsx +45 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.animation.ts +351 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.constants.ts +39 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.md +208 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.styles.ts +49 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.tsx +183 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.types.ts +191 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton-group/index.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.constants.ts +7 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.md +247 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.styles.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.tsx +94 -0
- package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.types.ts +28 -0
- package/lib/__templates__/expo/client/heroui/components/slider/index.ts +23 -0
- package/lib/__templates__/expo/client/heroui/components/slider/slider.animation.ts +87 -0
- package/lib/__templates__/expo/client/heroui/components/slider/slider.constants.ts +24 -0
- package/lib/__templates__/expo/client/heroui/components/slider/slider.md +348 -0
- package/lib/__templates__/expo/client/heroui/components/slider/slider.styles.ts +85 -0
- package/lib/__templates__/expo/client/heroui/components/slider/slider.tsx +413 -0
- package/lib/__templates__/expo/client/heroui/components/slider/slider.types.ts +120 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/index.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/spinner-icon.tsx +49 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/spinner.animation.ts +150 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/spinner.constants.ts +36 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/spinner.md +199 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/spinner.styles.ts +44 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/spinner.tsx +198 -0
- package/lib/__templates__/expo/client/heroui/components/spinner/spinner.types.ts +158 -0
- package/lib/__templates__/expo/client/heroui/components/surface/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/surface/surface.animation.ts +18 -0
- package/lib/__templates__/expo/client/heroui/components/surface/surface.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/surface/surface.md +136 -0
- package/lib/__templates__/expo/client/heroui/components/surface/surface.styles.ts +28 -0
- package/lib/__templates__/expo/client/heroui/components/surface/surface.tsx +66 -0
- package/lib/__templates__/expo/client/heroui/components/surface/surface.types.ts +46 -0
- package/lib/__templates__/expo/client/heroui/components/switch/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/switch/switch.animation.ts +243 -0
- package/lib/__templates__/expo/client/heroui/components/switch/switch.constants.ts +26 -0
- package/lib/__templates__/expo/client/heroui/components/switch/switch.md +334 -0
- package/lib/__templates__/expo/client/heroui/components/switch/switch.styles.ts +83 -0
- package/lib/__templates__/expo/client/heroui/components/switch/switch.tsx +280 -0
- package/lib/__templates__/expo/client/heroui/components/switch/switch.types.ts +208 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/index.ts +8 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/tabs.animation.ts +246 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/tabs.constants.ts +17 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/tabs.context.ts +28 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/tabs.md +565 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/tabs.styles.ts +168 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/tabs.tsx +445 -0
- package/lib/__templates__/expo/client/heroui/components/tabs/tabs.types.ts +341 -0
- package/lib/__templates__/expo/client/heroui/components/tag-group/index.ts +15 -0
- package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.animation.ts +17 -0
- package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.constants.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.md +404 -0
- package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.styles.ts +74 -0
- package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.tsx +325 -0
- package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.types.ts +125 -0
- package/lib/__templates__/expo/client/heroui/components/text-area/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/text-area/text-area.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/text-area/text-area.md +133 -0
- package/lib/__templates__/expo/client/heroui/components/text-area/text-area.styles.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/text-area/text-area.tsx +44 -0
- package/lib/__templates__/expo/client/heroui/components/text-area/text-area.types.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/text-field/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/components/text-field/text-field.animation.ts +20 -0
- package/lib/__templates__/expo/client/heroui/components/text-field/text-field.constants.ts +6 -0
- package/lib/__templates__/expo/client/heroui/components/text-field/text-field.md +256 -0
- package/lib/__templates__/expo/client/heroui/components/text-field/text-field.styles.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/text-field/text-field.tsx +82 -0
- package/lib/__templates__/expo/client/heroui/components/text-field/text-field.types.ts +56 -0
- package/lib/__templates__/expo/client/heroui/components/toast/index.ts +4 -0
- package/lib/__templates__/expo/client/heroui/components/toast/toast.animation.ts +381 -0
- package/lib/__templates__/expo/client/heroui/components/toast/toast.constants.ts +10 -0
- package/lib/__templates__/expo/client/heroui/components/toast/toast.hooks.ts +73 -0
- package/lib/__templates__/expo/client/heroui/components/toast/toast.md +420 -0
- package/lib/__templates__/expo/client/heroui/components/toast/toast.styles.ts +89 -0
- package/lib/__templates__/expo/client/heroui/components/toast/toast.tsx +472 -0
- package/lib/__templates__/expo/client/heroui/components/toast/toast.types.ts +320 -0
- package/lib/__templates__/expo/client/heroui/docs.md +47 -0
- package/lib/__templates__/expo/client/heroui/helpers/external/hooks/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/helpers/external/hooks/use-is-on-surface.ts +8 -0
- package/lib/__templates__/expo/client/heroui/helpers/external/hooks/use-theme-color.ts +137 -0
- package/lib/__templates__/expo/client/heroui/helpers/external/utils/cn.ts +12 -0
- package/lib/__templates__/expo/client/heroui/helpers/external/utils/color-kit/index.ts +2395 -0
- package/lib/__templates__/expo/client/heroui/helpers/external/utils/color-kit/types.ts +212 -0
- package/lib/__templates__/expo/client/heroui/helpers/external/utils/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/animated-check-icon.tsx +78 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/bottom-sheet-content-container.tsx +97 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/bottom-sheet-content.tsx +158 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/check-icon.tsx +28 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/chevron-down-icon.tsx +28 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/chevron-right-icon.tsx +29 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/close-icon.tsx +29 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/full-window-overlay.tsx +48 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/hero-text.tsx +71 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/components/index.ts +9 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/animation-settings-context.ts +19 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/bottom-sheet-is-dragging-context.ts +11 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/form-field-context.ts +36 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/index.ts +14 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-augmented-ref.ts +32 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-bottom-sheet-aware-handlers.ts +94 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-bottom-sheet-gesture-handlers.ts +52 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-combined-animation-disabled-state.ts +49 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-controllable-state.ts +124 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-dev-info.ts +38 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-keyboard-status.ts +22 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-bottom-sheet-content-animation.ts +67 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-dialog-content-animation.ts +296 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-overlay-animation.ts +91 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-popover-content-animation.ts +199 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-root-animation.ts +26 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-relative-position.ts +353 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-resolved-style-property.ts +118 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/types/animation.ts +131 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/types/bottom-sheet.ts +99 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/types/index.ts +5 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/types/misc.ts +10 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/types/primitives.ts +146 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/types/theme.ts +18 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/animation.ts +266 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/children-to-string.ts +117 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/combine-styles.ts +17 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/create-context.ts +60 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/ease-gradient/create-interpolation.ts +35 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/ease-gradient/index.ts +97 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/get-element-by-display-name.ts +15 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/get-element-with-default.ts +17 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/has-prop.ts +18 -0
- package/lib/__templates__/expo/client/heroui/helpers/internal/utils/index.ts +8 -0
- package/lib/__templates__/expo/client/heroui/index.tsx +51 -0
- package/lib/__templates__/expo/client/heroui/primitives/README.md +27 -0
- package/lib/__templates__/expo/client/heroui/primitives/accordion/accordion.tsx +270 -0
- package/lib/__templates__/expo/client/heroui/primitives/accordion/accordion.types.ts +117 -0
- package/lib/__templates__/expo/client/heroui/primitives/accordion/accordion.utils.ts +12 -0
- package/lib/__templates__/expo/client/heroui/primitives/accordion/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/activity-indicator/activity-indicator.tsx +50 -0
- package/lib/__templates__/expo/client/heroui/primitives/activity-indicator/activity-indicator.types.ts +24 -0
- package/lib/__templates__/expo/client/heroui/primitives/activity-indicator/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/alert/alert.tsx +124 -0
- package/lib/__templates__/expo/client/heroui/primitives/alert/alert.types.ts +87 -0
- package/lib/__templates__/expo/client/heroui/primitives/alert/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/avatar/avatar.tsx +171 -0
- package/lib/__templates__/expo/client/heroui/primitives/avatar/avatar.types.ts +62 -0
- package/lib/__templates__/expo/client/heroui/primitives/avatar/avatar.utils.ts +102 -0
- package/lib/__templates__/expo/client/heroui/primitives/avatar/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/bottom-sheet/bottom-sheet.tsx +235 -0
- package/lib/__templates__/expo/client/heroui/primitives/bottom-sheet/bottom-sheet.types.ts +127 -0
- package/lib/__templates__/expo/client/heroui/primitives/bottom-sheet/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/checkbox/checkbox.tsx +119 -0
- package/lib/__templates__/expo/client/heroui/primitives/checkbox/checkbox.types.ts +37 -0
- package/lib/__templates__/expo/client/heroui/primitives/checkbox/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/dialog/dialog.tsx +274 -0
- package/lib/__templates__/expo/client/heroui/primitives/dialog/dialog.types.ts +129 -0
- package/lib/__templates__/expo/client/heroui/primitives/dialog/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/input-otp/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/primitives/input-otp/input-otp.tsx +431 -0
- package/lib/__templates__/expo/client/heroui/primitives/input-otp/input-otp.types.ts +169 -0
- package/lib/__templates__/expo/client/heroui/primitives/input-otp/input-otp.utils.ts +31 -0
- package/lib/__templates__/expo/client/heroui/primitives/label/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/label/label.tsx +24 -0
- package/lib/__templates__/expo/client/heroui/primitives/label/label.types.ts +39 -0
- package/lib/__templates__/expo/client/heroui/primitives/menu/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/menu/menu.tsx +765 -0
- package/lib/__templates__/expo/client/heroui/primitives/menu/menu.types.ts +401 -0
- package/lib/__templates__/expo/client/heroui/primitives/popover/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/popover/popover.tsx +382 -0
- package/lib/__templates__/expo/client/heroui/primitives/popover/popover.types.ts +201 -0
- package/lib/__templates__/expo/client/heroui/primitives/portal/index.ts +1 -0
- package/lib/__templates__/expo/client/heroui/primitives/portal/portal.tsx +126 -0
- package/lib/__templates__/expo/client/heroui/primitives/radio/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/radio/radio.tsx +133 -0
- package/lib/__templates__/expo/client/heroui/primitives/radio/radio.types.ts +47 -0
- package/lib/__templates__/expo/client/heroui/primitives/radio-group/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/radio-group/radio-group.tsx +114 -0
- package/lib/__templates__/expo/client/heroui/primitives/radio-group/radio-group.types.ts +65 -0
- package/lib/__templates__/expo/client/heroui/primitives/select/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/select/select.tsx +705 -0
- package/lib/__templates__/expo/client/heroui/primitives/select/select.types.ts +409 -0
- package/lib/__templates__/expo/client/heroui/primitives/select/select.utils.ts +35 -0
- package/lib/__templates__/expo/client/heroui/primitives/slider/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/primitives/slider/slider.tsx +464 -0
- package/lib/__templates__/expo/client/heroui/primitives/slider/slider.types.ts +208 -0
- package/lib/__templates__/expo/client/heroui/primitives/slider/slider.utils.ts +93 -0
- package/lib/__templates__/expo/client/heroui/primitives/slot/index.ts +1 -0
- package/lib/__templates__/expo/client/heroui/primitives/slot/slot.tsx +122 -0
- package/lib/__templates__/expo/client/heroui/primitives/slot/types.ts +19 -0
- package/lib/__templates__/expo/client/heroui/primitives/slot/utils.ts +96 -0
- package/lib/__templates__/expo/client/heroui/primitives/switch/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/switch/switch.tsx +61 -0
- package/lib/__templates__/expo/client/heroui/primitives/switch/switch.types.ts +55 -0
- package/lib/__templates__/expo/client/heroui/primitives/tabs/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/tabs/tabs.tsx +202 -0
- package/lib/__templates__/expo/client/heroui/primitives/tabs/tabs.types.ts +77 -0
- package/lib/__templates__/expo/client/heroui/primitives/tag-group/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/tag-group/tag-group.tsx +324 -0
- package/lib/__templates__/expo/client/heroui/primitives/tag-group/tag-group.types.ts +119 -0
- package/lib/__templates__/expo/client/heroui/primitives/toast/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/primitives/toast/toast.tsx +138 -0
- package/lib/__templates__/expo/client/heroui/primitives/toast/toast.types.ts +86 -0
- package/lib/__templates__/expo/client/heroui/providers/animation-settings/index.ts +8 -0
- package/lib/__templates__/expo/client/heroui/providers/animation-settings/provider.tsx +47 -0
- package/lib/__templates__/expo/client/heroui/providers/animation-settings/types.ts +27 -0
- package/lib/__templates__/expo/client/heroui/providers/hero-ui-native/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/providers/hero-ui-native/provider.tsx +67 -0
- package/lib/__templates__/expo/client/heroui/providers/hero-ui-native/types.ts +114 -0
- package/lib/__templates__/expo/client/heroui/providers/hero-ui-native-raw/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/providers/hero-ui-native-raw/provider.tsx +50 -0
- package/lib/__templates__/expo/client/heroui/providers/hero-ui-native-raw/types.ts +39 -0
- package/lib/__templates__/expo/client/heroui/providers/text-component/index.ts +2 -0
- package/lib/__templates__/expo/client/heroui/providers/text-component/provider.tsx +9 -0
- package/lib/__templates__/expo/client/heroui/providers/text-component/types.ts +52 -0
- package/lib/__templates__/expo/client/heroui/providers/toast/index.ts +3 -0
- package/lib/__templates__/expo/client/heroui/providers/toast/insets-container.tsx +87 -0
- package/lib/__templates__/expo/client/heroui/providers/toast/provider.tsx +431 -0
- package/lib/__templates__/expo/client/heroui/providers/toast/reducer.ts +34 -0
- package/lib/__templates__/expo/client/heroui/providers/toast/toast-config.context.ts +27 -0
- package/lib/__templates__/expo/client/heroui/providers/toast/toast-item-renderer.tsx +45 -0
- package/lib/__templates__/expo/client/heroui/providers/toast/types.ts +373 -0
- package/lib/__templates__/expo/client/heroui/styles/index.css +3 -0
- package/lib/__templates__/expo/client/heroui/styles/theme.css +112 -0
- package/lib/__templates__/expo/client/heroui/styles/utilities.css +8 -0
- package/lib/__templates__/expo/client/heroui/styles/variables.css +146 -0
- package/lib/__templates__/expo/client/package.json +4 -1
- package/lib/__templates__/expo/package.json +1 -1
- package/lib/__templates__/expo/pnpm-lock.yaml +68 -0
- package/lib/__templates__/nextjs/AGENTS.md +6 -4
- package/lib/__templates__/nextjs/eslint.config.mjs +9 -0
- package/lib/__templates__/taro/.coze +2 -0
- package/lib/__templates__/taro/.cozeproj/scripts/pack.sh +1 -2
- package/lib/__templates__/taro/config/index.ts +1 -1
- package/lib/__templates__/taro/package.json +1 -0
- package/lib/__templates__/taro/project.config.json +1 -1
- package/lib/cli.js +246 -252
- package/package.json +3 -2
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import React, { useMemo, type PropsWithChildren } from 'react';
|
|
2
|
+
|
|
3
|
+
import { View } from 'react-native';
|
|
4
|
+
import { createContext } from '../../helpers/internal/utils';
|
|
5
|
+
import Skeleton from '../skeleton/skeleton';
|
|
6
|
+
import { DISPLAY_NAME } from './skeleton-group.constants';
|
|
7
|
+
import { skeletonGroupClassNames } from './skeleton-group.styles';
|
|
8
|
+
import type {
|
|
9
|
+
SkeletonGroupContextValue,
|
|
10
|
+
SkeletonGroupItemProps,
|
|
11
|
+
SkeletonGroupRootProps,
|
|
12
|
+
} from './skeleton-group.types';
|
|
13
|
+
|
|
14
|
+
const [SkeletonGroupProvider, useSkeletonGroupContext] =
|
|
15
|
+
createContext<SkeletonGroupContextValue>({
|
|
16
|
+
name: 'SkeletonGroupContext',
|
|
17
|
+
errorMessage:
|
|
18
|
+
'useSkeletonGroupContext: must be used within a SkeletonGroup',
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// --------------------------------------------------
|
|
22
|
+
|
|
23
|
+
const SkeletonGroupRoot: React.FC<PropsWithChildren<SkeletonGroupRootProps>> = (
|
|
24
|
+
props
|
|
25
|
+
) => {
|
|
26
|
+
const {
|
|
27
|
+
children,
|
|
28
|
+
className,
|
|
29
|
+
style,
|
|
30
|
+
isSkeletonOnly = false,
|
|
31
|
+
...restProps
|
|
32
|
+
} = props;
|
|
33
|
+
|
|
34
|
+
const rootClassName = skeletonGroupClassNames.root({ className });
|
|
35
|
+
|
|
36
|
+
const contextValue = useMemo<SkeletonGroupContextValue>(
|
|
37
|
+
() => ({
|
|
38
|
+
...restProps,
|
|
39
|
+
}),
|
|
40
|
+
[restProps]
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
if (isSkeletonOnly && !restProps.isLoading) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<SkeletonGroupProvider value={contextValue}>
|
|
49
|
+
<View className={rootClassName} style={style}>
|
|
50
|
+
{children}
|
|
51
|
+
</View>
|
|
52
|
+
</SkeletonGroupProvider>
|
|
53
|
+
);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// --------------------------------------------------
|
|
57
|
+
|
|
58
|
+
const SkeletonGroupItem: React.FC<SkeletonGroupItemProps> = (props) => {
|
|
59
|
+
const context = useSkeletonGroupContext();
|
|
60
|
+
|
|
61
|
+
const itemProps = {
|
|
62
|
+
...context,
|
|
63
|
+
...props,
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
return <Skeleton {...itemProps} />;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// --------------------------------------------------
|
|
70
|
+
|
|
71
|
+
SkeletonGroupRoot.displayName = DISPLAY_NAME.SKELETON_GROUP_ROOT;
|
|
72
|
+
SkeletonGroupItem.displayName = DISPLAY_NAME.SKELETON_GROUP_ITEM;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Compound SkeletonGroup component for managing multiple skeleton loading states
|
|
76
|
+
*
|
|
77
|
+
* @component SkeletonGroup - Root container that provides centralized control for all skeleton items.
|
|
78
|
+
* Passes isLoading, variant, and animation to child items via context.
|
|
79
|
+
*
|
|
80
|
+
* @component SkeletonGroup.Item - Individual skeleton item that inherits props from the parent group.
|
|
81
|
+
* Can override group props with its own props for specific customization.
|
|
82
|
+
*
|
|
83
|
+
* Props flow from SkeletonGroup to Items via context (isLoading, variant, animation).
|
|
84
|
+
* Items can override any inherited prop by passing their own values.
|
|
85
|
+
*
|
|
86
|
+
* @see Full documentation: https://v3.heroui.com/docs/native/components/skeleton-group
|
|
87
|
+
*/
|
|
88
|
+
const SkeletonGroup = Object.assign(SkeletonGroupRoot, {
|
|
89
|
+
/** @optional Individual skeleton item that inherits group settings */
|
|
90
|
+
Item: SkeletonGroupItem,
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
export default SkeletonGroup;
|
|
94
|
+
export { useSkeletonGroupContext };
|
package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.types.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { StyleProp, ViewStyle } from 'react-native';
|
|
2
|
+
import type { SkeletonProps } from '../skeleton/skeleton.types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Props for the SkeletonGroup root component
|
|
6
|
+
*/
|
|
7
|
+
export interface SkeletonGroupRootProps extends Omit<SkeletonProps, 'style'> {
|
|
8
|
+
/**
|
|
9
|
+
* When true, hides the entire group when isLoading is false.
|
|
10
|
+
* Use this to prevent layout issues when skeleton contains wrapper elements.
|
|
11
|
+
* @default false
|
|
12
|
+
*/
|
|
13
|
+
isSkeletonOnly?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Style for the skeleton group container
|
|
16
|
+
*/
|
|
17
|
+
style?: StyleProp<ViewStyle>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Context value for SkeletonGroup provider
|
|
22
|
+
*/
|
|
23
|
+
export interface SkeletonGroupContextValue extends SkeletonGroupRootProps {}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Props for the SkeletonGroup.Item component
|
|
27
|
+
*/
|
|
28
|
+
export interface SkeletonGroupItemProps extends SkeletonProps {}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Component export
|
|
2
|
+
export { default as Slider, useSlider } from './slider';
|
|
3
|
+
|
|
4
|
+
// ClassNames export for external reuse
|
|
5
|
+
export { sliderClassNames } from './slider.styles';
|
|
6
|
+
|
|
7
|
+
// Re-export primitive context and value types for consumer convenience
|
|
8
|
+
export type {
|
|
9
|
+
SliderContextValue,
|
|
10
|
+
SliderOrientation,
|
|
11
|
+
SliderRenderProps,
|
|
12
|
+
SliderState,
|
|
13
|
+
SliderValue,
|
|
14
|
+
} from '../../primitives/slider/slider.types';
|
|
15
|
+
|
|
16
|
+
// Component-level type exports
|
|
17
|
+
export type {
|
|
18
|
+
SliderFillProps,
|
|
19
|
+
SliderOutputProps,
|
|
20
|
+
SliderProps,
|
|
21
|
+
SliderThumbProps,
|
|
22
|
+
SliderTrackProps,
|
|
23
|
+
} from './slider.types';
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { useAnimatedStyle, withSpring } from 'react-native-reanimated';
|
|
2
|
+
import { useAnimationSettings } from '../../helpers/internal/contexts';
|
|
3
|
+
import { useCombinedAnimationDisabledState } from '../../helpers/internal/hooks';
|
|
4
|
+
import type { AnimationRootDisableAll } from '../../helpers/internal/types';
|
|
5
|
+
import {
|
|
6
|
+
getAnimationState,
|
|
7
|
+
getAnimationValueMergedConfig,
|
|
8
|
+
getAnimationValueProperty,
|
|
9
|
+
getIsAnimationDisabledValue,
|
|
10
|
+
} from '../../helpers/internal/utils';
|
|
11
|
+
import { THUMB_SPRING_CONFIG } from './slider.constants';
|
|
12
|
+
import type { SliderThumbAnimation } from './slider.types';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Animation hook for Slider root component.
|
|
16
|
+
* Handles root-level animation configuration and provides
|
|
17
|
+
* cascading disable-all state for child components.
|
|
18
|
+
*/
|
|
19
|
+
export function useSliderRootAnimation(options: {
|
|
20
|
+
animation: AnimationRootDisableAll | undefined;
|
|
21
|
+
}) {
|
|
22
|
+
const { animation } = options;
|
|
23
|
+
|
|
24
|
+
const isAllAnimationsDisabled = useCombinedAnimationDisabledState(animation);
|
|
25
|
+
|
|
26
|
+
return {
|
|
27
|
+
isAllAnimationsDisabled,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// --------------------------------------------------
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Animation hook for Slider.Thumb knob scale effect.
|
|
35
|
+
* Animates scale between idle and dragging states using spring physics,
|
|
36
|
+
* driven by the `isThumbDragging` state from the slider context.
|
|
37
|
+
*/
|
|
38
|
+
export function useSliderThumbAnimation(options: {
|
|
39
|
+
animation: SliderThumbAnimation | undefined;
|
|
40
|
+
isDragging: boolean;
|
|
41
|
+
}) {
|
|
42
|
+
const { animation, isDragging } = options;
|
|
43
|
+
|
|
44
|
+
const { isAllAnimationsDisabled } = useAnimationSettings();
|
|
45
|
+
|
|
46
|
+
const { animationConfig, isAnimationDisabled } = getAnimationState(animation);
|
|
47
|
+
|
|
48
|
+
const isAnimationDisabledValue = getIsAnimationDisabledValue({
|
|
49
|
+
isAnimationDisabled,
|
|
50
|
+
isAllAnimationsDisabled,
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const scaleValue = getAnimationValueProperty({
|
|
54
|
+
animationValue: animationConfig?.scale,
|
|
55
|
+
property: 'value',
|
|
56
|
+
defaultValue: [1, 0.9] as [number, number],
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const scaleSpringConfig = getAnimationValueMergedConfig({
|
|
60
|
+
animationValue: animationConfig?.scale,
|
|
61
|
+
property: 'springConfig',
|
|
62
|
+
defaultValue: THUMB_SPRING_CONFIG,
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
const rKnobStyle = useAnimatedStyle(() => {
|
|
66
|
+
if (isAnimationDisabledValue) {
|
|
67
|
+
return {
|
|
68
|
+
transform: [{ scale: isDragging ? scaleValue[1] : scaleValue[0] }],
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return {
|
|
73
|
+
transform: [
|
|
74
|
+
{
|
|
75
|
+
scale: withSpring(
|
|
76
|
+
isDragging ? scaleValue[1] : scaleValue[0],
|
|
77
|
+
scaleSpringConfig
|
|
78
|
+
),
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
return {
|
|
85
|
+
rKnobStyle,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Display names for Slider components
|
|
3
|
+
*/
|
|
4
|
+
export const DISPLAY_NAME = {
|
|
5
|
+
ROOT: 'HeroUI.Slider.Root',
|
|
6
|
+
OUTPUT: 'HeroUI.Slider.Output',
|
|
7
|
+
TRACK: 'HeroUI.Slider.Track',
|
|
8
|
+
FILL: 'HeroUI.Slider.Fill',
|
|
9
|
+
THUMB: 'HeroUI.Slider.Thumb',
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Extra hit-slop around the thumb to improve touch target
|
|
14
|
+
*/
|
|
15
|
+
export const THUMB_HIT_SLOP = 16;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Spring animation configuration for thumb scale feedback
|
|
19
|
+
*/
|
|
20
|
+
export const THUMB_SPRING_CONFIG = {
|
|
21
|
+
damping: 15,
|
|
22
|
+
stiffness: 200,
|
|
23
|
+
mass: 0.5,
|
|
24
|
+
};
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
# Slider
|
|
2
|
+
|
|
3
|
+
A draggable input for selecting a value or range within a bounded interval.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Slider } from '@/heroui';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Anatomy
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<Slider>
|
|
15
|
+
<Slider.Output />
|
|
16
|
+
<Slider.Track>
|
|
17
|
+
<Slider.Fill />
|
|
18
|
+
<Slider.Thumb />
|
|
19
|
+
</Slider.Track>
|
|
20
|
+
</Slider>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
- **Slider**: Main container that manages slider value state, orientation, and provides context to all sub-components. Supports single value and range modes.
|
|
24
|
+
- **Slider.Output**: Optional display of the current value(s). Supports render functions for custom formatting. Shows a formatted value label by default.
|
|
25
|
+
- **Slider.Track**: Sizing container for Fill and Thumb elements. Reports its layout size for position calculations. Supports tap-to-position and render-function children for dynamic content (e.g. multiple thumbs for range sliders).
|
|
26
|
+
- **Slider.Fill**: Responsive fill bar that stretches the full cross-axis of the Track. Only the main-axis position and size are computed.
|
|
27
|
+
- **Slider.Thumb**: Draggable thumb element using react-native-gesture-handler. Centered on the cross-axis by the Track layout. Animates scale on press via react-native-reanimated. Each thumb gets `role="slider"` with full `accessibilityValue`.
|
|
28
|
+
|
|
29
|
+
## Usage
|
|
30
|
+
|
|
31
|
+
### Basic Usage
|
|
32
|
+
|
|
33
|
+
The Slider component uses compound parts to create a draggable value input.
|
|
34
|
+
|
|
35
|
+
```tsx
|
|
36
|
+
<Slider defaultValue={30}>
|
|
37
|
+
<Slider.Output />
|
|
38
|
+
<Slider.Track>
|
|
39
|
+
<Slider.Fill />
|
|
40
|
+
<Slider.Thumb />
|
|
41
|
+
</Slider.Track>
|
|
42
|
+
</Slider>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### With Label and Output
|
|
46
|
+
|
|
47
|
+
Display a label alongside the current value output.
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
<Slider defaultValue={50}>
|
|
51
|
+
<View className="flex-row items-center justify-between">
|
|
52
|
+
<Label>Volume</Label>
|
|
53
|
+
<Slider.Output />
|
|
54
|
+
</View>
|
|
55
|
+
<Slider.Track>
|
|
56
|
+
<Slider.Fill />
|
|
57
|
+
<Slider.Thumb />
|
|
58
|
+
</Slider.Track>
|
|
59
|
+
</Slider>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Vertical Orientation
|
|
63
|
+
|
|
64
|
+
Render the slider vertically by setting `orientation` to `"vertical"`.
|
|
65
|
+
|
|
66
|
+
```tsx
|
|
67
|
+
<View className="h-48">
|
|
68
|
+
<Slider defaultValue={50} orientation="vertical">
|
|
69
|
+
<Slider.Track>
|
|
70
|
+
<Slider.Fill />
|
|
71
|
+
<Slider.Thumb />
|
|
72
|
+
</Slider.Track>
|
|
73
|
+
</Slider>
|
|
74
|
+
</View>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Range Slider
|
|
78
|
+
|
|
79
|
+
Pass an array as the value and use a render function on `Slider.Track` to create multiple thumbs.
|
|
80
|
+
|
|
81
|
+
```tsx
|
|
82
|
+
<Slider
|
|
83
|
+
defaultValue={[200, 800]}
|
|
84
|
+
minValue={0}
|
|
85
|
+
maxValue={1000}
|
|
86
|
+
step={10}
|
|
87
|
+
formatOptions={{ style: 'currency', currency: 'USD' }}
|
|
88
|
+
>
|
|
89
|
+
<View className="flex-row items-center justify-between">
|
|
90
|
+
<Label>Price range</Label>
|
|
91
|
+
<Slider.Output />
|
|
92
|
+
</View>
|
|
93
|
+
<Slider.Track>
|
|
94
|
+
{({ state }) => (
|
|
95
|
+
<>
|
|
96
|
+
<Slider.Fill />
|
|
97
|
+
{state.values.map((_, i) => (
|
|
98
|
+
<Slider.Thumb key={i} index={i} />
|
|
99
|
+
))}
|
|
100
|
+
</>
|
|
101
|
+
)}
|
|
102
|
+
</Slider.Track>
|
|
103
|
+
</Slider>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Controlled Value
|
|
107
|
+
|
|
108
|
+
Use `value` and `onChange` for controlled mode. The `onChangeEnd` callback fires when a drag or tap interaction completes.
|
|
109
|
+
|
|
110
|
+
```tsx
|
|
111
|
+
const [volume, setVolume] = useState(50);
|
|
112
|
+
|
|
113
|
+
<Slider value={volume} onChange={setVolume} onChangeEnd={(v) => save(v)}>
|
|
114
|
+
<Slider.Output />
|
|
115
|
+
<Slider.Track>
|
|
116
|
+
<Slider.Fill />
|
|
117
|
+
<Slider.Thumb />
|
|
118
|
+
</Slider.Track>
|
|
119
|
+
</Slider>;
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Custom Styling
|
|
123
|
+
|
|
124
|
+
Apply custom styles using `className`, `classNames`, or `styles` on the thumb and other sub-components.
|
|
125
|
+
|
|
126
|
+
```tsx
|
|
127
|
+
<Slider defaultValue={65}>
|
|
128
|
+
<Slider.Track className="h-3 rounded-full bg-success/10">
|
|
129
|
+
<Slider.Fill className="rounded-full bg-success" />
|
|
130
|
+
<Slider.Thumb
|
|
131
|
+
classNames={{
|
|
132
|
+
thumbContainer: 'size-6 rounded-full bg-success',
|
|
133
|
+
thumbKnob: 'bg-success-foreground rounded-full',
|
|
134
|
+
}}
|
|
135
|
+
animation={{
|
|
136
|
+
scale: { value: [1, 0.7] },
|
|
137
|
+
}}
|
|
138
|
+
/>
|
|
139
|
+
</Slider.Track>
|
|
140
|
+
</Slider>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Disabled
|
|
144
|
+
|
|
145
|
+
Disable the entire slider to prevent interaction.
|
|
146
|
+
|
|
147
|
+
```tsx
|
|
148
|
+
<Slider defaultValue={40} isDisabled>
|
|
149
|
+
<Slider.Track>
|
|
150
|
+
<Slider.Fill />
|
|
151
|
+
<Slider.Thumb />
|
|
152
|
+
</Slider.Track>
|
|
153
|
+
</Slider>
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Example
|
|
157
|
+
|
|
158
|
+
```tsx
|
|
159
|
+
import { Label, Slider } from '@/heroui';
|
|
160
|
+
import { useState } from 'react';
|
|
161
|
+
import { View, Text } from 'react-native';
|
|
162
|
+
|
|
163
|
+
export default function SliderExample() {
|
|
164
|
+
const [price, setPrice] = useState<number[]>([200, 800]);
|
|
165
|
+
|
|
166
|
+
return (
|
|
167
|
+
<View className="px-8 gap-8">
|
|
168
|
+
<Slider defaultValue={30}>
|
|
169
|
+
<View className="flex-row items-center justify-between">
|
|
170
|
+
<Label>Volume</Label>
|
|
171
|
+
<Slider.Output />
|
|
172
|
+
</View>
|
|
173
|
+
<Slider.Track>
|
|
174
|
+
<Slider.Fill />
|
|
175
|
+
<Slider.Thumb />
|
|
176
|
+
</Slider.Track>
|
|
177
|
+
</Slider>
|
|
178
|
+
|
|
179
|
+
<Slider
|
|
180
|
+
value={price}
|
|
181
|
+
onChange={setPrice}
|
|
182
|
+
minValue={0}
|
|
183
|
+
maxValue={1000}
|
|
184
|
+
step={10}
|
|
185
|
+
formatOptions={{ style: 'currency', currency: 'USD' }}
|
|
186
|
+
>
|
|
187
|
+
<View className="flex-row items-center justify-between">
|
|
188
|
+
<Label>Price range</Label>
|
|
189
|
+
<Slider.Output />
|
|
190
|
+
</View>
|
|
191
|
+
<Slider.Track>
|
|
192
|
+
{({ state }) => (
|
|
193
|
+
<>
|
|
194
|
+
<Slider.Fill />
|
|
195
|
+
{state.values.map((_, i) => (
|
|
196
|
+
<Slider.Thumb key={i} index={i} />
|
|
197
|
+
))}
|
|
198
|
+
</>
|
|
199
|
+
)}
|
|
200
|
+
</Slider.Track>
|
|
201
|
+
</Slider>
|
|
202
|
+
</View>
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
You can find more examples in the [GitHub repository](<https://github.com/heroui-inc/heroui-native/blob/rc/example/src/app/(home)/components/slider.tsx>).
|
|
208
|
+
|
|
209
|
+
## API Reference
|
|
210
|
+
|
|
211
|
+
### Slider
|
|
212
|
+
|
|
213
|
+
| prop | type | default | description |
|
|
214
|
+
| --------------- | ------------------------------------- | -------------- | --------------------------------------------------------------- |
|
|
215
|
+
| `children` | `React.ReactNode` | - | Children elements to be rendered inside the slider |
|
|
216
|
+
| `value` | `number \| number[]` | - | Current slider value (controlled mode) |
|
|
217
|
+
| `defaultValue` | `number \| number[]` | `0` | Default slider value (uncontrolled mode) |
|
|
218
|
+
| `minValue` | `number` | `0` | Minimum value of the slider |
|
|
219
|
+
| `maxValue` | `number` | `100` | Maximum value of the slider |
|
|
220
|
+
| `step` | `number` | `1` | Step increment for the slider |
|
|
221
|
+
| `formatOptions` | `Intl.NumberFormatOptions` | - | Number format options for value label formatting |
|
|
222
|
+
| `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | Orientation of the slider |
|
|
223
|
+
| `isDisabled` | `boolean` | `false` | Whether the slider is disabled |
|
|
224
|
+
| `className` | `string` | - | Additional CSS classes |
|
|
225
|
+
| `animation` | `AnimationRootDisableAll` | - | Animation configuration for the slider |
|
|
226
|
+
| `onChange` | `(value: number \| number[]) => void` | - | Callback fired when the slider value changes during interaction |
|
|
227
|
+
| `onChangeEnd` | `(value: number \| number[]) => void` | - | Callback fired when an interaction completes (drag end or tap) |
|
|
228
|
+
| `...ViewProps` | `ViewProps` | - | All standard React Native View props are supported |
|
|
229
|
+
|
|
230
|
+
#### AnimationRootDisableAll
|
|
231
|
+
|
|
232
|
+
Animation configuration for the slider root component. Can be:
|
|
233
|
+
|
|
234
|
+
- `"disable-all"`: Disable all animations including children
|
|
235
|
+
- `undefined`: Use default animations
|
|
236
|
+
|
|
237
|
+
### Slider.Output
|
|
238
|
+
|
|
239
|
+
| prop | type | default | description |
|
|
240
|
+
| -------------- | -------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------- |
|
|
241
|
+
| `children` | `React.ReactNode \| ((props: SliderRenderProps) => React.ReactNode)` | - | Custom content or render function receiving slider state. Defaults to formatted value label |
|
|
242
|
+
| `className` | `string` | - | Additional CSS classes |
|
|
243
|
+
| `...ViewProps` | `ViewProps` | - | All standard React Native View props are supported |
|
|
244
|
+
|
|
245
|
+
#### SliderRenderProps
|
|
246
|
+
|
|
247
|
+
| prop | type | description |
|
|
248
|
+
| ------------- | ------------------- | ------------------------------ |
|
|
249
|
+
| `state` | `SliderState` | Current slider state |
|
|
250
|
+
| `orientation` | `SliderOrientation` | Orientation of the slider |
|
|
251
|
+
| `isDisabled` | `boolean` | Whether the slider is disabled |
|
|
252
|
+
|
|
253
|
+
#### SliderState
|
|
254
|
+
|
|
255
|
+
| prop | type | description |
|
|
256
|
+
| -------------------- | --------------------------- | ---------------------------------------------- |
|
|
257
|
+
| `values` | `number[]` | Current slider value(s) by thumb index |
|
|
258
|
+
| `getThumbValueLabel` | `(index: number) => string` | Returns the formatted string label for a thumb |
|
|
259
|
+
|
|
260
|
+
### Slider.Track
|
|
261
|
+
|
|
262
|
+
| prop | type | default | description |
|
|
263
|
+
| -------------- | -------------------------------------------------------------------- | ------- | ----------------------------------------------------------------------------- |
|
|
264
|
+
| `children` | `React.ReactNode \| ((props: SliderRenderProps) => React.ReactNode)` | - | Content or render function receiving slider state for dynamic thumb rendering |
|
|
265
|
+
| `className` | `string` | - | Additional CSS classes |
|
|
266
|
+
| `hitSlop` | `number` | `8` | Extra touch area around the track |
|
|
267
|
+
| `...ViewProps` | `ViewProps` | - | All standard React Native View props are supported |
|
|
268
|
+
|
|
269
|
+
### Slider.Fill
|
|
270
|
+
|
|
271
|
+
| prop | type | default | description |
|
|
272
|
+
| -------------- | ----------- | ------- | -------------------------------------------------- |
|
|
273
|
+
| `className` | `string` | - | Additional CSS classes |
|
|
274
|
+
| `...ViewProps` | `ViewProps` | - | All standard React Native View props are supported |
|
|
275
|
+
|
|
276
|
+
### Slider.Thumb
|
|
277
|
+
|
|
278
|
+
| prop | type | default | description |
|
|
279
|
+
| -------------- | ---------------------------------------- | ------- | -------------------------------------------------- |
|
|
280
|
+
| `children` | `React.ReactNode` | - | Custom thumb content. Defaults to an animated knob |
|
|
281
|
+
| `index` | `number` | `0` | Index of this thumb within the slider |
|
|
282
|
+
| `isDisabled` | `boolean` | - | Whether this individual thumb is disabled |
|
|
283
|
+
| `className` | `string` | - | Additional CSS classes for the thumb container |
|
|
284
|
+
| `classNames` | `ElementSlots<ThumbSlots>` | - | Additional CSS classes for thumb slots |
|
|
285
|
+
| `styles` | `Partial<Record<ThumbSlots, ViewStyle>>` | - | Inline styles for thumb slots |
|
|
286
|
+
| `hitSlop` | `number` | `12` | Extra touch area around the thumb |
|
|
287
|
+
| `animation` | `SliderThumbAnimation` | - | Animation configuration for the thumb knob |
|
|
288
|
+
| `...ViewProps` | `ViewProps` | - | All standard React Native View props are supported |
|
|
289
|
+
|
|
290
|
+
#### ElementSlots\<ThumbSlots\>
|
|
291
|
+
|
|
292
|
+
| prop | type | description |
|
|
293
|
+
| ---------------- | -------- | ----------------------------------------------- |
|
|
294
|
+
| `thumbContainer` | `string` | Custom class name for the outer thumb container |
|
|
295
|
+
| `thumbKnob` | `string` | Custom class name for the inner thumb knob |
|
|
296
|
+
|
|
297
|
+
#### styles
|
|
298
|
+
|
|
299
|
+
| prop | type | description |
|
|
300
|
+
| ---------------- | ----------- | ------------------------------------ |
|
|
301
|
+
| `thumbContainer` | `ViewStyle` | Styles for the outer thumb container |
|
|
302
|
+
| `thumbKnob` | `ViewStyle` | Styles for the inner thumb knob |
|
|
303
|
+
|
|
304
|
+
#### SliderThumbAnimation
|
|
305
|
+
|
|
306
|
+
Animation configuration for the thumb knob scale effect. Can be:
|
|
307
|
+
|
|
308
|
+
- `false` or `"disabled"`: Disable thumb animation
|
|
309
|
+
- `undefined`: Use default animations
|
|
310
|
+
- `object`: Custom scale animation configuration
|
|
311
|
+
|
|
312
|
+
| prop | type | default | description |
|
|
313
|
+
| -------------------- | ------------------ | -------------------------------------------- | ----------------------------------------------- |
|
|
314
|
+
| `scale.value` | `[number, number]` | `[1, 0.9]` | Scale values [idle, dragging] |
|
|
315
|
+
| `scale.springConfig` | `WithSpringConfig` | `{ damping: 15, stiffness: 200, mass: 0.5 }` | Spring animation configuration for scale effect |
|
|
316
|
+
|
|
317
|
+
## Hooks
|
|
318
|
+
|
|
319
|
+
### useSlider
|
|
320
|
+
|
|
321
|
+
Hook to access the slider context. Must be used within a `Slider` component.
|
|
322
|
+
|
|
323
|
+
```tsx
|
|
324
|
+
import { useSlider } from '@/heroui';
|
|
325
|
+
|
|
326
|
+
const { values, orientation, isDisabled, getThumbValueLabel } = useSlider();
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
#### Returns
|
|
330
|
+
|
|
331
|
+
| property | type | description |
|
|
332
|
+
| -------------------- | -------------------------------------------- | -------------------------------------------------------------- |
|
|
333
|
+
| `values` | `number[]` | Current slider values (one per thumb) |
|
|
334
|
+
| `minValue` | `number` | Minimum value of the slider |
|
|
335
|
+
| `maxValue` | `number` | Maximum value of the slider |
|
|
336
|
+
| `step` | `number` | Step increment |
|
|
337
|
+
| `orientation` | `'horizontal' \| 'vertical'` | Current orientation |
|
|
338
|
+
| `isDisabled` | `boolean` | Whether the slider is disabled |
|
|
339
|
+
| `formatOptions` | `Intl.NumberFormatOptions \| undefined` | Number format options for labels |
|
|
340
|
+
| `getThumbPercent` | `(index: number) => number` | Returns the percentage position (0–1) for a given thumb index |
|
|
341
|
+
| `getThumbValueLabel` | `(index: number) => string` | Returns the formatted label for a given thumb index |
|
|
342
|
+
| `getThumbMinValue` | `(index: number) => number` | Returns the minimum allowed value for a thumb |
|
|
343
|
+
| `getThumbMaxValue` | `(index: number) => number` | Returns the maximum allowed value for a thumb |
|
|
344
|
+
| `updateValue` | `(index: number, newValue: number) => void` | Updates a thumb value by index |
|
|
345
|
+
| `isThumbDragging` | `(index: number) => boolean` | Returns whether a given thumb is currently being dragged |
|
|
346
|
+
| `setThumbDragging` | `(index: number, dragging: boolean) => void` | Sets the dragging state of a thumb |
|
|
347
|
+
| `trackSize` | `number` | Track layout width (horizontal) or height (vertical) in pixels |
|
|
348
|
+
| `thumbSize` | `number` | Measured thumb size (main-axis dimension) in pixels |
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { StyleSheet } from 'react-native';
|
|
2
|
+
import { tv } from 'tailwind-variants';
|
|
3
|
+
import { combineStyles } from '../../helpers/internal/utils';
|
|
4
|
+
|
|
5
|
+
const root = tv({
|
|
6
|
+
base: 'gap-2',
|
|
7
|
+
variants: {
|
|
8
|
+
orientation: {
|
|
9
|
+
horizontal: 'w-full',
|
|
10
|
+
vertical: 'h-full items-center',
|
|
11
|
+
},
|
|
12
|
+
isDisabled: {
|
|
13
|
+
true: 'opacity-disabled',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
defaultVariants: {
|
|
17
|
+
orientation: 'horizontal',
|
|
18
|
+
isDisabled: false,
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const output = tv({
|
|
23
|
+
base: 'text-sm text-muted font-medium',
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const track = tv({
|
|
27
|
+
base: 'rounded-xl bg-default',
|
|
28
|
+
variants: {
|
|
29
|
+
orientation: {
|
|
30
|
+
horizontal: 'w-full h-5 justify-center',
|
|
31
|
+
vertical: 'h-full w-5 items-center',
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
defaultVariants: {
|
|
35
|
+
orientation: 'horizontal',
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
const fill = tv({
|
|
40
|
+
base: 'absolute rounded-xl bg-accent',
|
|
41
|
+
variants: {
|
|
42
|
+
orientation: {
|
|
43
|
+
horizontal: 'inset-y-0',
|
|
44
|
+
vertical: 'inset-x-0',
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
defaultVariants: {
|
|
48
|
+
orientation: 'horizontal',
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
const thumb = tv({
|
|
53
|
+
slots: {
|
|
54
|
+
thumbContainer: 'absolute p-[2px] bg-accent rounded-xl',
|
|
55
|
+
thumbKnob: 'flex-1 bg-accent-foreground rounded-xl shadow-field',
|
|
56
|
+
},
|
|
57
|
+
variants: {
|
|
58
|
+
orientation: {
|
|
59
|
+
horizontal: { thumbContainer: 'w-7 h-5' },
|
|
60
|
+
vertical: { thumbContainer: 'w-5 h-7' },
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
defaultVariants: {
|
|
64
|
+
orientation: 'horizontal',
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
const sliderClassNames = combineStyles({
|
|
69
|
+
root,
|
|
70
|
+
output,
|
|
71
|
+
track,
|
|
72
|
+
fill,
|
|
73
|
+
thumb,
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
export const styleSheet = StyleSheet.create({
|
|
77
|
+
borderCurve: {
|
|
78
|
+
borderCurve: 'continuous',
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
export type ThumbSlots = keyof ReturnType<typeof thumb>;
|
|
83
|
+
|
|
84
|
+
export { sliderClassNames };
|
|
85
|
+
export default sliderClassNames;
|