@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,77 @@
1
+ import { StyleSheet } from 'react-native';
2
+ import { tv } from 'tailwind-variants';
3
+ import { combineStyles } from '../../helpers/internal/utils';
4
+
5
+ const portal = tv({
6
+ base: 'absolute inset-0 justify-center p-5',
7
+ });
8
+
9
+ /**
10
+ * Overlay style definition
11
+ *
12
+ * @note ANIMATED PROPERTIES (cannot be set via className):
13
+ * The following property is animated and cannot be overridden using Tailwind classes:
14
+ * - `opacity` - Animated for overlay show/hide transitions (idle: 0, open: 1, close: 0)
15
+ *
16
+ * To customize this property, use the `animation` prop on `Dialog.Overlay`:
17
+ * ```tsx
18
+ * <Dialog.Overlay
19
+ * animation={{
20
+ * opacity: { value: [0, 1, 0] }
21
+ * }}
22
+ * />
23
+ * ```
24
+ *
25
+ * To completely disable animated styles and apply your own via className or style prop,
26
+ * set `isAnimatedStyleActive={false}` on `Dialog.Overlay`.
27
+ */
28
+ const overlay = tv({
29
+ base: 'absolute inset-0 bg-black/10',
30
+ });
31
+
32
+ /**
33
+ * Content style definition
34
+ *
35
+ * @note ANIMATED PROPERTIES (cannot be set via className):
36
+ * The following properties are animated and cannot be overridden using Tailwind classes:
37
+ * - `opacity` - Animated for content show/hide transitions (idle: 0, open: 1, close: 0)
38
+ * - `transform` (specifically `scale`) - Animated for content show/hide transitions (idle: 0.97, open: 1, close: 0.97)
39
+ *
40
+ * To customize these properties, use the `animation` prop on `Dialog.Content`:
41
+ * ```tsx
42
+ * <Dialog.Content
43
+ * animation={{
44
+ * opacity: { value: [0, 1, 0] },
45
+ * scale: { value: [0.97, 1, 0.97] }
46
+ * }}
47
+ * />
48
+ * ```
49
+ *
50
+ * To completely disable animated styles and apply your own via className or style prop,
51
+ * set `isAnimatedStyleActive={false}` on `Dialog.Content`.
52
+ */
53
+ const content = tv({
54
+ base: 'bg-overlay p-5 rounded-3xl shadow-overlay',
55
+ });
56
+
57
+ const label = tv({
58
+ base: 'text-lg font-medium text-foreground',
59
+ });
60
+
61
+ const description = tv({
62
+ base: 'text-base text-muted',
63
+ });
64
+
65
+ export const dialogClassNames = combineStyles({
66
+ portal,
67
+ overlay,
68
+ content,
69
+ label,
70
+ description,
71
+ });
72
+
73
+ export const dialogStyleSheet = StyleSheet.create({
74
+ contentContainer: {
75
+ borderCurve: 'continuous',
76
+ },
77
+ });
@@ -0,0 +1,379 @@
1
+ import { forwardRef, useLayoutEffect, useMemo, useRef } from 'react';
2
+ import {
3
+ StyleSheet,
4
+ type GestureResponderEvent,
5
+ type Text as RNText,
6
+ type View,
7
+ } from 'react-native';
8
+ import { GestureDetector } from 'react-native-gesture-handler';
9
+ import Animated from 'react-native-reanimated';
10
+ import { FullWindowOverlay, HeroText } from '../../helpers/internal/components';
11
+ import {
12
+ AnimationSettingsProvider,
13
+ useAnimationSettings,
14
+ } from '../../helpers/internal/contexts';
15
+ import {
16
+ usePopupDialogContentAnimation,
17
+ usePopupOverlayAnimation,
18
+ usePopupRootAnimation,
19
+ } from '../../helpers/internal/hooks';
20
+ import type { PressableRef } from '../../helpers/internal/types';
21
+ import * as DialogPrimitives from '../../primitives/dialog';
22
+ import * as DialogPrimitivesTypes from '../../primitives/dialog/dialog.types';
23
+ import { CloseButton } from '../close-button';
24
+ import {
25
+ DialogAnimationProvider,
26
+ useDialogAnimation,
27
+ } from './dialog.animation';
28
+ import { DISPLAY_NAME } from './dialog.constants';
29
+ import { dialogClassNames, dialogStyleSheet } from './dialog.styles';
30
+ import type {
31
+ DialogCloseProps,
32
+ DialogContentProps,
33
+ DialogDescriptionProps,
34
+ DialogOverlayProps,
35
+ DialogPortalProps,
36
+ DialogRootProps,
37
+ DialogTitleProps,
38
+ DialogTriggerProps,
39
+ } from './dialog.types';
40
+
41
+ const AnimatedOverlay = Animated.createAnimatedComponent(
42
+ DialogPrimitives.Overlay
43
+ );
44
+
45
+ const useDialog = DialogPrimitives.useRootContext;
46
+
47
+ // --------------------------------------------------
48
+
49
+ const DialogRoot = forwardRef<DialogPrimitivesTypes.RootRef, DialogRootProps>(
50
+ (
51
+ { children, isOpen, isDefaultOpen, onOpenChange, animation, ...props },
52
+ ref
53
+ ) => {
54
+ const {
55
+ progress,
56
+ isDragging,
57
+ isGestureReleaseAnimationRunning,
58
+ isAllAnimationsDisabled,
59
+ } = usePopupRootAnimation({
60
+ animation,
61
+ });
62
+
63
+ const animationContextValue = useMemo(
64
+ () => ({
65
+ progress,
66
+ isDragging,
67
+ isGestureReleaseAnimationRunning,
68
+ }),
69
+ [progress, isDragging, isGestureReleaseAnimationRunning]
70
+ );
71
+
72
+ const animationSettingsContextValue = useMemo(
73
+ () => ({
74
+ isAllAnimationsDisabled,
75
+ }),
76
+ [isAllAnimationsDisabled]
77
+ );
78
+
79
+ return (
80
+ <AnimationSettingsProvider value={animationSettingsContextValue}>
81
+ <DialogAnimationProvider value={animationContextValue}>
82
+ <DialogPrimitives.Root
83
+ ref={ref}
84
+ isOpen={isOpen}
85
+ isDefaultOpen={isDefaultOpen}
86
+ onOpenChange={onOpenChange}
87
+ {...props}
88
+ >
89
+ {children}
90
+ </DialogPrimitives.Root>
91
+ </DialogAnimationProvider>
92
+ </AnimationSettingsProvider>
93
+ );
94
+ }
95
+ );
96
+
97
+ // --------------------------------------------------
98
+
99
+ const DialogTrigger = forwardRef<
100
+ DialogPrimitivesTypes.TriggerRef,
101
+ DialogTriggerProps
102
+ >((props, ref) => {
103
+ return <DialogPrimitives.Trigger ref={ref} {...props} />;
104
+ });
105
+
106
+ // --------------------------------------------------
107
+
108
+ const DialogPortal = ({
109
+ className,
110
+ children,
111
+ style,
112
+ disableFullWindowOverlay = false,
113
+ ...props
114
+ }: DialogPortalProps) => {
115
+ const animationSettingsContext = useAnimationSettings();
116
+ const animationContext = useDialogAnimation();
117
+
118
+ const portalClassName = dialogClassNames.portal({ className });
119
+
120
+ return (
121
+ <DialogPrimitives.Portal {...props}>
122
+ <AnimationSettingsProvider value={animationSettingsContext}>
123
+ <DialogAnimationProvider value={animationContext}>
124
+ <FullWindowOverlay
125
+ disableFullWindowOverlay={disableFullWindowOverlay}
126
+ >
127
+ <Animated.View
128
+ className={portalClassName}
129
+ style={style}
130
+ pointerEvents="box-none"
131
+ >
132
+ {children}
133
+ </Animated.View>
134
+ </FullWindowOverlay>
135
+ </DialogAnimationProvider>
136
+ </AnimationSettingsProvider>
137
+ </DialogPrimitives.Portal>
138
+ );
139
+ };
140
+
141
+ // --------------------------------------------------
142
+
143
+ const DialogOverlay = forwardRef<
144
+ DialogPrimitivesTypes.OverlayRef,
145
+ DialogOverlayProps
146
+ >(
147
+ (
148
+ { className, style, animation, isAnimatedStyleActive = true, ...props },
149
+ ref
150
+ ) => {
151
+ const { isOpen } = useDialog();
152
+
153
+ const { progress, isDragging, isGestureReleaseAnimationRunning } =
154
+ useDialogAnimation();
155
+
156
+ const overlayClassName = dialogClassNames.overlay({ className });
157
+
158
+ const { rContainerStyle, entering, exiting } = usePopupOverlayAnimation({
159
+ progress,
160
+ isDragging,
161
+ isGestureReleaseAnimationRunning,
162
+ animation,
163
+ });
164
+
165
+ if (!isOpen) {
166
+ return null;
167
+ }
168
+
169
+ const overlayStyle = isAnimatedStyleActive
170
+ ? [rContainerStyle, style]
171
+ : style;
172
+
173
+ return (
174
+ <Animated.View
175
+ entering={entering}
176
+ exiting={exiting}
177
+ style={StyleSheet.absoluteFill}
178
+ >
179
+ <AnimatedOverlay
180
+ ref={ref}
181
+ className={overlayClassName}
182
+ style={overlayStyle}
183
+ {...props}
184
+ />
185
+ </Animated.View>
186
+ );
187
+ }
188
+ );
189
+
190
+ // --------------------------------------------------
191
+
192
+ const DialogContent = forwardRef<
193
+ DialogPrimitivesTypes.ContentRef,
194
+ DialogContentProps
195
+ >(
196
+ (
197
+ { className, style, children, animation, isSwipeable = true, ...props },
198
+ ref
199
+ ) => {
200
+ const { isOpen, onOpenChange } = useDialog();
201
+
202
+ const { progress, isDragging, isGestureReleaseAnimationRunning } =
203
+ useDialogAnimation();
204
+
205
+ const contentClassName = dialogClassNames.content({ className });
206
+
207
+ const dragContainerRef = useRef<View>(null);
208
+
209
+ const {
210
+ contentY,
211
+ contentHeight,
212
+ panGesture,
213
+ rDragContainerStyle,
214
+ entering,
215
+ exiting,
216
+ } = usePopupDialogContentAnimation({
217
+ progress,
218
+ isDragging,
219
+ isGestureReleaseAnimationRunning,
220
+ isOpen,
221
+ onOpenChange,
222
+ animation,
223
+ isSwipeable,
224
+ });
225
+
226
+ useLayoutEffect(() => {
227
+ dragContainerRef.current?.measure(
228
+ (_x, _y, _width, height, _pageX, pageY) => {
229
+ contentY.set(pageY);
230
+ contentHeight.set(height);
231
+ }
232
+ );
233
+ // eslint-disable-next-line react-hooks/exhaustive-deps
234
+ }, []);
235
+
236
+ return (
237
+ <GestureDetector gesture={panGesture}>
238
+ <Animated.View
239
+ ref={dragContainerRef}
240
+ entering={entering}
241
+ exiting={exiting}
242
+ >
243
+ <Animated.View style={rDragContainerStyle} pointerEvents="box-none">
244
+ <DialogPrimitives.Content
245
+ ref={ref}
246
+ className={contentClassName}
247
+ style={[dialogStyleSheet.contentContainer, style]}
248
+ {...props}
249
+ >
250
+ {children}
251
+ </DialogPrimitives.Content>
252
+ </Animated.View>
253
+ </Animated.View>
254
+ </GestureDetector>
255
+ );
256
+ }
257
+ );
258
+
259
+ // --------------------------------------------------
260
+
261
+ const DialogClose = forwardRef<PressableRef, DialogCloseProps>((props, ref) => {
262
+ const { onPress: onPressProp, ...restProps } = props;
263
+ const { onOpenChange } = useDialog();
264
+
265
+ const onPress = (ev: GestureResponderEvent) => {
266
+ onOpenChange(false);
267
+ if (typeof onPressProp === 'function') {
268
+ onPressProp(ev);
269
+ }
270
+ };
271
+
272
+ return <CloseButton ref={ref} onPress={onPress} {...restProps} />;
273
+ });
274
+
275
+ // --------------------------------------------------
276
+
277
+ const DialogTitle = forwardRef<RNText, DialogTitleProps>(
278
+ ({ className, children, ...props }, ref) => {
279
+ const { nativeID } = useDialog();
280
+ const titleClassName = dialogClassNames.label({ className });
281
+
282
+ return (
283
+ <HeroText
284
+ ref={ref}
285
+ role="heading"
286
+ accessibilityRole="header"
287
+ nativeID={`${nativeID}_label`}
288
+ className={titleClassName}
289
+ {...props}
290
+ >
291
+ {children}
292
+ </HeroText>
293
+ );
294
+ }
295
+ );
296
+
297
+ // --------------------------------------------------
298
+
299
+ const DialogDescription = forwardRef<RNText, DialogDescriptionProps>(
300
+ ({ className, children, ...props }, ref) => {
301
+ const { nativeID } = useDialog();
302
+
303
+ const descriptionClassName = dialogClassNames.description({
304
+ className,
305
+ });
306
+
307
+ return (
308
+ <HeroText
309
+ ref={ref}
310
+ accessibilityRole="text"
311
+ nativeID={`${nativeID}_desc`}
312
+ className={descriptionClassName}
313
+ {...props}
314
+ >
315
+ {children}
316
+ </HeroText>
317
+ );
318
+ }
319
+ );
320
+
321
+ // --------------------------------------------------
322
+
323
+ DialogRoot.displayName = DISPLAY_NAME.ROOT;
324
+ DialogTrigger.displayName = DISPLAY_NAME.TRIGGER;
325
+ DialogPortal.displayName = DISPLAY_NAME.PORTAL;
326
+ DialogOverlay.displayName = DISPLAY_NAME.OVERLAY;
327
+ DialogContent.displayName = DISPLAY_NAME.CONTENT;
328
+ DialogClose.displayName = DISPLAY_NAME.CLOSE;
329
+ DialogTitle.displayName = DISPLAY_NAME.TITLE;
330
+ DialogDescription.displayName = DISPLAY_NAME.DESCRIPTION;
331
+
332
+ /**
333
+ * Compound Dialog component with sub-components
334
+ *
335
+ * @component Dialog.Root - Main container that manages open/close state.
336
+ * Provides the dialog context to child components.
337
+ *
338
+ * @component Dialog.Trigger - Button or element that opens the dialog.
339
+ * Accepts any pressable element as children.
340
+ *
341
+ * @component Dialog.Portal - Portal container for dialog overlay and content.
342
+ * Renders children in a portal with centered layout.
343
+ *
344
+ * @component Dialog.Overlay - Background overlay that covers the screen.
345
+ * Typically closes the dialog when clicked.
346
+ *
347
+ * @component Dialog.Content - The dialog content container.
348
+ * Contains the main dialog UI elements.
349
+ *
350
+ * @component Dialog.Close - Close button for the dialog.
351
+ * Can accept custom children or uses default close icon.
352
+ *
353
+ * @component Dialog.Title - The dialog title text.
354
+ * Automatically linked for accessibility.
355
+ *
356
+ * @component Dialog.Description - The dialog description text.
357
+ * Automatically linked for accessibility.
358
+ *
359
+ * @see Full documentation: https://v3.heroui.com/docs/native/components/dialog
360
+ */
361
+ const Dialog = Object.assign(DialogRoot, {
362
+ /** @optional Trigger element to open the dialog */
363
+ Trigger: DialogTrigger,
364
+ /** @optional Portal container for overlay and content */
365
+ Portal: DialogPortal,
366
+ /** @optional Background overlay */
367
+ Overlay: DialogOverlay,
368
+ /** @optional Main dialog content container */
369
+ Content: DialogContent,
370
+ /** @optional Close button for the dialog */
371
+ Close: DialogClose,
372
+ /** @optional Dialog title text */
373
+ Title: DialogTitle,
374
+ /** @optional Dialog description text */
375
+ Description: DialogDescription,
376
+ });
377
+
378
+ export { useDialog, useDialogAnimation };
379
+ export default Dialog;
@@ -0,0 +1,199 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { StyleProp, TextProps, ViewStyle } from 'react-native';
3
+ import type { SharedValue } from 'react-native-reanimated';
4
+ import type {
5
+ AnimationRootDisableAll,
6
+ PopupDialogContentAnimation,
7
+ PopupOverlayAnimation,
8
+ } from '../../helpers/internal/types';
9
+ import type * as DialogPrimitivesTypes from '../../primitives/dialog/dialog.types';
10
+ import type { CloseButtonProps } from '../close-button/close-button.types';
11
+
12
+ /**
13
+ * Dialog internal state for animation coordination
14
+ */
15
+ export type DialogState = 'idle' | 'open' | 'close';
16
+
17
+ /**
18
+ * Context value for dialog animation state
19
+ */
20
+ export interface DialogAnimationContextValue {
21
+ /** Animation progress shared value (0=idle, 1=open, 2=close) */
22
+ progress: SharedValue<number>;
23
+ /** Dragging state shared value */
24
+ isDragging: SharedValue<boolean>;
25
+ /** Gesture release animation running state shared value */
26
+ isGestureReleaseAnimationRunning: SharedValue<boolean>;
27
+ }
28
+
29
+ /**
30
+ * Dialog Root component props
31
+ */
32
+ export interface DialogRootProps extends DialogPrimitivesTypes.RootProps {
33
+ /**
34
+ * The content of the dialog
35
+ */
36
+ children?: ReactNode;
37
+ /**
38
+ * Animation configuration for dialog root
39
+ * - `"disable-all"`: Disable all animations including children
40
+ * - `false` or `"disabled"`: Disable only root animations
41
+ * - `true` or `undefined`: Use default animations
42
+ */
43
+ animation?: AnimationRootDisableAll;
44
+ }
45
+
46
+ /**
47
+ * Dialog Trigger component props
48
+ */
49
+ export interface DialogTriggerProps extends DialogPrimitivesTypes.TriggerProps {
50
+ /**
51
+ * The trigger element content
52
+ */
53
+ children?: ReactNode;
54
+ }
55
+
56
+ /**
57
+ * Dialog Portal component props
58
+ */
59
+ export interface DialogPortalProps extends DialogPrimitivesTypes.PortalProps {
60
+ /**
61
+ * When true, uses a regular View instead of FullWindowOverlay on iOS.
62
+ * Enables React Native element inspector but overlay won't appear above native modals.
63
+ * @default false
64
+ */
65
+ disableFullWindowOverlay?: boolean;
66
+ /**
67
+ * Additional CSS class for the portal container
68
+ */
69
+ className?: string;
70
+ /**
71
+ * Additional style for the portal container
72
+ */
73
+ style?: StyleProp<ViewStyle>;
74
+ /**
75
+ * The portal content
76
+ */
77
+ children: ReactNode;
78
+ }
79
+
80
+ /**
81
+ * Animation configuration for Dialog Overlay component
82
+ */
83
+ export type DialogOverlayAnimation = PopupOverlayAnimation;
84
+
85
+ /**
86
+ * Dialog Overlay component props
87
+ */
88
+ export interface DialogOverlayProps
89
+ extends Omit<DialogPrimitivesTypes.OverlayProps, 'asChild'> {
90
+ /**
91
+ * Additional CSS class for the overlay
92
+ *
93
+ * @note The following style properties are occupied by animations and cannot be set via className:
94
+ * - `opacity` - Animated for overlay show/hide transitions (idle: 0, open: 1, close: 0)
95
+ *
96
+ * To customize this property, use the `animation` prop:
97
+ * ```tsx
98
+ * <Dialog.Overlay
99
+ * animation={{
100
+ * opacity: { value: [0, 1, 0] }
101
+ * }}
102
+ * />
103
+ * ```
104
+ *
105
+ * To completely disable animated styles and use your own via className or style prop, set `isAnimatedStyleActive={false}`.
106
+ */
107
+ className?: string;
108
+ /**
109
+ * Animation configuration for overlay
110
+ * - `false` or `"disabled"`: Disable all animations
111
+ * - `true` or `undefined`: Use default animations
112
+ * - `object`: Custom animation configuration
113
+ */
114
+ animation?: DialogOverlayAnimation;
115
+ /**
116
+ * Whether animated styles (react-native-reanimated) are active
117
+ * When `false`, the animated style is removed and you can implement custom logic
118
+ * This prop should only be used when you want to write custom styling logic instead of the default animated styles
119
+ * @default true
120
+ */
121
+ isAnimatedStyleActive?: boolean;
122
+ }
123
+
124
+ /**
125
+ * Animation configuration for Dialog Content component
126
+ * Reuses PopupDialogContentAnimation since they share the same animation behavior
127
+ */
128
+ export type DialogContentAnimation = PopupDialogContentAnimation;
129
+
130
+ /**
131
+ * Dialog Content component props
132
+ */
133
+ export interface DialogContentProps
134
+ extends Omit<DialogPrimitivesTypes.ContentProps, 'asChild'> {
135
+ /**
136
+ * Additional CSS class for the content container
137
+ *
138
+ * @note The following style properties are occupied by animations and cannot be set via className:
139
+ * - `opacity` - Animated for content show/hide transitions (idle: 0, open: 1, close: 0)
140
+ * - `transform` (specifically `scale`) - Animated for content show/hide transitions (idle: 0.97, open: 1, close: 0.97)
141
+ *
142
+ * To customize these properties, use the `animation` prop:
143
+ * ```tsx
144
+ * <Dialog.Content
145
+ * animation={{
146
+ * opacity: { value: [0, 1, 0] },
147
+ * scale: { value: [0.97, 1, 0.97] }
148
+ * }}
149
+ * />
150
+ * ```
151
+ *
152
+ * To completely disable animated styles and use your own via className or style prop, set `isAnimatedStyleActive={false}`.
153
+ */
154
+ className?: string;
155
+ /**
156
+ * The dialog content
157
+ */
158
+ children?: ReactNode;
159
+ /**
160
+ * Animation configuration for content
161
+ * - `false` or `"disabled"`: Disable all animations
162
+ * - `true` or `undefined`: Use default animations
163
+ * - `object`: Custom animation configuration
164
+ */
165
+ animation?: DialogContentAnimation;
166
+ /**
167
+ * Whether the dialog content can be swiped to dismiss
168
+ * @default true
169
+ */
170
+ isSwipeable?: boolean;
171
+ }
172
+
173
+ /**
174
+ * Dialog Close component props
175
+ *
176
+ * Extends CloseButtonProps, allowing full override of all close button props.
177
+ * Automatically handles dialog close functionality when pressed.
178
+ */
179
+ export type DialogCloseProps = CloseButtonProps;
180
+
181
+ /**
182
+ * Dialog Title component props
183
+ */
184
+ export interface DialogTitleProps extends TextProps {
185
+ /**
186
+ * Additional CSS class for the title
187
+ */
188
+ className?: string;
189
+ }
190
+
191
+ /**
192
+ * Dialog Description component props
193
+ */
194
+ export interface DialogDescriptionProps extends TextProps {
195
+ /**
196
+ * Additional CSS class for the description
197
+ */
198
+ className?: string;
199
+ }
@@ -0,0 +1,12 @@
1
+ export { default as Dialog, useDialog, useDialogAnimation } from './dialog';
2
+ export { dialogClassNames } from './dialog.styles';
3
+ export type {
4
+ DialogCloseProps,
5
+ DialogContentProps,
6
+ DialogDescriptionProps,
7
+ DialogOverlayProps,
8
+ DialogPortalProps,
9
+ DialogRootProps,
10
+ DialogTitleProps,
11
+ DialogTriggerProps,
12
+ } from './dialog.types';