@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,217 @@
|
|
|
1
|
+
import { forwardRef, useMemo } from 'react';
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
import Animated from 'react-native-reanimated';
|
|
4
|
+
|
|
5
|
+
import { useIsOnSurface } from '../../helpers/external/hooks';
|
|
6
|
+
import { AnimationSettingsProvider } from '../../helpers/internal/contexts';
|
|
7
|
+
import * as RadioPrimitives from '../../primitives/radio';
|
|
8
|
+
import { useRadioGroupItem } from '../radio-group/radio-group.context';
|
|
9
|
+
import {
|
|
10
|
+
useRadioIndicatorThumbAnimation,
|
|
11
|
+
useRadioRootAnimation,
|
|
12
|
+
} from './radio.animation';
|
|
13
|
+
import { DEFAULT_HIT_SLOP, DISPLAY_NAME } from './radio.constants';
|
|
14
|
+
import { radioClassNames, radioStyleSheet } from './radio.styles';
|
|
15
|
+
import type {
|
|
16
|
+
RadioIndicatorProps,
|
|
17
|
+
RadioIndicatorThumbProps,
|
|
18
|
+
RadioProps,
|
|
19
|
+
RadioRenderProps,
|
|
20
|
+
} from './radio.types';
|
|
21
|
+
|
|
22
|
+
const useRadio = RadioPrimitives.useRadioContext;
|
|
23
|
+
|
|
24
|
+
const AnimatedRadioIndicator = Animated.createAnimatedComponent(
|
|
25
|
+
RadioPrimitives.Indicator
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
// --------------------------------------------------
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Radio root component.
|
|
32
|
+
*
|
|
33
|
+
* Operates in two modes:
|
|
34
|
+
* - **Standalone**: Renders a Pressable trigger with `isSelected`/`onSelectedChange`.
|
|
35
|
+
* - **Inside RadioGroupItem**: Detects parent context automatically, derives state from
|
|
36
|
+
* the RadioGroupItem, and pressing selects this item in the group.
|
|
37
|
+
*/
|
|
38
|
+
const RadioRoot = forwardRef<RadioPrimitives.RootRef, RadioProps>(
|
|
39
|
+
(props, ref) => {
|
|
40
|
+
const {
|
|
41
|
+
children,
|
|
42
|
+
isSelected: isSelectedProp,
|
|
43
|
+
onSelectedChange: onSelectedChangeProp,
|
|
44
|
+
isDisabled: isDisabledProp,
|
|
45
|
+
isInvalid: isInvalidProp,
|
|
46
|
+
variant: variantProp,
|
|
47
|
+
className,
|
|
48
|
+
animation,
|
|
49
|
+
...restProps
|
|
50
|
+
} = props;
|
|
51
|
+
|
|
52
|
+
// Detect RadioGroupItem context (non-strict: returns undefined outside a group)
|
|
53
|
+
const radioGroupItemContext = useRadioGroupItem();
|
|
54
|
+
|
|
55
|
+
// Merge props with RadioGroupItem context (explicit props take precedence)
|
|
56
|
+
const isSelected = isSelectedProp ?? radioGroupItemContext?.isSelected;
|
|
57
|
+
const isDisabled = isDisabledProp ?? radioGroupItemContext?.isDisabled;
|
|
58
|
+
const isInvalid = isInvalidProp ?? radioGroupItemContext?.isInvalid;
|
|
59
|
+
const onSelectedChange =
|
|
60
|
+
onSelectedChangeProp ?? radioGroupItemContext?.onSelectedChange;
|
|
61
|
+
|
|
62
|
+
const isOnSurfaceAutoDetected = useIsOnSurface();
|
|
63
|
+
const finalVariant =
|
|
64
|
+
variantProp !== undefined
|
|
65
|
+
? variantProp
|
|
66
|
+
: radioGroupItemContext?.variant !== undefined
|
|
67
|
+
? radioGroupItemContext.variant
|
|
68
|
+
: isOnSurfaceAutoDetected
|
|
69
|
+
? 'secondary'
|
|
70
|
+
: 'primary';
|
|
71
|
+
|
|
72
|
+
const rootClassName = radioClassNames.root({
|
|
73
|
+
className,
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
const renderProps: RadioRenderProps = {
|
|
77
|
+
isSelected: isSelected ?? false,
|
|
78
|
+
isDisabled: isDisabled ?? false,
|
|
79
|
+
isInvalid: isInvalid ?? false,
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const content =
|
|
83
|
+
typeof children === 'function'
|
|
84
|
+
? children(renderProps)
|
|
85
|
+
: (children ?? <RadioIndicator />);
|
|
86
|
+
|
|
87
|
+
const { isAllAnimationsDisabled } = useRadioRootAnimation({
|
|
88
|
+
animation,
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
const animationSettingsContextValue = useMemo(
|
|
92
|
+
() => ({
|
|
93
|
+
isAllAnimationsDisabled,
|
|
94
|
+
}),
|
|
95
|
+
[isAllAnimationsDisabled]
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
return (
|
|
99
|
+
<AnimationSettingsProvider value={animationSettingsContextValue}>
|
|
100
|
+
<RadioPrimitives.Root
|
|
101
|
+
ref={ref}
|
|
102
|
+
variant={finalVariant}
|
|
103
|
+
className={rootClassName}
|
|
104
|
+
isSelected={isSelected}
|
|
105
|
+
onSelectedChange={onSelectedChange}
|
|
106
|
+
isDisabled={isDisabled}
|
|
107
|
+
isInvalid={isInvalid}
|
|
108
|
+
hitSlop={props.hitSlop ?? DEFAULT_HIT_SLOP}
|
|
109
|
+
{...restProps}
|
|
110
|
+
>
|
|
111
|
+
{content}
|
|
112
|
+
</RadioPrimitives.Root>
|
|
113
|
+
</AnimationSettingsProvider>
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
// --------------------------------------------------
|
|
119
|
+
|
|
120
|
+
const RadioIndicator = forwardRef<Animated.View, RadioIndicatorProps>(
|
|
121
|
+
(props, ref) => {
|
|
122
|
+
const { children, className, style, ...restProps } = props;
|
|
123
|
+
|
|
124
|
+
const { isSelected, isInvalid, variant } = useRadio();
|
|
125
|
+
|
|
126
|
+
const indicatorClassName = radioClassNames.indicator({
|
|
127
|
+
variant,
|
|
128
|
+
isSelected,
|
|
129
|
+
isInvalid,
|
|
130
|
+
className,
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
return (
|
|
134
|
+
<AnimatedRadioIndicator
|
|
135
|
+
ref={ref}
|
|
136
|
+
className={indicatorClassName}
|
|
137
|
+
style={[radioStyleSheet.borderCurve, style]}
|
|
138
|
+
{...restProps}
|
|
139
|
+
>
|
|
140
|
+
{children ?? <RadioIndicatorThumb />}
|
|
141
|
+
</AnimatedRadioIndicator>
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
// --------------------------------------------------
|
|
147
|
+
|
|
148
|
+
const RadioIndicatorThumb = forwardRef<View, RadioIndicatorThumbProps>(
|
|
149
|
+
(props, ref) => {
|
|
150
|
+
const {
|
|
151
|
+
className,
|
|
152
|
+
style,
|
|
153
|
+
animation,
|
|
154
|
+
isAnimatedStyleActive = true,
|
|
155
|
+
...restProps
|
|
156
|
+
} = props;
|
|
157
|
+
|
|
158
|
+
const { isSelected } = useRadio();
|
|
159
|
+
|
|
160
|
+
const thumbClassName = radioClassNames.indicatorThumb({
|
|
161
|
+
isSelected,
|
|
162
|
+
className,
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
const { rContainerStyle } = useRadioIndicatorThumbAnimation({
|
|
166
|
+
animation,
|
|
167
|
+
isSelected,
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
const thumbStyle = isAnimatedStyleActive ? [rContainerStyle, style] : style;
|
|
171
|
+
|
|
172
|
+
return (
|
|
173
|
+
<Animated.View
|
|
174
|
+
ref={ref}
|
|
175
|
+
className={thumbClassName}
|
|
176
|
+
style={thumbStyle}
|
|
177
|
+
{...restProps}
|
|
178
|
+
/>
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
// --------------------------------------------------
|
|
184
|
+
|
|
185
|
+
RadioRoot.displayName = DISPLAY_NAME.RADIO_ROOT;
|
|
186
|
+
RadioIndicator.displayName = DISPLAY_NAME.RADIO_INDICATOR;
|
|
187
|
+
RadioIndicatorThumb.displayName = DISPLAY_NAME.RADIO_INDICATOR_THUMB;
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Compound Radio component with sub-components.
|
|
191
|
+
*
|
|
192
|
+
* @component Radio - Individual radio option that operates in two modes:
|
|
193
|
+
* - **Standalone**: Uses `isSelected`/`onSelectedChange` directly.
|
|
194
|
+
* - **Inside RadioGroupItem**: Automatically detects the parent context, derives
|
|
195
|
+
* `isSelected`/`isDisabled`/`isInvalid`/`variant` from it. Pressing selects this
|
|
196
|
+
* item in the group via the group's `onValueChange`.
|
|
197
|
+
*
|
|
198
|
+
* Renders a default indicator if no children are provided. Supports render function
|
|
199
|
+
* children to access state (`isSelected`, `isInvalid`, `isDisabled`).
|
|
200
|
+
*
|
|
201
|
+
* @component Radio.Indicator - Optional container for the radio circle. Renders default thumb
|
|
202
|
+
* if no children provided. Manages the visual selection state.
|
|
203
|
+
*
|
|
204
|
+
* @component Radio.IndicatorThumb - Optional inner circle that appears when selected. Animates
|
|
205
|
+
* scale based on selection. Can be replaced with custom content.
|
|
206
|
+
*
|
|
207
|
+
* @see Full documentation: https://v3.heroui.com/docs/native/components/radio
|
|
208
|
+
*/
|
|
209
|
+
const CompoundRadio = Object.assign(RadioRoot, {
|
|
210
|
+
/** @optional Custom radio indicator container */
|
|
211
|
+
Indicator: RadioIndicator,
|
|
212
|
+
/** @optional Custom indicator thumb that appears when selected */
|
|
213
|
+
IndicatorThumb: RadioIndicatorThumb,
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
export { useRadio };
|
|
217
|
+
export default CompoundRadio;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { ViewProps } from 'react-native';
|
|
2
|
+
import type { AnimatedProps, WithTimingConfig } from 'react-native-reanimated';
|
|
3
|
+
import type {
|
|
4
|
+
Animation,
|
|
5
|
+
AnimationRootDisableAll,
|
|
6
|
+
AnimationValue,
|
|
7
|
+
} from '../../helpers/internal/types';
|
|
8
|
+
import type { RootProps as RadioPrimitiveRootProps } from '../../primitives/radio';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Render function props for Radio children
|
|
12
|
+
*/
|
|
13
|
+
export interface RadioRenderProps {
|
|
14
|
+
/** Whether the radio is selected */
|
|
15
|
+
isSelected: boolean;
|
|
16
|
+
/** Whether the radio is disabled */
|
|
17
|
+
isDisabled: boolean;
|
|
18
|
+
/** Whether the radio is invalid */
|
|
19
|
+
isInvalid: boolean;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Props for the Radio root component.
|
|
24
|
+
*
|
|
25
|
+
* Works in two modes:
|
|
26
|
+
* - **Standalone**: Uses `isSelected` / `onSelectedChange` directly.
|
|
27
|
+
* - **Inside RadioGroup**: Uses `value` prop; `isSelected` is derived from group context.
|
|
28
|
+
*/
|
|
29
|
+
export interface RadioProps extends Omit<RadioPrimitiveRootProps, 'children'> {
|
|
30
|
+
/** Radio content, or a render function */
|
|
31
|
+
children?: React.ReactNode | ((props: RadioRenderProps) => React.ReactNode);
|
|
32
|
+
/** Custom class name */
|
|
33
|
+
className?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Animation configuration for radio
|
|
36
|
+
* - `"disable-all"`: Disable all animations including children (Indicator, IndicatorThumb)
|
|
37
|
+
* - `undefined`: Use default animations
|
|
38
|
+
*/
|
|
39
|
+
animation?: AnimationRootDisableAll;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Props for Radio.Indicator component
|
|
44
|
+
*/
|
|
45
|
+
export interface RadioIndicatorProps extends AnimatedProps<ViewProps> {
|
|
46
|
+
/** Indicator content */
|
|
47
|
+
children?: React.ReactNode;
|
|
48
|
+
/** Custom class name */
|
|
49
|
+
className?: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Animation configuration for RadioIndicatorThumb component
|
|
54
|
+
*/
|
|
55
|
+
export type RadioIndicatorThumbAnimation = Animation<{
|
|
56
|
+
scale?: AnimationValue<{
|
|
57
|
+
/**
|
|
58
|
+
* Scale values [unselected, selected]
|
|
59
|
+
* @default [1.5, 1]
|
|
60
|
+
*/
|
|
61
|
+
value?: [number, number];
|
|
62
|
+
/**
|
|
63
|
+
* Animation timing configuration
|
|
64
|
+
* @default { duration: 300, easing: Easing.out(Easing.ease) }
|
|
65
|
+
*/
|
|
66
|
+
timingConfig?: WithTimingConfig;
|
|
67
|
+
}>;
|
|
68
|
+
}>;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Props for Radio.IndicatorThumb component
|
|
72
|
+
*/
|
|
73
|
+
export interface RadioIndicatorThumbProps
|
|
74
|
+
extends Omit<AnimatedProps<ViewProps>, 'children'> {
|
|
75
|
+
/** Custom class name
|
|
76
|
+
*
|
|
77
|
+
* @note The following style properties are occupied by animations and cannot be set via className:
|
|
78
|
+
* - `transform` (specifically `scale`) - Animated for selection transitions (unselected: 1.5, selected: 1)
|
|
79
|
+
*
|
|
80
|
+
* To customize this property, use the `animation` prop:
|
|
81
|
+
* ```tsx
|
|
82
|
+
* <Radio.IndicatorThumb
|
|
83
|
+
* animation={{
|
|
84
|
+
* scale: { value: [1.5, 1], timingConfig: { duration: 300, easing: Easing.out(Easing.ease) } }
|
|
85
|
+
* }}
|
|
86
|
+
* />
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* To completely disable animated styles and use your own via className or style prop, set `isAnimatedStyleActive={false}`.
|
|
90
|
+
*/
|
|
91
|
+
className?: string;
|
|
92
|
+
/**
|
|
93
|
+
* Animation configuration
|
|
94
|
+
* - `false` or `"disabled"`: Disable all animations
|
|
95
|
+
* - `true` or `undefined`: Use default animations
|
|
96
|
+
* - `object`: Custom animation configuration
|
|
97
|
+
*/
|
|
98
|
+
animation?: RadioIndicatorThumbAnimation;
|
|
99
|
+
/**
|
|
100
|
+
* Whether animated styles (react-native-reanimated) are active
|
|
101
|
+
* When `false`, the animated style is removed and you can implement custom logic
|
|
102
|
+
* This prop should only be used when you want to write custom styling logic instead of the default animated styles
|
|
103
|
+
* @default true
|
|
104
|
+
*/
|
|
105
|
+
isAnimatedStyleActive?: boolean;
|
|
106
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { default as RadioGroup, useRadioGroup } from './radio-group';
|
|
2
|
+
export { useRadioGroupItem } from './radio-group.context';
|
|
3
|
+
export { radioGroupClassNames } from './radio-group.styles';
|
|
4
|
+
export type {
|
|
5
|
+
RadioGroupItemContextValue,
|
|
6
|
+
RadioGroupItemProps,
|
|
7
|
+
RadioGroupItemRenderProps,
|
|
8
|
+
RadioGroupProps,
|
|
9
|
+
} from './radio-group.types';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { useCombinedAnimationDisabledState } from '../../helpers/internal/hooks';
|
|
2
|
+
import type { AnimationRootDisableAll } from '../../helpers/internal/types';
|
|
3
|
+
|
|
4
|
+
// --------------------------------------------------
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Animation hook for RadioGroup root component.
|
|
8
|
+
* Handles cascading animation disabled state to child components.
|
|
9
|
+
*/
|
|
10
|
+
export function useRadioGroupRootAnimation(options: {
|
|
11
|
+
animation: AnimationRootDisableAll | undefined;
|
|
12
|
+
}) {
|
|
13
|
+
const { animation } = options;
|
|
14
|
+
|
|
15
|
+
const isAllAnimationsDisabled = useCombinedAnimationDisabledState(animation);
|
|
16
|
+
|
|
17
|
+
return {
|
|
18
|
+
isAllAnimationsDisabled,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createContext } from '../../helpers/internal/utils';
|
|
2
|
+
import type { RadioGroupItemContextValue } from './radio-group.types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* RadioGroupItem context provider and hook
|
|
6
|
+
* Extracted to separate file to avoid circular dependencies with Label component
|
|
7
|
+
*/
|
|
8
|
+
const [RadioGroupItemProvider, useRadioGroupItem] =
|
|
9
|
+
createContext<RadioGroupItemContextValue>({
|
|
10
|
+
name: 'RadioGroupItemContext',
|
|
11
|
+
strict: false,
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
export { RadioGroupItemProvider, useRadioGroupItem };
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# RadioGroup
|
|
2
|
+
|
|
3
|
+
A set of radio buttons where only one option can be selected at a time.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { RadioGroup } from '@/heroui';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Anatomy
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<RadioGroup>
|
|
15
|
+
<RadioGroup.Item>
|
|
16
|
+
<Label>...</Label>
|
|
17
|
+
<Description>...</Description>
|
|
18
|
+
<Radio>
|
|
19
|
+
<Radio.Indicator>
|
|
20
|
+
<Radio.IndicatorThumb />
|
|
21
|
+
</Radio.Indicator>
|
|
22
|
+
</Radio>
|
|
23
|
+
</RadioGroup.Item>
|
|
24
|
+
<FieldError>...</FieldError>
|
|
25
|
+
</RadioGroup>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- **RadioGroup**: Container that manages the selection state of radio items. Supports both horizontal and vertical orientations.
|
|
29
|
+
- **RadioGroup.Item**: Individual radio option within a RadioGroup. Must be used inside RadioGroup. Handles selection state and renders a default `<Radio />` indicator when text children are provided. Supports render function children to access state (`isSelected`, `isInvalid`, `isDisabled`).
|
|
30
|
+
- **Label**: Optional clickable text label for the radio option. Linked to the radio for accessibility. Use the [Label](../label/label.md) component directly.
|
|
31
|
+
- **Description**: Optional secondary text below the label. Provides additional context about the radio option. Use the [Description](../description/description.md) component directly.
|
|
32
|
+
- **Radio**: The [Radio](../radio/radio.md) component used inside `RadioGroup.Item` to render the radio indicator. Automatically detects the `RadioGroupItem` context and derives `isSelected`, `isDisabled`, `isInvalid`, and `variant` from it.
|
|
33
|
+
- **Radio.Indicator**: Optional container for the radio circle. Renders default thumb if no children provided. Manages the visual selection state. See [Radio](../radio/radio.md) for full API.
|
|
34
|
+
- **Radio.IndicatorThumb**: Optional inner circle that appears when selected. Animates scale based on selection. Can be replaced with custom content. See [Radio](../radio/radio.md) for full API.
|
|
35
|
+
- **FieldError**: Error message displayed when radio group is invalid. Shown with animation below the radio group content. Use the [FieldError](../field-error/field-error.md) component directly.
|
|
36
|
+
|
|
37
|
+
## Usage
|
|
38
|
+
|
|
39
|
+
### Basic Usage
|
|
40
|
+
|
|
41
|
+
RadioGroup with simple string children automatically renders title and indicator.
|
|
42
|
+
|
|
43
|
+
```tsx
|
|
44
|
+
<RadioGroup value={value} onValueChange={setValue}>
|
|
45
|
+
<RadioGroup.Item value="option1">Option 1</RadioGroup.Item>
|
|
46
|
+
<RadioGroup.Item value="option2">Option 2</RadioGroup.Item>
|
|
47
|
+
<RadioGroup.Item value="option3">Option 3</RadioGroup.Item>
|
|
48
|
+
</RadioGroup>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### With Descriptions
|
|
52
|
+
|
|
53
|
+
Add descriptive text below each radio option for additional context.
|
|
54
|
+
|
|
55
|
+
```tsx
|
|
56
|
+
import { RadioGroup, Radio, Label, Description } from '@/heroui';
|
|
57
|
+
import { View } from 'react-native';
|
|
58
|
+
|
|
59
|
+
<RadioGroup value={value} onValueChange={setValue}>
|
|
60
|
+
<RadioGroup.Item value="standard">
|
|
61
|
+
<View>
|
|
62
|
+
<Label>Standard Shipping</Label>
|
|
63
|
+
<Description>Delivered in 5-7 business days</Description>
|
|
64
|
+
</View>
|
|
65
|
+
<Radio />
|
|
66
|
+
</RadioGroup.Item>
|
|
67
|
+
<RadioGroup.Item value="express">
|
|
68
|
+
<View>
|
|
69
|
+
<Label>Express Shipping</Label>
|
|
70
|
+
<Description>Delivered in 2-3 business days</Description>
|
|
71
|
+
</View>
|
|
72
|
+
<Radio />
|
|
73
|
+
</RadioGroup.Item>
|
|
74
|
+
</RadioGroup>;
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Custom Indicator
|
|
78
|
+
|
|
79
|
+
Replace the default indicator thumb with custom content using `Radio` sub-components.
|
|
80
|
+
|
|
81
|
+
```tsx
|
|
82
|
+
import { RadioGroup, Radio, Label } from '@/heroui';
|
|
83
|
+
|
|
84
|
+
<RadioGroup value={value} onValueChange={setValue}>
|
|
85
|
+
<RadioGroup.Item value="custom">
|
|
86
|
+
{({ isSelected }) => (
|
|
87
|
+
<>
|
|
88
|
+
<Label>Custom Option</Label>
|
|
89
|
+
<Radio>
|
|
90
|
+
<Radio.Indicator>
|
|
91
|
+
{isSelected && (
|
|
92
|
+
<Animated.View entering={FadeIn}>
|
|
93
|
+
<Icon name="check" size={12} />
|
|
94
|
+
</Animated.View>
|
|
95
|
+
)}
|
|
96
|
+
</Radio.Indicator>
|
|
97
|
+
</Radio>
|
|
98
|
+
</>
|
|
99
|
+
)}
|
|
100
|
+
</RadioGroup.Item>
|
|
101
|
+
</RadioGroup>;
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### With Render Function
|
|
105
|
+
|
|
106
|
+
Use a render function on RadioGroup.Item to access state and customize the entire content.
|
|
107
|
+
|
|
108
|
+
```tsx
|
|
109
|
+
import { RadioGroup, Radio, Label } from '@/heroui';
|
|
110
|
+
|
|
111
|
+
<RadioGroup value={value} onValueChange={setValue}>
|
|
112
|
+
<RadioGroup.Item value="option1">
|
|
113
|
+
{({ isSelected, isInvalid, isDisabled }) => (
|
|
114
|
+
<>
|
|
115
|
+
<Label>Option 1</Label>
|
|
116
|
+
<Radio>
|
|
117
|
+
<Radio.Indicator>{isSelected && <CustomIcon />}</Radio.Indicator>
|
|
118
|
+
</Radio>
|
|
119
|
+
</>
|
|
120
|
+
)}
|
|
121
|
+
</RadioGroup.Item>
|
|
122
|
+
</RadioGroup>;
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### With Error Message
|
|
126
|
+
|
|
127
|
+
Display validation errors below the radio group.
|
|
128
|
+
|
|
129
|
+
```tsx
|
|
130
|
+
import { RadioGroup, FieldError } from '@/heroui';
|
|
131
|
+
|
|
132
|
+
function RadioGroupWithError() {
|
|
133
|
+
const [value, setValue] = React.useState<string | undefined>(undefined);
|
|
134
|
+
|
|
135
|
+
return (
|
|
136
|
+
<RadioGroup value={value} onValueChange={setValue} isInvalid={!value}>
|
|
137
|
+
<RadioGroup.Item value="agree">I agree to the terms</RadioGroup.Item>
|
|
138
|
+
<RadioGroup.Item value="disagree">I do not agree</RadioGroup.Item>
|
|
139
|
+
<FieldError isInvalid={!value}>
|
|
140
|
+
Please select an option to continue
|
|
141
|
+
</FieldError>
|
|
142
|
+
</RadioGroup>
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Example
|
|
148
|
+
|
|
149
|
+
```tsx
|
|
150
|
+
import {
|
|
151
|
+
Description,
|
|
152
|
+
Label,
|
|
153
|
+
Radio,
|
|
154
|
+
RadioGroup,
|
|
155
|
+
Separator,
|
|
156
|
+
Surface,
|
|
157
|
+
} from '@/heroui';
|
|
158
|
+
import React from 'react';
|
|
159
|
+
import { View } from 'react-native';
|
|
160
|
+
|
|
161
|
+
export default function RadioGroupExample() {
|
|
162
|
+
const [selection, setSelection] = React.useState('desc1');
|
|
163
|
+
|
|
164
|
+
return (
|
|
165
|
+
<Surface className="w-full">
|
|
166
|
+
<RadioGroup value={selection} onValueChange={setSelection}>
|
|
167
|
+
<RadioGroup.Item value="desc1">
|
|
168
|
+
<View>
|
|
169
|
+
<Label>Standard Shipping</Label>
|
|
170
|
+
<Description>Delivered in 5-7 business days</Description>
|
|
171
|
+
</View>
|
|
172
|
+
<Radio />
|
|
173
|
+
</RadioGroup.Item>
|
|
174
|
+
<Separator className="my-1" />
|
|
175
|
+
<RadioGroup.Item value="desc2">
|
|
176
|
+
<View>
|
|
177
|
+
<Label>Express Shipping</Label>
|
|
178
|
+
<Description>Delivered in 2-3 business days</Description>
|
|
179
|
+
</View>
|
|
180
|
+
<Radio />
|
|
181
|
+
</RadioGroup.Item>
|
|
182
|
+
<Separator className="my-1" />
|
|
183
|
+
<RadioGroup.Item value="desc3">
|
|
184
|
+
<View>
|
|
185
|
+
<Label>Overnight Shipping</Label>
|
|
186
|
+
<Description>Delivered next business day</Description>
|
|
187
|
+
</View>
|
|
188
|
+
<Radio />
|
|
189
|
+
</RadioGroup.Item>
|
|
190
|
+
</RadioGroup>
|
|
191
|
+
</Surface>
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
You can find more examples in the [GitHub repository](<https://github.com/heroui-inc/heroui-native/blob/rc/example/src/app/(home)/components/radio-group.tsx>).
|
|
197
|
+
|
|
198
|
+
## API Reference
|
|
199
|
+
|
|
200
|
+
### RadioGroup
|
|
201
|
+
|
|
202
|
+
| prop | type | default | description |
|
|
203
|
+
| --------------- | ---------------------------- | ----------- | ----------------------------------------------------------------------------------------- |
|
|
204
|
+
| `children` | `React.ReactNode` | `undefined` | Radio group content |
|
|
205
|
+
| `value` | `string \| undefined` | `undefined` | The currently selected value of the radio group |
|
|
206
|
+
| `onValueChange` | `(val: string) => void` | `undefined` | Callback fired when the selected value changes |
|
|
207
|
+
| `isDisabled` | `boolean` | `false` | Whether the entire radio group is disabled |
|
|
208
|
+
| `isInvalid` | `boolean` | `false` | Whether the radio group is invalid |
|
|
209
|
+
| `variant` | `'primary' \| 'secondary'` | `undefined` | Variant style for the radio group (inherited by items if not set on item) |
|
|
210
|
+
| `animation` | `"disable-all" \| undefined` | `undefined` | Animation configuration. Use `"disable-all"` to disable all animations including children |
|
|
211
|
+
| `className` | `string` | `undefined` | Custom class name |
|
|
212
|
+
| `...ViewProps` | `ViewProps` | - | All standard React Native View props are supported |
|
|
213
|
+
|
|
214
|
+
### RadioGroup.Item
|
|
215
|
+
|
|
216
|
+
| prop | type | default | description |
|
|
217
|
+
| ------------------- | ---------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------------------- |
|
|
218
|
+
| `children` | `React.ReactNode \| ((props: RadioGroupItemRenderProps) => React.ReactNode)` | `undefined` | Radio item content or render function to customize the radio item |
|
|
219
|
+
| `value` | `string` | `undefined` | The value associated with this radio item |
|
|
220
|
+
| `isDisabled` | `boolean` | `false` | Whether this specific radio item is disabled |
|
|
221
|
+
| `isInvalid` | `boolean` | `false` | Whether the radio item is invalid |
|
|
222
|
+
| `variant` | `'primary' \| 'secondary'` | `'primary'` | Variant style for the radio item |
|
|
223
|
+
| `hitSlop` | `number` | `6` | Hit slop for the pressable area |
|
|
224
|
+
| `className` | `string` | `undefined` | Custom class name |
|
|
225
|
+
| `...PressableProps` | `PressableProps` | - | All standard React Native Pressable props are supported (except disabled) |
|
|
226
|
+
|
|
227
|
+
#### RadioGroupItemRenderProps
|
|
228
|
+
|
|
229
|
+
| prop | type | description |
|
|
230
|
+
| ------------ | --------- | ---------------------------------- |
|
|
231
|
+
| `isSelected` | `boolean` | Whether the radio item is selected |
|
|
232
|
+
| `isInvalid` | `boolean` | Whether the radio item is invalid |
|
|
233
|
+
| `isDisabled` | `boolean` | Whether the radio item is disabled |
|
|
234
|
+
|
|
235
|
+
### Radio (inside RadioGroup.Item)
|
|
236
|
+
|
|
237
|
+
The [Radio](../radio/radio.md) component is used inside `RadioGroup.Item` to render the radio indicator. When placed inside a `RadioGroup.Item`, the Radio component automatically detects the `RadioGroupItem` context and derives `isSelected`, `isDisabled`, `isInvalid`, and `variant` from it — no manual prop passing is needed.
|
|
238
|
+
|
|
239
|
+
Use `<Radio />` for the default indicator, or compose with `Radio.Indicator` and `Radio.IndicatorThumb` for custom styling.
|
|
240
|
+
|
|
241
|
+
**Note:** For complete Radio prop documentation (including `Radio.Indicator` and `Radio.IndicatorThumb`), see the [Radio component documentation](../radio/radio.md).
|
|
242
|
+
|
|
243
|
+
**Note:** For labels, descriptions, and error messages, use the base components directly:
|
|
244
|
+
|
|
245
|
+
- Use [Label](../label/label.md) component for labels
|
|
246
|
+
- Use [Description](../description/description.md) component for descriptions
|
|
247
|
+
- Use [FieldError](../field-error/field-error.md) component for error messages
|
|
248
|
+
|
|
249
|
+
## Hooks
|
|
250
|
+
|
|
251
|
+
### useRadioGroup
|
|
252
|
+
|
|
253
|
+
**Returns:**
|
|
254
|
+
|
|
255
|
+
| Property | Type | Description |
|
|
256
|
+
| --------------- | -------------------------- | ---------------------------------------------- |
|
|
257
|
+
| `value` | `string \| undefined` | Currently selected value |
|
|
258
|
+
| `isDisabled` | `boolean` | Whether the radio group is disabled |
|
|
259
|
+
| `isInvalid` | `boolean` | Whether the radio group is in an invalid state |
|
|
260
|
+
| `variant` | `'primary' \| 'secondary'` | Variant style for the radio group |
|
|
261
|
+
| `onValueChange` | `(value: string) => void` | Function to change the selected value |
|
|
262
|
+
|
|
263
|
+
### useRadioGroupItem
|
|
264
|
+
|
|
265
|
+
**Returns:**
|
|
266
|
+
|
|
267
|
+
| Property | Type | Description |
|
|
268
|
+
| ------------------ | ---------------------------------------------- | ----------------------------------------------------------------------- |
|
|
269
|
+
| `isSelected` | `boolean` | Whether the radio item is selected |
|
|
270
|
+
| `isDisabled` | `boolean \| undefined` | Whether the radio item is disabled |
|
|
271
|
+
| `isInvalid` | `boolean \| undefined` | Whether the radio item is invalid |
|
|
272
|
+
| `variant` | `'primary' \| 'secondary' \| undefined` | Variant style for the radio item |
|
|
273
|
+
| `onSelectedChange` | `((isSelected: boolean) => void) \| undefined` | Callback to change the selection state (selects this item in the group) |
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { tv } from 'tailwind-variants';
|
|
2
|
+
import { combineStyles } from '../../helpers/internal/utils';
|
|
3
|
+
|
|
4
|
+
const root = tv({
|
|
5
|
+
base: 'gap-3',
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
const item = tv({
|
|
9
|
+
base: 'flex-row items-center justify-between gap-3',
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export const radioGroupClassNames = combineStyles({
|
|
13
|
+
root,
|
|
14
|
+
item,
|
|
15
|
+
});
|