@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,10 @@
1
+ type ReactChild =
2
+ | string
3
+ | number
4
+ | bigint
5
+ | React.ReactElement<unknown, string | React.JSXElementConstructor<any>>
6
+ | Iterable<React.ReactNode>
7
+ | React.ReactPortal
8
+ | Promise<any>;
9
+
10
+ export type { ReactChild };
@@ -0,0 +1,146 @@
1
+ import type { Pressable, Text, View, ViewStyle } from 'react-native';
2
+
3
+ // Base utility types
4
+
5
+ /**
6
+ * Component props with optional asChild prop for polymorphic components
7
+ * Allows components to render as different elements when asChild is true
8
+ */
9
+ type ComponentPropsWithAsChild<T extends React.ElementType<any>> =
10
+ React.ComponentPropsWithoutRef<T> & { asChild?: boolean };
11
+
12
+ // Ref types
13
+
14
+ /**
15
+ * Reference type for React Native View component
16
+ * Used for forwarding refs to View elements
17
+ */
18
+ type ViewRef = React.ComponentRef<typeof View>;
19
+
20
+ /**
21
+ * Reference type for React Native Pressable component
22
+ * Used for forwarding refs to Pressable elements
23
+ */
24
+ type PressableRef = React.ComponentRef<typeof Pressable>;
25
+
26
+ /**
27
+ * Reference type for React Native Text component
28
+ * Used for forwarding refs to Text elements
29
+ */
30
+ type TextRef = React.ComponentRef<typeof Text>;
31
+
32
+ // Slottable component props
33
+
34
+ /**
35
+ * View component props with asChild support for slot composition
36
+ * Enables View components to be used with the Slot pattern
37
+ */
38
+ type SlottableViewProps = ComponentPropsWithAsChild<typeof View>;
39
+
40
+ /**
41
+ * Pressable component props with asChild support for slot composition
42
+ * Enables Pressable components to be used with the Slot pattern
43
+ */
44
+ type SlottablePressableProps = ComponentPropsWithAsChild<typeof Pressable>;
45
+
46
+ /**
47
+ * Text component props with asChild support for slot composition
48
+ * Enables Text components to be used with the Slot pattern
49
+ */
50
+ type SlottableTextProps = ComponentPropsWithAsChild<typeof Text>;
51
+
52
+ /**
53
+ * Interface for components that can be force mounted even when normally hidden
54
+ */
55
+ interface ForceMountable {
56
+ /**
57
+ * Whether to force mount the component in the DOM
58
+ * Useful for animation purposes when component needs to be present but hidden
59
+ */
60
+ forceMount?: true | undefined;
61
+ }
62
+
63
+ /**
64
+ * Interface for defining spacing/padding from screen edges
65
+ */
66
+ interface Insets {
67
+ /**
68
+ * Distance from the top edge in pixels
69
+ */
70
+ top?: number;
71
+ /**
72
+ * Distance from the bottom edge in pixels
73
+ */
74
+ bottom?: number;
75
+ /**
76
+ * Distance from the left edge in pixels
77
+ */
78
+ left?: number;
79
+ /**
80
+ * Distance from the right edge in pixels
81
+ */
82
+ right?: number;
83
+ }
84
+
85
+ /**
86
+ * Props for components that need to be positioned relative to a trigger element
87
+ * Certain props are only available on the native version of the component.
88
+ * @docs For the web version, see the Radix documentation https://www.radix-ui.com/primitives
89
+ */
90
+ interface PositionedContentProps {
91
+ /**
92
+ * Whether to force mount the component in the DOM
93
+ */
94
+ forceMount?: true | undefined;
95
+ /**
96
+ * Custom styles to apply to the positioned content
97
+ */
98
+ style?: ViewStyle;
99
+ /**
100
+ * Offset along the alignment axis in pixels
101
+ */
102
+ alignOffset?: number;
103
+ /**
104
+ * Screen edge insets to respect when positioning
105
+ */
106
+ insets?: Insets;
107
+ /**
108
+ * Whether to automatically adjust position to avoid screen edges
109
+ * @default true
110
+ */
111
+ avoidCollisions?: boolean;
112
+ /**
113
+ * Alignment relative to the trigger element
114
+ * @default 'start'
115
+ */
116
+ align?: 'start' | 'center' | 'end';
117
+ /**
118
+ * Preferred placement of the trigger element to position against
119
+ * @default 'bottom'
120
+ */
121
+ placement?: 'top' | 'bottom' | 'left' | 'right';
122
+ /**
123
+ * Offset from the trigger element in pixels
124
+ * @default 0
125
+ */
126
+ offset?: number;
127
+ /**
128
+ * Whether to disable the automatic positioning styles
129
+ * Useful when you want to handle positioning manually
130
+ * @default false
131
+ */
132
+ disablePositioningStyle?: boolean;
133
+ }
134
+
135
+ export type {
136
+ ComponentPropsWithAsChild,
137
+ ForceMountable,
138
+ Insets,
139
+ PositionedContentProps,
140
+ PressableRef,
141
+ SlottablePressableProps,
142
+ SlottableTextProps,
143
+ SlottableViewProps,
144
+ TextRef,
145
+ ViewRef,
146
+ };
@@ -0,0 +1,18 @@
1
+ import type { ClassValue } from 'tailwind-variants';
2
+
3
+ /**
4
+ * This Typescript utility transform a list of slots into a list of {slot: classes}
5
+ */
6
+ type ElementSlots<S extends string> = {
7
+ [key in S]?: Exclude<ClassValue, 0n>;
8
+ };
9
+
10
+ /**
11
+ * Type helper that preserves the exact type of combined style objects
12
+ * This ensures that VariantProps inference works correctly for each style
13
+ */
14
+ type CombinedStyles<T extends Record<string, any>> = {
15
+ [K in keyof T]: T[K];
16
+ };
17
+
18
+ export type { CombinedStyles, ElementSlots };
@@ -0,0 +1,266 @@
1
+ import type {
2
+ Animation,
3
+ AnimationRoot,
4
+ AnimationValue,
5
+ } from '../types/animation';
6
+
7
+ /**
8
+ * Check if the entire animation is disabled
9
+ * @param animation - Animation configuration
10
+ * @returns true if animation is disabled
11
+ */
12
+ export function isAnimationDisabled<TConfig extends Record<string, any>>(
13
+ animation: Animation<TConfig> | AnimationRoot<TConfig> | undefined
14
+ ): boolean {
15
+ // Check top-level disabled values
16
+ if (animation === false || animation === 'disabled') {
17
+ return true;
18
+ }
19
+
20
+ // Check state property in config objects
21
+ if (
22
+ typeof animation === 'object' &&
23
+ animation !== null &&
24
+ 'state' in animation
25
+ ) {
26
+ const state = animation.state;
27
+ return state === false || state === 'disabled';
28
+ }
29
+
30
+ return false;
31
+ }
32
+
33
+ /**
34
+ * Check if root animation should cascade disable to all children
35
+ * @param animation - Root animation configuration
36
+ * @returns true if all animations should be disabled (including children)
37
+ */
38
+ export function shouldDisableAll<TConfig extends Record<string, any>>(
39
+ animation: AnimationRoot<TConfig> | undefined
40
+ ): boolean {
41
+ // Check top-level disable-all value
42
+ if (animation === 'disable-all') {
43
+ return true;
44
+ }
45
+
46
+ // Check state property in config objects
47
+ if (
48
+ typeof animation === 'object' &&
49
+ animation !== null &&
50
+ 'state' in animation
51
+ ) {
52
+ const state = animation.state;
53
+ return state === 'disable-all';
54
+ }
55
+
56
+ return false;
57
+ }
58
+
59
+ /**
60
+ * Get animation state including config and disabled status
61
+ * @param animation - Animation configuration
62
+ * @returns Object with animationConfig and isAnimationDisabled
63
+ */
64
+ export function getAnimationState<TConfig extends Record<string, any>>(
65
+ animation: Animation<TConfig> | undefined
66
+ ): {
67
+ animationConfig: TConfig | undefined;
68
+ isAnimationDisabled: boolean;
69
+ } {
70
+ const isDisabled = isAnimationDisabled(animation);
71
+ // Always extract config when it's an object, regardless of disabled state
72
+ // This allows users to customize colors/properties even when animations are disabled
73
+ const config =
74
+ typeof animation === 'object' && animation !== null
75
+ ? (animation as TConfig)
76
+ : undefined;
77
+
78
+ return {
79
+ animationConfig: config,
80
+ isAnimationDisabled: isDisabled,
81
+ };
82
+ }
83
+
84
+ /**
85
+ * Get root animation state including config, disabled status, and cascade flag
86
+ * @param animation - Root animation configuration
87
+ * @returns Object with animationConfig, isAnimationDisabled, and isAllAnimationsDisabled
88
+ */
89
+ export function getRootAnimationState<TConfig extends Record<string, any>>(
90
+ animation: AnimationRoot<TConfig> | undefined
91
+ ): {
92
+ animationConfig: TConfig | undefined;
93
+ isAnimationDisabled: boolean;
94
+ isAllAnimationsDisabled: boolean;
95
+ } {
96
+ const shouldCascade = shouldDisableAll(animation);
97
+ const isDisabled = isAnimationDisabled(animation) || shouldCascade;
98
+ // Always extract config when it's an object, regardless of disabled state
99
+ // This allows users to customize colors/properties even when animations are disabled
100
+ const config =
101
+ typeof animation === 'object' && animation !== null
102
+ ? (animation as TConfig)
103
+ : undefined;
104
+
105
+ return {
106
+ animationConfig: config,
107
+ isAnimationDisabled: isDisabled,
108
+ isAllAnimationsDisabled: shouldCascade,
109
+ };
110
+ }
111
+
112
+ /**
113
+ * Get animation value property or return default
114
+ * Extracts a property from the animation value config object
115
+ *
116
+ * @param options - Object containing animationValue, property, and defaultValue
117
+ * @param options.animationValue - The animation value configuration
118
+ * @param options.property - Property name to extract
119
+ * @param options.defaultValue - Default value if property is not found
120
+ * @returns The property value or default (never undefined)
121
+ *
122
+ * @example
123
+ * const scaleValue = getAnimationValueProperty({
124
+ * animationValue: animation?.scale,
125
+ * property: 'value',
126
+ * defaultValue: 0.95
127
+ * });
128
+ */
129
+ export function getAnimationValueProperty<
130
+ TConfig extends Record<string, any>,
131
+ K extends keyof TConfig,
132
+ D extends NonNullable<TConfig[K]>,
133
+ >(options: {
134
+ animationValue: AnimationValue<TConfig> | undefined;
135
+ property: K;
136
+ defaultValue: D;
137
+ }): NonNullable<TConfig[K]> {
138
+ // If animation value is undefined, return default
139
+ if (options.animationValue === undefined) {
140
+ return options.defaultValue;
141
+ }
142
+
143
+ // Return the property value if it exists, otherwise return default
144
+ return (options.animationValue[options.property] ??
145
+ options.defaultValue) as NonNullable<TConfig[K]>;
146
+ }
147
+
148
+ /**
149
+ * Get animation value merged config or return default
150
+ * Merges the animation value config with defaults, useful when you need multiple properties
151
+ *
152
+ * @param options - Object containing animationValue, property, and defaultValue
153
+ * @param options.animationValue - The animation value configuration
154
+ * @param options.property - Property name to extract from the config
155
+ * @param options.defaultValue - Default configuration object
156
+ * @returns The merged config object or default
157
+ *
158
+ * @example
159
+ * const scaleConfig = getAnimationValueMergedConfig({
160
+ * animationValue: animation?.scale,
161
+ * property: 'timingConfig',
162
+ * defaultValue: { duration: 150 }
163
+ * });
164
+ */
165
+ export function getAnimationValueMergedConfig<
166
+ TConfig extends Record<string, any>,
167
+ K extends keyof TConfig,
168
+ >(options: {
169
+ animationValue: AnimationValue<TConfig> | undefined;
170
+ property: K;
171
+ defaultValue: TConfig[K];
172
+ }): TConfig[K] {
173
+ // If animation value is undefined, return default
174
+ if (options.animationValue === undefined) {
175
+ return options.defaultValue;
176
+ }
177
+
178
+ const value = options.animationValue[options.property];
179
+
180
+ // If the specific property value is undefined or not an object, return default
181
+ if (value === undefined || typeof value !== 'object') {
182
+ return options.defaultValue;
183
+ }
184
+
185
+ // Merge with defaults to ensure all properties exist
186
+ return { ...options.defaultValue, ...value };
187
+ }
188
+
189
+ /**
190
+ * Determine if animations should be disabled based on disabled flags
191
+ * Priority: isAllAnimationsDisabled > isAnimationDisabled
192
+ *
193
+ * @param options - Object containing isAnimationDisabled and isAllAnimationsDisabled
194
+ * @param options.isAnimationDisabled - Whether animation is explicitly disabled
195
+ * @param options.isAllAnimationsDisabled - Whether all animations should be disabled (cascading from root/global)
196
+ * @returns true if animations should be disabled, false otherwise
197
+ *
198
+ * @example
199
+ * const isDisabled = getIsAnimationDisabledValue({
200
+ * isAnimationDisabled: false,
201
+ * isAllAnimationsDisabled: true
202
+ * });
203
+ * // Returns: true (all animations disabled takes priority)
204
+ */
205
+ export function getIsAnimationDisabledValue(options: {
206
+ isAnimationDisabled: boolean;
207
+ isAllAnimationsDisabled: boolean | undefined;
208
+ }): boolean {
209
+ const { isAnimationDisabled: isDisabled, isAllAnimationsDisabled } = options;
210
+
211
+ // First priority: if all animations are disabled, return true
212
+ if (isAllAnimationsDisabled === true) {
213
+ return true;
214
+ }
215
+
216
+ // Second priority: if this animation is disabled, return true
217
+ if (isDisabled) {
218
+ return true;
219
+ }
220
+
221
+ // Default: animations are enabled
222
+ return false;
223
+ }
224
+
225
+ /**
226
+ * Combine global, parent, and own animation disabled states
227
+ * Priority: Global > Parent > Own (global wins if enabled)
228
+ *
229
+ * @param options - Object containing globalIsAllAnimationsDisabled, parentIsAllAnimationsDisabled, and ownIsAllAnimationsDisabled
230
+ * @param options.globalIsAllAnimationsDisabled - Whether global provider has disable-all (from GlobalAnimationSettingsProvider)
231
+ * @param options.parentIsAllAnimationsDisabled - Whether parent context has disable-all (from AnimationSettingsContext)
232
+ * @param options.ownIsAllAnimationsDisabled - Whether own animation prop has disable-all
233
+ * @returns Combined isAllAnimationsDisabled value (global || parent || own)
234
+ *
235
+ * @example
236
+ * const combined = getCombinedAnimationDisabledState({
237
+ * globalIsAllAnimationsDisabled: true,
238
+ * parentIsAllAnimationsDisabled: false,
239
+ * ownIsAllAnimationsDisabled: false
240
+ * });
241
+ * // Returns: true (global wins)
242
+ */
243
+ export function getCombinedAnimationDisabledState(options: {
244
+ globalIsAllAnimationsDisabled?: boolean;
245
+ parentIsAllAnimationsDisabled: boolean | undefined;
246
+ ownIsAllAnimationsDisabled: boolean;
247
+ }): boolean {
248
+ const {
249
+ globalIsAllAnimationsDisabled,
250
+ parentIsAllAnimationsDisabled,
251
+ ownIsAllAnimationsDisabled,
252
+ } = options;
253
+
254
+ // Global always wins if it has disable-all
255
+ if (globalIsAllAnimationsDisabled === true) {
256
+ return true;
257
+ }
258
+
259
+ // Parent wins if it has disable-all
260
+ if (parentIsAllAnimationsDisabled === true) {
261
+ return true;
262
+ }
263
+
264
+ // Otherwise use own value
265
+ return ownIsAllAnimationsDisabled;
266
+ }
@@ -0,0 +1,117 @@
1
+ import { Children, isValidElement, type ReactNode } from 'react';
2
+ import type { SharedValue } from 'react-native-reanimated';
3
+
4
+ /**
5
+ * Recursively checks if children contain any React elements.
6
+ * Used to determine if children can be stringified.
7
+ *
8
+ * @param children - React children to check
9
+ * @returns True if children contain React elements, false otherwise
10
+ */
11
+ function hasReactElements(children: ReactNode): boolean {
12
+ if (children == null || typeof children === 'boolean') {
13
+ return false;
14
+ }
15
+
16
+ if (isValidElement(children)) {
17
+ return true;
18
+ }
19
+
20
+ if (Array.isArray(children)) {
21
+ return children.some((child) => hasReactElements(child));
22
+ }
23
+
24
+ return false;
25
+ }
26
+
27
+ /**
28
+ * Converts React children to a string representation.
29
+ * Handles cases where children might be an array of mixed types (strings, numbers, variables).
30
+ *
31
+ * @param children - React children that might be string, number, array, or React elements
32
+ * @returns A string representation of the children or null if not convertible
33
+ */
34
+ export function childrenToString(
35
+ children: ReactNode | SharedValue<ReactNode>
36
+ ): string | null {
37
+ // Handle null/undefined
38
+ if (children == null) {
39
+ return null;
40
+ }
41
+
42
+ // Handle string directly
43
+ if (typeof children === 'string') {
44
+ return children;
45
+ }
46
+
47
+ // Handle number
48
+ if (typeof children === 'number') {
49
+ return String(children);
50
+ }
51
+
52
+ // Handle boolean (usually we don't want to render true/false as text)
53
+ if (typeof children === 'boolean') {
54
+ return null;
55
+ }
56
+
57
+ // Check if children is a React element - if so, cannot be stringified
58
+ if (isValidElement(children)) {
59
+ return null;
60
+ }
61
+
62
+ // Handle array of children (e.g., {someVar} text)
63
+ if (Array.isArray(children)) {
64
+ // Check if array contains any React elements - if so, cannot be stringified
65
+ // This handles cases where conditional children create arrays with React elements
66
+ if (hasReactElements(children)) {
67
+ return null;
68
+ }
69
+
70
+ const stringified = children
71
+ .map((child) => {
72
+ // Recursively handle each child
73
+ if (typeof child === 'string' || typeof child === 'number') {
74
+ return String(child);
75
+ }
76
+ // Skip booleans, null, undefined
77
+ if (child == null || typeof child === 'boolean') {
78
+ return '';
79
+ }
80
+ // Recursively process nested arrays (only if they don't contain React elements)
81
+ if (Array.isArray(child)) {
82
+ const nested = childrenToString(child);
83
+ return nested ?? '';
84
+ }
85
+ return String(child);
86
+ })
87
+ .join('');
88
+
89
+ return stringified || null;
90
+ }
91
+
92
+ // Handle React fragments and other iterable children
93
+ try {
94
+ const childArray = Children.toArray(children as ReactNode);
95
+ if (childArray.length > 0) {
96
+ // Check if any children are React elements
97
+ if (hasReactElements(childArray)) {
98
+ return null;
99
+ }
100
+ return childrenToString(childArray);
101
+ }
102
+ } catch {
103
+ // Not iterable or other error, return null
104
+ }
105
+
106
+ return null;
107
+ }
108
+
109
+ /**
110
+ * Checks if React children can be converted to a string.
111
+ *
112
+ * @param children - React children to check
113
+ * @returns True if children can be converted to string, false otherwise
114
+ */
115
+ export function isStringifiableChildren(children: ReactNode): boolean {
116
+ return childrenToString(children) !== null;
117
+ }
@@ -0,0 +1,17 @@
1
+ import type { CombinedStyles } from '../types';
2
+
3
+ /**
4
+ * Helper function to combine style objects with proper type inference
5
+ * This preserves the exact types of each style object, including VariantProps
6
+ * @example
7
+ * const styles = combineStyles({
8
+ * root,
9
+ * item,
10
+ * content
11
+ * });
12
+ */
13
+ export function combineStyles<T extends Record<string, any>>(
14
+ styles: T
15
+ ): CombinedStyles<T> {
16
+ return styles as CombinedStyles<T>;
17
+ }
@@ -0,0 +1,60 @@
1
+ import * as React from 'react';
2
+
3
+ export interface CreateContextOptions {
4
+ /**
5
+ * If `true`, React will throw if context is `null` or `undefined`
6
+ * In some cases, you might want to support nested context, so you can set it to `false`
7
+ */
8
+ strict?: boolean;
9
+ /**
10
+ * Error message to throw if the context is `undefined`
11
+ */
12
+ errorMessage?: string;
13
+ /**
14
+ * The display name of the context
15
+ */
16
+ name?: string;
17
+ }
18
+
19
+ export type CreateContextReturn<T> = [
20
+ React.Provider<T>,
21
+ () => T,
22
+ React.Context<T>,
23
+ ];
24
+
25
+ /**
26
+ * Creates a named context, provider, and hook.
27
+ *
28
+ * @param options create context options
29
+ */
30
+ export function createContext<ContextType>(options: CreateContextOptions = {}) {
31
+ const {
32
+ strict = true,
33
+ errorMessage = 'useContext: `context` is undefined. Seems you forgot to wrap component within the Provider',
34
+ name,
35
+ } = options;
36
+
37
+ const Context = React.createContext<ContextType | undefined>(undefined);
38
+
39
+ Context.displayName = name;
40
+
41
+ function useContext() {
42
+ const context = React.useContext(Context);
43
+
44
+ if (!context && strict) {
45
+ const error = new Error(errorMessage);
46
+
47
+ error.name = 'ContextError';
48
+ Error.captureStackTrace?.(error, useContext);
49
+ throw error;
50
+ }
51
+
52
+ return context;
53
+ }
54
+
55
+ return [
56
+ Context.Provider,
57
+ useContext,
58
+ Context,
59
+ ] as CreateContextReturn<ContextType>;
60
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Easing gradient utilities for React Native
3
+ *
4
+ * Original source: https://github.com/phamfoo/react-native-easing-gradient
5
+ * Author: @phamfoo
6
+ * License: MIT
7
+ *
8
+ * This code has been adapted for use in HeroUI Native with modifications
9
+ * for TypeScript compatibility and integration with the animation system.
10
+ */
11
+
12
+ import { Animated } from 'react-native';
13
+ // @ts-expect-error
14
+ const AnimatedInterpolation = Animated.Interpolation;
15
+
16
+ type ColorInterpolateFunction = (input: number) => string;
17
+
18
+ function createInterpolation(
19
+ config: Animated.InterpolationConfigType
20
+ ): ColorInterpolateFunction {
21
+ if (AnimatedInterpolation.__createInterpolation) {
22
+ return AnimatedInterpolation.__createInterpolation(config);
23
+ }
24
+
25
+ return (input) => {
26
+ const interpolation = new AnimatedInterpolation(
27
+ { __getValue: () => input },
28
+ config
29
+ );
30
+
31
+ return interpolation.__getValue();
32
+ };
33
+ }
34
+
35
+ export { createInterpolation };