@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.
Files changed (437) hide show
  1. package/lib/__templates__/expo/AGENTS.md +3 -3
  2. package/lib/__templates__/expo/README.md +3 -3
  3. package/lib/__templates__/expo/client/components/Provider.tsx +4 -1
  4. package/lib/__templates__/expo/client/components/Screen.tsx +4 -1
  5. package/lib/__templates__/expo/client/eslint.config.mjs +2 -0
  6. package/lib/__templates__/expo/client/global.css +1 -0
  7. package/lib/__templates__/expo/client/heroui/components/accordion/accordion.animation.ts +178 -0
  8. package/lib/__templates__/expo/client/heroui/components/accordion/accordion.constants.ts +62 -0
  9. package/lib/__templates__/expo/client/heroui/components/accordion/accordion.md +437 -0
  10. package/lib/__templates__/expo/client/heroui/components/accordion/accordion.styles.ts +95 -0
  11. package/lib/__templates__/expo/client/heroui/components/accordion/accordion.tsx +340 -0
  12. package/lib/__templates__/expo/client/heroui/components/accordion/accordion.types.ts +267 -0
  13. package/lib/__templates__/expo/client/heroui/components/accordion/index.ts +17 -0
  14. package/lib/__templates__/expo/client/heroui/components/alert/alert.constants.ts +13 -0
  15. package/lib/__templates__/expo/client/heroui/components/alert/alert.hooks.ts +28 -0
  16. package/lib/__templates__/expo/client/heroui/components/alert/alert.md +263 -0
  17. package/lib/__templates__/expo/client/heroui/components/alert/alert.styles.ts +65 -0
  18. package/lib/__templates__/expo/client/heroui/components/alert/alert.tsx +181 -0
  19. package/lib/__templates__/expo/client/heroui/components/alert/alert.types.ts +99 -0
  20. package/lib/__templates__/expo/client/heroui/components/alert/alert.utils.tsx +25 -0
  21. package/lib/__templates__/expo/client/heroui/components/alert/default-icon.tsx +28 -0
  22. package/lib/__templates__/expo/client/heroui/components/alert/index.ts +15 -0
  23. package/lib/__templates__/expo/client/heroui/components/alert/success-icon.tsx +28 -0
  24. package/lib/__templates__/expo/client/heroui/components/alert/warning-icon.tsx +28 -0
  25. package/lib/__templates__/expo/client/heroui/components/avatar/avatar.animation.ts +123 -0
  26. package/lib/__templates__/expo/client/heroui/components/avatar/avatar.constants.ts +19 -0
  27. package/lib/__templates__/expo/client/heroui/components/avatar/avatar.context.ts +11 -0
  28. package/lib/__templates__/expo/client/heroui/components/avatar/avatar.md +386 -0
  29. package/lib/__templates__/expo/client/heroui/components/avatar/avatar.styles.ts +145 -0
  30. package/lib/__templates__/expo/client/heroui/components/avatar/avatar.tsx +307 -0
  31. package/lib/__templates__/expo/client/heroui/components/avatar/avatar.types.ts +239 -0
  32. package/lib/__templates__/expo/client/heroui/components/avatar/index.ts +13 -0
  33. package/lib/__templates__/expo/client/heroui/components/avatar/person-icon.tsx +23 -0
  34. package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.animation.ts +42 -0
  35. package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.constants.ts +13 -0
  36. package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.md +349 -0
  37. package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.styles.ts +66 -0
  38. package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.tsx +351 -0
  39. package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.types.ts +150 -0
  40. package/lib/__templates__/expo/client/heroui/components/bottom-sheet/index.ts +16 -0
  41. package/lib/__templates__/expo/client/heroui/components/button/button.constants.ts +7 -0
  42. package/lib/__templates__/expo/client/heroui/components/button/button.md +381 -0
  43. package/lib/__templates__/expo/client/heroui/components/button/button.styles.ts +89 -0
  44. package/lib/__templates__/expo/client/heroui/components/button/button.tsx +284 -0
  45. package/lib/__templates__/expo/client/heroui/components/button/button.types.ts +175 -0
  46. package/lib/__templates__/expo/client/heroui/components/button/button.utils.ts +34 -0
  47. package/lib/__templates__/expo/client/heroui/components/button/index.ts +9 -0
  48. package/lib/__templates__/expo/client/heroui/components/card/card.constants.ts +11 -0
  49. package/lib/__templates__/expo/client/heroui/components/card/card.md +186 -0
  50. package/lib/__templates__/expo/client/heroui/components/card/card.styles.ts +35 -0
  51. package/lib/__templates__/expo/client/heroui/components/card/card.tsx +153 -0
  52. package/lib/__templates__/expo/client/heroui/components/card/card.types.ts +77 -0
  53. package/lib/__templates__/expo/client/heroui/components/card/index.ts +10 -0
  54. package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.animation.ts +202 -0
  55. package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.constants.ts +6 -0
  56. package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.md +311 -0
  57. package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.styles.ts +105 -0
  58. package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.tsx +251 -0
  59. package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.types.ts +216 -0
  60. package/lib/__templates__/expo/client/heroui/components/checkbox/index.ts +3 -0
  61. package/lib/__templates__/expo/client/heroui/components/chip/chip.animation.ts +18 -0
  62. package/lib/__templates__/expo/client/heroui/components/chip/chip.constants.ts +7 -0
  63. package/lib/__templates__/expo/client/heroui/components/chip/chip.md +190 -0
  64. package/lib/__templates__/expo/client/heroui/components/chip/chip.styles.ts +234 -0
  65. package/lib/__templates__/expo/client/heroui/components/chip/chip.tsx +125 -0
  66. package/lib/__templates__/expo/client/heroui/components/chip/chip.types.ts +69 -0
  67. package/lib/__templates__/expo/client/heroui/components/chip/index.ts +3 -0
  68. package/lib/__templates__/expo/client/heroui/components/close-button/close-button.constants.ts +6 -0
  69. package/lib/__templates__/expo/client/heroui/components/close-button/close-button.md +109 -0
  70. package/lib/__templates__/expo/client/heroui/components/close-button/close-button.styles.ts +13 -0
  71. package/lib/__templates__/expo/client/heroui/components/close-button/close-button.tsx +57 -0
  72. package/lib/__templates__/expo/client/heroui/components/close-button/close-button.types.ts +30 -0
  73. package/lib/__templates__/expo/client/heroui/components/close-button/index.ts +6 -0
  74. package/lib/__templates__/expo/client/heroui/components/control-field/control-field.animation.ts +18 -0
  75. package/lib/__templates__/expo/client/heroui/components/control-field/control-field.constants.ts +7 -0
  76. package/lib/__templates__/expo/client/heroui/components/control-field/control-field.context.ts +14 -0
  77. package/lib/__templates__/expo/client/heroui/components/control-field/control-field.md +241 -0
  78. package/lib/__templates__/expo/client/heroui/components/control-field/control-field.styles.ts +15 -0
  79. package/lib/__templates__/expo/client/heroui/components/control-field/control-field.tsx +245 -0
  80. package/lib/__templates__/expo/client/heroui/components/control-field/control-field.types.ts +67 -0
  81. package/lib/__templates__/expo/client/heroui/components/control-field/index.ts +6 -0
  82. package/lib/__templates__/expo/client/heroui/components/description/description.animation.ts +53 -0
  83. package/lib/__templates__/expo/client/heroui/components/description/description.constants.ts +30 -0
  84. package/lib/__templates__/expo/client/heroui/components/description/description.md +129 -0
  85. package/lib/__templates__/expo/client/heroui/components/description/description.styles.ts +25 -0
  86. package/lib/__templates__/expo/client/heroui/components/description/description.tsx +81 -0
  87. package/lib/__templates__/expo/client/heroui/components/description/description.types.ts +77 -0
  88. package/lib/__templates__/expo/client/heroui/components/description/index.ts +3 -0
  89. package/lib/__templates__/expo/client/heroui/components/dialog/dialog.animation.ts +9 -0
  90. package/lib/__templates__/expo/client/heroui/components/dialog/dialog.constants.ts +13 -0
  91. package/lib/__templates__/expo/client/heroui/components/dialog/dialog.md +288 -0
  92. package/lib/__templates__/expo/client/heroui/components/dialog/dialog.styles.ts +77 -0
  93. package/lib/__templates__/expo/client/heroui/components/dialog/dialog.tsx +379 -0
  94. package/lib/__templates__/expo/client/heroui/components/dialog/dialog.types.ts +199 -0
  95. package/lib/__templates__/expo/client/heroui/components/dialog/index.ts +12 -0
  96. package/lib/__templates__/expo/client/heroui/components/field-error/field-error.animation.ts +50 -0
  97. package/lib/__templates__/expo/client/heroui/components/field-error/field-error.constants.ts +31 -0
  98. package/lib/__templates__/expo/client/heroui/components/field-error/field-error.md +204 -0
  99. package/lib/__templates__/expo/client/heroui/components/field-error/field-error.styles.ts +23 -0
  100. package/lib/__templates__/expo/client/heroui/components/field-error/field-error.tsx +91 -0
  101. package/lib/__templates__/expo/client/heroui/components/field-error/field-error.types.ts +79 -0
  102. package/lib/__templates__/expo/client/heroui/components/field-error/index.ts +3 -0
  103. package/lib/__templates__/expo/client/heroui/components/input/index.ts +3 -0
  104. package/lib/__templates__/expo/client/heroui/components/input/input.constants.ts +6 -0
  105. package/lib/__templates__/expo/client/heroui/components/input/input.md +193 -0
  106. package/lib/__templates__/expo/client/heroui/components/input/input.styles.ts +51 -0
  107. package/lib/__templates__/expo/client/heroui/components/input/input.tsx +96 -0
  108. package/lib/__templates__/expo/client/heroui/components/input/input.types.ts +44 -0
  109. package/lib/__templates__/expo/client/heroui/components/input-group/index.ts +9 -0
  110. package/lib/__templates__/expo/client/heroui/components/input-group/input-group.animation.ts +14 -0
  111. package/lib/__templates__/expo/client/heroui/components/input-group/input-group.constants.ts +6 -0
  112. package/lib/__templates__/expo/client/heroui/components/input-group/input-group.md +197 -0
  113. package/lib/__templates__/expo/client/heroui/components/input-group/input-group.styles.ts +31 -0
  114. package/lib/__templates__/expo/client/heroui/components/input-group/input-group.tsx +239 -0
  115. package/lib/__templates__/expo/client/heroui/components/input-group/input-group.types.ts +98 -0
  116. package/lib/__templates__/expo/client/heroui/components/input-otp/index.ts +9 -0
  117. package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.animation.ts +199 -0
  118. package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.constants.ts +12 -0
  119. package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.md +376 -0
  120. package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.styles.ts +68 -0
  121. package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.tsx +414 -0
  122. package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.types.ts +275 -0
  123. package/lib/__templates__/expo/client/heroui/components/label/index.ts +3 -0
  124. package/lib/__templates__/expo/client/heroui/components/label/label.animation.ts +18 -0
  125. package/lib/__templates__/expo/client/heroui/components/label/label.constants.ts +7 -0
  126. package/lib/__templates__/expo/client/heroui/components/label/label.md +187 -0
  127. package/lib/__templates__/expo/client/heroui/components/label/label.styles.ts +44 -0
  128. package/lib/__templates__/expo/client/heroui/components/label/label.tsx +172 -0
  129. package/lib/__templates__/expo/client/heroui/components/label/label.types.ts +86 -0
  130. package/lib/__templates__/expo/client/heroui/components/list-group/index.ts +17 -0
  131. package/lib/__templates__/expo/client/heroui/components/list-group/list-group.constants.ts +17 -0
  132. package/lib/__templates__/expo/client/heroui/components/list-group/list-group.md +387 -0
  133. package/lib/__templates__/expo/client/heroui/components/list-group/list-group.styles.ts +40 -0
  134. package/lib/__templates__/expo/client/heroui/components/list-group/list-group.tsx +206 -0
  135. package/lib/__templates__/expo/client/heroui/components/list-group/list-group.types.ts +132 -0
  136. package/lib/__templates__/expo/client/heroui/components/menu/index.ts +38 -0
  137. package/lib/__templates__/expo/client/heroui/components/menu/menu.animation.ts +121 -0
  138. package/lib/__templates__/expo/client/heroui/components/menu/menu.constants.ts +37 -0
  139. package/lib/__templates__/expo/client/heroui/components/menu/menu.md +620 -0
  140. package/lib/__templates__/expo/client/heroui/components/menu/menu.styles.ts +107 -0
  141. package/lib/__templates__/expo/client/heroui/components/menu/menu.tsx +664 -0
  142. package/lib/__templates__/expo/client/heroui/components/menu/menu.types.ts +394 -0
  143. package/lib/__templates__/expo/client/heroui/components/popover/arrow-svg.tsx +180 -0
  144. package/lib/__templates__/expo/client/heroui/components/popover/index.ts +18 -0
  145. package/lib/__templates__/expo/client/heroui/components/popover/popover.animation.ts +9 -0
  146. package/lib/__templates__/expo/client/heroui/components/popover/popover.constants.ts +34 -0
  147. package/lib/__templates__/expo/client/heroui/components/popover/popover.md +508 -0
  148. package/lib/__templates__/expo/client/heroui/components/popover/popover.styles.ts +98 -0
  149. package/lib/__templates__/expo/client/heroui/components/popover/popover.tsx +624 -0
  150. package/lib/__templates__/expo/client/heroui/components/popover/popover.types.ts +290 -0
  151. package/lib/__templates__/expo/client/heroui/components/pressable-feedback/index.ts +3 -0
  152. package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.animation.ts +450 -0
  153. package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.constants.ts +12 -0
  154. package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.md +328 -0
  155. package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.styles.ts +84 -0
  156. package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.tsx +330 -0
  157. package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.types.ts +386 -0
  158. package/lib/__templates__/expo/client/heroui/components/radio/index.ts +9 -0
  159. package/lib/__templates__/expo/client/heroui/components/radio/radio.animation.ts +92 -0
  160. package/lib/__templates__/expo/client/heroui/components/radio/radio.constants.ts +11 -0
  161. package/lib/__templates__/expo/client/heroui/components/radio/radio.md +339 -0
  162. package/lib/__templates__/expo/client/heroui/components/radio/radio.styles.ts +80 -0
  163. package/lib/__templates__/expo/client/heroui/components/radio/radio.tsx +217 -0
  164. package/lib/__templates__/expo/client/heroui/components/radio/radio.types.ts +106 -0
  165. package/lib/__templates__/expo/client/heroui/components/radio-group/index.ts +9 -0
  166. package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.animation.ts +20 -0
  167. package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.constants.ts +7 -0
  168. package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.context.ts +14 -0
  169. package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.md +273 -0
  170. package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.styles.ts +15 -0
  171. package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.tsx +220 -0
  172. package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.types.ts +64 -0
  173. package/lib/__templates__/expo/client/heroui/components/scroll-shadow/index.ts +7 -0
  174. package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.animation.ts +132 -0
  175. package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.constants.ts +21 -0
  176. package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.md +206 -0
  177. package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.styles.ts +52 -0
  178. package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.tsx +262 -0
  179. package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.types.ts +121 -0
  180. package/lib/__templates__/expo/client/heroui/components/search-field/index.ts +17 -0
  181. package/lib/__templates__/expo/client/heroui/components/search-field/search-field.animation.ts +18 -0
  182. package/lib/__templates__/expo/client/heroui/components/search-field/search-field.constants.ts +10 -0
  183. package/lib/__templates__/expo/client/heroui/components/search-field/search-field.md +231 -0
  184. package/lib/__templates__/expo/client/heroui/components/search-field/search-field.styles.ts +35 -0
  185. package/lib/__templates__/expo/client/heroui/components/search-field/search-field.tsx +253 -0
  186. package/lib/__templates__/expo/client/heroui/components/search-field/search-field.types.ts +160 -0
  187. package/lib/__templates__/expo/client/heroui/components/search-field/search-icon.tsx +37 -0
  188. package/lib/__templates__/expo/client/heroui/components/select/index.ts +28 -0
  189. package/lib/__templates__/expo/client/heroui/components/select/select.animation.ts +92 -0
  190. package/lib/__templates__/expo/client/heroui/components/select/select.constants.ts +53 -0
  191. package/lib/__templates__/expo/client/heroui/components/select/select.md +796 -0
  192. package/lib/__templates__/expo/client/heroui/components/select/select.styles.ts +149 -0
  193. package/lib/__templates__/expo/client/heroui/components/select/select.tsx +828 -0
  194. package/lib/__templates__/expo/client/heroui/components/select/select.types.ts +438 -0
  195. package/lib/__templates__/expo/client/heroui/components/separator/index.ts +7 -0
  196. package/lib/__templates__/expo/client/heroui/components/separator/separator.constants.ts +6 -0
  197. package/lib/__templates__/expo/client/heroui/components/separator/separator.md +106 -0
  198. package/lib/__templates__/expo/client/heroui/components/separator/separator.styles.ts +50 -0
  199. package/lib/__templates__/expo/client/heroui/components/separator/separator.tsx +62 -0
  200. package/lib/__templates__/expo/client/heroui/components/separator/separator.types.ts +40 -0
  201. package/lib/__templates__/expo/client/heroui/components/skeleton/index.ts +7 -0
  202. package/lib/__templates__/expo/client/heroui/components/skeleton/linear-gradient.tsx +45 -0
  203. package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.animation.ts +351 -0
  204. package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.constants.ts +39 -0
  205. package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.md +208 -0
  206. package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.styles.ts +49 -0
  207. package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.tsx +183 -0
  208. package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.types.ts +191 -0
  209. package/lib/__templates__/expo/client/heroui/components/skeleton-group/index.ts +7 -0
  210. package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.constants.ts +7 -0
  211. package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.md +247 -0
  212. package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.styles.ts +10 -0
  213. package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.tsx +94 -0
  214. package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.types.ts +28 -0
  215. package/lib/__templates__/expo/client/heroui/components/slider/index.ts +23 -0
  216. package/lib/__templates__/expo/client/heroui/components/slider/slider.animation.ts +87 -0
  217. package/lib/__templates__/expo/client/heroui/components/slider/slider.constants.ts +24 -0
  218. package/lib/__templates__/expo/client/heroui/components/slider/slider.md +348 -0
  219. package/lib/__templates__/expo/client/heroui/components/slider/slider.styles.ts +85 -0
  220. package/lib/__templates__/expo/client/heroui/components/slider/slider.tsx +413 -0
  221. package/lib/__templates__/expo/client/heroui/components/slider/slider.types.ts +120 -0
  222. package/lib/__templates__/expo/client/heroui/components/spinner/index.ts +10 -0
  223. package/lib/__templates__/expo/client/heroui/components/spinner/spinner-icon.tsx +49 -0
  224. package/lib/__templates__/expo/client/heroui/components/spinner/spinner.animation.ts +150 -0
  225. package/lib/__templates__/expo/client/heroui/components/spinner/spinner.constants.ts +36 -0
  226. package/lib/__templates__/expo/client/heroui/components/spinner/spinner.md +199 -0
  227. package/lib/__templates__/expo/client/heroui/components/spinner/spinner.styles.ts +44 -0
  228. package/lib/__templates__/expo/client/heroui/components/spinner/spinner.tsx +198 -0
  229. package/lib/__templates__/expo/client/heroui/components/spinner/spinner.types.ts +158 -0
  230. package/lib/__templates__/expo/client/heroui/components/surface/index.ts +3 -0
  231. package/lib/__templates__/expo/client/heroui/components/surface/surface.animation.ts +18 -0
  232. package/lib/__templates__/expo/client/heroui/components/surface/surface.constants.ts +6 -0
  233. package/lib/__templates__/expo/client/heroui/components/surface/surface.md +136 -0
  234. package/lib/__templates__/expo/client/heroui/components/surface/surface.styles.ts +28 -0
  235. package/lib/__templates__/expo/client/heroui/components/surface/surface.tsx +66 -0
  236. package/lib/__templates__/expo/client/heroui/components/surface/surface.types.ts +46 -0
  237. package/lib/__templates__/expo/client/heroui/components/switch/index.ts +3 -0
  238. package/lib/__templates__/expo/client/heroui/components/switch/switch.animation.ts +243 -0
  239. package/lib/__templates__/expo/client/heroui/components/switch/switch.constants.ts +26 -0
  240. package/lib/__templates__/expo/client/heroui/components/switch/switch.md +334 -0
  241. package/lib/__templates__/expo/client/heroui/components/switch/switch.styles.ts +83 -0
  242. package/lib/__templates__/expo/client/heroui/components/switch/switch.tsx +280 -0
  243. package/lib/__templates__/expo/client/heroui/components/switch/switch.types.ts +208 -0
  244. package/lib/__templates__/expo/client/heroui/components/tabs/index.ts +8 -0
  245. package/lib/__templates__/expo/client/heroui/components/tabs/tabs.animation.ts +246 -0
  246. package/lib/__templates__/expo/client/heroui/components/tabs/tabs.constants.ts +17 -0
  247. package/lib/__templates__/expo/client/heroui/components/tabs/tabs.context.ts +28 -0
  248. package/lib/__templates__/expo/client/heroui/components/tabs/tabs.md +565 -0
  249. package/lib/__templates__/expo/client/heroui/components/tabs/tabs.styles.ts +168 -0
  250. package/lib/__templates__/expo/client/heroui/components/tabs/tabs.tsx +445 -0
  251. package/lib/__templates__/expo/client/heroui/components/tabs/tabs.types.ts +341 -0
  252. package/lib/__templates__/expo/client/heroui/components/tag-group/index.ts +15 -0
  253. package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.animation.ts +17 -0
  254. package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.constants.ts +10 -0
  255. package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.md +404 -0
  256. package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.styles.ts +74 -0
  257. package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.tsx +325 -0
  258. package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.types.ts +125 -0
  259. package/lib/__templates__/expo/client/heroui/components/text-area/index.ts +3 -0
  260. package/lib/__templates__/expo/client/heroui/components/text-area/text-area.constants.ts +6 -0
  261. package/lib/__templates__/expo/client/heroui/components/text-area/text-area.md +133 -0
  262. package/lib/__templates__/expo/client/heroui/components/text-area/text-area.styles.ts +10 -0
  263. package/lib/__templates__/expo/client/heroui/components/text-area/text-area.tsx +44 -0
  264. package/lib/__templates__/expo/client/heroui/components/text-area/text-area.types.ts +6 -0
  265. package/lib/__templates__/expo/client/heroui/components/text-field/index.ts +3 -0
  266. package/lib/__templates__/expo/client/heroui/components/text-field/text-field.animation.ts +20 -0
  267. package/lib/__templates__/expo/client/heroui/components/text-field/text-field.constants.ts +6 -0
  268. package/lib/__templates__/expo/client/heroui/components/text-field/text-field.md +256 -0
  269. package/lib/__templates__/expo/client/heroui/components/text-field/text-field.styles.ts +10 -0
  270. package/lib/__templates__/expo/client/heroui/components/text-field/text-field.tsx +82 -0
  271. package/lib/__templates__/expo/client/heroui/components/text-field/text-field.types.ts +56 -0
  272. package/lib/__templates__/expo/client/heroui/components/toast/index.ts +4 -0
  273. package/lib/__templates__/expo/client/heroui/components/toast/toast.animation.ts +381 -0
  274. package/lib/__templates__/expo/client/heroui/components/toast/toast.constants.ts +10 -0
  275. package/lib/__templates__/expo/client/heroui/components/toast/toast.hooks.ts +73 -0
  276. package/lib/__templates__/expo/client/heroui/components/toast/toast.md +420 -0
  277. package/lib/__templates__/expo/client/heroui/components/toast/toast.styles.ts +89 -0
  278. package/lib/__templates__/expo/client/heroui/components/toast/toast.tsx +472 -0
  279. package/lib/__templates__/expo/client/heroui/components/toast/toast.types.ts +320 -0
  280. package/lib/__templates__/expo/client/heroui/docs.md +47 -0
  281. package/lib/__templates__/expo/client/heroui/helpers/external/hooks/index.ts +3 -0
  282. package/lib/__templates__/expo/client/heroui/helpers/external/hooks/use-is-on-surface.ts +8 -0
  283. package/lib/__templates__/expo/client/heroui/helpers/external/hooks/use-theme-color.ts +137 -0
  284. package/lib/__templates__/expo/client/heroui/helpers/external/utils/cn.ts +12 -0
  285. package/lib/__templates__/expo/client/heroui/helpers/external/utils/color-kit/index.ts +2395 -0
  286. package/lib/__templates__/expo/client/heroui/helpers/external/utils/color-kit/types.ts +212 -0
  287. package/lib/__templates__/expo/client/heroui/helpers/external/utils/index.ts +2 -0
  288. package/lib/__templates__/expo/client/heroui/helpers/internal/components/animated-check-icon.tsx +78 -0
  289. package/lib/__templates__/expo/client/heroui/helpers/internal/components/bottom-sheet-content-container.tsx +97 -0
  290. package/lib/__templates__/expo/client/heroui/helpers/internal/components/bottom-sheet-content.tsx +158 -0
  291. package/lib/__templates__/expo/client/heroui/helpers/internal/components/check-icon.tsx +28 -0
  292. package/lib/__templates__/expo/client/heroui/helpers/internal/components/chevron-down-icon.tsx +28 -0
  293. package/lib/__templates__/expo/client/heroui/helpers/internal/components/chevron-right-icon.tsx +29 -0
  294. package/lib/__templates__/expo/client/heroui/helpers/internal/components/close-icon.tsx +29 -0
  295. package/lib/__templates__/expo/client/heroui/helpers/internal/components/full-window-overlay.tsx +48 -0
  296. package/lib/__templates__/expo/client/heroui/helpers/internal/components/hero-text.tsx +71 -0
  297. package/lib/__templates__/expo/client/heroui/helpers/internal/components/index.ts +9 -0
  298. package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/animation-settings-context.ts +19 -0
  299. package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/bottom-sheet-is-dragging-context.ts +11 -0
  300. package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/form-field-context.ts +36 -0
  301. package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/index.ts +3 -0
  302. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/index.ts +14 -0
  303. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-augmented-ref.ts +32 -0
  304. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-bottom-sheet-aware-handlers.ts +94 -0
  305. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-bottom-sheet-gesture-handlers.ts +52 -0
  306. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-combined-animation-disabled-state.ts +49 -0
  307. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-controllable-state.ts +124 -0
  308. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-dev-info.ts +38 -0
  309. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-keyboard-status.ts +22 -0
  310. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-bottom-sheet-content-animation.ts +67 -0
  311. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-dialog-content-animation.ts +296 -0
  312. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-overlay-animation.ts +91 -0
  313. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-popover-content-animation.ts +199 -0
  314. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-root-animation.ts +26 -0
  315. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-relative-position.ts +353 -0
  316. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-resolved-style-property.ts +118 -0
  317. package/lib/__templates__/expo/client/heroui/helpers/internal/types/animation.ts +131 -0
  318. package/lib/__templates__/expo/client/heroui/helpers/internal/types/bottom-sheet.ts +99 -0
  319. package/lib/__templates__/expo/client/heroui/helpers/internal/types/index.ts +5 -0
  320. package/lib/__templates__/expo/client/heroui/helpers/internal/types/misc.ts +10 -0
  321. package/lib/__templates__/expo/client/heroui/helpers/internal/types/primitives.ts +146 -0
  322. package/lib/__templates__/expo/client/heroui/helpers/internal/types/theme.ts +18 -0
  323. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/animation.ts +266 -0
  324. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/children-to-string.ts +117 -0
  325. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/combine-styles.ts +17 -0
  326. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/create-context.ts +60 -0
  327. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/ease-gradient/create-interpolation.ts +35 -0
  328. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/ease-gradient/index.ts +97 -0
  329. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/get-element-by-display-name.ts +15 -0
  330. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/get-element-with-default.ts +17 -0
  331. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/has-prop.ts +18 -0
  332. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/index.ts +8 -0
  333. package/lib/__templates__/expo/client/heroui/index.tsx +51 -0
  334. package/lib/__templates__/expo/client/heroui/primitives/README.md +27 -0
  335. package/lib/__templates__/expo/client/heroui/primitives/accordion/accordion.tsx +270 -0
  336. package/lib/__templates__/expo/client/heroui/primitives/accordion/accordion.types.ts +117 -0
  337. package/lib/__templates__/expo/client/heroui/primitives/accordion/accordion.utils.ts +12 -0
  338. package/lib/__templates__/expo/client/heroui/primitives/accordion/index.ts +2 -0
  339. package/lib/__templates__/expo/client/heroui/primitives/activity-indicator/activity-indicator.tsx +50 -0
  340. package/lib/__templates__/expo/client/heroui/primitives/activity-indicator/activity-indicator.types.ts +24 -0
  341. package/lib/__templates__/expo/client/heroui/primitives/activity-indicator/index.ts +2 -0
  342. package/lib/__templates__/expo/client/heroui/primitives/alert/alert.tsx +124 -0
  343. package/lib/__templates__/expo/client/heroui/primitives/alert/alert.types.ts +87 -0
  344. package/lib/__templates__/expo/client/heroui/primitives/alert/index.ts +2 -0
  345. package/lib/__templates__/expo/client/heroui/primitives/avatar/avatar.tsx +171 -0
  346. package/lib/__templates__/expo/client/heroui/primitives/avatar/avatar.types.ts +62 -0
  347. package/lib/__templates__/expo/client/heroui/primitives/avatar/avatar.utils.ts +102 -0
  348. package/lib/__templates__/expo/client/heroui/primitives/avatar/index.ts +2 -0
  349. package/lib/__templates__/expo/client/heroui/primitives/bottom-sheet/bottom-sheet.tsx +235 -0
  350. package/lib/__templates__/expo/client/heroui/primitives/bottom-sheet/bottom-sheet.types.ts +127 -0
  351. package/lib/__templates__/expo/client/heroui/primitives/bottom-sheet/index.ts +2 -0
  352. package/lib/__templates__/expo/client/heroui/primitives/checkbox/checkbox.tsx +119 -0
  353. package/lib/__templates__/expo/client/heroui/primitives/checkbox/checkbox.types.ts +37 -0
  354. package/lib/__templates__/expo/client/heroui/primitives/checkbox/index.ts +2 -0
  355. package/lib/__templates__/expo/client/heroui/primitives/dialog/dialog.tsx +274 -0
  356. package/lib/__templates__/expo/client/heroui/primitives/dialog/dialog.types.ts +129 -0
  357. package/lib/__templates__/expo/client/heroui/primitives/dialog/index.ts +2 -0
  358. package/lib/__templates__/expo/client/heroui/primitives/input-otp/index.ts +3 -0
  359. package/lib/__templates__/expo/client/heroui/primitives/input-otp/input-otp.tsx +431 -0
  360. package/lib/__templates__/expo/client/heroui/primitives/input-otp/input-otp.types.ts +169 -0
  361. package/lib/__templates__/expo/client/heroui/primitives/input-otp/input-otp.utils.ts +31 -0
  362. package/lib/__templates__/expo/client/heroui/primitives/label/index.ts +2 -0
  363. package/lib/__templates__/expo/client/heroui/primitives/label/label.tsx +24 -0
  364. package/lib/__templates__/expo/client/heroui/primitives/label/label.types.ts +39 -0
  365. package/lib/__templates__/expo/client/heroui/primitives/menu/index.ts +2 -0
  366. package/lib/__templates__/expo/client/heroui/primitives/menu/menu.tsx +765 -0
  367. package/lib/__templates__/expo/client/heroui/primitives/menu/menu.types.ts +401 -0
  368. package/lib/__templates__/expo/client/heroui/primitives/popover/index.ts +2 -0
  369. package/lib/__templates__/expo/client/heroui/primitives/popover/popover.tsx +382 -0
  370. package/lib/__templates__/expo/client/heroui/primitives/popover/popover.types.ts +201 -0
  371. package/lib/__templates__/expo/client/heroui/primitives/portal/index.ts +1 -0
  372. package/lib/__templates__/expo/client/heroui/primitives/portal/portal.tsx +126 -0
  373. package/lib/__templates__/expo/client/heroui/primitives/radio/index.ts +2 -0
  374. package/lib/__templates__/expo/client/heroui/primitives/radio/radio.tsx +133 -0
  375. package/lib/__templates__/expo/client/heroui/primitives/radio/radio.types.ts +47 -0
  376. package/lib/__templates__/expo/client/heroui/primitives/radio-group/index.ts +2 -0
  377. package/lib/__templates__/expo/client/heroui/primitives/radio-group/radio-group.tsx +114 -0
  378. package/lib/__templates__/expo/client/heroui/primitives/radio-group/radio-group.types.ts +65 -0
  379. package/lib/__templates__/expo/client/heroui/primitives/select/index.ts +2 -0
  380. package/lib/__templates__/expo/client/heroui/primitives/select/select.tsx +705 -0
  381. package/lib/__templates__/expo/client/heroui/primitives/select/select.types.ts +409 -0
  382. package/lib/__templates__/expo/client/heroui/primitives/select/select.utils.ts +35 -0
  383. package/lib/__templates__/expo/client/heroui/primitives/slider/index.ts +3 -0
  384. package/lib/__templates__/expo/client/heroui/primitives/slider/slider.tsx +464 -0
  385. package/lib/__templates__/expo/client/heroui/primitives/slider/slider.types.ts +208 -0
  386. package/lib/__templates__/expo/client/heroui/primitives/slider/slider.utils.ts +93 -0
  387. package/lib/__templates__/expo/client/heroui/primitives/slot/index.ts +1 -0
  388. package/lib/__templates__/expo/client/heroui/primitives/slot/slot.tsx +122 -0
  389. package/lib/__templates__/expo/client/heroui/primitives/slot/types.ts +19 -0
  390. package/lib/__templates__/expo/client/heroui/primitives/slot/utils.ts +96 -0
  391. package/lib/__templates__/expo/client/heroui/primitives/switch/index.ts +2 -0
  392. package/lib/__templates__/expo/client/heroui/primitives/switch/switch.tsx +61 -0
  393. package/lib/__templates__/expo/client/heroui/primitives/switch/switch.types.ts +55 -0
  394. package/lib/__templates__/expo/client/heroui/primitives/tabs/index.ts +2 -0
  395. package/lib/__templates__/expo/client/heroui/primitives/tabs/tabs.tsx +202 -0
  396. package/lib/__templates__/expo/client/heroui/primitives/tabs/tabs.types.ts +77 -0
  397. package/lib/__templates__/expo/client/heroui/primitives/tag-group/index.ts +2 -0
  398. package/lib/__templates__/expo/client/heroui/primitives/tag-group/tag-group.tsx +324 -0
  399. package/lib/__templates__/expo/client/heroui/primitives/tag-group/tag-group.types.ts +119 -0
  400. package/lib/__templates__/expo/client/heroui/primitives/toast/index.ts +2 -0
  401. package/lib/__templates__/expo/client/heroui/primitives/toast/toast.tsx +138 -0
  402. package/lib/__templates__/expo/client/heroui/primitives/toast/toast.types.ts +86 -0
  403. package/lib/__templates__/expo/client/heroui/providers/animation-settings/index.ts +8 -0
  404. package/lib/__templates__/expo/client/heroui/providers/animation-settings/provider.tsx +47 -0
  405. package/lib/__templates__/expo/client/heroui/providers/animation-settings/types.ts +27 -0
  406. package/lib/__templates__/expo/client/heroui/providers/hero-ui-native/index.ts +2 -0
  407. package/lib/__templates__/expo/client/heroui/providers/hero-ui-native/provider.tsx +67 -0
  408. package/lib/__templates__/expo/client/heroui/providers/hero-ui-native/types.ts +114 -0
  409. package/lib/__templates__/expo/client/heroui/providers/hero-ui-native-raw/index.ts +2 -0
  410. package/lib/__templates__/expo/client/heroui/providers/hero-ui-native-raw/provider.tsx +50 -0
  411. package/lib/__templates__/expo/client/heroui/providers/hero-ui-native-raw/types.ts +39 -0
  412. package/lib/__templates__/expo/client/heroui/providers/text-component/index.ts +2 -0
  413. package/lib/__templates__/expo/client/heroui/providers/text-component/provider.tsx +9 -0
  414. package/lib/__templates__/expo/client/heroui/providers/text-component/types.ts +52 -0
  415. package/lib/__templates__/expo/client/heroui/providers/toast/index.ts +3 -0
  416. package/lib/__templates__/expo/client/heroui/providers/toast/insets-container.tsx +87 -0
  417. package/lib/__templates__/expo/client/heroui/providers/toast/provider.tsx +431 -0
  418. package/lib/__templates__/expo/client/heroui/providers/toast/reducer.ts +34 -0
  419. package/lib/__templates__/expo/client/heroui/providers/toast/toast-config.context.ts +27 -0
  420. package/lib/__templates__/expo/client/heroui/providers/toast/toast-item-renderer.tsx +45 -0
  421. package/lib/__templates__/expo/client/heroui/providers/toast/types.ts +373 -0
  422. package/lib/__templates__/expo/client/heroui/styles/index.css +3 -0
  423. package/lib/__templates__/expo/client/heroui/styles/theme.css +112 -0
  424. package/lib/__templates__/expo/client/heroui/styles/utilities.css +8 -0
  425. package/lib/__templates__/expo/client/heroui/styles/variables.css +146 -0
  426. package/lib/__templates__/expo/client/package.json +4 -1
  427. package/lib/__templates__/expo/package.json +1 -1
  428. package/lib/__templates__/expo/pnpm-lock.yaml +68 -0
  429. package/lib/__templates__/nextjs/AGENTS.md +6 -4
  430. package/lib/__templates__/nextjs/eslint.config.mjs +9 -0
  431. package/lib/__templates__/taro/.coze +2 -0
  432. package/lib/__templates__/taro/.cozeproj/scripts/pack.sh +1 -2
  433. package/lib/__templates__/taro/config/index.ts +1 -1
  434. package/lib/__templates__/taro/package.json +1 -0
  435. package/lib/__templates__/taro/project.config.json +1 -1
  436. package/lib/cli.js +246 -252
  437. 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.