@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,340 @@
1
+ import { Children, forwardRef, useMemo } from 'react';
2
+ import { View } from 'react-native';
3
+ import Animated from 'react-native-reanimated';
4
+ import { useThemeColor } from '../../helpers/external/hooks';
5
+ import { ChevronDownIcon } from '../../helpers/internal/components';
6
+ import { AnimationSettingsProvider } from '../../helpers/internal/contexts';
7
+ import type { ViewRef } from '../../helpers/internal/types';
8
+ import { createContext } from '../../helpers/internal/utils';
9
+ import * as AccordionPrimitive from '../../primitives/accordion';
10
+ import {
11
+ AccordionAnimationProvider,
12
+ useAccordionAnimation,
13
+ useAccordionContentAnimation,
14
+ useAccordionIndicatorAnimation,
15
+ useAccordionRootAnimation,
16
+ } from './accordion.animation';
17
+ import { DEFAULT_ICON_SIZE, DISPLAY_NAME } from './accordion.constants';
18
+ import { accordionClassNames, accordionStyleSheet } from './accordion.styles';
19
+ import type {
20
+ AccordionContentProps,
21
+ AccordionContextValue,
22
+ AccordionIndicatorProps,
23
+ AccordionItemProps,
24
+ AccordionItemRenderProps,
25
+ AccordionRootProps,
26
+ AccordionTriggerProps,
27
+ } from './accordion.types';
28
+
29
+ const AnimatedRootView = Animated.createAnimatedComponent(
30
+ AccordionPrimitive.Root
31
+ );
32
+
33
+ const AnimatedItemView = Animated.createAnimatedComponent(
34
+ AccordionPrimitive.Item
35
+ );
36
+
37
+ const AnimatedIndicator = Animated.createAnimatedComponent(
38
+ AccordionPrimitive.Indicator
39
+ );
40
+
41
+ // ------------------------------------------------------------------------------
42
+
43
+ const [AccordionInnerProvider, useAccordionInnerContext] =
44
+ createContext<AccordionContextValue>({
45
+ name: 'AccordionInnerContext',
46
+ });
47
+
48
+ const useAccordion = AccordionPrimitive.useRootContext;
49
+ const useAccordionItem = AccordionPrimitive.useItemContext;
50
+
51
+ // ------------------------------------------------------------------------------
52
+
53
+ const Root = forwardRef<View, AccordionRootProps>((props, ref) => {
54
+ const {
55
+ children,
56
+ variant = 'default',
57
+ hideSeparator = false,
58
+ className,
59
+ classNames,
60
+ styles,
61
+ style,
62
+ animation,
63
+ ...restProps
64
+ } = props;
65
+
66
+ const { container, separator } = accordionClassNames.root({ variant });
67
+
68
+ const containerClassName = container({
69
+ className: [className, classNames?.container],
70
+ });
71
+
72
+ const separatorClassName = separator({ className: classNames?.separator });
73
+
74
+ const { layoutTransition, isAllAnimationsDisabled } =
75
+ useAccordionRootAnimation({
76
+ animation,
77
+ });
78
+
79
+ const contextValue: AccordionContextValue = useMemo(
80
+ () => ({
81
+ variant,
82
+ }),
83
+ [variant]
84
+ );
85
+
86
+ const animationSettingsContextValue = useMemo(
87
+ () => ({
88
+ isAllAnimationsDisabled,
89
+ }),
90
+ [isAllAnimationsDisabled]
91
+ );
92
+
93
+ const animationContextValue = useMemo(
94
+ () => ({
95
+ layoutTransition,
96
+ }),
97
+ [layoutTransition]
98
+ );
99
+
100
+ return (
101
+ <AnimationSettingsProvider value={animationSettingsContextValue}>
102
+ <AccordionAnimationProvider value={animationContextValue}>
103
+ <AccordionInnerProvider value={contextValue}>
104
+ <AnimatedRootView
105
+ ref={ref}
106
+ className={containerClassName}
107
+ style={[accordionStyleSheet.root, style, styles?.container]}
108
+ layout={layoutTransition}
109
+ {...restProps}
110
+ >
111
+ {Children.map(children, (child, index) => (
112
+ <>
113
+ {child}
114
+ {!hideSeparator && index < Children.count(children) - 1 && (
115
+ <Animated.View
116
+ className={separatorClassName}
117
+ style={styles?.separator}
118
+ layout={layoutTransition}
119
+ />
120
+ )}
121
+ </>
122
+ ))}
123
+ </AnimatedRootView>
124
+ </AccordionInnerProvider>
125
+ </AccordionAnimationProvider>
126
+ </AnimationSettingsProvider>
127
+ );
128
+ });
129
+
130
+ // ------------------------------------------------------------------------------
131
+
132
+ const Item = forwardRef<View, AccordionItemProps>((props, ref) => {
133
+ const {
134
+ children,
135
+ value,
136
+ layout: layoutProp,
137
+ className,
138
+ isDisabled: isDisabledProp,
139
+ ...restProps
140
+ } = props;
141
+
142
+ const itemClassName = accordionClassNames.item({ className });
143
+
144
+ const { layoutTransition } = useAccordionAnimation();
145
+ const { value: rootValue } = useAccordion();
146
+
147
+ const itemValue = value as string;
148
+
149
+ const isExpanded = Array.isArray(rootValue)
150
+ ? rootValue.includes(itemValue)
151
+ : rootValue === itemValue;
152
+
153
+ const renderProps: AccordionItemRenderProps = useMemo(
154
+ () => ({
155
+ isExpanded,
156
+ value: itemValue,
157
+ }),
158
+ [isExpanded, itemValue]
159
+ );
160
+
161
+ const content =
162
+ typeof children === 'function' ? children(renderProps) : children;
163
+
164
+ return (
165
+ <AnimatedItemView
166
+ ref={ref}
167
+ layout={layoutProp || layoutTransition}
168
+ value={value}
169
+ className={itemClassName}
170
+ isDisabled={isDisabledProp}
171
+ {...restProps}
172
+ >
173
+ {content}
174
+ </AnimatedItemView>
175
+ );
176
+ });
177
+
178
+ // ------------------------------------------------------------------------------
179
+
180
+ const Trigger = forwardRef<View, AccordionTriggerProps>((props, ref) => {
181
+ const { children, className, ...restProps } = props;
182
+
183
+ const { variant } = useAccordionInnerContext();
184
+
185
+ const triggerClassName = accordionClassNames.trigger({
186
+ variant,
187
+ className,
188
+ });
189
+
190
+ return (
191
+ <AccordionPrimitive.Header>
192
+ <AccordionPrimitive.Trigger
193
+ ref={ref}
194
+ className={triggerClassName}
195
+ {...restProps}
196
+ >
197
+ {children}
198
+ </AccordionPrimitive.Trigger>
199
+ </AccordionPrimitive.Header>
200
+ );
201
+ });
202
+
203
+ // ------------------------------------------------------------------------------
204
+
205
+ const Indicator = forwardRef<ViewRef, AccordionIndicatorProps>((props, ref) => {
206
+ const {
207
+ children,
208
+ className,
209
+ iconProps,
210
+ animation,
211
+ isAnimatedStyleActive = true,
212
+ style,
213
+ ...restProps
214
+ } = props;
215
+
216
+ const { isExpanded } = useAccordionItem();
217
+
218
+ const themeColorForeground = useThemeColor('foreground');
219
+
220
+ const indicatorClassName = accordionClassNames.indicator({ className });
221
+
222
+ const { rContainerStyle } = useAccordionIndicatorAnimation({
223
+ animation,
224
+ isExpanded,
225
+ });
226
+
227
+ const indicatorStyle = isAnimatedStyleActive
228
+ ? [rContainerStyle, style]
229
+ : style;
230
+
231
+ if (children) {
232
+ return (
233
+ <AnimatedIndicator
234
+ ref={ref}
235
+ className={indicatorClassName}
236
+ style={style}
237
+ {...restProps}
238
+ >
239
+ {children}
240
+ </AnimatedIndicator>
241
+ );
242
+ }
243
+
244
+ return (
245
+ <AnimatedIndicator
246
+ ref={ref}
247
+ className={indicatorClassName}
248
+ style={indicatorStyle}
249
+ {...restProps}
250
+ >
251
+ <ChevronDownIcon
252
+ size={iconProps?.size ?? DEFAULT_ICON_SIZE}
253
+ color={iconProps?.color ?? themeColorForeground}
254
+ />
255
+ </AnimatedIndicator>
256
+ );
257
+ });
258
+
259
+ // ------------------------------------------------------------------------------
260
+
261
+ const Content = forwardRef<View, AccordionContentProps>((props, ref) => {
262
+ const { children, className, animation, ...restProps } = props;
263
+
264
+ const { variant } = useAccordionInnerContext();
265
+
266
+ const { isExpanded } = useAccordionItem();
267
+
268
+ const contentClassName = accordionClassNames.content({ variant, className });
269
+
270
+ const { entering: animatedEntering, exiting: animatedExiting } =
271
+ useAccordionContentAnimation({
272
+ animation,
273
+ });
274
+
275
+ if (!isExpanded) {
276
+ return null;
277
+ }
278
+
279
+ return (
280
+ <Animated.View entering={animatedEntering} exiting={animatedExiting}>
281
+ <AccordionPrimitive.Content
282
+ ref={ref}
283
+ className={contentClassName}
284
+ {...restProps}
285
+ >
286
+ {children}
287
+ </AccordionPrimitive.Content>
288
+ </Animated.View>
289
+ );
290
+ });
291
+
292
+ // ------------------------------------------------------------------------------
293
+
294
+ Root.displayName = DISPLAY_NAME.ROOT;
295
+ Item.displayName = DISPLAY_NAME.ITEM;
296
+ Trigger.displayName = DISPLAY_NAME.TRIGGER;
297
+ Indicator.displayName = DISPLAY_NAME.INDICATOR;
298
+ Content.displayName = DISPLAY_NAME.CONTENT;
299
+
300
+ /**
301
+ * Compound Accordion component with sub-components
302
+ *
303
+ * @component Accordion - Main container that manages the accordion state and behavior.
304
+ * Controls expansion/collapse of items, supports single or multiple selection modes,
305
+ * and provides variant styling (default or surface).
306
+ *
307
+ * @component Accordion.Item - Container for individual accordion items.
308
+ * Wraps the trigger and content, managing the expanded state for each item.
309
+ * Supports render function children that receive expansion state.
310
+ *
311
+ * @component Accordion.Trigger - Interactive element that toggles item expansion.
312
+ * Built on Header and Trigger primitives.
313
+ *
314
+ * @component Accordion.Indicator - Optional visual indicator showing expansion state.
315
+ * Defaults to an animated chevron icon that rotates based on item state.
316
+ * Supports custom animation configuration.
317
+ *
318
+ * @component Accordion.Content - Container for expandable content.
319
+ * Animated with layout transitions for smooth expand/collapse effects.
320
+ * Supports custom entering and exiting animations.
321
+ *
322
+ * Props flow from Accordion to sub-components via context (variant).
323
+ * Animation state flows via AccordionAnimationProvider.
324
+ * Item expansion state is managed by the primitive accordion context.
325
+ *
326
+ * @see Full documentation: https://v3.heroui.com/docs/native/components/accordion
327
+ */
328
+ const CompoundAccordion = Object.assign(Root, {
329
+ /** @required Container for individual accordion items */
330
+ Item,
331
+ /** @required Interactive trigger element */
332
+ Trigger,
333
+ /** @optional Visual indicator showing expansion state (defaults to chevron) */
334
+ Indicator,
335
+ /** @required Container for expandable content with animations */
336
+ Content,
337
+ });
338
+
339
+ export default CompoundAccordion;
340
+ export { useAccordion, useAccordionItem };
@@ -0,0 +1,267 @@
1
+ import type { ViewStyle } from 'react-native';
2
+ import type {
3
+ AnimatedProps,
4
+ EntryOrExitLayoutType,
5
+ WithSpringConfig,
6
+ } from 'react-native-reanimated';
7
+ import type {
8
+ Animation,
9
+ AnimationRoot,
10
+ AnimationValue,
11
+ ElementSlots,
12
+ LayoutTransition,
13
+ } from '../../helpers/internal/types';
14
+ import type {
15
+ ContentProps as PrimitiveContentProps,
16
+ IndicatorProps as PrimitiveIndicatorProps,
17
+ ItemProps as PrimitiveItemProps,
18
+ RootProps as PrimitiveRootProps,
19
+ TriggerProps as PrimitiveTriggerProps,
20
+ } from '../../primitives/accordion';
21
+ import type { RootSlots } from './accordion.styles';
22
+
23
+ /**
24
+ * Variant types for the Accordion component
25
+ */
26
+ export type AccordionVariant = 'default' | 'surface';
27
+
28
+ /**
29
+ * Icon props for the Accordion.Indicator component
30
+ */
31
+ export interface AccordionIndicatorIconProps {
32
+ /**
33
+ * Size of the icon
34
+ * @default 16
35
+ */
36
+ size?: number;
37
+ /**
38
+ * Color of the icon
39
+ * @default foreground
40
+ */
41
+ color?: string;
42
+ }
43
+
44
+ /**
45
+ * Animation configuration for accordion root component
46
+ */
47
+ export type AccordionRootAnimation = AnimationRoot<{
48
+ layout?: AnimationValue<{
49
+ /**
50
+ * Custom layout animation for accordion transitions
51
+ * @default LinearTransition.springify().damping(140).stiffness(1600).mass(4)
52
+ */
53
+ value?: LayoutTransition;
54
+ }>;
55
+ }>;
56
+
57
+ /**
58
+ * Props for the Accordion root component
59
+ */
60
+ export type AccordionRootProps = Omit<
61
+ AnimatedProps<PrimitiveRootProps>,
62
+ 'layout'
63
+ > & {
64
+ /**
65
+ * Children elements to be rendered inside the accordion
66
+ */
67
+ children?: React.ReactNode;
68
+ /**
69
+ * Visual variant of the accordion
70
+ * @default 'default'
71
+ */
72
+ variant?: AccordionVariant;
73
+ /**
74
+ * Whether to hide the separator between accordion items
75
+ * @default false
76
+ */
77
+ hideSeparator?: boolean;
78
+ /**
79
+ * Additional CSS classes for the container
80
+ */
81
+ className?: string;
82
+ /**
83
+ * Additional CSS classes for the slots
84
+ */
85
+ classNames?: ElementSlots<RootSlots>;
86
+ /**
87
+ * Styles for different parts of the accordion root
88
+ */
89
+ styles?: Partial<Record<RootSlots, ViewStyle>>;
90
+ /**
91
+ * Animation configuration for accordion
92
+ * - `false` or `"disabled"`: Disable only root animations
93
+ * - `"disable-all"`: Disable all animations including children
94
+ * - `true` or `undefined`: Use default animations
95
+ * - `object`: Custom animation configuration
96
+ */
97
+ animation?: AccordionRootAnimation;
98
+ };
99
+
100
+ /**
101
+ * Render function props for accordion item children
102
+ */
103
+ export type AccordionItemRenderProps = {
104
+ /**
105
+ * Whether the accordion item is currently expanded
106
+ */
107
+ isExpanded: boolean;
108
+ /**
109
+ * Unique value identifier for this accordion item
110
+ */
111
+ value: string;
112
+ };
113
+
114
+ /**
115
+ * Props for the Accordion.Item component
116
+ */
117
+ export interface AccordionItemProps
118
+ extends Omit<AnimatedProps<PrimitiveItemProps>, 'children'> {
119
+ /**
120
+ * Children elements to be rendered inside the accordion item, or a render function
121
+ */
122
+ children?:
123
+ | React.ReactNode
124
+ | ((props: AccordionItemRenderProps) => React.ReactNode);
125
+ /**
126
+ * Additional CSS classes
127
+ */
128
+ className?: string;
129
+ }
130
+
131
+ /**
132
+ * Props for the Accordion.Trigger component
133
+ */
134
+ export interface AccordionTriggerProps extends PrimitiveTriggerProps {
135
+ /**
136
+ * Children elements to be rendered inside the trigger
137
+ */
138
+ children?: React.ReactNode;
139
+ /**
140
+ * Additional CSS classes
141
+ */
142
+ className?: string;
143
+ }
144
+
145
+ /**
146
+ * Animation configuration for accordion indicator component
147
+ */
148
+ export type AccordionIndicatorAnimation = Animation<{
149
+ rotation?: AnimationValue<{
150
+ /**
151
+ * Rotation values [collapsed, expanded] in degrees
152
+ * @default [0, -180]
153
+ */
154
+ value?: [number, number];
155
+ /**
156
+ * Spring animation configuration for rotation
157
+ * @default { damping: 140, stiffness: 1000, mass: 4 }
158
+ */
159
+ springConfig?: WithSpringConfig;
160
+ }>;
161
+ }>;
162
+
163
+ /**
164
+ * Props for the Accordion.Indicator component
165
+ */
166
+ export interface AccordionIndicatorProps
167
+ extends AnimatedProps<PrimitiveIndicatorProps> {
168
+ /**
169
+ * Custom indicator content, if not provided defaults to animated chevron
170
+ */
171
+ children?: React.ReactNode;
172
+ /**
173
+ * Additional CSS classes
174
+ *
175
+ * @note The following style properties are occupied by animations and cannot be set via className:
176
+ * - `transform` (specifically `rotate`) - Animated for expand/collapse rotation transitions
177
+ *
178
+ * To customize this property, use the `animation` prop:
179
+ * ```tsx
180
+ * <Accordion.Indicator
181
+ * animation={{
182
+ * rotation: { value: [0, -180], springConfig: { damping: 140, stiffness: 1000, mass: 4 } }
183
+ * }}
184
+ * />
185
+ * ```
186
+ *
187
+ * To completely disable animated styles and use your own via className or style prop, set `isAnimatedStyleActive={false}`.
188
+ */
189
+ className?: string;
190
+ /**
191
+ * Icon configuration
192
+ */
193
+ iconProps?: AccordionIndicatorIconProps;
194
+ /**
195
+ * Animation configuration for indicator
196
+ * - `false` or `"disabled"`: Disable all animations
197
+ * - `true` or `undefined`: Use default animations
198
+ * - `object`: Custom animation configuration
199
+ */
200
+ animation?: AccordionIndicatorAnimation;
201
+ /**
202
+ * Whether animated styles (react-native-reanimated) are active
203
+ * When `false`, the animated style is removed and you can implement custom logic
204
+ * This prop should only be used when you want to write custom styling logic instead of the default animated styles
205
+ * @default true
206
+ */
207
+ isAnimatedStyleActive?: boolean;
208
+ }
209
+
210
+ /**
211
+ * Animation configuration for accordion content component
212
+ */
213
+ export type AccordionContentAnimation = Animation<{
214
+ entering?: AnimationValue<{
215
+ /**
216
+ * Custom entering animation for content
217
+ */
218
+ value?: EntryOrExitLayoutType;
219
+ }>;
220
+ exiting?: AnimationValue<{
221
+ /**
222
+ * Custom exiting animation for content
223
+ */
224
+ value?: EntryOrExitLayoutType;
225
+ }>;
226
+ }>;
227
+
228
+ /**
229
+ * Props for the Accordion.Content component
230
+ */
231
+ export interface AccordionContentProps extends PrimitiveContentProps {
232
+ /**
233
+ * Children elements to be rendered inside the content
234
+ */
235
+ children?: React.ReactNode;
236
+ /**
237
+ * Additional CSS classes
238
+ */
239
+ className?: string;
240
+ /**
241
+ * Animation configuration for content
242
+ * - `false` or `"disabled"`: Disable all animations
243
+ * - `true` or `undefined`: Use default animations
244
+ * - `object`: Custom animation configuration
245
+ */
246
+ animation?: AccordionContentAnimation;
247
+ }
248
+
249
+ /**
250
+ * Context values shared between Accordion components (extends primitive context)
251
+ */
252
+ export interface AccordionContextValue {
253
+ /**
254
+ * Visual variant of the accordion
255
+ */
256
+ variant: AccordionVariant;
257
+ }
258
+
259
+ /**
260
+ * Context value for accordion animation state
261
+ */
262
+ export interface AccordionAnimationContextValue {
263
+ /**
264
+ * Custom layout animation for accordion transitions
265
+ */
266
+ layoutTransition?: LayoutTransition;
267
+ }
@@ -0,0 +1,17 @@
1
+ export {
2
+ default as Accordion,
3
+ useAccordion,
4
+ useAccordionItem,
5
+ } from './accordion';
6
+ export { ACCORDION_LAYOUT_TRANSITION as AccordionLayoutTransition } from './accordion.constants';
7
+ export { accordionClassNames } from './accordion.styles';
8
+
9
+ export type {
10
+ AccordionContentProps,
11
+ AccordionContextValue,
12
+ AccordionIndicatorProps,
13
+ AccordionItemProps,
14
+ AccordionRootProps,
15
+ AccordionTriggerProps,
16
+ AccordionVariant,
17
+ } from './accordion.types';
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Display names for Alert components
3
+ */
4
+ export const DISPLAY_NAME = {
5
+ ROOT: 'HeroUINative.Alert',
6
+ INDICATOR: 'HeroUINative.Alert.Indicator',
7
+ CONTENT: 'HeroUINative.Alert.Content',
8
+ TITLE: 'HeroUINative.Alert.Title',
9
+ DESCRIPTION: 'HeroUINative.Alert.Description',
10
+ };
11
+
12
+ /** Default icon size in pixels */
13
+ export const DEFAULT_ICON_SIZE = 18;
@@ -0,0 +1,28 @@
1
+ import { useThemeColor } from '../../helpers/external/hooks';
2
+ import type { AlertStatus } from '../../primitives/alert/alert.types';
3
+
4
+ /**
5
+ * Resolves the default icon color based on the current alert status.
6
+ */
7
+ export function useStatusColor(status: AlertStatus): string {
8
+ const [foreground, accent, success, warning, danger] = useThemeColor([
9
+ 'foreground',
10
+ 'accent',
11
+ 'success',
12
+ 'warning',
13
+ 'danger',
14
+ ]);
15
+
16
+ switch (status) {
17
+ case 'accent':
18
+ return accent;
19
+ case 'success':
20
+ return success;
21
+ case 'warning':
22
+ return warning;
23
+ case 'danger':
24
+ return danger;
25
+ default:
26
+ return foreground;
27
+ }
28
+ }