@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,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Svg, { Path } from 'react-native-svg';
|
|
3
|
+
import type { AlertIconProps } from './alert.types';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Success check circle icon for the Alert indicator.
|
|
7
|
+
* Used for the "success" status value.
|
|
8
|
+
*/
|
|
9
|
+
export const SuccessIcon: React.FC<AlertIconProps> = ({ size = 20, color }) => {
|
|
10
|
+
return (
|
|
11
|
+
<Svg
|
|
12
|
+
width={size}
|
|
13
|
+
height={size}
|
|
14
|
+
viewBox="0 0 16 16"
|
|
15
|
+
fill={color}
|
|
16
|
+
accessibilityElementsHidden={true}
|
|
17
|
+
importantForAccessibility="no-hide-descendants"
|
|
18
|
+
>
|
|
19
|
+
<Path
|
|
20
|
+
d="M13.5 8a5.5 5.5 0 1 1-11 0a5.5 5.5 0 0 1 11 0M15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0m-3.9-1.55a.75.75 0 1 0-1.2-.9L7.419 8.858L6.03 7.47a.75.75 0 0 0-1.06 1.06l2 2a.75.75 0 0 0 1.13-.08z"
|
|
21
|
+
fillRule="evenodd"
|
|
22
|
+
clipRule="evenodd"
|
|
23
|
+
/>
|
|
24
|
+
</Svg>
|
|
25
|
+
);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
SuccessIcon.displayName = 'HeroUINative.Alert.SuccessIcon';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Svg, { Path } from 'react-native-svg';
|
|
3
|
+
import type { AlertIconProps } from './alert.types';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Warning triangle icon for the Alert indicator.
|
|
7
|
+
* Used for the "warning" status value.
|
|
8
|
+
*/
|
|
9
|
+
export const WarningIcon: React.FC<AlertIconProps> = ({ size = 20, color }) => {
|
|
10
|
+
return (
|
|
11
|
+
<Svg
|
|
12
|
+
width={size}
|
|
13
|
+
height={size}
|
|
14
|
+
viewBox="0 0 16 16"
|
|
15
|
+
fill={color}
|
|
16
|
+
accessibilityElementsHidden={true}
|
|
17
|
+
importantForAccessibility="no-hide-descendants"
|
|
18
|
+
>
|
|
19
|
+
<Path
|
|
20
|
+
d="M7.134 2.994L2.217 11.5a1 1 0 0 0 .866 1.5h9.834a1 1 0 0 0 .866-1.5L8.866 2.993a1 1 0 0 0-1.732 0m3.03-.75c-.962-1.665-3.366-1.665-4.329 0L.918 10.749c-.963 1.666.24 3.751 2.165 3.751h9.834c1.925 0 3.128-2.085 2.164-3.751zM8 5a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2A.75.75 0 0 1 8 5m1 5.75a1 1 0 1 1-2 0a1 1 0 0 1 2 0"
|
|
21
|
+
fillRule="evenodd"
|
|
22
|
+
clipRule="evenodd"
|
|
23
|
+
/>
|
|
24
|
+
</Svg>
|
|
25
|
+
);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
WarningIcon.displayName = 'HeroUINative.Alert.WarningIcon';
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Easing,
|
|
3
|
+
FadeIn,
|
|
4
|
+
useAnimatedStyle,
|
|
5
|
+
withTiming,
|
|
6
|
+
} from 'react-native-reanimated';
|
|
7
|
+
import { useAnimationSettings } from '../../helpers/internal/contexts';
|
|
8
|
+
import { useCombinedAnimationDisabledState } from '../../helpers/internal/hooks';
|
|
9
|
+
import type { AnimationRootDisableAll } from '../../helpers/internal/types';
|
|
10
|
+
import {
|
|
11
|
+
getAnimationState,
|
|
12
|
+
getAnimationValueMergedConfig,
|
|
13
|
+
getAnimationValueProperty,
|
|
14
|
+
getIsAnimationDisabledValue,
|
|
15
|
+
} from '../../helpers/internal/utils';
|
|
16
|
+
import * as AvatarPrimitives from '../../primitives/avatar';
|
|
17
|
+
import type {
|
|
18
|
+
AvatarFallbackAnimation,
|
|
19
|
+
AvatarImageAnimation,
|
|
20
|
+
} from './avatar.types';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Animation hook for Avatar root component
|
|
24
|
+
* Handles root-level animation configuration and provides context for child components
|
|
25
|
+
*/
|
|
26
|
+
export function useAvatarRootAnimation(options: {
|
|
27
|
+
animation: AnimationRootDisableAll | undefined;
|
|
28
|
+
}) {
|
|
29
|
+
const { animation } = options;
|
|
30
|
+
|
|
31
|
+
const isAllAnimationsDisabled = useCombinedAnimationDisabledState(animation);
|
|
32
|
+
|
|
33
|
+
return {
|
|
34
|
+
isAllAnimationsDisabled,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Animation hook for Avatar Image component
|
|
40
|
+
* Handles opacity animation for the avatar image based on loading status
|
|
41
|
+
*/
|
|
42
|
+
export function useAvatarImageAnimation(options: {
|
|
43
|
+
animation: AvatarImageAnimation | undefined;
|
|
44
|
+
}) {
|
|
45
|
+
const { animation } = options;
|
|
46
|
+
|
|
47
|
+
// Read from global animation context (always available in compound parts)
|
|
48
|
+
const { isAllAnimationsDisabled } = useAnimationSettings();
|
|
49
|
+
|
|
50
|
+
const { status } = AvatarPrimitives.useRootContext();
|
|
51
|
+
|
|
52
|
+
const { animationConfig, isAnimationDisabled } = getAnimationState(animation);
|
|
53
|
+
|
|
54
|
+
const isAnimationDisabledValue = getIsAnimationDisabledValue({
|
|
55
|
+
isAnimationDisabled,
|
|
56
|
+
isAllAnimationsDisabled,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// Opacity animation
|
|
60
|
+
const opacityValue = getAnimationValueProperty({
|
|
61
|
+
animationValue: animationConfig?.opacity,
|
|
62
|
+
property: 'value',
|
|
63
|
+
defaultValue: [0, 1] as [number, number],
|
|
64
|
+
});
|
|
65
|
+
const opacityTimingConfig = getAnimationValueMergedConfig({
|
|
66
|
+
animationValue: animationConfig?.opacity,
|
|
67
|
+
property: 'timingConfig',
|
|
68
|
+
defaultValue: { duration: 200, easing: Easing.in(Easing.ease) },
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
const rImageStyle = useAnimatedStyle(() => {
|
|
72
|
+
const isLoaded = status === 'loaded';
|
|
73
|
+
const targetOpacity = isLoaded ? opacityValue[1] : opacityValue[0];
|
|
74
|
+
|
|
75
|
+
if (isAnimationDisabledValue) {
|
|
76
|
+
return {
|
|
77
|
+
opacity: targetOpacity,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return {
|
|
82
|
+
opacity: withTiming(targetOpacity, opacityTimingConfig),
|
|
83
|
+
};
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
return {
|
|
87
|
+
rImageStyle,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Animation hook for Avatar Fallback component
|
|
93
|
+
* Handles entering animation for the avatar fallback
|
|
94
|
+
*/
|
|
95
|
+
export function useAvatarFallbackAnimation(options: {
|
|
96
|
+
animation: AvatarFallbackAnimation | undefined;
|
|
97
|
+
delayMs?: number;
|
|
98
|
+
}) {
|
|
99
|
+
const { animation, delayMs } = options;
|
|
100
|
+
|
|
101
|
+
// Read from global animation context (always available in compound parts)
|
|
102
|
+
const { isAllAnimationsDisabled } = useAnimationSettings();
|
|
103
|
+
|
|
104
|
+
const { animationConfig, isAnimationDisabled } = getAnimationState(animation);
|
|
105
|
+
|
|
106
|
+
const isAnimationDisabledValue = getIsAnimationDisabledValue({
|
|
107
|
+
isAnimationDisabled,
|
|
108
|
+
isAllAnimationsDisabled,
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
// Entering animation
|
|
112
|
+
const enteringValue = getAnimationValueProperty({
|
|
113
|
+
animationValue: animationConfig?.entering,
|
|
114
|
+
property: 'value',
|
|
115
|
+
defaultValue: FadeIn.duration(200)
|
|
116
|
+
.easing(Easing.in(Easing.ease))
|
|
117
|
+
.delay(delayMs ?? 0),
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
return {
|
|
121
|
+
entering: isAnimationDisabledValue ? undefined : enteringValue,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AvatarSize } from './avatar.types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Display names for Avatar components
|
|
5
|
+
*/
|
|
6
|
+
export const AVATAR_DISPLAY_NAME = {
|
|
7
|
+
ROOT: 'HeroUINative.Avatar',
|
|
8
|
+
IMAGE: 'HeroUINative.Avatar.Image',
|
|
9
|
+
FALLBACK: 'HeroUINative.Avatar.Fallback',
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Default icon sizes for different avatar sizes
|
|
14
|
+
*/
|
|
15
|
+
export const AVATAR_DEFAULT_ICON_SIZE: Record<AvatarSize, number> = {
|
|
16
|
+
sm: 14,
|
|
17
|
+
md: 16,
|
|
18
|
+
lg: 20,
|
|
19
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createContext } from '../../helpers/internal/utils';
|
|
2
|
+
import type { AvatarContextValue } from './avatar.types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Avatar context provider and hook
|
|
6
|
+
* Provides size, color, and animation state to child components
|
|
7
|
+
*/
|
|
8
|
+
export const [AvatarProvider, useInnerAvatarContext] =
|
|
9
|
+
createContext<AvatarContextValue>({
|
|
10
|
+
name: 'AvatarContext',
|
|
11
|
+
});
|
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
# Avatar
|
|
2
|
+
|
|
3
|
+
Displays a user avatar with support for images, text initials, or fallback icons.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Avatar } from '@/heroui';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Anatomy
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<Avatar>
|
|
15
|
+
<Avatar.Image />
|
|
16
|
+
<Avatar.Fallback />
|
|
17
|
+
</Avatar>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
- **Avatar**: Main container that manages avatar display state. Provides size and color context to child components. Supports animation configuration to control all child animations.
|
|
21
|
+
- **Avatar.Image**: Optional image component that displays the avatar image. Handles loading states and errors automatically with opacity-based fade-in animation.
|
|
22
|
+
- **Avatar.Fallback**: Optional fallback component shown when image fails to load or is unavailable. Displays a default person icon when no children are provided. Supports configurable entering animations with delay support.
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
### Basic Usage
|
|
27
|
+
|
|
28
|
+
The Avatar component displays a default person icon when no image or text is provided.
|
|
29
|
+
|
|
30
|
+
```tsx
|
|
31
|
+
<Avatar>
|
|
32
|
+
<Avatar.Fallback />
|
|
33
|
+
</Avatar>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### With Image
|
|
37
|
+
|
|
38
|
+
Display an avatar image with automatic fallback handling.
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
<Avatar>
|
|
42
|
+
<Avatar.Image source={{ uri: 'https://example.com/avatar.jpg' }} />
|
|
43
|
+
<Avatar.Fallback>JD</Avatar.Fallback>
|
|
44
|
+
</Avatar>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### With Text Initials
|
|
48
|
+
|
|
49
|
+
Show text initials as the avatar content.
|
|
50
|
+
|
|
51
|
+
```tsx
|
|
52
|
+
<Avatar>
|
|
53
|
+
<Avatar.Fallback>AB</Avatar.Fallback>
|
|
54
|
+
</Avatar>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### With Custom Icon
|
|
58
|
+
|
|
59
|
+
Provide a custom icon as fallback content.
|
|
60
|
+
|
|
61
|
+
```tsx
|
|
62
|
+
<Avatar>
|
|
63
|
+
<Avatar.Fallback>
|
|
64
|
+
<Ionicons name="person" size={18} />
|
|
65
|
+
</Avatar.Fallback>
|
|
66
|
+
</Avatar>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Sizes
|
|
70
|
+
|
|
71
|
+
Control the avatar size with the size prop.
|
|
72
|
+
|
|
73
|
+
```tsx
|
|
74
|
+
<Avatar size="sm">
|
|
75
|
+
<Avatar.Fallback />
|
|
76
|
+
</Avatar>
|
|
77
|
+
|
|
78
|
+
<Avatar size="md">
|
|
79
|
+
<Avatar.Fallback />
|
|
80
|
+
</Avatar>
|
|
81
|
+
|
|
82
|
+
<Avatar size="lg">
|
|
83
|
+
<Avatar.Fallback />
|
|
84
|
+
</Avatar>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Variants
|
|
88
|
+
|
|
89
|
+
Choose between different visual styles with the `variant` prop.
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
<Avatar variant="default">
|
|
93
|
+
<Avatar.Fallback>DF</Avatar.Fallback>
|
|
94
|
+
</Avatar>
|
|
95
|
+
|
|
96
|
+
<Avatar variant="soft">
|
|
97
|
+
<Avatar.Fallback>SF</Avatar.Fallback>
|
|
98
|
+
</Avatar>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Colors
|
|
102
|
+
|
|
103
|
+
Apply different color variants to the avatar.
|
|
104
|
+
|
|
105
|
+
```tsx
|
|
106
|
+
<Avatar color="default">
|
|
107
|
+
<Avatar.Fallback>DF</Avatar.Fallback>
|
|
108
|
+
</Avatar>
|
|
109
|
+
|
|
110
|
+
<Avatar color="accent">
|
|
111
|
+
<Avatar.Fallback>AC</Avatar.Fallback>
|
|
112
|
+
</Avatar>
|
|
113
|
+
|
|
114
|
+
<Avatar color="success">
|
|
115
|
+
<Avatar.Fallback>SC</Avatar.Fallback>
|
|
116
|
+
</Avatar>
|
|
117
|
+
|
|
118
|
+
<Avatar color="warning">
|
|
119
|
+
<Avatar.Fallback>WR</Avatar.Fallback>
|
|
120
|
+
</Avatar>
|
|
121
|
+
|
|
122
|
+
<Avatar color="danger">
|
|
123
|
+
<Avatar.Fallback>DG</Avatar.Fallback>
|
|
124
|
+
</Avatar>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Delayed Fallback
|
|
128
|
+
|
|
129
|
+
Show fallback after a delay to prevent flashing during image load.
|
|
130
|
+
|
|
131
|
+
```tsx
|
|
132
|
+
<Avatar>
|
|
133
|
+
<Avatar.Image source={{ uri: imageUrl }} />
|
|
134
|
+
<Avatar.Fallback delayMs={600}>NA</Avatar.Fallback>
|
|
135
|
+
</Avatar>
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Custom Image Component
|
|
139
|
+
|
|
140
|
+
Use a custom image component with the asChild prop.
|
|
141
|
+
|
|
142
|
+
```tsx
|
|
143
|
+
import { Image } from 'expo-image';
|
|
144
|
+
|
|
145
|
+
<Avatar>
|
|
146
|
+
<Avatar.Image source={{ uri: imageUrl }} asChild>
|
|
147
|
+
<Image style={{ width: '100%', height: '100%' }} contentFit="cover" />
|
|
148
|
+
</Avatar.Image>
|
|
149
|
+
<Avatar.Fallback>EI</Avatar.Fallback>
|
|
150
|
+
</Avatar>;
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Animation Control
|
|
154
|
+
|
|
155
|
+
Control animations at different levels of the Avatar component.
|
|
156
|
+
|
|
157
|
+
#### Disable All Animations
|
|
158
|
+
|
|
159
|
+
Disable all animations including children from the root component:
|
|
160
|
+
|
|
161
|
+
```tsx
|
|
162
|
+
<Avatar animation="disable-all">
|
|
163
|
+
<Avatar.Image source={{ uri: imageUrl }} />
|
|
164
|
+
<Avatar.Fallback>JD</Avatar.Fallback>
|
|
165
|
+
</Avatar>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
#### Custom Image Animation
|
|
169
|
+
|
|
170
|
+
Customize the image opacity animation:
|
|
171
|
+
|
|
172
|
+
```tsx
|
|
173
|
+
<Avatar>
|
|
174
|
+
<Avatar.Image
|
|
175
|
+
source={{ uri: imageUrl }}
|
|
176
|
+
animation={{
|
|
177
|
+
opacity: {
|
|
178
|
+
value: [0.3, 1],
|
|
179
|
+
timingConfig: { duration: 300 },
|
|
180
|
+
},
|
|
181
|
+
}}
|
|
182
|
+
/>
|
|
183
|
+
<Avatar.Fallback>JD</Avatar.Fallback>
|
|
184
|
+
</Avatar>
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
#### Custom Fallback Animation
|
|
188
|
+
|
|
189
|
+
Customize the fallback entering animation:
|
|
190
|
+
|
|
191
|
+
```tsx
|
|
192
|
+
import { FadeInDown } from 'react-native-reanimated';
|
|
193
|
+
|
|
194
|
+
<Avatar>
|
|
195
|
+
<Avatar.Image source={{ uri: imageUrl }} />
|
|
196
|
+
<Avatar.Fallback
|
|
197
|
+
animation={{
|
|
198
|
+
entering: {
|
|
199
|
+
value: FadeInDown.duration(400),
|
|
200
|
+
},
|
|
201
|
+
}}
|
|
202
|
+
>
|
|
203
|
+
JD
|
|
204
|
+
</Avatar.Fallback>
|
|
205
|
+
</Avatar>;
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
#### Disable Individual Animations
|
|
209
|
+
|
|
210
|
+
Disable animations for specific components:
|
|
211
|
+
|
|
212
|
+
```tsx
|
|
213
|
+
<Avatar>
|
|
214
|
+
<Avatar.Image source={{ uri: imageUrl }} animation={false} />
|
|
215
|
+
<Avatar.Fallback animation="disabled">JD</Avatar.Fallback>
|
|
216
|
+
</Avatar>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Example
|
|
220
|
+
|
|
221
|
+
```tsx
|
|
222
|
+
import { Avatar } from '@/heroui';
|
|
223
|
+
import { View } from 'react-native';
|
|
224
|
+
|
|
225
|
+
export default function AvatarExample() {
|
|
226
|
+
const users = [
|
|
227
|
+
{ id: 1, image: 'https://example.com/user1.jpg', name: 'John Doe' },
|
|
228
|
+
{ id: 2, image: 'https://example.com/user2.jpg', name: 'Jane Smith' },
|
|
229
|
+
{ id: 3, image: 'https://example.com/user3.jpg', name: 'Bob Johnson' },
|
|
230
|
+
];
|
|
231
|
+
|
|
232
|
+
return (
|
|
233
|
+
<View className="flex-row gap-4">
|
|
234
|
+
{users.map((user) => (
|
|
235
|
+
<Avatar key={user.id} size="lg" color="accent">
|
|
236
|
+
<Avatar.Image source={{ uri: user.image }} />
|
|
237
|
+
<Avatar.Fallback>
|
|
238
|
+
{user.name
|
|
239
|
+
.split(' ')
|
|
240
|
+
.map((n) => n[0])
|
|
241
|
+
.join('')}
|
|
242
|
+
</Avatar.Fallback>
|
|
243
|
+
</Avatar>
|
|
244
|
+
))}
|
|
245
|
+
</View>
|
|
246
|
+
);
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
You can find more examples in the [GitHub repository](<https://github.com/heroui-inc/heroui-native/blob/rc/example/src/app/(home)/components/avatar.tsx>).
|
|
251
|
+
|
|
252
|
+
## API Reference
|
|
253
|
+
|
|
254
|
+
### Avatar
|
|
255
|
+
|
|
256
|
+
| prop | type | default | description |
|
|
257
|
+
| -------------- | ------------------------------------------------------------- | ----------- | ----------------------------------------------------------------------------------------- |
|
|
258
|
+
| `children` | `React.ReactNode` | - | Avatar content (Image and/or Fallback components) |
|
|
259
|
+
| `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Size of the avatar |
|
|
260
|
+
| `variant` | `'default' \| 'soft'` | `'default'` | Visual variant of the avatar |
|
|
261
|
+
| `color` | `'default' \| 'accent' \| 'success' \| 'warning' \| 'danger'` | `'accent'` | Color variant of the avatar |
|
|
262
|
+
| `className` | `string` | - | Additional CSS classes to apply |
|
|
263
|
+
| `animation` | `"disable-all"` \| `undefined` | `undefined` | Animation configuration. Use `"disable-all"` to disable all animations including children |
|
|
264
|
+
| `alt` | `string` | - | Alternative text description for accessibility |
|
|
265
|
+
| `...ViewProps` | `ViewProps` | - | All standard React Native View props are supported |
|
|
266
|
+
|
|
267
|
+
### Avatar.Image
|
|
268
|
+
|
|
269
|
+
Props extend different base types depending on the `asChild` prop value:
|
|
270
|
+
|
|
271
|
+
- When `asChild={false}` (default): extends `AnimatedProps<ImageProps>` from React Native Reanimated
|
|
272
|
+
- When `asChild={true}`: extends primitive image props for custom image components
|
|
273
|
+
|
|
274
|
+
**Note:** When using `asChild={true}` with custom image components, the `className` prop may not be applied in some cases depending on the custom component's implementation. Ensure your custom component properly handles style props.
|
|
275
|
+
|
|
276
|
+
| prop | type | default | description |
|
|
277
|
+
| ----------------------- | ---------------------------------------------- | ------- | ------------------------------------------------------------ |
|
|
278
|
+
| `source` | `ImageSourcePropType` | - | Image source (required when `asChild={false}`) |
|
|
279
|
+
| `asChild` | `boolean` | `false` | Whether to use a custom image component as child |
|
|
280
|
+
| `className` | `string` | - | Additional CSS classes to apply |
|
|
281
|
+
| `animation` | `AvatarImageAnimation` | - | Animation configuration |
|
|
282
|
+
| `isAnimatedStyleActive` | `boolean` | `true` | Whether animated styles (react-native-reanimated) are active |
|
|
283
|
+
| `...AnimatedProps` | `AnimatedProps<ImageProps>` or primitive props | - | Additional props based on `asChild` value |
|
|
284
|
+
|
|
285
|
+
#### AvatarImageAnimation
|
|
286
|
+
|
|
287
|
+
Animation configuration for avatar image component. Can be:
|
|
288
|
+
|
|
289
|
+
- `false` or `"disabled"`: Disable all animations
|
|
290
|
+
- `true` or `undefined`: Use default animations
|
|
291
|
+
- `object`: Custom animation configuration
|
|
292
|
+
|
|
293
|
+
| prop | type | default | description |
|
|
294
|
+
| ---------------------- | ----------------------- | --------------------------------------------------- | ---------------------------------------------------- |
|
|
295
|
+
| `state` | `'disabled' \| boolean` | - | Disable animations while customizing properties |
|
|
296
|
+
| `opacity.value` | `[number, number]` | `[0, 1]` | Opacity values [initial, loaded] for image animation |
|
|
297
|
+
| `opacity.timingConfig` | `WithTimingConfig` | `{ duration: 200, easing: Easing.in(Easing.ease) }` | Animation timing configuration |
|
|
298
|
+
|
|
299
|
+
**Note:** Animation is automatically disabled when `asChild={true}`
|
|
300
|
+
|
|
301
|
+
### Avatar.Fallback
|
|
302
|
+
|
|
303
|
+
| prop | type | default | description |
|
|
304
|
+
| ----------------------- | ------------------------------------------------------------- | --------------------- | --------------------------------------------------------------------------------- |
|
|
305
|
+
| `children` | `React.ReactNode` | - | Fallback content (text, icon, or custom element) |
|
|
306
|
+
| `delayMs` | `number` | `0` | Delay in milliseconds before showing the fallback (applied to entering animation) |
|
|
307
|
+
| `color` | `'default' \| 'accent' \| 'success' \| 'warning' \| 'danger'` | inherited from parent | Color variant of the fallback |
|
|
308
|
+
| `className` | `string` | - | Additional CSS classes for the container |
|
|
309
|
+
| `classNames` | `ElementSlots<AvatarFallbackSlots>` | - | Additional CSS classes for different parts |
|
|
310
|
+
| `styles` | `{ container?: ViewStyle; text?: TextStyle }` | - | Styles for different parts of the avatar fallback |
|
|
311
|
+
| `textProps` | `TextProps` | - | Props to pass to Text component when children is a string |
|
|
312
|
+
| `iconProps` | `PersonIconProps` | - | Props to customize the default person icon |
|
|
313
|
+
| `animation` | `AvatarFallbackAnimation` | - | Animation configuration |
|
|
314
|
+
| `...Animated.ViewProps` | `Animated.ViewProps` | - | All Reanimated Animated.View props are supported |
|
|
315
|
+
|
|
316
|
+
**classNames prop:** `ElementSlots<AvatarFallbackSlots>` provides type-safe CSS classes for different parts of the fallback component. Available slots: `container`, `text`.
|
|
317
|
+
|
|
318
|
+
#### `styles`
|
|
319
|
+
|
|
320
|
+
| prop | type | description |
|
|
321
|
+
| ----------- | ----------- | --------------------------- |
|
|
322
|
+
| `container` | `ViewStyle` | Styles for the container |
|
|
323
|
+
| `text` | `TextStyle` | Styles for the text content |
|
|
324
|
+
|
|
325
|
+
#### AvatarFallbackAnimation
|
|
326
|
+
|
|
327
|
+
Animation configuration for avatar fallback component. Can be:
|
|
328
|
+
|
|
329
|
+
- `false` or `"disabled"`: Disable all animations
|
|
330
|
+
- `true` or `undefined`: Use default animations
|
|
331
|
+
- `object`: Custom animation configuration
|
|
332
|
+
|
|
333
|
+
| prop | type | default | description |
|
|
334
|
+
| ---------------- | ----------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------- |
|
|
335
|
+
| `state` | `'disabled' \| boolean` | - | Disable animations while customizing properties |
|
|
336
|
+
| `entering.value` | `EntryOrExitLayoutType` | `FadeIn`<br/>`.duration(200)`<br/>`.easing(Easing.in(Easing.ease))`<br/>`.delay(0)` | Custom entering animation for fallback |
|
|
337
|
+
|
|
338
|
+
#### PersonIconProps
|
|
339
|
+
|
|
340
|
+
| prop | type | description |
|
|
341
|
+
| ------- | -------- | ------------------------------------- |
|
|
342
|
+
| `size` | `number` | Size of the icon in pixels (optional) |
|
|
343
|
+
| `color` | `string` | Color of the icon (optional) |
|
|
344
|
+
|
|
345
|
+
## Hooks
|
|
346
|
+
|
|
347
|
+
### useAvatar Hook
|
|
348
|
+
|
|
349
|
+
Hook to access Avatar primitive root context. Provides access to avatar status.
|
|
350
|
+
|
|
351
|
+
**Note:** The `status` property is particularly useful for adding a skeleton loader while the image is loading.
|
|
352
|
+
|
|
353
|
+
```tsx
|
|
354
|
+
import { Avatar, useAvatar, Skeleton } from '@/heroui';
|
|
355
|
+
|
|
356
|
+
function AvatarWithSkeleton() {
|
|
357
|
+
return (
|
|
358
|
+
<Avatar>
|
|
359
|
+
<Avatar.Image source={{ uri: imageUrl }} />
|
|
360
|
+
<AvatarContent />
|
|
361
|
+
<Avatar.Fallback>JD</Avatar.Fallback>
|
|
362
|
+
</Avatar>
|
|
363
|
+
);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
function AvatarContent() {
|
|
367
|
+
const { status } = useAvatar();
|
|
368
|
+
|
|
369
|
+
if (status === 'loading') {
|
|
370
|
+
return <Skeleton className="absolute inset-0 rounded-full" />;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
return null;
|
|
374
|
+
}
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
| property | type | description |
|
|
378
|
+
| ----------- | ---------------------------------------------------- | ----------------------------------------------------------- |
|
|
379
|
+
| `status` | `'loading' \| 'loaded' \| 'error'` | Current loading state of the avatar image. |
|
|
380
|
+
| `setStatus` | `(status: 'loading' \| 'loaded' \| 'error') => void` | Function to manually set the avatar status (advanced usage) |
|
|
381
|
+
|
|
382
|
+
**Status Values:**
|
|
383
|
+
|
|
384
|
+
- `'loading'`: Image is currently being loaded. Use this state to show a skeleton loader.
|
|
385
|
+
- `'loaded'`: Image has successfully loaded.
|
|
386
|
+
- `'error'`: Image failed to load or source is invalid. The fallback component is automatically shown in this state.
|