@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,325 @@
1
+ import { Children, forwardRef, useMemo } from 'react';
2
+ import { type StyleProp, type ViewStyle } from 'react-native';
3
+ import { useThemeColor } from '../../helpers/external/hooks';
4
+ import { HeroText } from '../../helpers/internal/components';
5
+ import { CloseIcon } from '../../helpers/internal/components/close-icon';
6
+ import {
7
+ AnimationSettingsProvider,
8
+ FormFieldProvider,
9
+ } from '../../helpers/internal/contexts';
10
+ import type {
11
+ PressableRef,
12
+ TextRef,
13
+ ViewRef,
14
+ } from '../../helpers/internal/types';
15
+ import { childrenToString, createContext } from '../../helpers/internal/utils';
16
+ import * as TagGroupPrimitives from '../../primitives/tag-group';
17
+ import {
18
+ useItemContext as usePrimitiveItemContext,
19
+ useRootContext as usePrimitiveRootContext,
20
+ } from '../../primitives/tag-group';
21
+ import { useTagGroupRootAnimation } from './tag-group.animation';
22
+ import { DISPLAY_NAME } from './tag-group.constants';
23
+ import { tagGroupClassNames, tagGroupStyleSheet } from './tag-group.styles';
24
+ import type {
25
+ TagGroupContextValue,
26
+ TagGroupItemLabelProps,
27
+ TagGroupItemProps,
28
+ TagGroupItemRemoveButtonProps,
29
+ TagGroupListProps,
30
+ TagGroupProps,
31
+ TagRenderProps,
32
+ } from './tag-group.types';
33
+
34
+ /**
35
+ * Internal context for size and variant. Not exported — consumers use useTagGroup or useTagGroupItem.
36
+ */
37
+ const [TagGroupProvider, useInnerTagGroupContext] =
38
+ createContext<TagGroupContextValue>({
39
+ name: 'TagGroupContext',
40
+ });
41
+
42
+ /** Re-exports primitive useRootContext */
43
+ const useTagGroup = usePrimitiveRootContext;
44
+
45
+ /** Re-exports primitive useItemContext */
46
+ const useTagGroupItem = usePrimitiveItemContext;
47
+
48
+ // --------------------------------------------------
49
+
50
+ const TagGroupRoot = forwardRef<ViewRef, TagGroupProps>((props, ref) => {
51
+ const {
52
+ children,
53
+ size = 'md',
54
+ variant = 'default',
55
+ className,
56
+ style,
57
+ animation,
58
+ isDisabled = false,
59
+ isInvalid = false,
60
+ isRequired = false,
61
+ ...restProps
62
+ } = props;
63
+
64
+ const rootClassName = tagGroupClassNames.root({
65
+ className,
66
+ });
67
+
68
+ const { isAllAnimationsDisabled } = useTagGroupRootAnimation({
69
+ animation,
70
+ });
71
+
72
+ const animationSettingsContextValue = useMemo(
73
+ () => ({
74
+ isAllAnimationsDisabled,
75
+ }),
76
+ [isAllAnimationsDisabled]
77
+ );
78
+
79
+ const formFieldContextValue = useMemo(
80
+ () => ({
81
+ isDisabled: isDisabled ?? false,
82
+ isInvalid: isInvalid ?? false,
83
+ isRequired: isRequired ?? false,
84
+ hasFieldPadding: false,
85
+ }),
86
+ [isDisabled, isInvalid, isRequired]
87
+ );
88
+
89
+ const contextValue = useMemo(
90
+ () => ({
91
+ size,
92
+ variant,
93
+ }),
94
+ [size, variant]
95
+ );
96
+
97
+ return (
98
+ <AnimationSettingsProvider value={animationSettingsContextValue}>
99
+ <FormFieldProvider value={formFieldContextValue}>
100
+ <TagGroupProvider value={contextValue}>
101
+ <TagGroupPrimitives.Root
102
+ ref={ref}
103
+ className={rootClassName}
104
+ style={style}
105
+ isDisabled={isDisabled}
106
+ {...restProps}
107
+ >
108
+ {children}
109
+ </TagGroupPrimitives.Root>
110
+ </TagGroupProvider>
111
+ </FormFieldProvider>
112
+ </AnimationSettingsProvider>
113
+ );
114
+ });
115
+
116
+ // --------------------------------------------------
117
+
118
+ const TagGroupList = forwardRef<ViewRef, TagGroupListProps>((props, ref) => {
119
+ const { children, className, style, renderEmptyState, ...restProps } = props;
120
+
121
+ const listClassName = tagGroupClassNames.list({
122
+ className,
123
+ });
124
+
125
+ const hasChildren = Children.count(children) > 0;
126
+
127
+ return (
128
+ <TagGroupPrimitives.List
129
+ ref={ref}
130
+ className={listClassName}
131
+ style={style}
132
+ {...restProps}
133
+ >
134
+ {hasChildren ? children : renderEmptyState?.()}
135
+ </TagGroupPrimitives.List>
136
+ );
137
+ });
138
+
139
+ // --------------------------------------------------
140
+
141
+ const TagGroupItem = forwardRef<PressableRef, TagGroupItemProps>(
142
+ (props, ref) => {
143
+ const {
144
+ children,
145
+ className,
146
+ style,
147
+ id,
148
+ isDisabled: isDisabledProp,
149
+ ...restProps
150
+ } = props;
151
+
152
+ const { variant, size } = useInnerTagGroupContext();
153
+
154
+ const {
155
+ selectedKeys,
156
+ disabledKeys,
157
+ isDisabled: isRootDisabled,
158
+ } = usePrimitiveRootContext();
159
+
160
+ const isSelected = selectedKeys.has(id);
161
+ const isDisabled =
162
+ isRootDisabled || disabledKeys.has(id) || (isDisabledProp ?? false);
163
+
164
+ const tagClassName = tagGroupClassNames.tag({
165
+ variant,
166
+ size,
167
+ isSelected,
168
+ isDisabled,
169
+ className,
170
+ });
171
+
172
+ if (typeof children === 'function') {
173
+ const renderProps: TagRenderProps = {
174
+ isSelected,
175
+ isDisabled,
176
+ };
177
+
178
+ return (
179
+ <TagGroupPrimitives.Item
180
+ ref={ref}
181
+ id={id}
182
+ isDisabled={isDisabledProp}
183
+ className={tagClassName}
184
+ style={[tagGroupStyleSheet.tag, style] as StyleProp<ViewStyle>}
185
+ {...restProps}
186
+ >
187
+ {children(renderProps)}
188
+ </TagGroupPrimitives.Item>
189
+ );
190
+ }
191
+
192
+ const stringifiedChildren = childrenToString(children);
193
+
194
+ return (
195
+ <TagGroupPrimitives.Item
196
+ ref={ref}
197
+ id={id}
198
+ isDisabled={isDisabledProp}
199
+ className={tagClassName}
200
+ style={[tagGroupStyleSheet.tag, style] as StyleProp<ViewStyle>}
201
+ {...restProps}
202
+ >
203
+ {stringifiedChildren ? (
204
+ <TagGroupItemLabel>{stringifiedChildren}</TagGroupItemLabel>
205
+ ) : (
206
+ children
207
+ )}
208
+ </TagGroupPrimitives.Item>
209
+ );
210
+ }
211
+ );
212
+
213
+ // --------------------------------------------------
214
+
215
+ const TagGroupItemLabel = forwardRef<TextRef, TagGroupItemLabelProps>(
216
+ (props, ref) => {
217
+ const { children, className, ...restProps } = props;
218
+
219
+ const { isSelected } = usePrimitiveItemContext();
220
+ const { size } = useInnerTagGroupContext();
221
+
222
+ const tagLabelClassName = tagGroupClassNames.tagLabel({
223
+ size,
224
+ isSelected,
225
+ className,
226
+ });
227
+
228
+ return (
229
+ <TagGroupPrimitives.ItemLabel asChild>
230
+ <HeroText ref={ref} className={tagLabelClassName} {...restProps}>
231
+ {children}
232
+ </HeroText>
233
+ </TagGroupPrimitives.ItemLabel>
234
+ );
235
+ }
236
+ );
237
+
238
+ // --------------------------------------------------
239
+ const TagGroupItemRemoveButton = forwardRef<
240
+ PressableRef,
241
+ TagGroupItemRemoveButtonProps
242
+ >((props, ref) => {
243
+ const { children, className, iconProps, hitSlop = 8, ...restProps } = props;
244
+
245
+ const { isSelected } = usePrimitiveItemContext();
246
+
247
+ const [themeColorFieldForeground, themeColorAccentForeground] = useThemeColor(
248
+ ['field-foreground', 'accent-soft-foreground']
249
+ );
250
+
251
+ const removeButtonClassName = tagGroupClassNames.removeButton({
252
+ className,
253
+ });
254
+
255
+ const defaultIconColor = isSelected
256
+ ? themeColorAccentForeground
257
+ : themeColorFieldForeground;
258
+
259
+ const defaultIcon = (
260
+ <CloseIcon
261
+ size={iconProps?.size ?? 12}
262
+ color={iconProps?.color ?? defaultIconColor}
263
+ />
264
+ );
265
+
266
+ return (
267
+ <TagGroupPrimitives.RemoveButton
268
+ ref={ref}
269
+ className={removeButtonClassName}
270
+ hitSlop={hitSlop}
271
+ {...restProps}
272
+ >
273
+ {children ?? defaultIcon}
274
+ </TagGroupPrimitives.RemoveButton>
275
+ );
276
+ });
277
+
278
+ // --------------------------------------------------
279
+
280
+ TagGroupRoot.displayName = DISPLAY_NAME.TAG_GROUP_ROOT;
281
+ TagGroupList.displayName = DISPLAY_NAME.TAG_GROUP_LIST;
282
+ TagGroupItem.displayName = DISPLAY_NAME.TAG_GROUP_ITEM;
283
+ TagGroupItemLabel.displayName = DISPLAY_NAME.TAG_GROUP_ITEM_LABEL;
284
+ TagGroupItemRemoveButton.displayName =
285
+ DISPLAY_NAME.TAG_GROUP_ITEM_REMOVE_BUTTON;
286
+
287
+ // --------------------------------------------------
288
+
289
+ /**
290
+ * Compound TagGroup component with sub-components
291
+ *
292
+ * @component TagGroup - Main container that manages tag selection state,
293
+ * disabled keys, and remove functionality. Provides size and variant
294
+ * context to all child components.
295
+ *
296
+ * @component TagGroup.List - Container for rendering the list of tags
297
+ * with optional empty state rendering.
298
+ *
299
+ * @component TagGroup.Item - Individual tag within the group. Supports string
300
+ * children (auto-wrapped in TagGroup.ItemLabel), render function children,
301
+ * or custom layouts.
302
+ *
303
+ * @component TagGroup.ItemLabel - Text label for the tag. Automatically
304
+ * rendered when string children are provided, or can be used explicitly.
305
+ *
306
+ * @component TagGroup.ItemRemoveButton - Remove button for the tag. Must be
307
+ * placed explicitly by the consumer when removal is needed.
308
+ *
309
+ * Props flow from TagGroup to sub-components via context (size, variant).
310
+ *
311
+ * @see Full documentation: https://v3.heroui.com/docs/native/components/tag-group
312
+ */
313
+ const TagGroup = Object.assign(TagGroupRoot, {
314
+ /** Container for the list of tags */
315
+ List: TagGroupList,
316
+ /** Individual tag item within the group */
317
+ Item: TagGroupItem,
318
+ /** Text label for the tag item */
319
+ ItemLabel: TagGroupItemLabel,
320
+ /** Remove button for the tag item */
321
+ ItemRemoveButton: TagGroupItemRemoveButton,
322
+ });
323
+
324
+ export { TagGroup, useTagGroup, useTagGroupItem };
325
+ export default TagGroup;
@@ -0,0 +1,125 @@
1
+ import type { TextProps, ViewProps } from 'react-native';
2
+ import type { AnimationRootDisableAll } from '../../helpers/internal/types';
3
+ import type * as TagGroupPrimitivesTypes from '../../primitives/tag-group/tag-group.types';
4
+
5
+ /**
6
+ * Size variants for TagGroup tags
7
+ */
8
+ export type TagGroupSize = 'sm' | 'md' | 'lg';
9
+
10
+ /**
11
+ * Visual variant for TagGroup tags
12
+ */
13
+ export type TagGroupVariant = 'default' | 'surface';
14
+
15
+ /**
16
+ * Render props passed to TagGroup.Item's render function children
17
+ */
18
+ export interface TagRenderProps {
19
+ /** Whether the tag is currently selected */
20
+ isSelected: boolean;
21
+ /** Whether the tag is disabled (merged from root, disabledKeys, and item prop) */
22
+ isDisabled: boolean;
23
+ }
24
+
25
+ /**
26
+ * Props for the TagGroup root component.
27
+ * Wraps the primitive Root with size, variant, and animation support.
28
+ */
29
+ export interface TagGroupProps
30
+ extends Omit<TagGroupPrimitivesTypes.RootProps, 'asChild'> {
31
+ /** Size of all tags in the group @default "md" */
32
+ size?: TagGroupSize;
33
+
34
+ /** Visual variant of all tags in the group @default "default" */
35
+ variant?: TagGroupVariant;
36
+
37
+ /** Additional CSS classes for the tag group container */
38
+ className?: string;
39
+
40
+ /**
41
+ * Animation configuration for tag group
42
+ * - `"disable-all"`: Disable all animations including children
43
+ * - `undefined`: Use default animations
44
+ */
45
+ animation?: AnimationRootDisableAll;
46
+ }
47
+
48
+ /**
49
+ * Props for the TagGroup.List component.
50
+ * Container that renders the list of tags with optional empty state.
51
+ */
52
+ export interface TagGroupListProps extends ViewProps {
53
+ /** Child elements to render inside the list */
54
+ children?: React.ReactNode;
55
+
56
+ /** Additional CSS classes for the list container */
57
+ className?: string;
58
+
59
+ /** Function to render when the list has no tags */
60
+ renderEmptyState?: () => React.ReactNode;
61
+ }
62
+
63
+ /**
64
+ * Props for the TagGroup.Item component.
65
+ * Represents an individual tag within a TagGroup.
66
+ */
67
+ export interface TagGroupItemProps
68
+ extends Omit<TagGroupPrimitivesTypes.ItemProps, 'asChild' | 'children'> {
69
+ /** Tag content: string, elements, or a render function receiving TagRenderProps */
70
+ children?:
71
+ | React.ReactNode
72
+ | ((renderProps: TagRenderProps) => React.ReactNode);
73
+
74
+ /** Additional CSS classes for the tag */
75
+ className?: string;
76
+ }
77
+
78
+ /**
79
+ * Props for the TagGroup.ItemLabel component.
80
+ * Renders the text label of a tag.
81
+ */
82
+ export interface TagGroupItemLabelProps extends TextProps {
83
+ /** Text content to render */
84
+ children?: React.ReactNode;
85
+
86
+ /** Additional CSS classes for the label */
87
+ className?: string;
88
+ }
89
+
90
+ /**
91
+ * Props for customizing the default remove icon
92
+ */
93
+ export interface TagRemoveButtonIconProps {
94
+ /** Size of the icon @default 12 */
95
+ size?: number;
96
+ /** Color of the icon */
97
+ color?: string;
98
+ }
99
+
100
+ /**
101
+ * Props for the TagGroup.ItemRemoveButton component.
102
+ * Renders a button to remove the tag from the group.
103
+ */
104
+ export interface TagGroupItemRemoveButtonProps
105
+ extends Omit<TagGroupPrimitivesTypes.RemoveButtonProps, 'asChild'> {
106
+ /** Custom icon or content for the remove button */
107
+ children?: React.ReactNode;
108
+
109
+ /** Additional CSS classes for the remove button */
110
+ className?: string;
111
+
112
+ /** Props for customizing the default close icon. Only applies when no children are provided */
113
+ iconProps?: TagRemoveButtonIconProps;
114
+ }
115
+
116
+ /**
117
+ * Context value shared between TagGroup and its child components
118
+ */
119
+ export interface TagGroupContextValue {
120
+ /** Size of the tags */
121
+ size: TagGroupSize;
122
+
123
+ /** Visual variant of the tags */
124
+ variant: TagGroupVariant;
125
+ }
@@ -0,0 +1,3 @@
1
+ export { default as TextArea } from './text-area';
2
+ export { textAreaClassNames } from './text-area.styles';
3
+ export type { TextAreaProps } from './text-area.types';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Display name for TextArea component
3
+ */
4
+ export const DISPLAY_NAME = {
5
+ TEXT_AREA: 'HeroUINative.TextArea',
6
+ } as const;
@@ -0,0 +1,133 @@
1
+ # TextArea
2
+
3
+ A multiline text input component with styled border and background for collecting longer user input.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { TextArea } from '@/heroui';
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### Basic Usage
14
+
15
+ TextArea can be used standalone or within a TextField component.
16
+
17
+ ```tsx
18
+ import { TextArea } from '@/heroui';
19
+
20
+ <TextArea placeholder="Enter your message" />;
21
+ ```
22
+
23
+ ### Within TextField
24
+
25
+ TextArea works seamlessly with TextField for complete form structure.
26
+
27
+ ```tsx
28
+ import { Description, Label, TextArea, TextField } from '@/heroui';
29
+
30
+ <TextField>
31
+ <Label>Message</Label>
32
+ <TextArea placeholder="Enter your message here..." />
33
+ <Description>Please provide as much detail as possible.</Description>
34
+ </TextField>;
35
+ ```
36
+
37
+ ### With Validation
38
+
39
+ Display error state when the text area is invalid.
40
+
41
+ ```tsx
42
+ import { FieldError, Label, TextArea, TextField } from '@/heroui';
43
+
44
+ <TextField isRequired isInvalid={true}>
45
+ <Label>Message</Label>
46
+ <TextArea placeholder="Enter your message" />
47
+ <FieldError>Please enter a valid message</FieldError>
48
+ </TextField>;
49
+ ```
50
+
51
+ ### Disabled State
52
+
53
+ Disable the text area to prevent interaction.
54
+
55
+ ```tsx
56
+ import { Label, TextArea, TextField } from '@/heroui';
57
+
58
+ <TextField isDisabled>
59
+ <Label>Disabled Field</Label>
60
+ <TextArea placeholder="Cannot edit" value="Read only value" />
61
+ </TextField>;
62
+ ```
63
+
64
+ ### With Variant
65
+
66
+ Use different variants to style the text area based on context.
67
+
68
+ ```tsx
69
+ import { Label, TextArea, TextField } from '@/heroui';
70
+
71
+ <TextField>
72
+ <Label>Primary Variant</Label>
73
+ <TextArea placeholder="Primary style text area" variant="primary" />
74
+ </TextField>
75
+
76
+ <TextField>
77
+ <Label>Secondary Variant</Label>
78
+ <TextArea placeholder="Secondary style text area" variant="secondary" />
79
+ </TextField>
80
+ ```
81
+
82
+ ### Custom Styling
83
+
84
+ Customize the text area appearance using className.
85
+
86
+ ```tsx
87
+ import { Label, TextArea, TextField } from '@/heroui';
88
+
89
+ <TextField>
90
+ <Label>Custom Styled</Label>
91
+ <TextArea
92
+ placeholder="Custom colors"
93
+ className="bg-blue-50 border-blue-500 focus:border-blue-700"
94
+ />
95
+ </TextField>;
96
+ ```
97
+
98
+ ## Example
99
+
100
+ ```tsx
101
+ import {
102
+ Description,
103
+ FieldError,
104
+ Label,
105
+ TextArea,
106
+ TextField,
107
+ } from '@/heroui';
108
+ import { View } from 'react-native';
109
+
110
+ export default function TextAreaExample() {
111
+ return (
112
+ <View className="gap-8">
113
+ <TextField>
114
+ <Label>Primary Variant</Label>
115
+ <TextArea placeholder="Primary style text area" variant="primary" />
116
+ <Description>Default variant with primary styling</Description>
117
+ </TextField>
118
+
119
+ <TextField>
120
+ <Label>Secondary Variant</Label>
121
+ <TextArea placeholder="Secondary style text area" variant="secondary" />
122
+ <Description>Secondary variant for surfaces</Description>
123
+ </TextField>
124
+ </View>
125
+ );
126
+ }
127
+ ```
128
+
129
+ You can find more examples in the [GitHub repository](<https://github.com/heroui-inc/heroui-native/blob/rc/example/src/app/(home)/components/text-area.tsx>).
130
+
131
+ ## API Reference
132
+
133
+ TextArea extends [Input](../input/input.md) component and inherits all its props. The only differences are default values: `multiline` defaults to `true` and `textAlignVertical` defaults to `'top'`.
@@ -0,0 +1,10 @@
1
+ import { tv } from 'tailwind-variants';
2
+ import { combineStyles } from '../../helpers/internal/utils';
3
+
4
+ const root = tv({
5
+ base: 'h-32',
6
+ });
7
+
8
+ export const textAreaClassNames = combineStyles({
9
+ root,
10
+ });
@@ -0,0 +1,44 @@
1
+ import { forwardRef } from 'react';
2
+ import { type TextInput as TextInputType } from 'react-native';
3
+ import Input from '../input/input';
4
+ import { DISPLAY_NAME } from './text-area.constants';
5
+ import { textAreaClassNames } from './text-area.styles';
6
+ import type { TextAreaProps } from './text-area.types';
7
+
8
+ // --------------------------------------------------
9
+
10
+ const TextAreaRoot = forwardRef<TextInputType, TextAreaProps>((props, ref) => {
11
+ const {
12
+ multiline = true,
13
+ textAlignVertical = 'top',
14
+ className,
15
+ ...restProps
16
+ } = props;
17
+
18
+ const textAreaClassName = textAreaClassNames.root({ className });
19
+
20
+ return (
21
+ <Input
22
+ ref={ref}
23
+ className={textAreaClassName}
24
+ multiline={multiline}
25
+ textAlignVertical={textAlignVertical}
26
+ {...restProps}
27
+ />
28
+ );
29
+ });
30
+
31
+ // --------------------------------------------------
32
+
33
+ TextAreaRoot.displayName = DISPLAY_NAME.TEXT_AREA;
34
+
35
+ /**
36
+ * TextArea component - A multiline text input component with styled border and background for collecting longer user input.
37
+ * Extends Input component with multiline support, defaulting to 8 lines and top-aligned text.
38
+ * Supports primary and secondary variants, and integrates with form item state context.
39
+ *
40
+ * @see Full documentation: https://v3.heroui.com/docs/native/components/text-area
41
+ */
42
+ const TextArea = TextAreaRoot;
43
+
44
+ export default TextArea;
@@ -0,0 +1,6 @@
1
+ import type { InputProps } from '../input/input.types';
2
+
3
+ /**
4
+ * Props for the TextArea component
5
+ */
6
+ export interface TextAreaProps extends InputProps {}
@@ -0,0 +1,3 @@
1
+ export { default as TextField, useTextField } from './text-field';
2
+ export { textFieldClassNames } from './text-field.styles';
3
+ export type { TextFieldRootProps } from './text-field.types';
@@ -0,0 +1,20 @@
1
+ import { useCombinedAnimationDisabledState } from '../../helpers/internal/hooks';
2
+ import type { AnimationRootDisableAll } from '../../helpers/internal/types';
3
+
4
+ // --------------------------------------------------
5
+
6
+ /**
7
+ * Animation hook for TextField Root component
8
+ * Handles root-level animation configuration and provides context for child components
9
+ */
10
+ export function useTextFieldRootAnimation(options: {
11
+ animation: AnimationRootDisableAll | undefined;
12
+ }) {
13
+ const { animation } = options;
14
+
15
+ const isAllAnimationsDisabled = useCombinedAnimationDisabledState(animation);
16
+
17
+ return {
18
+ isAllAnimationsDisabled,
19
+ };
20
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Display names for TextField components
3
+ */
4
+ export const DISPLAY_NAME = {
5
+ ROOT: 'HeroUINative.TextField.Root',
6
+ };