@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,414 @@
1
+ import { forwardRef, useMemo } from 'react';
2
+ import Animated from 'react-native-reanimated';
3
+ import { useIsOnSurface } from '../../helpers/external/hooks';
4
+ import { HeroText } from '../../helpers/internal/components';
5
+ import { AnimationSettingsProvider } from '../../helpers/internal/contexts';
6
+ import { useBottomSheetAwareHandlers } from '../../helpers/internal/hooks';
7
+ import { createContext } from '../../helpers/internal/utils';
8
+ import * as InputOTPPrimitives from '../../primitives/input-otp';
9
+ import {
10
+ useInputOTPRootAnimation,
11
+ useInputOTPSlotCaretAnimation,
12
+ useInputOTPSlotValueAnimation,
13
+ } from './input-otp.animation';
14
+ import { DISPLAY_NAME } from './input-otp.constants';
15
+ import { inputOTPClassNames, inputOTPStyleSheet } from './input-otp.styles';
16
+ import type {
17
+ InputOTPGroupProps,
18
+ InputOTPGroupRef,
19
+ InputOTPGroupRenderProps,
20
+ InputOTPRef,
21
+ InputOTPRootProps,
22
+ InputOTPSeparatorProps,
23
+ InputOTPSeparatorRef,
24
+ InputOTPSlotCaretProps,
25
+ InputOTPSlotCaretRef,
26
+ InputOTPSlotContextValue,
27
+ InputOTPSlotPlaceholderProps,
28
+ InputOTPSlotPlaceholderRef,
29
+ InputOTPSlotProps,
30
+ InputOTPSlotRef,
31
+ InputOTPSlotValueProps,
32
+ InputOTPSlotValueRef,
33
+ } from './input-otp.types';
34
+
35
+ const AnimatedText = Animated.createAnimatedComponent(HeroText);
36
+
37
+ const [InputOTPSlotProvider, useInputOTPSlot] =
38
+ createContext<InputOTPSlotContextValue>({
39
+ name: 'InputOTPSlotContext',
40
+ });
41
+
42
+ const useInputOTP = InputOTPPrimitives.useInputOTPContext;
43
+
44
+ const REGEXP_ONLY_CHARS = InputOTPPrimitives.REGEXP_ONLY_CHARS;
45
+ const REGEXP_ONLY_DIGITS = InputOTPPrimitives.REGEXP_ONLY_DIGITS;
46
+ const REGEXP_ONLY_DIGITS_AND_CHARS =
47
+ InputOTPPrimitives.REGEXP_ONLY_DIGITS_AND_CHARS;
48
+
49
+ // --------------------------------------------------
50
+
51
+ const InputOTPRoot = forwardRef<InputOTPRef, InputOTPRootProps>(
52
+ (props, ref) => {
53
+ const {
54
+ className,
55
+ animation,
56
+ isBottomSheetAware,
57
+ onFocus: onFocusProp,
58
+ onBlur: onBlurProp,
59
+ ...restProps
60
+ } = props;
61
+
62
+ const rootClassName = inputOTPClassNames.root({ className });
63
+
64
+ const { isAllAnimationsDisabled } = useInputOTPRootAnimation({
65
+ animation,
66
+ });
67
+
68
+ /** Merge user-provided onFocus/onBlur with bottom sheet keyboard handlers */
69
+ const { onFocus, onBlur } = useBottomSheetAwareHandlers({
70
+ onFocus: onFocusProp,
71
+ onBlur: onBlurProp,
72
+ isBottomSheetAware,
73
+ });
74
+
75
+ const animationSettingsContextValue = useMemo(
76
+ () => ({
77
+ isAllAnimationsDisabled,
78
+ }),
79
+ [isAllAnimationsDisabled]
80
+ );
81
+
82
+ return (
83
+ <AnimationSettingsProvider value={animationSettingsContextValue}>
84
+ <InputOTPPrimitives.Root
85
+ ref={ref}
86
+ className={rootClassName}
87
+ onFocus={onFocus}
88
+ onBlur={onBlur}
89
+ {...restProps}
90
+ />
91
+ </AnimationSettingsProvider>
92
+ );
93
+ }
94
+ );
95
+
96
+ // --------------------------------------------------
97
+
98
+ const InputOTPGroup = forwardRef<InputOTPGroupRef, InputOTPGroupProps>(
99
+ (props, ref) => {
100
+ const { className, children, ...restProps } = props;
101
+
102
+ const { slots, maxLength, value, isFocused, isDisabled, isInvalid } =
103
+ useInputOTP();
104
+
105
+ const groupClassName = inputOTPClassNames.group({ className });
106
+
107
+ const renderProps: InputOTPGroupRenderProps = {
108
+ slots,
109
+ maxLength,
110
+ value,
111
+ isFocused,
112
+ isDisabled,
113
+ isInvalid,
114
+ };
115
+
116
+ const content =
117
+ typeof children === 'function' ? children(renderProps) : children;
118
+
119
+ return (
120
+ <InputOTPPrimitives.Group
121
+ ref={ref}
122
+ className={groupClassName}
123
+ {...restProps}
124
+ >
125
+ {content}
126
+ </InputOTPPrimitives.Group>
127
+ );
128
+ }
129
+ );
130
+
131
+ // --------------------------------------------------
132
+
133
+ const InputOTPSlot = forwardRef<InputOTPSlotRef, InputOTPSlotProps>(
134
+ (props, ref) => {
135
+ const { className, style, index, variant, children, ...restProps } = props;
136
+
137
+ const {
138
+ slots,
139
+ isDisabled,
140
+ isInvalid,
141
+ variant: groupVariant,
142
+ } = useInputOTP();
143
+
144
+ const slot = slots[index];
145
+ const isActive = slot?.isActive ?? false;
146
+ const isCaretVisible = slot?.isCaretVisible ?? false;
147
+
148
+ const isOnSurfaceAutoDetected = useIsOnSurface();
149
+ const finalVariant =
150
+ variant !== undefined
151
+ ? variant
152
+ : groupVariant !== undefined
153
+ ? groupVariant
154
+ : isOnSurfaceAutoDetected
155
+ ? 'secondary'
156
+ : 'primary';
157
+
158
+ const slotClassName = inputOTPClassNames.slot({
159
+ variant: finalVariant,
160
+ isActive,
161
+ isInvalid,
162
+ isDisabled,
163
+ className,
164
+ });
165
+
166
+ const slotContextValue = useMemo<InputOTPSlotContextValue>(
167
+ () => ({
168
+ slot,
169
+ isActive,
170
+ isCaretVisible,
171
+ variant: finalVariant,
172
+ }),
173
+ [slot, isActive, isCaretVisible, finalVariant]
174
+ );
175
+
176
+ return (
177
+ <InputOTPSlotProvider value={slotContextValue}>
178
+ <InputOTPPrimitives.Slot
179
+ ref={ref}
180
+ index={index}
181
+ className={slotClassName}
182
+ style={[inputOTPStyleSheet.slotRoot, style]}
183
+ {...restProps}
184
+ >
185
+ {children !== undefined ? (
186
+ children
187
+ ) : (
188
+ <>
189
+ <InputOTPSlotPlaceholder />
190
+ <InputOTPSlotValue />
191
+ <InputOTPSlotCaret />
192
+ </>
193
+ )}
194
+ </InputOTPPrimitives.Slot>
195
+ </InputOTPSlotProvider>
196
+ );
197
+ }
198
+ );
199
+
200
+ // --------------------------------------------------
201
+
202
+ /**
203
+ * Component that displays the placeholder character for an InputOTP slot
204
+ * Used when the slot is empty and should show a placeholder
205
+ */
206
+ const InputOTPSlotPlaceholder = forwardRef<
207
+ InputOTPSlotPlaceholderRef,
208
+ InputOTPSlotPlaceholderProps
209
+ >((props, ref) => {
210
+ const { className, style, children, ...restProps } = props;
211
+
212
+ const { slot, isActive } = useInputOTPSlot();
213
+ const { placeholderTextColor, placeholderTextClassName } = useInputOTP();
214
+
215
+ const displayChar = children ?? slot?.placeholderChar ?? '';
216
+
217
+ if (slot?.char || isActive || !displayChar) {
218
+ return null;
219
+ }
220
+
221
+ const slotPlaceholderTextStyle = placeholderTextColor
222
+ ? { color: placeholderTextColor }
223
+ : undefined;
224
+
225
+ const slotPlaceholderTextClassName = placeholderTextClassName
226
+ ? placeholderTextClassName
227
+ : undefined;
228
+
229
+ const slotPlaceholderClassName = inputOTPClassNames.slotPlaceholder({
230
+ className: [slotPlaceholderTextClassName, className],
231
+ });
232
+
233
+ return (
234
+ <HeroText
235
+ ref={ref}
236
+ className={slotPlaceholderClassName}
237
+ style={[slotPlaceholderTextStyle, style]}
238
+ {...restProps}
239
+ >
240
+ {displayChar}
241
+ </HeroText>
242
+ );
243
+ });
244
+
245
+ // --------------------------------------------------
246
+
247
+ /**
248
+ * Component that displays the actual character value for an InputOTP slot
249
+ * Used when the slot has a value and should display it with animations
250
+ */
251
+ const InputOTPSlotValue = forwardRef<
252
+ InputOTPSlotValueRef,
253
+ InputOTPSlotValueProps
254
+ >((props, ref) => {
255
+ const { className, children, animation, ...restProps } = props;
256
+
257
+ const { slot } = useInputOTPSlot();
258
+
259
+ const displayChar = children ?? slot?.char ?? '';
260
+
261
+ const { wrapperEntering, wrapperExiting, textEntering, textExiting } =
262
+ useInputOTPSlotValueAnimation({
263
+ animation,
264
+ });
265
+
266
+ const slotValueClassName = inputOTPClassNames.slotValue({
267
+ className,
268
+ });
269
+
270
+ if (!displayChar) {
271
+ return null;
272
+ }
273
+
274
+ return (
275
+ <Animated.View entering={wrapperEntering} exiting={wrapperExiting}>
276
+ <AnimatedText
277
+ ref={ref}
278
+ entering={textEntering}
279
+ exiting={textExiting}
280
+ className={slotValueClassName}
281
+ {...restProps}
282
+ >
283
+ {displayChar}
284
+ </AnimatedText>
285
+ </Animated.View>
286
+ );
287
+ });
288
+
289
+ // --------------------------------------------------
290
+
291
+ const InputOTPSlotCaret = forwardRef<
292
+ InputOTPSlotCaretRef,
293
+ InputOTPSlotCaretProps
294
+ >((props, ref) => {
295
+ const {
296
+ className,
297
+ animation,
298
+ isAnimatedStyleActive = true,
299
+ pointerEvents = 'none',
300
+ style,
301
+ ...restProps
302
+ } = props;
303
+ const { isCaretVisible } = useInputOTPSlot();
304
+
305
+ const { rContainerStyle } = useInputOTPSlotCaretAnimation({
306
+ animation,
307
+ });
308
+
309
+ const slotCaretClassName = inputOTPClassNames.slotCaret({ className });
310
+
311
+ const containerStyle = isAnimatedStyleActive
312
+ ? [rContainerStyle, style]
313
+ : style;
314
+
315
+ if (!isCaretVisible) return null;
316
+
317
+ return (
318
+ <Animated.View
319
+ ref={ref}
320
+ className={slotCaretClassName}
321
+ style={containerStyle}
322
+ pointerEvents={pointerEvents}
323
+ {...restProps}
324
+ />
325
+ );
326
+ });
327
+
328
+ // --------------------------------------------------
329
+
330
+ const InputOTPSeparator = forwardRef<
331
+ InputOTPSeparatorRef,
332
+ InputOTPSeparatorProps
333
+ >((props, ref) => {
334
+ const { className, ...restProps } = props;
335
+
336
+ const separatorClassName = inputOTPClassNames.separator({ className });
337
+
338
+ return (
339
+ <InputOTPPrimitives.Separator
340
+ ref={ref}
341
+ className={separatorClassName}
342
+ {...restProps}
343
+ />
344
+ );
345
+ });
346
+
347
+ // --------------------------------------------------
348
+
349
+ // Display names
350
+ InputOTPRoot.displayName = DISPLAY_NAME.ROOT;
351
+ InputOTPGroup.displayName = DISPLAY_NAME.GROUP;
352
+ InputOTPSlot.displayName = DISPLAY_NAME.SLOT;
353
+ InputOTPSlotPlaceholder.displayName = DISPLAY_NAME.SLOT_PLACEHOLDER;
354
+ InputOTPSlotValue.displayName = DISPLAY_NAME.SLOT_VALUE;
355
+ InputOTPSlotCaret.displayName = DISPLAY_NAME.SLOT_CARET;
356
+ InputOTPSeparator.displayName = DISPLAY_NAME.SEPARATOR;
357
+
358
+ /**
359
+ * Compound InputOTP component with sub-components
360
+ *
361
+ * @component InputOTP - Main container for OTP input. Manages the input state,
362
+ * handles text changes, and provides context to child components.
363
+ *
364
+ * @component InputOTP.Group - Container for grouping multiple slots together.
365
+ * Use this to visually group related slots (e.g., groups of 3 digits).
366
+ *
367
+ * @component InputOTP.Slot - Individual slot that displays a single character
368
+ * or placeholder. Each slot must have a unique index matching its position
369
+ * in the OTP sequence.
370
+ *
371
+ * @component InputOTP.SlotPlaceholder - Text component that displays the
372
+ * placeholder character for a slot when it's empty. Used by default in Slot
373
+ * if no children provided.
374
+ *
375
+ * @component InputOTP.SlotValue - Text component that displays the actual
376
+ * character value for a slot with animations. Used by default in Slot
377
+ * if no children provided.
378
+ *
379
+ * @component InputOTP.SlotCaret - Animated caret indicator that shows the
380
+ * current input position. Place this inside a Slot to show where the user
381
+ * is currently typing.
382
+ *
383
+ * @component InputOTP.Separator - Visual separator between groups of slots.
384
+ * Use this to visually separate different groups of OTP digits.
385
+ *
386
+ * Props flow from InputOTP to sub-components via context (value, isDisabled,
387
+ * isInvalid, slots). The component handles focus management, text input,
388
+ * and validation automatically.
389
+ *
390
+ * @see Full documentation: https://v3.heroui.com/docs/native/components/input-otp
391
+ */
392
+ const InputOTP = Object.assign(InputOTPRoot, {
393
+ /** @optional Container for grouping multiple slots together */
394
+ Group: InputOTPGroup,
395
+ /** @optional Individual slot that displays a single character or placeholder */
396
+ Slot: InputOTPSlot,
397
+ /** @optional Text component that displays the placeholder character for a slot */
398
+ SlotPlaceholder: InputOTPSlotPlaceholder,
399
+ /** @optional Text component that displays the actual character value for a slot */
400
+ SlotValue: InputOTPSlotValue,
401
+ /** @optional Animated caret indicator for the current input position */
402
+ SlotCaret: InputOTPSlotCaret,
403
+ /** @optional Visual separator between groups of slots */
404
+ Separator: InputOTPSeparator,
405
+ });
406
+
407
+ export default InputOTP;
408
+ export {
409
+ REGEXP_ONLY_CHARS,
410
+ REGEXP_ONLY_DIGITS,
411
+ REGEXP_ONLY_DIGITS_AND_CHARS,
412
+ useInputOTP,
413
+ useInputOTPSlot,
414
+ };
@@ -0,0 +1,275 @@
1
+ import type { TextProps, ViewProps } from 'react-native';
2
+ import type { EntryOrExitLayoutType } from 'react-native-reanimated';
3
+ import type {
4
+ Animation,
5
+ AnimationRootDisableAll,
6
+ AnimationValue,
7
+ TextRef,
8
+ ViewRef,
9
+ } from '../../helpers/internal/types';
10
+ import type * as InputOTPPrimitivesTypes from '../../primitives/input-otp/input-otp.types';
11
+
12
+ /**
13
+ * Render function props for InputOTP.Group children
14
+ */
15
+ export interface InputOTPGroupRenderProps {
16
+ /** Array of slot data for each position */
17
+ slots: InputOTPPrimitivesTypes.SlotData[];
18
+ /** Maximum length of the OTP */
19
+ maxLength: number;
20
+ /** Current OTP value */
21
+ value: string;
22
+ /** Whether the input is currently focused */
23
+ isFocused: boolean;
24
+ /** Whether the input is disabled */
25
+ isDisabled: boolean;
26
+ /** Whether the input is in an invalid state */
27
+ isInvalid: boolean;
28
+ }
29
+
30
+ /**
31
+ * Props for the InputOTP.Root component
32
+ * Extends the primitive RootProps
33
+ */
34
+ export interface InputOTPRootProps extends InputOTPPrimitivesTypes.RootProps {
35
+ /**
36
+ * Whether the InputOTP automatically handles keyboard state when rendered
37
+ * inside a BottomSheet. When `true` (default), onFocus/onBlur handlers
38
+ * are automatically wired to the bottom sheet's keyboard avoidance system.
39
+ * Set to `false` to disable this automatic behavior.
40
+ * @default true
41
+ */
42
+ isBottomSheetAware?: boolean;
43
+ /**
44
+ * Additional CSS classes
45
+ */
46
+ className?: string;
47
+ /**
48
+ * Animation configuration for InputOTP
49
+ * - `"disable-all"`: Disable all animations including children
50
+ * - `undefined`: Use default animations
51
+ */
52
+ animation?: AnimationRootDisableAll;
53
+ }
54
+
55
+ /**
56
+ * Ref type for InputOTP.Root component
57
+ */
58
+ export type InputOTPRef = InputOTPPrimitivesTypes.RootRef;
59
+
60
+ /**
61
+ * Props for the InputOTP.Group component
62
+ * Extends the primitive GroupProps
63
+ */
64
+ export interface InputOTPGroupProps
65
+ extends Omit<InputOTPPrimitivesTypes.GroupProps, 'children'> {
66
+ /**
67
+ * Additional CSS classes
68
+ */
69
+ className?: string;
70
+ /**
71
+ * Children elements to be rendered inside the group, or a render function
72
+ * that receives slot data and other context values
73
+ */
74
+ children?:
75
+ | React.ReactNode
76
+ | ((props: InputOTPGroupRenderProps) => React.ReactNode);
77
+ }
78
+
79
+ /**
80
+ * Ref type for InputOTP.Group component
81
+ */
82
+ export type InputOTPGroupRef = InputOTPPrimitivesTypes.GroupRef;
83
+
84
+ /**
85
+ * Props for the InputOTP.Slot component
86
+ * Extends the primitive SlotProps
87
+ */
88
+ export interface InputOTPSlotProps extends InputOTPPrimitivesTypes.SlotProps {
89
+ /**
90
+ * Variant style for the slot
91
+ * @default 'primary'
92
+ */
93
+ variant?: 'primary' | 'secondary';
94
+ /**
95
+ * Additional CSS classes
96
+ */
97
+ className?: string;
98
+ }
99
+
100
+ /**
101
+ * Ref type for InputOTP.Slot component
102
+ */
103
+ export type InputOTPSlotRef = InputOTPPrimitivesTypes.SlotRef;
104
+
105
+ /**
106
+ * Context value for InputOTP.Slot component
107
+ */
108
+ export interface InputOTPSlotContextValue {
109
+ /** Slot data for the current slot */
110
+ slot: InputOTPPrimitivesTypes.SlotData | undefined;
111
+ /** Whether this slot is currently active (where cursor is) */
112
+ isActive: boolean;
113
+ /** Whether to show fake caret (when active but empty) */
114
+ isCaretVisible: boolean;
115
+ /** Variant style for the slot */
116
+ variant?: 'primary' | 'secondary';
117
+ }
118
+
119
+ /**
120
+ * Props for the InputOTP.SlotPlaceholder component
121
+ */
122
+ export interface InputOTPSlotPlaceholderProps extends TextProps {
123
+ /**
124
+ * Text content to display (optional, defaults to slot.placeholderChar)
125
+ */
126
+ children?: string;
127
+ /**
128
+ * Additional CSS classes
129
+ */
130
+ className?: string;
131
+ }
132
+
133
+ /**
134
+ * Ref type for InputOTP.SlotPlaceholder component
135
+ */
136
+ export type InputOTPSlotPlaceholderRef = TextRef;
137
+
138
+ /**
139
+ * Animation configuration for InputOTP.SlotValue component
140
+ */
141
+ export type InputOTPSlotValueAnimation = Animation<{
142
+ /**
143
+ * Wrapper animation configuration (fade in/out for the container)
144
+ */
145
+ wrapper?: AnimationValue<{
146
+ /**
147
+ * Entering animation for wrapper
148
+ * @default FadeIn.duration(250)
149
+ */
150
+ entering?: EntryOrExitLayoutType;
151
+ /**
152
+ * Exiting animation for wrapper
153
+ * @default FadeOut.duration(100)
154
+ */
155
+ exiting?: EntryOrExitLayoutType;
156
+ }>;
157
+ /**
158
+ * Text animation configuration (flip animations for the text)
159
+ */
160
+ text?: AnimationValue<{
161
+ /**
162
+ * Entering animation for text
163
+ * @default FlipInXDown.duration(250).easing(...)
164
+ */
165
+ entering?: EntryOrExitLayoutType;
166
+ /**
167
+ * Exiting animation for text
168
+ * @default FlipOutXDown.duration(250).easing(...)
169
+ */
170
+ exiting?: EntryOrExitLayoutType;
171
+ }>;
172
+ }>;
173
+
174
+ /**
175
+ * Props for the InputOTP.SlotValue component
176
+ */
177
+ export interface InputOTPSlotValueProps extends TextProps {
178
+ /**
179
+ * Text content to display (optional, defaults to slot.char)
180
+ */
181
+ children?: string;
182
+ /**
183
+ * Additional CSS classes
184
+ */
185
+ className?: string;
186
+ /**
187
+ * Animation configuration for SlotValue
188
+ * Controls both wrapper (fade) and text (flip) animations
189
+ */
190
+ animation?: InputOTPSlotValueAnimation;
191
+ }
192
+
193
+ /**
194
+ * Ref type for InputOTP.SlotValue component
195
+ */
196
+ export type InputOTPSlotValueRef = TextRef;
197
+
198
+ /**
199
+ * Animation configuration for InputOTP.SlotCaret component
200
+ */
201
+ export type InputOTPSlotCaretAnimation = Animation<{
202
+ /**
203
+ * Opacity animation configuration
204
+ */
205
+ opacity?: AnimationValue<{
206
+ /**
207
+ * Opacity values [min, max]
208
+ * @default [0, 1]
209
+ */
210
+ value?: [number, number];
211
+ /**
212
+ * Animation duration in milliseconds
213
+ * @default 500
214
+ */
215
+ duration?: number;
216
+ }>;
217
+ /**
218
+ * Height animation configuration
219
+ */
220
+ height?: AnimationValue<{
221
+ /**
222
+ * Height values [min, max]
223
+ * @default [16, 18]
224
+ */
225
+ value?: [number, number];
226
+ /**
227
+ * Animation duration in milliseconds
228
+ * @default 500
229
+ */
230
+ duration?: number;
231
+ }>;
232
+ }>;
233
+
234
+ /**
235
+ * Props for the InputOTP.SlotCaret component
236
+ */
237
+ export interface InputOTPSlotCaretProps extends ViewProps {
238
+ /**
239
+ * Additional CSS classes
240
+ */
241
+ className?: string;
242
+ /**
243
+ * Animation configuration for SlotCaret
244
+ */
245
+ animation?: InputOTPSlotCaretAnimation;
246
+ /**
247
+ * Whether animated styles (react-native-reanimated) are active
248
+ * When `false`, the animated style is removed and you can implement custom logic
249
+ * This prop should only be used when you want to write custom styling logic instead of the default animated styles
250
+ * @default true
251
+ */
252
+ isAnimatedStyleActive?: boolean;
253
+ }
254
+
255
+ /**
256
+ * Ref type for InputOTP.SlotCaret component
257
+ */
258
+ export type InputOTPSlotCaretRef = ViewRef;
259
+
260
+ /**
261
+ * Props for the InputOTP.Separator component
262
+ * Extends the primitive SeparatorProps
263
+ */
264
+ export interface InputOTPSeparatorProps
265
+ extends InputOTPPrimitivesTypes.SeparatorProps {
266
+ /**
267
+ * Additional CSS classes
268
+ */
269
+ className?: string;
270
+ }
271
+
272
+ /**
273
+ * Ref type for InputOTP.Separator component
274
+ */
275
+ export type InputOTPSeparatorRef = InputOTPPrimitivesTypes.SeparatorRef;
@@ -0,0 +1,3 @@
1
+ export { default as Label, useLabel } from './label';
2
+ export { labelClassNames } from './label.styles';
3
+ export type * from './label.types';
@@ -0,0 +1,18 @@
1
+ import { useCombinedAnimationDisabledState } from '../../helpers/internal/hooks';
2
+ import type { AnimationRootDisableAll } from '../../helpers/internal/types';
3
+
4
+ /**
5
+ * Animation hook for Label root component
6
+ * Handles root-level animation configuration and provides context for child components
7
+ */
8
+ export function useLabelRootAnimation(options: {
9
+ animation: AnimationRootDisableAll | undefined;
10
+ }) {
11
+ const { animation } = options;
12
+
13
+ const isAllAnimationsDisabled = useCombinedAnimationDisabledState(animation);
14
+
15
+ return {
16
+ isAllAnimationsDisabled,
17
+ };
18
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Display names for Label components
3
+ */
4
+ export const DISPLAY_NAME = {
5
+ LABEL_ROOT: 'HeroUINative.Label.Root',
6
+ LABEL_TEXT: 'HeroUINative.Label.Text',
7
+ } as const;