@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,24 @@
|
|
|
1
|
+
import type { SlottableViewProps, ViewRef } from '../../helpers/internal/types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Props for the activity indicator root component.
|
|
5
|
+
*
|
|
6
|
+
* @extends SlottableViewProps Inherits view props
|
|
7
|
+
*/
|
|
8
|
+
export interface RootProps extends SlottableViewProps {
|
|
9
|
+
/** Whether the activity indicator is loading */
|
|
10
|
+
isLoading?: boolean;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** Reference type for the activity indicator root component */
|
|
14
|
+
export type RootRef = ViewRef;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Props for the activity indicator indicator component.
|
|
18
|
+
*
|
|
19
|
+
* @extends SlottableViewProps Inherits view props
|
|
20
|
+
*/
|
|
21
|
+
export interface IndicatorProps extends SlottableViewProps {}
|
|
22
|
+
|
|
23
|
+
/** Reference type for the activity indicator indicator component */
|
|
24
|
+
export type IndicatorRef = ViewRef;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { createContext, forwardRef, useContext, useId } from 'react';
|
|
2
|
+
import { Text as RNText, View } from 'react-native';
|
|
3
|
+
import * as Slot from '../slot';
|
|
4
|
+
import type {
|
|
5
|
+
ContentProps,
|
|
6
|
+
ContentRef,
|
|
7
|
+
DescriptionProps,
|
|
8
|
+
DescriptionRef,
|
|
9
|
+
IndicatorProps,
|
|
10
|
+
IndicatorRef,
|
|
11
|
+
RootContext,
|
|
12
|
+
RootProps,
|
|
13
|
+
RootRef,
|
|
14
|
+
TitleProps,
|
|
15
|
+
TitleRef,
|
|
16
|
+
} from './alert.types';
|
|
17
|
+
|
|
18
|
+
const AlertContext = createContext<(RootContext & { nativeID: string }) | null>(
|
|
19
|
+
null
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Hook to access alert root context.
|
|
24
|
+
* Throws when used outside Alert.Root.
|
|
25
|
+
*/
|
|
26
|
+
function useRootContext(): RootContext & { nativeID: string } {
|
|
27
|
+
const context = useContext(AlertContext);
|
|
28
|
+
if (!context) {
|
|
29
|
+
throw new Error(
|
|
30
|
+
'Alert compound components cannot be rendered outside the Alert component'
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
return context;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// --------------------------------------------------
|
|
37
|
+
|
|
38
|
+
const Root = forwardRef<RootRef, RootProps>(
|
|
39
|
+
({ asChild, id, status = 'default', ...viewProps }, ref) => {
|
|
40
|
+
const generatedId = useId();
|
|
41
|
+
const nativeID = id != null ? String(id) : generatedId;
|
|
42
|
+
|
|
43
|
+
const Component = asChild ? Slot.View : View;
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<AlertContext.Provider value={{ nativeID, status }}>
|
|
47
|
+
<Component
|
|
48
|
+
ref={ref}
|
|
49
|
+
role="alert"
|
|
50
|
+
aria-labelledby={`${nativeID}_label`}
|
|
51
|
+
aria-describedby={`${nativeID}_desc`}
|
|
52
|
+
nativeID={nativeID}
|
|
53
|
+
{...viewProps}
|
|
54
|
+
/>
|
|
55
|
+
</AlertContext.Provider>
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
Root.displayName = 'HeroUINative.Primitive.Alert.Root';
|
|
61
|
+
|
|
62
|
+
// --------------------------------------------------
|
|
63
|
+
|
|
64
|
+
const Indicator = forwardRef<IndicatorRef, IndicatorProps>(
|
|
65
|
+
({ asChild, ...props }, ref) => {
|
|
66
|
+
const Component = asChild ? Slot.View : View;
|
|
67
|
+
|
|
68
|
+
return (
|
|
69
|
+
<Component ref={ref} role="presentation" aria-hidden={true} {...props} />
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
Indicator.displayName = 'HeroUINative.Primitive.Alert.Indicator';
|
|
75
|
+
|
|
76
|
+
// --------------------------------------------------
|
|
77
|
+
|
|
78
|
+
const Content = forwardRef<ContentRef, ContentProps>(
|
|
79
|
+
({ asChild, ...props }, ref) => {
|
|
80
|
+
const Component = asChild ? Slot.View : View;
|
|
81
|
+
|
|
82
|
+
return <Component ref={ref} {...props} />;
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
Content.displayName = 'HeroUINative.Primitive.Alert.Content';
|
|
87
|
+
|
|
88
|
+
// --------------------------------------------------
|
|
89
|
+
|
|
90
|
+
const Title = forwardRef<TitleRef, TitleProps>(({ asChild, ...props }, ref) => {
|
|
91
|
+
const { nativeID } = useRootContext();
|
|
92
|
+
|
|
93
|
+
const Component = asChild ? Slot.Text : RNText;
|
|
94
|
+
|
|
95
|
+
return (
|
|
96
|
+
<Component
|
|
97
|
+
ref={ref}
|
|
98
|
+
role="heading"
|
|
99
|
+
aria-level={2}
|
|
100
|
+
nativeID={`${nativeID}_label`}
|
|
101
|
+
{...props}
|
|
102
|
+
/>
|
|
103
|
+
);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
Title.displayName = 'HeroUINative.Primitive.Alert.Title';
|
|
107
|
+
|
|
108
|
+
// --------------------------------------------------
|
|
109
|
+
|
|
110
|
+
const Description = forwardRef<DescriptionRef, DescriptionProps>(
|
|
111
|
+
({ asChild, ...props }, ref) => {
|
|
112
|
+
const { nativeID } = useRootContext();
|
|
113
|
+
|
|
114
|
+
const Component = asChild ? Slot.Text : RNText;
|
|
115
|
+
|
|
116
|
+
return <Component ref={ref} nativeID={`${nativeID}_desc`} {...props} />;
|
|
117
|
+
}
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
Description.displayName = 'HeroUINative.Primitive.Alert.Description';
|
|
121
|
+
|
|
122
|
+
// --------------------------------------------------
|
|
123
|
+
|
|
124
|
+
export { Content, Description, Indicator, Root, Title, useRootContext };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
SlottableTextProps,
|
|
3
|
+
SlottableViewProps,
|
|
4
|
+
TextRef,
|
|
5
|
+
ViewRef,
|
|
6
|
+
} from '../../helpers/internal/types';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Alert status type controlling the visual treatment and icon displayed.
|
|
10
|
+
*/
|
|
11
|
+
export type AlertStatus =
|
|
12
|
+
| 'default'
|
|
13
|
+
| 'accent'
|
|
14
|
+
| 'success'
|
|
15
|
+
| 'warning'
|
|
16
|
+
| 'danger';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Context for the alert root component.
|
|
20
|
+
* Provides unique identifier for accessibility labelling and the current status.
|
|
21
|
+
*/
|
|
22
|
+
export type RootContext = {
|
|
23
|
+
/** Unique identifier for the alert, used for aria-labelledby and aria-describedby */
|
|
24
|
+
nativeID: string;
|
|
25
|
+
/** Current alert status for sub-component styling */
|
|
26
|
+
status: AlertStatus;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Props for the Alert root component.
|
|
31
|
+
* Extends SlottableViewProps to support the asChild pattern.
|
|
32
|
+
*
|
|
33
|
+
* @extends SlottableViewProps Inherits view props for slot-based composition
|
|
34
|
+
*/
|
|
35
|
+
export type RootProps = SlottableViewProps & {
|
|
36
|
+
/** Unique identifier for the alert. Auto-generated when not provided. */
|
|
37
|
+
id?: string | number;
|
|
38
|
+
/**
|
|
39
|
+
* The status of the alert, controlling its icon and color treatment.
|
|
40
|
+
*
|
|
41
|
+
* @default "default"
|
|
42
|
+
*/
|
|
43
|
+
status?: AlertStatus;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Props for the Alert indicator component.
|
|
48
|
+
* Visual indicator (e.g., icon, status dot) - decorative, hidden from assistive tech.
|
|
49
|
+
*
|
|
50
|
+
* @extends SlottableViewProps Inherits view props for slot-based composition
|
|
51
|
+
*/
|
|
52
|
+
export type IndicatorProps = SlottableViewProps;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Props for the Alert content wrapper component.
|
|
56
|
+
* Container for title and description, provides layout structure.
|
|
57
|
+
*
|
|
58
|
+
* @extends SlottableViewProps Inherits view props for slot-based composition
|
|
59
|
+
*/
|
|
60
|
+
export type ContentProps = SlottableViewProps;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Props for the Alert title component.
|
|
64
|
+
* Primary heading of the alert, used for aria-labelledby association.
|
|
65
|
+
*
|
|
66
|
+
* @extends SlottableTextProps Inherits text props for slot-based composition
|
|
67
|
+
*/
|
|
68
|
+
export type TitleProps = SlottableTextProps;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Props for the Alert description component.
|
|
72
|
+
* Secondary text of the alert, used for aria-describedby association.
|
|
73
|
+
*
|
|
74
|
+
* @extends SlottableTextProps Inherits text props for slot-based composition
|
|
75
|
+
*/
|
|
76
|
+
export type DescriptionProps = SlottableTextProps;
|
|
77
|
+
|
|
78
|
+
/** Reference type for the Alert root component */
|
|
79
|
+
export type RootRef = ViewRef;
|
|
80
|
+
/** Reference type for the Alert indicator component */
|
|
81
|
+
export type IndicatorRef = ViewRef;
|
|
82
|
+
/** Reference type for the Alert content component */
|
|
83
|
+
export type ContentRef = ViewRef;
|
|
84
|
+
/** Reference type for the Alert title component */
|
|
85
|
+
export type TitleRef = TextRef;
|
|
86
|
+
/** Reference type for the Alert description component */
|
|
87
|
+
export type DescriptionRef = TextRef;
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { createContext, forwardRef, useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import {
|
|
4
|
+
type ImageErrorEventData,
|
|
5
|
+
type ImageLoadEvent,
|
|
6
|
+
type NativeSyntheticEvent,
|
|
7
|
+
Image as RNImage,
|
|
8
|
+
View,
|
|
9
|
+
} from 'react-native';
|
|
10
|
+
import * as Slot from '../slot';
|
|
11
|
+
import type {
|
|
12
|
+
AvatarStatus,
|
|
13
|
+
FallbackProps,
|
|
14
|
+
FallbackRef,
|
|
15
|
+
ImageProps,
|
|
16
|
+
ImageRef,
|
|
17
|
+
RootProps,
|
|
18
|
+
RootRef,
|
|
19
|
+
} from './avatar.types';
|
|
20
|
+
import { isSameSource, isValidSource } from './avatar.utils';
|
|
21
|
+
|
|
22
|
+
interface IRootContext extends RootProps {
|
|
23
|
+
status: AvatarStatus;
|
|
24
|
+
setStatus: (status: AvatarStatus) => void;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const RootContext = createContext<IRootContext | null>(null);
|
|
28
|
+
|
|
29
|
+
export function useRootContext() {
|
|
30
|
+
const context = React.useContext(RootContext);
|
|
31
|
+
if (!context) {
|
|
32
|
+
throw new Error(
|
|
33
|
+
'Avatar compound components cannot be rendered outside the Avatar component'
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
return context;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// --------------------------------------------------
|
|
40
|
+
|
|
41
|
+
const Root = forwardRef<RootRef, RootProps>(
|
|
42
|
+
({ asChild, alt, ...viewProps }, ref) => {
|
|
43
|
+
const [status, setStatus] = useState<AvatarStatus>('error');
|
|
44
|
+
|
|
45
|
+
const Component = asChild ? Slot.View : View;
|
|
46
|
+
|
|
47
|
+
const value = useMemo(
|
|
48
|
+
() => ({
|
|
49
|
+
alt,
|
|
50
|
+
status,
|
|
51
|
+
setStatus,
|
|
52
|
+
}),
|
|
53
|
+
[alt, status, setStatus]
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
return (
|
|
57
|
+
<RootContext.Provider value={value}>
|
|
58
|
+
<Component ref={ref} {...viewProps} />
|
|
59
|
+
</RootContext.Provider>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
Root.displayName = 'HeroUINative.Primitive.Avatar.Root';
|
|
65
|
+
|
|
66
|
+
// --------------------------------------------------
|
|
67
|
+
|
|
68
|
+
const Image = forwardRef<ImageRef, ImageProps>(
|
|
69
|
+
(
|
|
70
|
+
{
|
|
71
|
+
asChild,
|
|
72
|
+
onLoad: onLoadProps,
|
|
73
|
+
onError: onErrorProps,
|
|
74
|
+
onLoadingStatusChange,
|
|
75
|
+
...props
|
|
76
|
+
},
|
|
77
|
+
ref
|
|
78
|
+
) => {
|
|
79
|
+
const { alt, setStatus, status } = useRootContext();
|
|
80
|
+
|
|
81
|
+
// Use ref to track the previous source value for comparison
|
|
82
|
+
const previousSourceRef = React.useRef<ImageProps['source'] | undefined>(
|
|
83
|
+
undefined
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
const currentSource = props?.source;
|
|
88
|
+
const previousSource = previousSourceRef.current;
|
|
89
|
+
|
|
90
|
+
// Only reset status if the source actually changed (not just reference)
|
|
91
|
+
const sourceChanged = !isSameSource(currentSource, previousSource);
|
|
92
|
+
|
|
93
|
+
if (sourceChanged) {
|
|
94
|
+
// Update the ref to track the new source
|
|
95
|
+
previousSourceRef.current = currentSource;
|
|
96
|
+
|
|
97
|
+
if (isValidSource(currentSource)) {
|
|
98
|
+
setStatus('loading');
|
|
99
|
+
} else {
|
|
100
|
+
setStatus('error');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Cleanup: only reset to error if component unmounts or source becomes invalid
|
|
105
|
+
return () => {
|
|
106
|
+
// Only reset if source is no longer valid or component is unmounting
|
|
107
|
+
if (!isValidSource(currentSource)) {
|
|
108
|
+
setStatus('error');
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}, [props?.source, setStatus]);
|
|
112
|
+
|
|
113
|
+
const onLoad = React.useCallback(
|
|
114
|
+
(e: ImageLoadEvent) => {
|
|
115
|
+
setStatus('loaded');
|
|
116
|
+
onLoadingStatusChange?.('loaded');
|
|
117
|
+
onLoadProps?.(e);
|
|
118
|
+
},
|
|
119
|
+
[onLoadProps, setStatus, onLoadingStatusChange]
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
const onError = React.useCallback(
|
|
123
|
+
(e: NativeSyntheticEvent<ImageErrorEventData>) => {
|
|
124
|
+
setStatus('error');
|
|
125
|
+
onLoadingStatusChange?.('error');
|
|
126
|
+
onErrorProps?.(e);
|
|
127
|
+
},
|
|
128
|
+
[onErrorProps, setStatus, onLoadingStatusChange]
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
const Component = asChild ? Slot.Image : RNImage;
|
|
132
|
+
|
|
133
|
+
if (status === 'error') {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return (
|
|
138
|
+
<Component
|
|
139
|
+
ref={ref}
|
|
140
|
+
alt={alt}
|
|
141
|
+
onLoad={onLoad}
|
|
142
|
+
onError={onError}
|
|
143
|
+
{...props}
|
|
144
|
+
/>
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
Image.displayName = 'HeroUINative.Primitive.Avatar.Image';
|
|
150
|
+
|
|
151
|
+
// --------------------------------------------------
|
|
152
|
+
|
|
153
|
+
const Fallback = forwardRef<FallbackRef, FallbackProps>(
|
|
154
|
+
({ asChild, ...props }, ref) => {
|
|
155
|
+
const { alt, status } = useRootContext();
|
|
156
|
+
|
|
157
|
+
if (status !== 'error') {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
const Component = asChild ? Slot.View : View;
|
|
162
|
+
|
|
163
|
+
return <Component ref={ref} role={'img'} aria-label={alt} {...props} />;
|
|
164
|
+
}
|
|
165
|
+
);
|
|
166
|
+
|
|
167
|
+
Fallback.displayName = 'HeroUINative.Primitive.Avatar.Fallback';
|
|
168
|
+
|
|
169
|
+
// --------------------------------------------------
|
|
170
|
+
|
|
171
|
+
export { Fallback, Image, Root };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Image, ImageProps as RNImageProps } from 'react-native';
|
|
2
|
+
import type {
|
|
3
|
+
ComponentPropsWithAsChild,
|
|
4
|
+
SlottableViewProps,
|
|
5
|
+
ViewRef,
|
|
6
|
+
} from '../../helpers/internal/types';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Represents the loading state of an avatar image.
|
|
10
|
+
* - 'loading': Image is currently being loaded
|
|
11
|
+
* - 'loaded': Image has successfully loaded
|
|
12
|
+
* - 'error': Image failed to load or source is invalid
|
|
13
|
+
*/
|
|
14
|
+
type AvatarStatus = 'loading' | 'loaded' | 'error';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Props for the Avatar root component.
|
|
18
|
+
* Extends SlottableViewProps to support the asChild pattern.
|
|
19
|
+
*/
|
|
20
|
+
type RootProps = SlottableViewProps & {
|
|
21
|
+
/** Alternative text description for the avatar, used for accessibility */
|
|
22
|
+
alt: string;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Props for the Avatar image component.
|
|
27
|
+
* Extends React Native Image props with additional avatar-specific functionality.
|
|
28
|
+
*/
|
|
29
|
+
type ImageProps = Omit<
|
|
30
|
+
ComponentPropsWithAsChild<typeof Image>,
|
|
31
|
+
'alt' | 'source'
|
|
32
|
+
> & {
|
|
33
|
+
/** Optional child elements to render within the image component */
|
|
34
|
+
children?: React.ReactNode;
|
|
35
|
+
/** Source of the image */
|
|
36
|
+
source: RNImageProps['source'];
|
|
37
|
+
/** Callback fired when the loading status changes */
|
|
38
|
+
onLoadingStatusChange?: (status: AvatarStatus) => void;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Props for the Avatar fallback component.
|
|
43
|
+
* Displayed when the image fails to load or is in error state.
|
|
44
|
+
*/
|
|
45
|
+
type FallbackProps = SlottableViewProps;
|
|
46
|
+
|
|
47
|
+
/** Reference type for the Avatar root component */
|
|
48
|
+
type RootRef = ViewRef;
|
|
49
|
+
/** Reference type for the Avatar image component */
|
|
50
|
+
type ImageRef = React.ComponentRef<typeof Image>;
|
|
51
|
+
/** Reference type for the Avatar fallback component */
|
|
52
|
+
type FallbackRef = ViewRef;
|
|
53
|
+
|
|
54
|
+
export type {
|
|
55
|
+
AvatarStatus,
|
|
56
|
+
FallbackProps,
|
|
57
|
+
FallbackRef,
|
|
58
|
+
ImageProps,
|
|
59
|
+
ImageRef,
|
|
60
|
+
RootProps,
|
|
61
|
+
RootRef,
|
|
62
|
+
};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { ImageSourcePropType } from 'react-native';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Validates whether an image source is valid and can be loaded.
|
|
5
|
+
*
|
|
6
|
+
* @param source - The image source to validate. Can be a require() statement,
|
|
7
|
+
* URI object, or array of URI objects.
|
|
8
|
+
* @returns `true` if the source is valid and contains loadable content, `false` otherwise.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* // Valid sources
|
|
13
|
+
* isValidSource(require('./avatar.png')); // true (returns a number)
|
|
14
|
+
* isValidSource({ uri: 'https://example.com/avatar.jpg' }); // true
|
|
15
|
+
* isValidSource([{ uri: 'https://example.com/avatar.jpg' }]); // true
|
|
16
|
+
*
|
|
17
|
+
* // Invalid sources
|
|
18
|
+
* isValidSource(undefined); // false
|
|
19
|
+
* isValidSource({ uri: '' }); // false
|
|
20
|
+
* isValidSource([{ uri: '' }, { uri: null }]); // false
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export function isValidSource(source?: ImageSourcePropType) {
|
|
24
|
+
if (!source) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
// Using require() for the source returns a number
|
|
28
|
+
if (typeof source === 'number') {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (Array.isArray(source)) {
|
|
33
|
+
return source.some((s) => !!s.uri);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return !!source.uri;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Compares two image sources to determine if they represent the same image.
|
|
41
|
+
* Performs deep comparison of source values, not just reference equality.
|
|
42
|
+
*
|
|
43
|
+
* @param source1 - First image source to compare
|
|
44
|
+
* @param source2 - Second image source to compare
|
|
45
|
+
* @returns `true` if both sources represent the same image, `false` otherwise
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* // Same sources (different object references)
|
|
50
|
+
* isSameSource({ uri: 'https://example.com/img.jpg' }, { uri: 'https://example.com/img.jpg' }); // true
|
|
51
|
+
*
|
|
52
|
+
* // Different sources
|
|
53
|
+
* isSameSource({ uri: 'https://example.com/img1.jpg' }, { uri: 'https://example.com/img2.jpg' }); // false
|
|
54
|
+
*
|
|
55
|
+
* // Same require() values
|
|
56
|
+
* isSameSource(require('./img.png'), require('./img.png')); // true (if same number)
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export function isSameSource(
|
|
60
|
+
source1?: ImageSourcePropType,
|
|
61
|
+
source2?: ImageSourcePropType
|
|
62
|
+
): boolean {
|
|
63
|
+
// Both undefined/null
|
|
64
|
+
if (!source1 && !source2) {
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// One is undefined/null, the other is not
|
|
69
|
+
if (!source1 || !source2) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Both are numbers (require() statements)
|
|
74
|
+
if (typeof source1 === 'number' && typeof source2 === 'number') {
|
|
75
|
+
return source1 === source2;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// One is a number, the other is not
|
|
79
|
+
if (typeof source1 === 'number' || typeof source2 === 'number') {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Both are arrays
|
|
84
|
+
if (Array.isArray(source1) && Array.isArray(source2)) {
|
|
85
|
+
if (source1.length !== source2.length) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
// Compare each element's URI
|
|
89
|
+
return source1.every((s1, index) => {
|
|
90
|
+
const s2 = source2[index];
|
|
91
|
+
return s1?.uri === s2?.uri;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// One is an array, the other is not
|
|
96
|
+
if (Array.isArray(source1) || Array.isArray(source2)) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Both are objects - compare URI values
|
|
101
|
+
return source1.uri === source2.uri;
|
|
102
|
+
}
|