@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
package/lib/__templates__/expo/client/heroui/helpers/internal/components/full-window-overlay.tsx
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { Platform } from 'react-native';
|
|
3
|
+
import { FullWindowOverlay as NativeFullWindowOverlay } from 'react-native-screens';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Props for the FullWindowOverlay component
|
|
7
|
+
*
|
|
8
|
+
* @description
|
|
9
|
+
* FullWindowOverlay renders content in a separate native window on iOS,
|
|
10
|
+
* which allows overlays (bottom sheets, dialogs, toasts) to appear above
|
|
11
|
+
* native modals and the keyboard. However, this breaks the React Native
|
|
12
|
+
* element inspector because it attaches to the main window.
|
|
13
|
+
*
|
|
14
|
+
* Set `disableFullWindowOverlay={true}` when you need to use the element
|
|
15
|
+
* inspector during development. Note: when disabled, overlay content will
|
|
16
|
+
* not render above native modals. iOS only; has no effect on Android.
|
|
17
|
+
*/
|
|
18
|
+
export interface FullWindowOverlayProps {
|
|
19
|
+
/**
|
|
20
|
+
* When true, uses a regular View instead of FullWindowOverlay on iOS.
|
|
21
|
+
* Enables element inspector but overlay content won't appear above native modals.
|
|
22
|
+
* @default false
|
|
23
|
+
*/
|
|
24
|
+
disableFullWindowOverlay: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Content to render inside the overlay
|
|
27
|
+
*/
|
|
28
|
+
children: ReactNode;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Wrapper for react-native-screens FullWindowOverlay with optional disable prop.
|
|
33
|
+
*
|
|
34
|
+
* @description
|
|
35
|
+
* On iOS, FullWindowOverlay creates a separate native window for overlay content,
|
|
36
|
+
* which breaks the React Native element inspector. Use `disableFullWindowOverlay`
|
|
37
|
+
* when debugging to render content in the main window instead.
|
|
38
|
+
*/
|
|
39
|
+
export function FullWindowOverlay({
|
|
40
|
+
disableFullWindowOverlay,
|
|
41
|
+
children,
|
|
42
|
+
}: FullWindowOverlayProps) {
|
|
43
|
+
if (Platform.OS !== 'ios' || disableFullWindowOverlay) {
|
|
44
|
+
return <>{children}</>;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return <NativeFullWindowOverlay>{children}</NativeFullWindowOverlay>;
|
|
48
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Text as RNText, type TextProps as RNTextProps } from 'react-native';
|
|
3
|
+
import { useTextComponent } from '../../external/hooks';
|
|
4
|
+
import { cn } from '../../external/utils';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Props for HeroText component
|
|
8
|
+
*/
|
|
9
|
+
export interface HeroTextProps extends RNTextProps {
|
|
10
|
+
/**
|
|
11
|
+
* Additional CSS classes that will be merged with the default 'font-normal' class
|
|
12
|
+
*/
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* HeroText component that automatically applies global text configuration
|
|
18
|
+
* from HeroUINativeProvider.
|
|
19
|
+
*
|
|
20
|
+
* This component is distinct from React Native's Text component and includes
|
|
21
|
+
* a default 'font-normal' className that can be extended via the className prop.
|
|
22
|
+
*
|
|
23
|
+
* Global text props that can be configured:
|
|
24
|
+
* - adjustsFontSizeToFit: Auto-scale text to fit constraints
|
|
25
|
+
* - allowFontScaling: Respect Text Size accessibility settings
|
|
26
|
+
* - maxFontSizeMultiplier: Maximum font scale when allowFontScaling is enabled
|
|
27
|
+
* - minimumFontScale: Minimum scale when adjustsFontSizeToFit is enabled (iOS only)
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```tsx
|
|
31
|
+
* <HeroText>Hello World</HeroText>
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* With custom className:
|
|
36
|
+
* ```tsx
|
|
37
|
+
* <HeroText className="text-lg font-bold">Hello World</HeroText>
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* Global configuration in HeroUINativeProvider:
|
|
42
|
+
* ```tsx
|
|
43
|
+
* <HeroUINativeProvider config={{
|
|
44
|
+
* textProps: {
|
|
45
|
+
* allowFontScaling: false,
|
|
46
|
+
* adjustsFontSizeToFit: false,
|
|
47
|
+
* maxFontSizeMultiplier: 1.5
|
|
48
|
+
* }
|
|
49
|
+
* }}>
|
|
50
|
+
* <App />
|
|
51
|
+
* </HeroUINativeProvider>
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export const HeroText = React.forwardRef<RNText, HeroTextProps>(
|
|
55
|
+
(props, ref) => {
|
|
56
|
+
const { className, ...restProps } = props;
|
|
57
|
+
const { textProps } = useTextComponent();
|
|
58
|
+
|
|
59
|
+
const mergedProps = Object.assign({}, textProps, restProps);
|
|
60
|
+
|
|
61
|
+
return (
|
|
62
|
+
<RNText
|
|
63
|
+
ref={ref}
|
|
64
|
+
className={cn('font-normal', className)}
|
|
65
|
+
{...mergedProps}
|
|
66
|
+
/>
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
HeroText.displayName = 'HeroText';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './animated-check-icon';
|
|
2
|
+
export * from './bottom-sheet-content';
|
|
3
|
+
export * from './bottom-sheet-content-container';
|
|
4
|
+
export * from './check-icon';
|
|
5
|
+
export * from './chevron-down-icon';
|
|
6
|
+
export * from './chevron-right-icon';
|
|
7
|
+
export * from './close-icon';
|
|
8
|
+
export * from './full-window-overlay';
|
|
9
|
+
export * from './hero-text';
|
package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/animation-settings-context.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createContext } from '../utils';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Context value for global animation settings
|
|
5
|
+
*/
|
|
6
|
+
export interface AnimationSettingsContextValue {
|
|
7
|
+
/**
|
|
8
|
+
* Whether all animations should be disabled (cascading from parent)
|
|
9
|
+
*/
|
|
10
|
+
isAllAnimationsDisabled: boolean;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const [AnimationSettingsProvider, useAnimationSettings] =
|
|
14
|
+
createContext<AnimationSettingsContextValue>({
|
|
15
|
+
name: 'AnimationSettingsContext',
|
|
16
|
+
strict: false,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export { AnimationSettingsProvider, useAnimationSettings };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SharedValue } from 'react-native-reanimated';
|
|
2
|
+
import { createContext } from '../utils';
|
|
3
|
+
|
|
4
|
+
const [BottomSheetIsDraggingProvider, useBottomSheetIsDragging] =
|
|
5
|
+
createContext<{
|
|
6
|
+
isDragging: SharedValue<boolean>;
|
|
7
|
+
}>({
|
|
8
|
+
name: 'BottomSheetIsDraggingContext',
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export { BottomSheetIsDraggingProvider, useBottomSheetIsDragging };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createContext } from '../utils';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Combined context value for form field state and layout (shared across form field components).
|
|
5
|
+
*
|
|
6
|
+
* Providers: TextField, SearchField, ControlField, RadioGroup.
|
|
7
|
+
* Consumers: Label, Description, FieldError, Input.
|
|
8
|
+
*/
|
|
9
|
+
export interface FormFieldContextValue {
|
|
10
|
+
/**
|
|
11
|
+
* Whether the form field is required
|
|
12
|
+
*/
|
|
13
|
+
isRequired: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Whether the form field is disabled
|
|
16
|
+
*/
|
|
17
|
+
isDisabled: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Whether the form field is in an invalid state
|
|
20
|
+
*/
|
|
21
|
+
isInvalid: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* When true, child components (Label, Description, FieldError) apply
|
|
24
|
+
* additional horizontal padding (`px-1.5`) for consistent field layout.
|
|
25
|
+
*
|
|
26
|
+
* Set to `true` by container components like TextField and SearchField.
|
|
27
|
+
*/
|
|
28
|
+
hasFieldPadding: boolean;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const [FormFieldProvider, useFormField] = createContext<FormFieldContextValue>({
|
|
32
|
+
name: 'FormFieldContext',
|
|
33
|
+
strict: false,
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
export { FormFieldProvider, useFormField };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './use-augmented-ref';
|
|
2
|
+
export * from './use-bottom-sheet-aware-handlers';
|
|
3
|
+
export * from './use-bottom-sheet-gesture-handlers';
|
|
4
|
+
export * from './use-combined-animation-disabled-state';
|
|
5
|
+
export * from './use-controllable-state';
|
|
6
|
+
export * from './use-dev-info';
|
|
7
|
+
export * from './use-keyboard-status';
|
|
8
|
+
export * from './use-popup-bottom-sheet-content-animation';
|
|
9
|
+
export * from './use-popup-dialog-content-animation';
|
|
10
|
+
export * from './use-popup-overlay-animation';
|
|
11
|
+
export * from './use-popup-popover-content-animation';
|
|
12
|
+
export * from './use-popup-root-animation';
|
|
13
|
+
export * from './use-relative-position';
|
|
14
|
+
export * from './use-resolved-style-property';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useImperativeHandle, useRef } from 'react';
|
|
3
|
+
|
|
4
|
+
interface AugmentRefProps<T> {
|
|
5
|
+
ref: React.Ref<T>;
|
|
6
|
+
methods?: Record<string, (...args: any[]) => any>;
|
|
7
|
+
deps?: any[];
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function useAugmentedRef<T>({
|
|
11
|
+
ref,
|
|
12
|
+
methods,
|
|
13
|
+
deps = [],
|
|
14
|
+
}: AugmentRefProps<T>) {
|
|
15
|
+
const augmentedRef = useRef<T>(null);
|
|
16
|
+
|
|
17
|
+
useImperativeHandle(
|
|
18
|
+
ref,
|
|
19
|
+
() => {
|
|
20
|
+
if (typeof augmentedRef === 'function' || !augmentedRef?.current) {
|
|
21
|
+
return {} as T;
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
...augmentedRef.current,
|
|
25
|
+
...methods,
|
|
26
|
+
};
|
|
27
|
+
},
|
|
28
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
29
|
+
deps
|
|
30
|
+
);
|
|
31
|
+
return augmentedRef;
|
|
32
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { useBottomSheetInternal } from '@gorhom/bottom-sheet';
|
|
2
|
+
import { useCallback } from 'react';
|
|
3
|
+
import {
|
|
4
|
+
findNodeHandle,
|
|
5
|
+
TextInput,
|
|
6
|
+
type BlurEvent,
|
|
7
|
+
type FocusEvent,
|
|
8
|
+
} from 'react-native';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Parameters for the bottom-sheet-aware handlers hook
|
|
12
|
+
*/
|
|
13
|
+
interface UseBottomSheetAwareHandlersParams {
|
|
14
|
+
/** User-provided onFocus handler to preserve */
|
|
15
|
+
onFocus?: ((e: FocusEvent) => void) | undefined;
|
|
16
|
+
/** User-provided onBlur handler to preserve */
|
|
17
|
+
onBlur?: ((e: BlurEvent) => void) | undefined;
|
|
18
|
+
/** Whether automatic bottom sheet keyboard handling is enabled */
|
|
19
|
+
isBottomSheetAware?: boolean;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Internal hook that automatically manages bottom sheet keyboard state
|
|
24
|
+
* when the component is rendered inside a BottomSheet context.
|
|
25
|
+
*
|
|
26
|
+
* Uses `useBottomSheetInternal(true)` (unsafe mode) so it returns `null`
|
|
27
|
+
* instead of throwing when called outside a BottomSheet. When inside a
|
|
28
|
+
* BottomSheet and `isBottomSheetAware` is true, it wraps the provided
|
|
29
|
+
* `onFocus`/`onBlur` handlers with the keyboard state management logic
|
|
30
|
+
* required by `@gorhom/bottom-sheet`.
|
|
31
|
+
*
|
|
32
|
+
* @param params - The handler parameters
|
|
33
|
+
* @returns Merged onFocus and onBlur handlers
|
|
34
|
+
*/
|
|
35
|
+
export function useBottomSheetAwareHandlers({
|
|
36
|
+
onFocus: onFocusProp,
|
|
37
|
+
onBlur: onBlurProp,
|
|
38
|
+
isBottomSheetAware = true,
|
|
39
|
+
}: UseBottomSheetAwareHandlersParams) {
|
|
40
|
+
const bottomSheetContext = useBottomSheetInternal(true);
|
|
41
|
+
|
|
42
|
+
/** Whether the bottom sheet keyboard handling should be active */
|
|
43
|
+
const isActive = isBottomSheetAware && bottomSheetContext !== null;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Handles focus event: notifies the bottom sheet about the keyboard target,
|
|
47
|
+
* then delegates to the user-provided onFocus handler.
|
|
48
|
+
*/
|
|
49
|
+
const onFocus = useCallback(
|
|
50
|
+
(e: FocusEvent) => {
|
|
51
|
+
if (isActive && bottomSheetContext) {
|
|
52
|
+
bottomSheetContext.animatedKeyboardState.set((state) => ({
|
|
53
|
+
...state,
|
|
54
|
+
target: e.nativeEvent.target,
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
onFocusProp?.(e);
|
|
59
|
+
},
|
|
60
|
+
[isActive, bottomSheetContext, onFocusProp]
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Handles blur event: conditionally clears the keyboard target in the
|
|
65
|
+
* bottom sheet state, then delegates to the user-provided onBlur handler.
|
|
66
|
+
*/
|
|
67
|
+
const onBlur = useCallback(
|
|
68
|
+
(e: BlurEvent) => {
|
|
69
|
+
if (isActive && bottomSheetContext) {
|
|
70
|
+
const keyboardState = bottomSheetContext.animatedKeyboardState.get();
|
|
71
|
+
const currentFocusedInput = findNodeHandle(
|
|
72
|
+
TextInput.State.currentlyFocusedInput() as TextInput | null
|
|
73
|
+
);
|
|
74
|
+
const shouldRemoveCurrentTarget =
|
|
75
|
+
keyboardState.target === e.nativeEvent.target;
|
|
76
|
+
const shouldIgnoreBlurEvent =
|
|
77
|
+
currentFocusedInput &&
|
|
78
|
+
bottomSheetContext.textInputNodesRef.current.has(currentFocusedInput);
|
|
79
|
+
|
|
80
|
+
if (shouldRemoveCurrentTarget && !shouldIgnoreBlurEvent) {
|
|
81
|
+
bottomSheetContext.animatedKeyboardState.set((state) => ({
|
|
82
|
+
...state,
|
|
83
|
+
target: undefined,
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
onBlurProp?.(e);
|
|
89
|
+
},
|
|
90
|
+
[isActive, bottomSheetContext, onBlurProp]
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
return { onFocus, onBlur };
|
|
94
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useGestureEventsHandlersDefault,
|
|
3
|
+
type GestureEventHandlerCallbackType,
|
|
4
|
+
type GestureEventsHandlersHookType,
|
|
5
|
+
} from '@gorhom/bottom-sheet';
|
|
6
|
+
import { useBottomSheetIsDragging } from '../contexts/bottom-sheet-is-dragging-context';
|
|
7
|
+
|
|
8
|
+
export const useBottomSheetGestureHandlers: GestureEventsHandlersHookType =
|
|
9
|
+
() => {
|
|
10
|
+
const { isDragging } = useBottomSheetIsDragging();
|
|
11
|
+
|
|
12
|
+
const defaultHandlers = useGestureEventsHandlersDefault();
|
|
13
|
+
|
|
14
|
+
const handleOnStart: GestureEventHandlerCallbackType = (
|
|
15
|
+
source,
|
|
16
|
+
payload
|
|
17
|
+
) => {
|
|
18
|
+
'worklet';
|
|
19
|
+
isDragging.set(true);
|
|
20
|
+
defaultHandlers.handleOnStart(source, payload);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const handleOnChange: GestureEventHandlerCallbackType = (
|
|
24
|
+
source,
|
|
25
|
+
payload
|
|
26
|
+
) => {
|
|
27
|
+
'worklet';
|
|
28
|
+
defaultHandlers.handleOnChange(source, payload);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const handleOnEnd: GestureEventHandlerCallbackType = (source, payload) => {
|
|
32
|
+
'worklet';
|
|
33
|
+
isDragging.set(false);
|
|
34
|
+
defaultHandlers.handleOnEnd(source, payload);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const handleOnFinalize: GestureEventHandlerCallbackType = (
|
|
38
|
+
source,
|
|
39
|
+
payload
|
|
40
|
+
) => {
|
|
41
|
+
'worklet';
|
|
42
|
+
isDragging.set(false);
|
|
43
|
+
defaultHandlers.handleOnFinalize(source, payload);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
return {
|
|
47
|
+
handleOnStart,
|
|
48
|
+
handleOnChange,
|
|
49
|
+
handleOnEnd,
|
|
50
|
+
handleOnFinalize,
|
|
51
|
+
};
|
|
52
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { useGlobalAnimationSettings } from '../../../providers/animation-settings';
|
|
2
|
+
import { useAnimationSettings } from '../contexts/animation-settings-context';
|
|
3
|
+
import type { AnimationRoot } from '../types/animation';
|
|
4
|
+
import {
|
|
5
|
+
getCombinedAnimationDisabledState,
|
|
6
|
+
getRootAnimationState,
|
|
7
|
+
} from '../utils/animation';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Hook to combine global, parent, and own animation disabled states
|
|
11
|
+
*
|
|
12
|
+
* @description
|
|
13
|
+
* This hook combines three sources of animation disabled state:
|
|
14
|
+
* 1. Global state from GlobalAnimationSettingsProvider
|
|
15
|
+
* 2. Parent state from AnimationSettingsContext (component tree cascading)
|
|
16
|
+
* 3. Own state from the component's animation prop
|
|
17
|
+
*
|
|
18
|
+
* Priority: Global > Parent > Own (global wins if enabled)
|
|
19
|
+
*
|
|
20
|
+
* @param animation - Root animation configuration for the component
|
|
21
|
+
* @returns Combined isAllAnimationsDisabled value
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* const isAllAnimationsDisabled = useCombinedAnimationDisabledState(animation);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function useCombinedAnimationDisabledState<
|
|
29
|
+
TConfig extends Record<string, any>,
|
|
30
|
+
>(animation: AnimationRoot<TConfig> | undefined): boolean {
|
|
31
|
+
// Get global animation disabled state
|
|
32
|
+
const { globalIsAllAnimationsDisabled } = useGlobalAnimationSettings();
|
|
33
|
+
|
|
34
|
+
// Read parent animation disabled state from global context
|
|
35
|
+
const parentAnimationSettingsContext = useAnimationSettings();
|
|
36
|
+
const parentIsAllAnimationsDisabled =
|
|
37
|
+
parentAnimationSettingsContext?.isAllAnimationsDisabled;
|
|
38
|
+
|
|
39
|
+
// Get own animation disabled state
|
|
40
|
+
const { isAllAnimationsDisabled: ownIsAllAnimationsDisabled } =
|
|
41
|
+
getRootAnimationState(animation);
|
|
42
|
+
|
|
43
|
+
// Combine global, parent, and own disable-all states (global > parent > own)
|
|
44
|
+
return getCombinedAnimationDisabledState({
|
|
45
|
+
globalIsAllAnimationsDisabled,
|
|
46
|
+
parentIsAllAnimationsDisabled,
|
|
47
|
+
ownIsAllAnimationsDisabled,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
// This project uses code from WorkOS/Radix Primitives.
|
|
2
|
+
// The code is licensed under the MIT License.
|
|
3
|
+
// https://github.com/radix-ui/primitives/tree/main
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
useCallback,
|
|
7
|
+
useEffect,
|
|
8
|
+
useLayoutEffect,
|
|
9
|
+
useMemo,
|
|
10
|
+
useRef,
|
|
11
|
+
useState,
|
|
12
|
+
} from 'react';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Parameters for the useControllableState hook
|
|
16
|
+
*/
|
|
17
|
+
type UseControllableStateParams<T> = {
|
|
18
|
+
/** The controlled value prop */
|
|
19
|
+
prop?: T | undefined;
|
|
20
|
+
/** The default value for uncontrolled mode */
|
|
21
|
+
defaultProp?: T | undefined;
|
|
22
|
+
/** Callback fired when the value changes */
|
|
23
|
+
onChange?: (state: T) => void;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Function type for state setter callbacks
|
|
28
|
+
*/
|
|
29
|
+
type SetStateFn<T> = (prevState?: T) => T;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* A hook that supports both controlled and uncontrolled state.
|
|
33
|
+
* When a value prop is provided, the component is controlled.
|
|
34
|
+
* When no value prop is provided, the component manages its own state.
|
|
35
|
+
*
|
|
36
|
+
* @param params - Configuration object with prop, defaultProp, and onChange
|
|
37
|
+
* @returns A tuple of [value, setValue] similar to useState
|
|
38
|
+
*/
|
|
39
|
+
function useControllableState<T>({
|
|
40
|
+
prop,
|
|
41
|
+
defaultProp,
|
|
42
|
+
onChange = () => {}, // eslint-disable-line @typescript-eslint/no-empty-function
|
|
43
|
+
}: UseControllableStateParams<T>) {
|
|
44
|
+
const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({
|
|
45
|
+
defaultProp,
|
|
46
|
+
onChange,
|
|
47
|
+
});
|
|
48
|
+
const isControlled = prop !== undefined;
|
|
49
|
+
const value = isControlled ? prop : uncontrolledProp;
|
|
50
|
+
const handleChange = useCallbackRef(onChange);
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* When the component transitions from controlled (prop !== undefined)
|
|
54
|
+
* back to uncontrolled (prop === undefined), the internal uncontrolled
|
|
55
|
+
* state may hold a stale value from a previous selection. Reset it so
|
|
56
|
+
* the component correctly reflects the "no value" state.
|
|
57
|
+
*/
|
|
58
|
+
const prevPropRef = useRef(prop);
|
|
59
|
+
useLayoutEffect(() => {
|
|
60
|
+
const wasControlled = prevPropRef.current !== undefined;
|
|
61
|
+
if (wasControlled && prop === undefined) {
|
|
62
|
+
setUncontrolledProp(undefined);
|
|
63
|
+
}
|
|
64
|
+
prevPropRef.current = prop;
|
|
65
|
+
}, [prop, setUncontrolledProp]);
|
|
66
|
+
|
|
67
|
+
const setValue: React.Dispatch<React.SetStateAction<T | undefined>> =
|
|
68
|
+
useCallback(
|
|
69
|
+
(nextValue) => {
|
|
70
|
+
if (isControlled) {
|
|
71
|
+
const setter = nextValue as SetStateFn<T>;
|
|
72
|
+
const val =
|
|
73
|
+
typeof nextValue === 'function' ? setter(prop) : nextValue;
|
|
74
|
+
if (val !== prop) handleChange(val as T);
|
|
75
|
+
} else {
|
|
76
|
+
setUncontrolledProp(nextValue);
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
[isControlled, prop, setUncontrolledProp, handleChange]
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
return [value, setValue] as const;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Internal hook for managing uncontrolled state with change callbacks
|
|
87
|
+
*/
|
|
88
|
+
function useUncontrolledState<T>({
|
|
89
|
+
defaultProp,
|
|
90
|
+
onChange,
|
|
91
|
+
}: Omit<UseControllableStateParams<T>, 'prop'>) {
|
|
92
|
+
const uncontrolledState = useState<T | undefined>(defaultProp);
|
|
93
|
+
const [value] = uncontrolledState;
|
|
94
|
+
const prevValueRef = useRef(value);
|
|
95
|
+
const handleChange = useCallbackRef(onChange);
|
|
96
|
+
|
|
97
|
+
useEffect(() => {
|
|
98
|
+
if (prevValueRef.current !== value) {
|
|
99
|
+
handleChange(value as T);
|
|
100
|
+
prevValueRef.current = value;
|
|
101
|
+
}
|
|
102
|
+
}, [value, prevValueRef, handleChange]);
|
|
103
|
+
|
|
104
|
+
return uncontrolledState;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a
|
|
109
|
+
* prop or avoid re-executing effects when passed as a dependency
|
|
110
|
+
*/
|
|
111
|
+
function useCallbackRef<T extends (...args: any[]) => any>(
|
|
112
|
+
callback: T | undefined
|
|
113
|
+
): T {
|
|
114
|
+
const callbackRef = useRef(callback);
|
|
115
|
+
|
|
116
|
+
useEffect(() => {
|
|
117
|
+
callbackRef.current = callback;
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
// https://github.com/facebook/react/issues/19240
|
|
121
|
+
return useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export { useControllableState };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import type { DevInfoConfig } from '../../../providers/hero-ui-native/types';
|
|
3
|
+
|
|
4
|
+
const LOG_COLOR = {
|
|
5
|
+
BLUE: '\x1b[34m',
|
|
6
|
+
YELLOW: '\x1b[33m',
|
|
7
|
+
RESET: '\x1b[0m',
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Hook that displays developer information messages in the console.
|
|
12
|
+
*
|
|
13
|
+
* @description
|
|
14
|
+
* Logs helpful styling principles and best practices during development.
|
|
15
|
+
* Messages are only shown in __DEV__ mode and can be disabled via the
|
|
16
|
+
* devInfo configuration.
|
|
17
|
+
*
|
|
18
|
+
* @param {DevInfoConfig} [devInfo] - Developer information configuration
|
|
19
|
+
*/
|
|
20
|
+
export function useDevInfo(devInfo?: DevInfoConfig): void {
|
|
21
|
+
const { stylingPrinciples = true } = devInfo || {};
|
|
22
|
+
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (__DEV__ && stylingPrinciples) {
|
|
25
|
+
console.info(
|
|
26
|
+
`${LOG_COLOR.BLUE}HeroUI Native Styling Principles${LOG_COLOR.RESET}\n` +
|
|
27
|
+
`• className: this is your go-to styling solution. Use Tailwind CSS classes via className prop on all components.\n` +
|
|
28
|
+
`• StyleSheet precedence: The style prop (StyleSheet API) has precedence over className when both are provided. This allows you to override Tailwind classes when needed.\n` +
|
|
29
|
+
`• Animated styles: Some style properties are animated using react-native-reanimated and have precedence over className. To identify which styles are animated:\n` +
|
|
30
|
+
` - Hover over className in your IDE - TypeScript definitions show which properties are occupied by animated styles\n` +
|
|
31
|
+
` - Check component documentation - Each component page includes a link to the component's style source\n` +
|
|
32
|
+
`• If styles are occupied by animation, modify them via the animation prop on components that support it.\n` +
|
|
33
|
+
`• To deactivate animated style completely and apply your own styles, use isAnimatedStyleActive prop.\n` +
|
|
34
|
+
`${LOG_COLOR.YELLOW} To disable this message, set config.devInfo.stylingPrinciples to false${LOG_COLOR.RESET}`
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
}, [stylingPrinciples]);
|
|
38
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
import { Keyboard } from 'react-native';
|
|
3
|
+
|
|
4
|
+
export const useKeyboardStatus = () => {
|
|
5
|
+
const [keyboardStatus, setKeyboardStatus] = useState<boolean>(false);
|
|
6
|
+
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
const showSubscription = Keyboard.addListener('keyboardDidShow', () => {
|
|
9
|
+
setKeyboardStatus(true);
|
|
10
|
+
});
|
|
11
|
+
const hideSubscription = Keyboard.addListener('keyboardDidHide', () => {
|
|
12
|
+
setKeyboardStatus(false);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
return () => {
|
|
16
|
+
showSubscription.remove();
|
|
17
|
+
hideSubscription.remove();
|
|
18
|
+
};
|
|
19
|
+
}, [keyboardStatus]);
|
|
20
|
+
|
|
21
|
+
return keyboardStatus;
|
|
22
|
+
};
|