@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,50 @@
|
|
|
1
|
+
import { useCombinedAnimationDisabledState } from '../../helpers/internal/hooks';
|
|
2
|
+
import {
|
|
3
|
+
getAnimationValueProperty,
|
|
4
|
+
getIsAnimationDisabledValue,
|
|
5
|
+
getRootAnimationState,
|
|
6
|
+
} from '../../helpers/internal/utils';
|
|
7
|
+
import {
|
|
8
|
+
ENTERING_ANIMATION_CONFIG,
|
|
9
|
+
EXITING_ANIMATION_CONFIG,
|
|
10
|
+
} from './field-error.constants';
|
|
11
|
+
import type { FieldErrorRootAnimation } from './field-error.types';
|
|
12
|
+
|
|
13
|
+
// --------------------------------------------------
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Animation hook for FieldError root component
|
|
17
|
+
* Handles entering and exiting animations for error messages
|
|
18
|
+
*/
|
|
19
|
+
export function useFieldErrorRootAnimation(options: {
|
|
20
|
+
animation: FieldErrorRootAnimation | undefined;
|
|
21
|
+
}) {
|
|
22
|
+
const { animation } = options;
|
|
23
|
+
|
|
24
|
+
const { animationConfig, isAnimationDisabled } =
|
|
25
|
+
getRootAnimationState(animation);
|
|
26
|
+
|
|
27
|
+
const isAllAnimationsDisabled = useCombinedAnimationDisabledState(animation);
|
|
28
|
+
|
|
29
|
+
const isAnimationDisabledValue = getIsAnimationDisabledValue({
|
|
30
|
+
isAnimationDisabled,
|
|
31
|
+
isAllAnimationsDisabled,
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const enteringValue = getAnimationValueProperty({
|
|
35
|
+
animationValue: animationConfig?.entering,
|
|
36
|
+
property: 'value',
|
|
37
|
+
defaultValue: ENTERING_ANIMATION_CONFIG,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
const exitingValue = getAnimationValueProperty({
|
|
41
|
+
animationValue: animationConfig?.exiting,
|
|
42
|
+
property: 'value',
|
|
43
|
+
defaultValue: EXITING_ANIMATION_CONFIG,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
return {
|
|
47
|
+
entering: isAnimationDisabledValue ? undefined : enteringValue,
|
|
48
|
+
exiting: isAnimationDisabledValue ? undefined : exitingValue,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Easing, FadeIn, FadeOut } from 'react-native-reanimated';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Display names for the FieldError component parts
|
|
5
|
+
*/
|
|
6
|
+
export const DISPLAY_NAME = {
|
|
7
|
+
ROOT: 'HeroUINative.FieldError',
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Animation duration for focus/blur transitions
|
|
12
|
+
*/
|
|
13
|
+
export const ANIMATION_DURATION = 150;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Animation easing function for focus/blur transitions
|
|
17
|
+
*/
|
|
18
|
+
export const ANIMATION_EASING = Easing.out(Easing.ease);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Default entering animation configuration
|
|
22
|
+
*/
|
|
23
|
+
export const ENTERING_ANIMATION_CONFIG =
|
|
24
|
+
FadeIn.duration(ANIMATION_DURATION).easing(ANIMATION_EASING);
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Default exiting animation configuration
|
|
28
|
+
*/
|
|
29
|
+
export const EXITING_ANIMATION_CONFIG = FadeOut.duration(
|
|
30
|
+
ANIMATION_DURATION / 1.5
|
|
31
|
+
).easing(ANIMATION_EASING);
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# FieldError
|
|
2
|
+
|
|
3
|
+
Displays validation error message content with smooth animations.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { FieldError } from '@/heroui';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Anatomy
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<FieldError>Error message content</FieldError>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
- **FieldError**: Main container that displays error messages with smooth animations. Accepts string children which are automatically wrapped with Text component, or custom React components for more complex layouts. Controls visibility through the `isInvalid` prop and supports custom entering/exiting animations.
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
### Basic Usage
|
|
22
|
+
|
|
23
|
+
The FieldError component displays error messages when validation fails.
|
|
24
|
+
|
|
25
|
+
```tsx
|
|
26
|
+
<FieldError isInvalid={true}>This field is required</FieldError>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Controlled Visibility
|
|
30
|
+
|
|
31
|
+
Control when the error appears using the `isInvalid` prop. When used inside a form field component (like TextField), FieldError automatically consumes the form-item-state context.
|
|
32
|
+
|
|
33
|
+
```tsx
|
|
34
|
+
const [isInvalid, setIsInvalid] = useState(false);
|
|
35
|
+
|
|
36
|
+
<FieldError isInvalid={isInvalid}>
|
|
37
|
+
Please enter a valid email address
|
|
38
|
+
</FieldError>;
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### With Form Fields
|
|
42
|
+
|
|
43
|
+
FieldError automatically consumes form state from TextField via the form-item-state context.
|
|
44
|
+
|
|
45
|
+
```tsx
|
|
46
|
+
import { FieldError, Label, TextField } from '@/heroui';
|
|
47
|
+
|
|
48
|
+
<TextField isRequired isInvalid={true}>
|
|
49
|
+
<Label>Email</Label>
|
|
50
|
+
<Input placeholder="Enter your email" />
|
|
51
|
+
<FieldError>Please enter a valid email address</FieldError>
|
|
52
|
+
</TextField>;
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Custom Content
|
|
56
|
+
|
|
57
|
+
Pass custom React components as children instead of strings.
|
|
58
|
+
|
|
59
|
+
```tsx
|
|
60
|
+
<FieldError isInvalid={true}>
|
|
61
|
+
<View className="flex-row items-center">
|
|
62
|
+
<Icon name="alert-circle" />
|
|
63
|
+
<Text className="ml-2 text-danger">Invalid input</Text>
|
|
64
|
+
</View>
|
|
65
|
+
</FieldError>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Custom Animations
|
|
69
|
+
|
|
70
|
+
Override default entering and exiting animations using the `animation` prop.
|
|
71
|
+
|
|
72
|
+
```tsx
|
|
73
|
+
import { SlideInDown, SlideOutUp } from 'react-native-reanimated';
|
|
74
|
+
|
|
75
|
+
<FieldError
|
|
76
|
+
isInvalid={true}
|
|
77
|
+
animation={{
|
|
78
|
+
entering: { value: SlideInDown.duration(200) },
|
|
79
|
+
exiting: { value: SlideOutUp.duration(150) },
|
|
80
|
+
}}
|
|
81
|
+
>
|
|
82
|
+
Field validation failed
|
|
83
|
+
</FieldError>;
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Disable animations entirely:
|
|
87
|
+
|
|
88
|
+
```tsx
|
|
89
|
+
<FieldError isInvalid={true} animation={false}>
|
|
90
|
+
Field validation failed
|
|
91
|
+
</FieldError>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Custom Styling
|
|
95
|
+
|
|
96
|
+
Apply custom styles to the container and text elements.
|
|
97
|
+
|
|
98
|
+
```tsx
|
|
99
|
+
<FieldError
|
|
100
|
+
isInvalid={true}
|
|
101
|
+
className="mt-2"
|
|
102
|
+
classNames={{
|
|
103
|
+
container: 'bg-danger/10 p-2 rounded',
|
|
104
|
+
text: 'text-xs font-medium',
|
|
105
|
+
}}
|
|
106
|
+
>
|
|
107
|
+
Password must be at least 8 characters
|
|
108
|
+
</FieldError>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Custom Text Props
|
|
112
|
+
|
|
113
|
+
Pass additional props to the Text component when children is a string.
|
|
114
|
+
|
|
115
|
+
```tsx
|
|
116
|
+
<FieldError
|
|
117
|
+
isInvalid={true}
|
|
118
|
+
textProps={{
|
|
119
|
+
numberOfLines: 1,
|
|
120
|
+
ellipsizeMode: 'tail',
|
|
121
|
+
style: { letterSpacing: 0.5 },
|
|
122
|
+
}}
|
|
123
|
+
>
|
|
124
|
+
This is a very long error message that might need to be truncated
|
|
125
|
+
</FieldError>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Example
|
|
129
|
+
|
|
130
|
+
```tsx
|
|
131
|
+
import { Description, FieldError, Label, TextField } from '@/heroui';
|
|
132
|
+
import { useState } from 'react';
|
|
133
|
+
import { View } from 'react-native';
|
|
134
|
+
|
|
135
|
+
export default function FieldErrorExample() {
|
|
136
|
+
const [email, setEmail] = useState('');
|
|
137
|
+
const [isInvalid, setIsInvalid] = useState(false);
|
|
138
|
+
|
|
139
|
+
const isValidEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
|
|
140
|
+
|
|
141
|
+
const handleBlur = () => {
|
|
142
|
+
setIsInvalid(email !== '' && !isValidEmail);
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
return (
|
|
146
|
+
<View className="p-4">
|
|
147
|
+
<TextField isInvalid={isInvalid}>
|
|
148
|
+
<Label>Email Address</Label>
|
|
149
|
+
<Input
|
|
150
|
+
placeholder="Enter your email"
|
|
151
|
+
value={email}
|
|
152
|
+
onChangeText={setEmail}
|
|
153
|
+
onBlur={handleBlur}
|
|
154
|
+
keyboardType="email-address"
|
|
155
|
+
autoCapitalize="none"
|
|
156
|
+
/>
|
|
157
|
+
<Description>We'll use this to contact you</Description>
|
|
158
|
+
<FieldError>Please enter a valid email address</FieldError>
|
|
159
|
+
</TextField>
|
|
160
|
+
</View>
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
You can find more examples in the [GitHub repository](<https://github.com/heroui-inc/heroui-native/blob/rc/example/src/app/(home)/components/field-error.tsx>).
|
|
166
|
+
|
|
167
|
+
## API Reference
|
|
168
|
+
|
|
169
|
+
### FieldError
|
|
170
|
+
|
|
171
|
+
| prop | type | default | description |
|
|
172
|
+
| ---------------------- | --------------------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
173
|
+
| `children` | `React.ReactNode` | `undefined` | The content of the error field. String children are wrapped with Text |
|
|
174
|
+
| `isInvalid` | `boolean` | `undefined` | Controls the visibility of the error field (overrides form-item-state context). When used inside TextField, automatically consumes form state |
|
|
175
|
+
| `animation` | `FieldErrorRootAnimation` | - | Animation configuration |
|
|
176
|
+
| `className` | `string` | `undefined` | Additional CSS classes for the container |
|
|
177
|
+
| `classNames` | `ElementSlots<FieldErrorSlots>` | `undefined` | Additional CSS classes for different parts of the component |
|
|
178
|
+
| `styles` | `{ container?: ViewStyle; text?: TextStyle }` | `undefined` | Styles for different parts of the field error |
|
|
179
|
+
| `textProps` | `TextProps` | `undefined` | Additional props to pass to the Text component when children is a string |
|
|
180
|
+
| `...AnimatedViewProps` | `AnimatedProps<ViewProps>` | - | All Reanimated Animated.View props are supported |
|
|
181
|
+
|
|
182
|
+
**classNames prop:** `ElementSlots<FieldErrorSlots>` provides type-safe CSS classes for different parts of the field error component. Available slots: `container`, `text`.
|
|
183
|
+
|
|
184
|
+
#### `styles`
|
|
185
|
+
|
|
186
|
+
| prop | type | description |
|
|
187
|
+
| ----------- | ----------- | --------------------------- |
|
|
188
|
+
| `container` | `ViewStyle` | Styles for the container |
|
|
189
|
+
| `text` | `TextStyle` | Styles for the text content |
|
|
190
|
+
|
|
191
|
+
#### FieldErrorRootAnimation
|
|
192
|
+
|
|
193
|
+
Animation configuration for field error root component. Can be:
|
|
194
|
+
|
|
195
|
+
- `false` or `"disabled"`: Disable only root animations
|
|
196
|
+
- `"disable-all"`: Disable all animations including children
|
|
197
|
+
- `true` or `undefined`: Use default animations
|
|
198
|
+
- `object`: Custom animation configuration
|
|
199
|
+
|
|
200
|
+
| prop | type | default | description |
|
|
201
|
+
| ---------------- | ---------------------------------------- | --------------------------------------------------------------------- | ----------------------------------------------- |
|
|
202
|
+
| `state` | `'disabled' \| 'disable-all' \| boolean` | - | Disable animations while customizing properties |
|
|
203
|
+
| `entering.value` | `EntryOrExitLayoutType` | `FadeIn`<br/>`.duration(150)`<br/>`.easing(Easing.out(Easing.ease))` | Custom entering animation for field error |
|
|
204
|
+
| `exiting.value` | `EntryOrExitLayoutType` | `FadeOut`<br/>`.duration(100)`<br/>`.easing(Easing.out(Easing.ease))` | Custom exiting animation for field error |
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { tv } from 'tailwind-variants';
|
|
2
|
+
import { combineStyles } from '../../helpers/internal/utils';
|
|
3
|
+
|
|
4
|
+
const root = tv({
|
|
5
|
+
slots: {
|
|
6
|
+
container: '',
|
|
7
|
+
text: 'text-sm text-danger',
|
|
8
|
+
},
|
|
9
|
+
variants: {
|
|
10
|
+
isInsideField: {
|
|
11
|
+
true: {
|
|
12
|
+
container: 'px-1.5',
|
|
13
|
+
text: '',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export const fieldErrorClassNames = combineStyles({
|
|
20
|
+
root,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
export type FieldErrorSlots = keyof ReturnType<typeof root>;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import Animated from 'react-native-reanimated';
|
|
3
|
+
import { HeroText } from '../../helpers/internal/components';
|
|
4
|
+
import { useFormField } from '../../helpers/internal/contexts';
|
|
5
|
+
import type { ViewRef } from '../../helpers/internal/types';
|
|
6
|
+
import { childrenToString } from '../../helpers/internal/utils';
|
|
7
|
+
import { useFieldErrorRootAnimation } from './field-error.animation';
|
|
8
|
+
import { DISPLAY_NAME } from './field-error.constants';
|
|
9
|
+
import { fieldErrorClassNames } from './field-error.styles';
|
|
10
|
+
import type { FieldErrorRootProps } from './field-error.types';
|
|
11
|
+
|
|
12
|
+
// --------------------------------------------------
|
|
13
|
+
|
|
14
|
+
const FieldErrorRoot = forwardRef<ViewRef, FieldErrorRootProps>(
|
|
15
|
+
(props, ref) => {
|
|
16
|
+
const {
|
|
17
|
+
children,
|
|
18
|
+
className,
|
|
19
|
+
classNames,
|
|
20
|
+
style,
|
|
21
|
+
styles,
|
|
22
|
+
textProps,
|
|
23
|
+
isInvalid: localIsInvalid,
|
|
24
|
+
animation,
|
|
25
|
+
...restProps
|
|
26
|
+
} = props;
|
|
27
|
+
|
|
28
|
+
const formField = useFormField();
|
|
29
|
+
|
|
30
|
+
// Merge form field state with local props (local takes precedence)
|
|
31
|
+
const isInvalid =
|
|
32
|
+
localIsInvalid !== undefined
|
|
33
|
+
? localIsInvalid
|
|
34
|
+
: (formField?.isInvalid ?? false);
|
|
35
|
+
|
|
36
|
+
const isInsideField = formField?.hasFieldPadding ?? false;
|
|
37
|
+
|
|
38
|
+
const { container, text } = fieldErrorClassNames.root({
|
|
39
|
+
isInsideField,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const containerClassName = container({
|
|
43
|
+
className: [className, classNames?.container],
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const textClassName = text({
|
|
47
|
+
className: [classNames?.text, textProps?.className],
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const { entering, exiting } = useFieldErrorRootAnimation({ animation });
|
|
51
|
+
|
|
52
|
+
if (!isInvalid) return null;
|
|
53
|
+
|
|
54
|
+
const stringifiedChildren = childrenToString(children);
|
|
55
|
+
const renderedChildren = stringifiedChildren ? (
|
|
56
|
+
<HeroText className={textClassName} style={styles?.text} {...textProps}>
|
|
57
|
+
{stringifiedChildren}
|
|
58
|
+
</HeroText>
|
|
59
|
+
) : (
|
|
60
|
+
children
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
return (
|
|
64
|
+
<Animated.View
|
|
65
|
+
ref={ref}
|
|
66
|
+
entering={entering}
|
|
67
|
+
exiting={exiting}
|
|
68
|
+
className={containerClassName}
|
|
69
|
+
style={[style, styles?.container]}
|
|
70
|
+
{...restProps}
|
|
71
|
+
>
|
|
72
|
+
{renderedChildren}
|
|
73
|
+
</Animated.View>
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
// --------------------------------------------------
|
|
79
|
+
|
|
80
|
+
FieldErrorRoot.displayName = DISPLAY_NAME.ROOT;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* FieldError component for displaying validation errors
|
|
84
|
+
*
|
|
85
|
+
* @component FieldError - Error message container with entering/exiting animations.
|
|
86
|
+
* Automatically wraps string children with Text component.
|
|
87
|
+
* Hidden when isInvalid is false.
|
|
88
|
+
*/
|
|
89
|
+
const FieldError = FieldErrorRoot;
|
|
90
|
+
|
|
91
|
+
export default FieldError;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { TextProps, TextStyle, ViewProps, ViewStyle } from 'react-native';
|
|
2
|
+
import type {
|
|
3
|
+
AnimatedProps,
|
|
4
|
+
EntryOrExitLayoutType,
|
|
5
|
+
} from 'react-native-reanimated';
|
|
6
|
+
import type {
|
|
7
|
+
AnimationRoot,
|
|
8
|
+
AnimationValue,
|
|
9
|
+
ElementSlots,
|
|
10
|
+
} from '../../helpers/internal/types';
|
|
11
|
+
import type { FieldErrorSlots } from './field-error.styles';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Animation configuration for FieldError root component
|
|
15
|
+
*/
|
|
16
|
+
export type FieldErrorRootAnimation = AnimationRoot<{
|
|
17
|
+
entering?: AnimationValue<{
|
|
18
|
+
/**
|
|
19
|
+
* Custom entering animation for field error
|
|
20
|
+
*/
|
|
21
|
+
value?: EntryOrExitLayoutType;
|
|
22
|
+
}>;
|
|
23
|
+
exiting?: AnimationValue<{
|
|
24
|
+
/**
|
|
25
|
+
* Custom exiting animation for field error
|
|
26
|
+
*/
|
|
27
|
+
value?: EntryOrExitLayoutType;
|
|
28
|
+
}>;
|
|
29
|
+
}>;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Props for the FieldError root component
|
|
33
|
+
*/
|
|
34
|
+
export interface FieldErrorRootProps
|
|
35
|
+
extends Omit<AnimatedProps<ViewProps>, 'entering' | 'exiting'> {
|
|
36
|
+
/**
|
|
37
|
+
* The content of the error field
|
|
38
|
+
* When passed as string, it will be wrapped with Text component
|
|
39
|
+
*/
|
|
40
|
+
children?: React.ReactNode;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Controls the visibility of the error field (overrides context)
|
|
44
|
+
* When false, the field error is hidden
|
|
45
|
+
* @default undefined - uses form-item-state context value
|
|
46
|
+
*/
|
|
47
|
+
isInvalid?: boolean;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Additional CSS class for styling
|
|
51
|
+
*/
|
|
52
|
+
className?: string;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Additional CSS classes for different parts of the component
|
|
56
|
+
*/
|
|
57
|
+
classNames?: ElementSlots<FieldErrorSlots>;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Styles for different parts of the field error
|
|
61
|
+
*/
|
|
62
|
+
styles?: {
|
|
63
|
+
container?: ViewStyle;
|
|
64
|
+
text?: TextStyle;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Additional props to pass to the Text component when children is a string
|
|
69
|
+
*/
|
|
70
|
+
textProps?: TextProps;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Animation configuration for field error
|
|
74
|
+
* - `false` or `"disabled"`: Disable all animations
|
|
75
|
+
* - `true` or `undefined`: Use default animations
|
|
76
|
+
* - `object`: Custom animation configuration
|
|
77
|
+
*/
|
|
78
|
+
animation?: FieldErrorRootAnimation;
|
|
79
|
+
}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Input
|
|
2
|
+
|
|
3
|
+
A text input component with styled border and background for collecting user input.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Input } from '@/heroui';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### Basic Usage
|
|
14
|
+
|
|
15
|
+
Input can be used standalone or within a TextField component.
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
import { Input } from '@/heroui';
|
|
19
|
+
|
|
20
|
+
<Input placeholder="Enter your email" />;
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Within TextField
|
|
24
|
+
|
|
25
|
+
Input works seamlessly with TextField for complete form structure.
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
import { Input, Label, TextField } from '@/heroui';
|
|
29
|
+
|
|
30
|
+
<TextField>
|
|
31
|
+
<Label>Email</Label>
|
|
32
|
+
<Input placeholder="Enter your email" />
|
|
33
|
+
</TextField>;
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### With Validation
|
|
37
|
+
|
|
38
|
+
Display error state when the input is invalid.
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
import { FieldError, Input, Label, TextField } from '@/heroui';
|
|
42
|
+
|
|
43
|
+
<TextField isRequired isInvalid={true}>
|
|
44
|
+
<Label>Email</Label>
|
|
45
|
+
<Input placeholder="Enter your email" />
|
|
46
|
+
<FieldError>Please enter a valid email</FieldError>
|
|
47
|
+
</TextField>;
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### With Local Invalid State Override
|
|
51
|
+
|
|
52
|
+
Override the context's invalid state for the input.
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
import { FieldError, Input, Label, TextField } from '@/heroui';
|
|
56
|
+
|
|
57
|
+
<TextField isInvalid={true}>
|
|
58
|
+
<Label isInvalid={false}>Email</Label>
|
|
59
|
+
<Input placeholder="Enter your email" isInvalid={false} />
|
|
60
|
+
<FieldError>Email format is incorrect</FieldError>
|
|
61
|
+
</TextField>;
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Disabled State
|
|
65
|
+
|
|
66
|
+
Disable the input to prevent interaction.
|
|
67
|
+
|
|
68
|
+
```tsx
|
|
69
|
+
import { Input, Label, TextField } from '@/heroui';
|
|
70
|
+
|
|
71
|
+
<TextField isDisabled>
|
|
72
|
+
<Label>Disabled Field</Label>
|
|
73
|
+
<Input placeholder="Cannot edit" value="Read only value" />
|
|
74
|
+
</TextField>;
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### With Variant
|
|
78
|
+
|
|
79
|
+
Use different variants to style the input based on context.
|
|
80
|
+
|
|
81
|
+
```tsx
|
|
82
|
+
import { Input, Label, TextField } from '@/heroui';
|
|
83
|
+
|
|
84
|
+
<TextField>
|
|
85
|
+
<Label>Primary Variant</Label>
|
|
86
|
+
<Input placeholder="Primary style" variant="primary" />
|
|
87
|
+
</TextField>
|
|
88
|
+
|
|
89
|
+
<TextField>
|
|
90
|
+
<Label>Secondary Variant</Label>
|
|
91
|
+
<Input placeholder="Secondary style" variant="secondary" />
|
|
92
|
+
</TextField>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Custom Styling
|
|
96
|
+
|
|
97
|
+
Customize the input appearance using className.
|
|
98
|
+
|
|
99
|
+
```tsx
|
|
100
|
+
import { Input, Label, TextField } from '@/heroui';
|
|
101
|
+
|
|
102
|
+
<TextField>
|
|
103
|
+
<Label>Custom Styled</Label>
|
|
104
|
+
<Input
|
|
105
|
+
placeholder="Custom colors"
|
|
106
|
+
className="bg-blue-50 border-blue-500 focus:border-blue-700"
|
|
107
|
+
/>
|
|
108
|
+
</TextField>;
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Example
|
|
112
|
+
|
|
113
|
+
```tsx
|
|
114
|
+
import { Ionicons } from '@expo/vector-icons';
|
|
115
|
+
import { Description, Input, Label, TextField } from '@/heroui';
|
|
116
|
+
import { useState } from 'react';
|
|
117
|
+
import { Pressable, View } from 'react-native';
|
|
118
|
+
import { withUniwind } from 'uniwind';
|
|
119
|
+
|
|
120
|
+
const StyledIonicons = withUniwind(Ionicons);
|
|
121
|
+
|
|
122
|
+
export const TextInputContent = () => {
|
|
123
|
+
const [email, setEmail] = useState('');
|
|
124
|
+
const [password, setPassword] = useState('');
|
|
125
|
+
const [isPasswordVisible, setIsPasswordVisible] = useState(false);
|
|
126
|
+
|
|
127
|
+
return (
|
|
128
|
+
<View className="gap-4">
|
|
129
|
+
<TextField isRequired>
|
|
130
|
+
<Label>Email</Label>
|
|
131
|
+
<Input
|
|
132
|
+
placeholder="Enter your email"
|
|
133
|
+
keyboardType="email-address"
|
|
134
|
+
autoCapitalize="none"
|
|
135
|
+
value={email}
|
|
136
|
+
onChangeText={setEmail}
|
|
137
|
+
/>
|
|
138
|
+
<Description>
|
|
139
|
+
We'll never share your email with anyone else.
|
|
140
|
+
</Description>
|
|
141
|
+
</TextField>
|
|
142
|
+
|
|
143
|
+
<TextField isRequired>
|
|
144
|
+
<Label>New password</Label>
|
|
145
|
+
<View className="w-full flex-row items-center">
|
|
146
|
+
<Input
|
|
147
|
+
value={password}
|
|
148
|
+
onChangeText={setPassword}
|
|
149
|
+
className="flex-1 px-10"
|
|
150
|
+
placeholder="Enter your password"
|
|
151
|
+
secureTextEntry={!isPasswordVisible}
|
|
152
|
+
/>
|
|
153
|
+
<StyledIonicons
|
|
154
|
+
name="lock-closed-outline"
|
|
155
|
+
size={16}
|
|
156
|
+
className="absolute left-3.5 text-muted"
|
|
157
|
+
pointerEvents="none"
|
|
158
|
+
/>
|
|
159
|
+
<Pressable
|
|
160
|
+
className="absolute right-4"
|
|
161
|
+
onPress={() => setIsPasswordVisible(!isPasswordVisible)}
|
|
162
|
+
>
|
|
163
|
+
<StyledIonicons
|
|
164
|
+
name={isPasswordVisible ? 'eye-off-outline' : 'eye-outline'}
|
|
165
|
+
size={16}
|
|
166
|
+
className="text-muted"
|
|
167
|
+
/>
|
|
168
|
+
</Pressable>
|
|
169
|
+
</View>
|
|
170
|
+
<Description>Password must be at least 6 characters</Description>
|
|
171
|
+
</TextField>
|
|
172
|
+
</View>
|
|
173
|
+
);
|
|
174
|
+
};
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
You can find more examples in the [GitHub repository](<https://github.com/heroui-inc/heroui-native/blob/rc/example/src/app/(home)/components/input.tsx>).
|
|
178
|
+
|
|
179
|
+
## API Reference
|
|
180
|
+
|
|
181
|
+
### Input
|
|
182
|
+
|
|
183
|
+
| prop | type | default | description |
|
|
184
|
+
| ------------------------- | -------------------------- | --------------------- | ------------------------------------------------------------ |
|
|
185
|
+
| isInvalid | `boolean` | `undefined` | Whether the input is in an invalid state (overrides context) |
|
|
186
|
+
| variant | `'primary' \| 'secondary'` | `'primary'` | Variant style for the input |
|
|
187
|
+
| className | `string` | - | Custom class name for the input |
|
|
188
|
+
| selectionColorClassName | `string` | `"accent-accent"` | Custom className for the selection color |
|
|
189
|
+
| placeholderColorClassName | `string` | `"field-placeholder"` | Custom className for the placeholder text color |
|
|
190
|
+
| animation | `AnimationRoot` | `undefined` | Animation configuration for the input |
|
|
191
|
+
| ...TextInputProps | `TextInputProps` | - | All standard React Native TextInput props are supported |
|
|
192
|
+
|
|
193
|
+
> **Note**: When used within a TextField component, Input automatically consumes form state (isDisabled, isInvalid) from TextField via the form-item-state context.
|