@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,220 @@
|
|
|
1
|
+
import { forwardRef, useCallback, useMemo } from 'react';
|
|
2
|
+
|
|
3
|
+
import { useIsOnSurface } from '../../helpers/external/hooks';
|
|
4
|
+
import {
|
|
5
|
+
AnimationSettingsProvider,
|
|
6
|
+
FormFieldProvider,
|
|
7
|
+
} from '../../helpers/internal/contexts';
|
|
8
|
+
import { childrenToString } from '../../helpers/internal/utils';
|
|
9
|
+
import * as RadioGroupPrimitives from '../../primitives/radio-group';
|
|
10
|
+
import Label from '../label/label';
|
|
11
|
+
import Radio from '../radio/radio';
|
|
12
|
+
import { useRadioGroupRootAnimation } from './radio-group.animation';
|
|
13
|
+
import { DISPLAY_NAME } from './radio-group.constants';
|
|
14
|
+
import { RadioGroupItemProvider } from './radio-group.context';
|
|
15
|
+
import { radioGroupClassNames } from './radio-group.styles';
|
|
16
|
+
import type {
|
|
17
|
+
RadioGroupItemProps,
|
|
18
|
+
RadioGroupItemRenderProps,
|
|
19
|
+
RadioGroupProps,
|
|
20
|
+
} from './radio-group.types';
|
|
21
|
+
|
|
22
|
+
const useRadioGroup = RadioGroupPrimitives.useRadioGroupContext;
|
|
23
|
+
|
|
24
|
+
// --------------------------------------------------
|
|
25
|
+
|
|
26
|
+
const RadioGroupRoot = forwardRef<
|
|
27
|
+
RadioGroupPrimitives.RootRef,
|
|
28
|
+
RadioGroupProps
|
|
29
|
+
>((props, ref) => {
|
|
30
|
+
const {
|
|
31
|
+
className,
|
|
32
|
+
isDisabled = false,
|
|
33
|
+
isInvalid = false,
|
|
34
|
+
animation,
|
|
35
|
+
...restProps
|
|
36
|
+
} = props;
|
|
37
|
+
|
|
38
|
+
const rootClassName = radioGroupClassNames.root({
|
|
39
|
+
className,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const { isAllAnimationsDisabled } = useRadioGroupRootAnimation({
|
|
43
|
+
animation,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const animationSettingsContextValue = useMemo(
|
|
47
|
+
() => ({
|
|
48
|
+
isAllAnimationsDisabled,
|
|
49
|
+
}),
|
|
50
|
+
[isAllAnimationsDisabled]
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
const formFieldContextValue = useMemo(
|
|
54
|
+
() => ({
|
|
55
|
+
isDisabled,
|
|
56
|
+
isInvalid,
|
|
57
|
+
isRequired: false,
|
|
58
|
+
hasFieldPadding: false,
|
|
59
|
+
}),
|
|
60
|
+
[isDisabled, isInvalid]
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
return (
|
|
64
|
+
<AnimationSettingsProvider value={animationSettingsContextValue}>
|
|
65
|
+
<FormFieldProvider value={formFieldContextValue}>
|
|
66
|
+
<RadioGroupPrimitives.Root
|
|
67
|
+
ref={ref}
|
|
68
|
+
className={rootClassName}
|
|
69
|
+
isDisabled={isDisabled}
|
|
70
|
+
isInvalid={isInvalid}
|
|
71
|
+
{...restProps}
|
|
72
|
+
/>
|
|
73
|
+
</FormFieldProvider>
|
|
74
|
+
</AnimationSettingsProvider>
|
|
75
|
+
);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// --------------------------------------------------
|
|
79
|
+
|
|
80
|
+
const RadioGroupItem = forwardRef<
|
|
81
|
+
RadioGroupPrimitives.ItemRef,
|
|
82
|
+
RadioGroupItemProps
|
|
83
|
+
>((props, ref) => {
|
|
84
|
+
const {
|
|
85
|
+
children,
|
|
86
|
+
value,
|
|
87
|
+
isDisabled,
|
|
88
|
+
isInvalid,
|
|
89
|
+
variant,
|
|
90
|
+
className,
|
|
91
|
+
...restProps
|
|
92
|
+
} = props;
|
|
93
|
+
|
|
94
|
+
const stringifiedChildren =
|
|
95
|
+
typeof children === 'function'
|
|
96
|
+
? null
|
|
97
|
+
: childrenToString(children as React.ReactNode);
|
|
98
|
+
|
|
99
|
+
const {
|
|
100
|
+
value: groupValue,
|
|
101
|
+
onValueChange: groupOnValueChange,
|
|
102
|
+
isInvalid: groupIsInvalid,
|
|
103
|
+
isDisabled: groupIsDisabled,
|
|
104
|
+
variant: groupVariant,
|
|
105
|
+
} = useRadioGroup();
|
|
106
|
+
|
|
107
|
+
const isSelected = groupValue === value;
|
|
108
|
+
const isDisabledValue = isDisabled ?? groupIsDisabled ?? false;
|
|
109
|
+
const isInvalidValue = isInvalid ?? groupIsInvalid ?? false;
|
|
110
|
+
|
|
111
|
+
/** Selects this item in the group (radio behavior: always selects, never deselects) */
|
|
112
|
+
const handleSelectedChange = useCallback(() => {
|
|
113
|
+
groupOnValueChange(value);
|
|
114
|
+
}, [groupOnValueChange, value]);
|
|
115
|
+
|
|
116
|
+
const isOnSurfaceAutoDetected = useIsOnSurface();
|
|
117
|
+
|
|
118
|
+
const finalVariant =
|
|
119
|
+
variant !== undefined
|
|
120
|
+
? variant
|
|
121
|
+
: groupVariant !== undefined
|
|
122
|
+
? groupVariant
|
|
123
|
+
: isOnSurfaceAutoDetected
|
|
124
|
+
? 'secondary'
|
|
125
|
+
: 'primary';
|
|
126
|
+
|
|
127
|
+
const itemClassName = radioGroupClassNames.item({
|
|
128
|
+
className,
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
const renderProps: RadioGroupItemRenderProps = {
|
|
132
|
+
isSelected,
|
|
133
|
+
isDisabled: isDisabledValue,
|
|
134
|
+
isInvalid: isInvalidValue,
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
const content = stringifiedChildren ? (
|
|
138
|
+
<>
|
|
139
|
+
<Label>{stringifiedChildren}</Label>
|
|
140
|
+
<Radio />
|
|
141
|
+
</>
|
|
142
|
+
) : typeof children === 'function' ? (
|
|
143
|
+
children(renderProps)
|
|
144
|
+
) : (
|
|
145
|
+
children
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
const contextValue = useMemo(
|
|
149
|
+
() => ({
|
|
150
|
+
isSelected,
|
|
151
|
+
isDisabled: isDisabledValue,
|
|
152
|
+
isInvalid: isInvalidValue,
|
|
153
|
+
variant: finalVariant,
|
|
154
|
+
onSelectedChange: handleSelectedChange,
|
|
155
|
+
}),
|
|
156
|
+
[
|
|
157
|
+
isSelected,
|
|
158
|
+
isDisabledValue,
|
|
159
|
+
isInvalidValue,
|
|
160
|
+
finalVariant,
|
|
161
|
+
handleSelectedChange,
|
|
162
|
+
]
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
const formFieldContextValue = useMemo(
|
|
166
|
+
() => ({
|
|
167
|
+
isDisabled: isDisabledValue,
|
|
168
|
+
isInvalid: isInvalidValue,
|
|
169
|
+
isRequired: false,
|
|
170
|
+
hasFieldPadding: false,
|
|
171
|
+
}),
|
|
172
|
+
[isDisabledValue, isInvalidValue]
|
|
173
|
+
);
|
|
174
|
+
|
|
175
|
+
return (
|
|
176
|
+
<FormFieldProvider value={formFieldContextValue}>
|
|
177
|
+
<RadioGroupItemProvider value={contextValue}>
|
|
178
|
+
<RadioGroupPrimitives.Item
|
|
179
|
+
ref={ref}
|
|
180
|
+
value={value}
|
|
181
|
+
className={itemClassName}
|
|
182
|
+
isDisabled={isDisabledValue}
|
|
183
|
+
{...restProps}
|
|
184
|
+
>
|
|
185
|
+
{content}
|
|
186
|
+
</RadioGroupPrimitives.Item>
|
|
187
|
+
</RadioGroupItemProvider>
|
|
188
|
+
</FormFieldProvider>
|
|
189
|
+
);
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
RadioGroupRoot.displayName = DISPLAY_NAME.RADIO_GROUP_ROOT;
|
|
193
|
+
RadioGroupItem.displayName = DISPLAY_NAME.RADIO_GROUP_ITEM;
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Compound RadioGroup component with sub-components.
|
|
197
|
+
*
|
|
198
|
+
* @component RadioGroup - Container that manages the selection state of RadioGroupItem components.
|
|
199
|
+
* Supports both horizontal and vertical orientations.
|
|
200
|
+
*
|
|
201
|
+
* @component RadioGroup.Item - Individual radio option within a RadioGroup. Must be used inside
|
|
202
|
+
* RadioGroup. Handles selection state and renders a default `<Radio />` indicator if text children
|
|
203
|
+
* are provided. Supports render function children to access state.
|
|
204
|
+
*
|
|
205
|
+
* Use the `Radio` component (and its sub-components `Radio.Indicator`, `Radio.IndicatorThumb`)
|
|
206
|
+
* inside RadioGroup.Item for custom indicator rendering. The Radio component automatically detects
|
|
207
|
+
* the RadioGroupItem context and derives selection state from it.
|
|
208
|
+
*
|
|
209
|
+
* Props flow from RadioGroup to RadioGroupItem to Radio via context (variant, value, isSelected).
|
|
210
|
+
* RadioGroup manages the overall selection state and orientation.
|
|
211
|
+
*
|
|
212
|
+
* @see Full documentation: https://v3.heroui.com/docs/native/components/radio-group
|
|
213
|
+
*/
|
|
214
|
+
const CompoundRadioGroup = Object.assign(RadioGroupRoot, {
|
|
215
|
+
/** Individual radio option within a RadioGroup */
|
|
216
|
+
Item: RadioGroupItem,
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
export default CompoundRadioGroup;
|
|
220
|
+
export { useRadioGroup };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { AnimationRootDisableAll } from '../../helpers/internal/types';
|
|
2
|
+
import type { ItemProps, RootProps } from '../../primitives/radio-group';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Props for RadioGroup root component
|
|
6
|
+
*/
|
|
7
|
+
export interface RadioGroupProps extends Omit<RootProps, 'asChild'> {
|
|
8
|
+
/** Radio group content */
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
/** Custom class name */
|
|
11
|
+
className?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Animation configuration for radio group
|
|
14
|
+
* - `"disable-all"`: Disable all animations including children
|
|
15
|
+
* - `undefined`: Use default animations
|
|
16
|
+
*/
|
|
17
|
+
animation?: AnimationRootDisableAll;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Context values shared between RadioGroupItem compound components
|
|
22
|
+
*/
|
|
23
|
+
export interface RadioGroupItemContextValue {
|
|
24
|
+
/** Whether the radio item is selected */
|
|
25
|
+
isSelected: boolean;
|
|
26
|
+
/** Whether the radio item is disabled */
|
|
27
|
+
isDisabled?: boolean;
|
|
28
|
+
/** Whether the radio item is invalid */
|
|
29
|
+
isInvalid?: boolean;
|
|
30
|
+
/** Variant style for the radio item */
|
|
31
|
+
variant?: 'primary' | 'secondary';
|
|
32
|
+
/** Callback to change the selection state (selects this item in the group) */
|
|
33
|
+
onSelectedChange?: (isSelected: boolean) => void;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Render function props for RadioGroupItem children
|
|
38
|
+
*/
|
|
39
|
+
export interface RadioGroupItemRenderProps {
|
|
40
|
+
/** Whether the radio item is selected */
|
|
41
|
+
isSelected: boolean;
|
|
42
|
+
/** Whether the radio item is disabled */
|
|
43
|
+
isDisabled: boolean;
|
|
44
|
+
/** Whether the radio item is invalid */
|
|
45
|
+
isInvalid: boolean;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Props for the RadioGroupItem component
|
|
50
|
+
*/
|
|
51
|
+
export interface RadioGroupItemProps extends Omit<ItemProps, 'children'> {
|
|
52
|
+
/** Radio item content, or a render function */
|
|
53
|
+
children?:
|
|
54
|
+
| React.ReactNode
|
|
55
|
+
| ((props: RadioGroupItemRenderProps) => React.ReactNode);
|
|
56
|
+
/** Whether the radio item is invalid @default false */
|
|
57
|
+
isInvalid?: boolean;
|
|
58
|
+
/** Variant style for the radio item
|
|
59
|
+
* @default 'primary'
|
|
60
|
+
*/
|
|
61
|
+
variant?: 'primary' | 'secondary';
|
|
62
|
+
/** Custom class name */
|
|
63
|
+
className?: string;
|
|
64
|
+
}
|
package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.animation.ts
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Extrapolation,
|
|
3
|
+
interpolate,
|
|
4
|
+
useAnimatedScrollHandler,
|
|
5
|
+
useAnimatedStyle,
|
|
6
|
+
useDerivedValue,
|
|
7
|
+
useSharedValue,
|
|
8
|
+
withTiming,
|
|
9
|
+
} from 'react-native-reanimated';
|
|
10
|
+
import { useCombinedAnimationDisabledState } from '../../helpers/internal/hooks';
|
|
11
|
+
import {
|
|
12
|
+
getAnimationValueProperty,
|
|
13
|
+
getIsAnimationDisabledValue,
|
|
14
|
+
getRootAnimationState,
|
|
15
|
+
} from '../../helpers/internal/utils';
|
|
16
|
+
import { SHADOW_EXIT_ANIMATION_DURATION } from './scroll-shadow.constants';
|
|
17
|
+
import type {
|
|
18
|
+
ScrollShadowOrientation,
|
|
19
|
+
ScrollShadowRootAnimation,
|
|
20
|
+
ScrollShadowVisibility,
|
|
21
|
+
} from './scroll-shadow.types';
|
|
22
|
+
|
|
23
|
+
// --------------------------------------------------
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Animation hook for ScrollShadow root component
|
|
27
|
+
* Handles cascading animation disabled state and all animation logic
|
|
28
|
+
*/
|
|
29
|
+
export function useScrollShadowRootAnimation(options: {
|
|
30
|
+
animation: ScrollShadowRootAnimation | undefined;
|
|
31
|
+
orientation: ScrollShadowOrientation;
|
|
32
|
+
size: number;
|
|
33
|
+
visibility: ScrollShadowVisibility;
|
|
34
|
+
isEnabled: boolean;
|
|
35
|
+
}) {
|
|
36
|
+
const { animation, orientation, size, visibility, isEnabled } = options;
|
|
37
|
+
|
|
38
|
+
const { animationConfig, isAnimationDisabled } =
|
|
39
|
+
getRootAnimationState(animation);
|
|
40
|
+
|
|
41
|
+
const isAllAnimationsDisabled = useCombinedAnimationDisabledState(animation);
|
|
42
|
+
|
|
43
|
+
const isAnimationDisabledValue = getIsAnimationDisabledValue({
|
|
44
|
+
isAnimationDisabled,
|
|
45
|
+
isAllAnimationsDisabled,
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// Opacity animation values
|
|
49
|
+
const topOpacityValue = getAnimationValueProperty({
|
|
50
|
+
animationValue: animationConfig?.opacity,
|
|
51
|
+
property: 'value',
|
|
52
|
+
defaultValue: [0, 1] as [number, number],
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// Reverse array for bottom shadow: [1, 0]
|
|
56
|
+
const bottomOpacityValue: [number, number] = [
|
|
57
|
+
topOpacityValue[1],
|
|
58
|
+
topOpacityValue[0],
|
|
59
|
+
];
|
|
60
|
+
|
|
61
|
+
const scrollOffset = useSharedValue(0);
|
|
62
|
+
const contentSize = useSharedValue(0);
|
|
63
|
+
const containerSize = useSharedValue(0);
|
|
64
|
+
|
|
65
|
+
const localScrollHandler = useAnimatedScrollHandler({
|
|
66
|
+
onScroll: (event) => {
|
|
67
|
+
const offset =
|
|
68
|
+
orientation === 'vertical'
|
|
69
|
+
? event.contentOffset.y
|
|
70
|
+
: event.contentOffset.x;
|
|
71
|
+
scrollOffset.set(offset);
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
const topShadowOpacity = useDerivedValue(() => {
|
|
76
|
+
if (isAnimationDisabledValue) {
|
|
77
|
+
return 1;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (!isEnabled)
|
|
81
|
+
return withTiming(0, { duration: SHADOW_EXIT_ANIMATION_DURATION });
|
|
82
|
+
if (visibility === 'none')
|
|
83
|
+
return withTiming(0, { duration: SHADOW_EXIT_ANIMATION_DURATION });
|
|
84
|
+
if (visibility === 'bottom' || visibility === 'right')
|
|
85
|
+
return withTiming(0, { duration: SHADOW_EXIT_ANIMATION_DURATION });
|
|
86
|
+
|
|
87
|
+
return interpolate(
|
|
88
|
+
scrollOffset.get(),
|
|
89
|
+
[0, size / 4],
|
|
90
|
+
topOpacityValue,
|
|
91
|
+
Extrapolation.CLAMP
|
|
92
|
+
);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
const bottomShadowOpacity = useDerivedValue(() => {
|
|
96
|
+
if (isAnimationDisabledValue) {
|
|
97
|
+
return 1;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (!isEnabled)
|
|
101
|
+
return withTiming(0, { duration: SHADOW_EXIT_ANIMATION_DURATION });
|
|
102
|
+
if (visibility === 'none')
|
|
103
|
+
return withTiming(0, { duration: SHADOW_EXIT_ANIMATION_DURATION });
|
|
104
|
+
if (visibility === 'top' || visibility === 'left')
|
|
105
|
+
return withTiming(0, { duration: SHADOW_EXIT_ANIMATION_DURATION });
|
|
106
|
+
|
|
107
|
+
return interpolate(
|
|
108
|
+
scrollOffset.get() + containerSize.get(),
|
|
109
|
+
[contentSize.get() - size / 4, contentSize.get()],
|
|
110
|
+
bottomOpacityValue,
|
|
111
|
+
Extrapolation.CLAMP
|
|
112
|
+
);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
const topShadowStyle = useAnimatedStyle(() => ({
|
|
116
|
+
opacity: topShadowOpacity.get(),
|
|
117
|
+
}));
|
|
118
|
+
|
|
119
|
+
const bottomShadowStyle = useAnimatedStyle(() => ({
|
|
120
|
+
opacity: bottomShadowOpacity.get(),
|
|
121
|
+
}));
|
|
122
|
+
|
|
123
|
+
return {
|
|
124
|
+
scrollOffset,
|
|
125
|
+
contentSize,
|
|
126
|
+
containerSize,
|
|
127
|
+
localScrollHandler,
|
|
128
|
+
topShadowStyle,
|
|
129
|
+
bottomShadowStyle,
|
|
130
|
+
isAllAnimationsDisabled,
|
|
131
|
+
};
|
|
132
|
+
}
|
package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.constants.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Display name constants for ScrollShadow components
|
|
3
|
+
*/
|
|
4
|
+
export const SCROLL_SHADOW_DISPLAY_NAME = {
|
|
5
|
+
ROOT: 'HeroUINative.ScrollShadow',
|
|
6
|
+
} as const;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Default size for gradient shadows in pixels
|
|
10
|
+
*/
|
|
11
|
+
export const DEFAULT_SHADOW_SIZE = 50;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Animation duration for shadow opacity transitions in milliseconds
|
|
15
|
+
*/
|
|
16
|
+
export const SHADOW_EXIT_ANIMATION_DURATION = 200;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Default scroll event throttle for performance
|
|
20
|
+
*/
|
|
21
|
+
export const DEFAULT_SCROLL_EVENT_THROTTLE = 16;
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# ScrollShadow
|
|
2
|
+
|
|
3
|
+
Adds dynamic gradient shadows to scrollable content based on scroll position and overflow.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { ScrollShadow } from '@/heroui';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Anatomy
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<ScrollShadow LinearGradientComponent={LinearGradient}>
|
|
15
|
+
<ScrollView>...</ScrollView>
|
|
16
|
+
</ScrollShadow>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
- **ScrollShadow**: Main container that wraps scrollable components and adds dynamic gradient shadows at the edges based on scroll position and content overflow. Automatically detects scroll orientation (horizontal/vertical) and manages shadow visibility.
|
|
20
|
+
- **LinearGradientComponent**: Required prop that accepts a LinearGradient component from compatible libraries (expo-linear-gradient, react-native-linear-gradient, etc.) to render the gradient shadows.
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
### Basic Usage
|
|
25
|
+
|
|
26
|
+
Wrap any scrollable component to automatically add edge shadows.
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
<ScrollShadow LinearGradientComponent={LinearGradient}>
|
|
30
|
+
<ScrollView>...</ScrollView>
|
|
31
|
+
</ScrollShadow>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Horizontal Scrolling
|
|
35
|
+
|
|
36
|
+
The component auto-detects horizontal scrolling from the child's `horizontal` prop.
|
|
37
|
+
|
|
38
|
+
```tsx
|
|
39
|
+
<ScrollShadow LinearGradientComponent={LinearGradient}>
|
|
40
|
+
<FlatList horizontal data={data} renderItem={...} />
|
|
41
|
+
</ScrollShadow>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Custom Shadow Size
|
|
45
|
+
|
|
46
|
+
Control the gradient shadow height/width with the `size` prop.
|
|
47
|
+
|
|
48
|
+
```tsx
|
|
49
|
+
<ScrollShadow size={100} LinearGradientComponent={LinearGradient}>
|
|
50
|
+
<ScrollView>...</ScrollView>
|
|
51
|
+
</ScrollShadow>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Visibility Control
|
|
55
|
+
|
|
56
|
+
Specify which shadows to display using the `visibility` prop.
|
|
57
|
+
|
|
58
|
+
```tsx
|
|
59
|
+
<ScrollShadow visibility="top" LinearGradientComponent={LinearGradient}>
|
|
60
|
+
<ScrollView>...</ScrollView>
|
|
61
|
+
</ScrollShadow>
|
|
62
|
+
|
|
63
|
+
<ScrollShadow visibility="bottom" LinearGradientComponent={LinearGradient}>
|
|
64
|
+
<ScrollView>...</ScrollView>
|
|
65
|
+
</ScrollShadow>
|
|
66
|
+
|
|
67
|
+
<ScrollShadow visibility="none" LinearGradientComponent={LinearGradient}>
|
|
68
|
+
<ScrollView>...</ScrollView>
|
|
69
|
+
</ScrollShadow>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Custom Shadow Color
|
|
73
|
+
|
|
74
|
+
Override the default shadow color which uses the theme's background.
|
|
75
|
+
|
|
76
|
+
```tsx
|
|
77
|
+
<ScrollShadow color="#ffffff" LinearGradientComponent={LinearGradient}>
|
|
78
|
+
<ScrollView>...</ScrollView>
|
|
79
|
+
</ScrollShadow>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### With Custom Scroll Handler
|
|
83
|
+
|
|
84
|
+
**Important:** ScrollShadow internally converts the child to a Reanimated animated component. If you need to use the `onScroll` prop, you must use `useAnimatedScrollHandler` from react-native-reanimated.
|
|
85
|
+
|
|
86
|
+
```tsx
|
|
87
|
+
import { LinearGradient } from 'expo-linear-gradient';
|
|
88
|
+
import Animated, { useAnimatedScrollHandler } from 'react-native-reanimated';
|
|
89
|
+
|
|
90
|
+
const scrollHandler = useAnimatedScrollHandler({
|
|
91
|
+
onScroll: (event) => {
|
|
92
|
+
console.log(event.contentOffset.y);
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
<ScrollShadow LinearGradientComponent={LinearGradient}>
|
|
97
|
+
<Animated.ScrollView onScroll={scrollHandler}>...</Animated.ScrollView>
|
|
98
|
+
</ScrollShadow>;
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Example
|
|
102
|
+
|
|
103
|
+
```tsx
|
|
104
|
+
import { ScrollShadow, Surface } from '@/heroui';
|
|
105
|
+
import { LinearGradient } from 'expo-linear-gradient';
|
|
106
|
+
import { FlatList, ScrollView, Text, View } from 'react-native';
|
|
107
|
+
|
|
108
|
+
export default function ScrollShadowExample() {
|
|
109
|
+
const horizontalData = Array.from({ length: 10 }, (_, i) => ({
|
|
110
|
+
id: i,
|
|
111
|
+
title: `Card ${i + 1}`,
|
|
112
|
+
}));
|
|
113
|
+
|
|
114
|
+
return (
|
|
115
|
+
<View className="flex-1 bg-background">
|
|
116
|
+
<Text className="px-5 py-3 text-lg font-semibold">Horizontal List</Text>
|
|
117
|
+
<ScrollShadow LinearGradientComponent={LinearGradient}>
|
|
118
|
+
<FlatList
|
|
119
|
+
data={horizontalData}
|
|
120
|
+
horizontal
|
|
121
|
+
renderItem={({ item }) => (
|
|
122
|
+
<Surface variant="2" className="w-32 h-24 justify-center px-4">
|
|
123
|
+
<Text>{item.title}</Text>
|
|
124
|
+
</Surface>
|
|
125
|
+
)}
|
|
126
|
+
showsHorizontalScrollIndicator={false}
|
|
127
|
+
contentContainerClassName="p-5 gap-4"
|
|
128
|
+
/>
|
|
129
|
+
</ScrollShadow>
|
|
130
|
+
|
|
131
|
+
<Text className="px-5 py-3 text-lg font-semibold">Vertical Content</Text>
|
|
132
|
+
<ScrollShadow
|
|
133
|
+
size={80}
|
|
134
|
+
className="h-48"
|
|
135
|
+
LinearGradientComponent={LinearGradient}
|
|
136
|
+
>
|
|
137
|
+
<ScrollView
|
|
138
|
+
contentContainerClassName="p-5"
|
|
139
|
+
showsVerticalScrollIndicator={false}
|
|
140
|
+
>
|
|
141
|
+
<Text className="mb-4 text-2xl font-bold">Long Content</Text>
|
|
142
|
+
<Text className="mb-4 text-base leading-6">
|
|
143
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
|
|
144
|
+
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
|
|
145
|
+
ad minim veniam, quis nostrud exercitation ullamco laboris.
|
|
146
|
+
</Text>
|
|
147
|
+
<Text className="mb-4 text-base leading-6">
|
|
148
|
+
Sed ut perspiciatis unde omnis iste natus error sit voluptatem
|
|
149
|
+
accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
|
|
150
|
+
quae ab illo inventore veritatis et quasi architecto beatae vitae.
|
|
151
|
+
</Text>
|
|
152
|
+
</ScrollView>
|
|
153
|
+
</ScrollShadow>
|
|
154
|
+
</View>
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
You can find more examples in the [GitHub repository](<https://github.com/heroui-inc/heroui-native/blob/rc/example/src/app/(home)/components/scroll-shadow.tsx>).
|
|
160
|
+
|
|
161
|
+
## API Reference
|
|
162
|
+
|
|
163
|
+
### ScrollShadow
|
|
164
|
+
|
|
165
|
+
| prop | type | default | description |
|
|
166
|
+
| ------------------------- | ---------------------------------------------------------------------- | ------------ | --------------------------------------------------------------------------------------------------------------- |
|
|
167
|
+
| `children` | `React.ReactElement` | - | The scrollable component to enhance with shadows. Must be a single React element (ScrollView, FlatList, etc.) |
|
|
168
|
+
| `LinearGradientComponent` | `ComponentType<`<br/>`LinearGradientProps>` | **required** | LinearGradient component from any compatible library (expo-linear-gradient, react-native-linear-gradient, etc.) |
|
|
169
|
+
| `size` | `number` | `50` | Size (height/width) of the gradient shadow in pixels |
|
|
170
|
+
| `orientation` | `'horizontal' \| 'vertical'` | auto-detect | Orientation of the scroll shadow. If not provided, will auto-detect from child's `horizontal` prop |
|
|
171
|
+
| `visibility` | `'auto' \| 'top' \| 'bottom' \| 'left' \| 'right' \| 'both' \| 'none'` | `'auto'` | Visibility mode for the shadows. 'auto' shows shadows based on scroll position and content overflow |
|
|
172
|
+
| `color` | `string` | theme color | Custom color for the gradient shadow. If not provided, uses the theme's background color |
|
|
173
|
+
| `isEnabled` | `boolean` | `true` | Whether the shadow effect is enabled |
|
|
174
|
+
| `animation` | `ScrollShadowRootAnimation` | - | Animation configuration |
|
|
175
|
+
| `className` | `string` | - | Additional CSS classes to apply to the container |
|
|
176
|
+
| `...ViewProps` | `ViewProps` | - | All standard React Native View props are supported |
|
|
177
|
+
|
|
178
|
+
#### ScrollShadowRootAnimation
|
|
179
|
+
|
|
180
|
+
Animation configuration for ScrollShadow component. Can be:
|
|
181
|
+
|
|
182
|
+
- `false` or `"disabled"`: Disable only root animations
|
|
183
|
+
- `"disable-all"`: Disable all animations including children
|
|
184
|
+
- `true` or `undefined`: Use default animations
|
|
185
|
+
- `object`: Custom animation configuration
|
|
186
|
+
|
|
187
|
+
| prop | type | default | description |
|
|
188
|
+
| --------------- | ---------------------------------------- | -------- | ----------------------------------------------------------------------------------- |
|
|
189
|
+
| `state` | `'disabled' \| 'disable-all' \| boolean` | - | Disable animations while customizing properties |
|
|
190
|
+
| `opacity.value` | `[number, number]` | `[0, 1]` | `Opacity values [initial, active].`<br/>`For bottom/right shadow, this is reversed` |
|
|
191
|
+
|
|
192
|
+
### LinearGradientProps
|
|
193
|
+
|
|
194
|
+
The `LinearGradientComponent` prop expects a component that accepts these props:
|
|
195
|
+
|
|
196
|
+
| prop | type | description |
|
|
197
|
+
| ----------- | --------------------------------- | ------------------------------------------------------------------ |
|
|
198
|
+
| `colors` | `any` | Array of colors for the gradient |
|
|
199
|
+
| `locations` | `any` (optional) | Array of numbers defining the location of each gradient color stop |
|
|
200
|
+
| `start` | `any` (optional) | Start point of the gradient (e.g., `{ x: 0, y: 0 }`) |
|
|
201
|
+
| `end` | `any` (optional) | End point of the gradient (e.g., `{ x: 1, y: 0 }`) |
|
|
202
|
+
| `style` | `StyleProp<ViewStyle>` (optional) | Style to apply to the gradient view |
|
|
203
|
+
|
|
204
|
+
## Special Notes
|
|
205
|
+
|
|
206
|
+
**Important:** ScrollShadow internally converts the child to a Reanimated animated component. If you need to use the `onScroll` prop on your scrollable component, you must use `useAnimatedScrollHandler` from react-native-reanimated instead of the standard `onScroll` prop.
|