@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,624 @@
1
+ import BottomSheet from '@gorhom/bottom-sheet';
2
+ import { createContext, forwardRef, use, useMemo } from 'react';
3
+ import type {
4
+ GestureResponderEvent,
5
+ Text as RNText,
6
+ StyleProp,
7
+ ViewStyle,
8
+ } from 'react-native';
9
+ import { StyleSheet, useWindowDimensions, View } from 'react-native';
10
+ import Animated from 'react-native-reanimated';
11
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
12
+ import { useThemeColor } from '../../helpers/external/hooks';
13
+ import { cn } from '../../helpers/external/utils';
14
+ import {
15
+ BottomSheetContent,
16
+ FullWindowOverlay,
17
+ HeroText,
18
+ } from '../../helpers/internal/components';
19
+ import {
20
+ AnimationSettingsProvider,
21
+ useAnimationSettings,
22
+ } from '../../helpers/internal/contexts';
23
+ import {
24
+ usePopupOverlayAnimation,
25
+ usePopupPopoverContentAnimation,
26
+ usePopupRootAnimation,
27
+ } from '../../helpers/internal/hooks';
28
+ import type { PressableRef } from '../../helpers/internal/types';
29
+ import * as PopoverPrimitives from '../../primitives/popover';
30
+ import * as PopoverPrimitivesTypes from '../../primitives/popover/popover.types';
31
+ import { CloseButton } from '../close-button';
32
+ import { ArrowSvg } from './arrow-svg';
33
+ import {
34
+ PopoverAnimationProvider,
35
+ usePopoverAnimation,
36
+ } from './popover.animation';
37
+ import {
38
+ DEFAULT_ALIGN_OFFSET,
39
+ DEFAULT_INSETS,
40
+ DEFAULT_OFFSET,
41
+ DISPLAY_NAME,
42
+ } from './popover.constants';
43
+ import { popoverClassNames, popoverStyleSheet } from './popover.styles';
44
+ import type {
45
+ PopoverArrowProps,
46
+ PopoverCloseProps,
47
+ PopoverContentBottomSheetProps,
48
+ PopoverContentContextValue,
49
+ PopoverContentPopoverProps,
50
+ PopoverContentProps,
51
+ PopoverDescriptionProps,
52
+ PopoverOverlayProps,
53
+ PopoverPortalProps,
54
+ PopoverRootProps,
55
+ PopoverTitleProps,
56
+ PopoverTriggerProps,
57
+ } from './popover.types';
58
+
59
+ const AnimatedOverlay = Animated.createAnimatedComponent(
60
+ PopoverPrimitives.Overlay
61
+ );
62
+
63
+ const AnimatedContent = Animated.createAnimatedComponent(
64
+ PopoverPrimitives.Content
65
+ );
66
+
67
+ const usePopover = PopoverPrimitives.useRootContext;
68
+
69
+ const PopoverContentContext = createContext<PopoverContentContextValue>({
70
+ placement: undefined,
71
+ });
72
+
73
+ // --------------------------------------------------
74
+
75
+ const PopoverRoot = forwardRef<
76
+ PopoverPrimitivesTypes.RootRef,
77
+ PopoverRootProps
78
+ >(
79
+ (
80
+ {
81
+ children,
82
+ isOpen: isOpenProp,
83
+ isDefaultOpen,
84
+ onOpenChange: onOpenChangeProp,
85
+ presentation = 'popover',
86
+ animation,
87
+ ...props
88
+ },
89
+ ref
90
+ ) => {
91
+ const { isAllAnimationsDisabled, progress, isDragging } =
92
+ usePopupRootAnimation({
93
+ animation,
94
+ });
95
+
96
+ const animationContextValue = useMemo(
97
+ () => ({
98
+ progress,
99
+ isDragging,
100
+ }),
101
+ [progress, isDragging]
102
+ );
103
+
104
+ const animationSettingsContextValue = useMemo(
105
+ () => ({
106
+ isAllAnimationsDisabled,
107
+ }),
108
+ [isAllAnimationsDisabled]
109
+ );
110
+
111
+ return (
112
+ <AnimationSettingsProvider value={animationSettingsContextValue}>
113
+ <PopoverAnimationProvider value={animationContextValue}>
114
+ <PopoverPrimitives.Root
115
+ ref={ref}
116
+ presentation={presentation}
117
+ isOpen={isOpenProp}
118
+ isDefaultOpen={isDefaultOpen}
119
+ onOpenChange={onOpenChangeProp}
120
+ {...props}
121
+ >
122
+ {children}
123
+ </PopoverPrimitives.Root>
124
+ </PopoverAnimationProvider>
125
+ </AnimationSettingsProvider>
126
+ );
127
+ }
128
+ );
129
+
130
+ // --------------------------------------------------
131
+
132
+ const PopoverTrigger = forwardRef<
133
+ PopoverPrimitivesTypes.TriggerRef,
134
+ PopoverTriggerProps
135
+ >((props, ref) => {
136
+ return <PopoverPrimitives.Trigger ref={ref} {...props} />;
137
+ });
138
+
139
+ // --------------------------------------------------
140
+
141
+ const PopoverPortal = ({
142
+ className,
143
+ children,
144
+ disableFullWindowOverlay = false,
145
+ ...props
146
+ }: PopoverPortalProps) => {
147
+ const animationSettingsContext = useAnimationSettings();
148
+ const animationContext = usePopoverAnimation();
149
+
150
+ const portalClassName = popoverClassNames.portal({ className });
151
+
152
+ return (
153
+ <PopoverPrimitives.Portal {...props}>
154
+ <AnimationSettingsProvider value={animationSettingsContext}>
155
+ <PopoverAnimationProvider value={animationContext}>
156
+ <FullWindowOverlay
157
+ disableFullWindowOverlay={disableFullWindowOverlay}
158
+ >
159
+ <View className={portalClassName} pointerEvents="box-none">
160
+ {children}
161
+ </View>
162
+ </FullWindowOverlay>
163
+ </PopoverAnimationProvider>
164
+ </AnimationSettingsProvider>
165
+ </PopoverPrimitives.Portal>
166
+ );
167
+ };
168
+
169
+ // --------------------------------------------------
170
+
171
+ const PopoverOverlay = forwardRef<
172
+ PopoverPrimitivesTypes.OverlayRef,
173
+ PopoverOverlayProps
174
+ >(
175
+ (
176
+ { className, style, animation, isAnimatedStyleActive = true, ...props },
177
+ ref
178
+ ) => {
179
+ const { isOpen, presentation } = usePopover();
180
+ const { progress, isDragging } = usePopoverAnimation();
181
+
182
+ const overlayClassName = popoverClassNames.overlay({ className });
183
+
184
+ const { rContainerStyle, entering, exiting } = usePopupOverlayAnimation({
185
+ progress: presentation === 'bottom-sheet' ? progress : undefined,
186
+ isDragging: presentation === 'bottom-sheet' ? isDragging : undefined,
187
+ animation,
188
+ });
189
+
190
+ const overlayStyle = isAnimatedStyleActive
191
+ ? [rContainerStyle, style]
192
+ : style;
193
+
194
+ return (
195
+ <Animated.View
196
+ entering={entering}
197
+ exiting={exiting}
198
+ style={StyleSheet.absoluteFill}
199
+ pointerEvents="box-none"
200
+ >
201
+ <AnimatedOverlay
202
+ ref={ref}
203
+ className={overlayClassName}
204
+ style={overlayStyle}
205
+ forceMount={presentation === 'bottom-sheet' ? true : undefined}
206
+ pointerEvents={isOpen ? 'auto' : 'none'}
207
+ {...props}
208
+ />
209
+ </Animated.View>
210
+ );
211
+ }
212
+ );
213
+
214
+ // --------------------------------------------------
215
+
216
+ const PopoverContentPopover = forwardRef<
217
+ PopoverPrimitivesTypes.ContentRef,
218
+ PopoverContentPopoverProps
219
+ >(
220
+ (
221
+ {
222
+ placement = 'bottom',
223
+ align = 'center',
224
+ avoidCollisions = true,
225
+ offset = DEFAULT_OFFSET,
226
+ alignOffset = DEFAULT_ALIGN_OFFSET,
227
+ className,
228
+ children,
229
+ style,
230
+ animation,
231
+ ...props
232
+ },
233
+ ref
234
+ ) => {
235
+ const { contentLayout } = usePopover();
236
+
237
+ const safeAreaInsets = useSafeAreaInsets();
238
+ const { height: screenHeight } = useWindowDimensions();
239
+
240
+ // Initially useRelativePosition returns { position: 'absolute', opacity: 0, top: dimensions.height }
241
+ // So we need to wait for the content to be ready before showing it
242
+ const isReady = Boolean(contentLayout?.y && contentLayout.y < screenHeight);
243
+
244
+ const insets = {
245
+ top: DEFAULT_INSETS.top + safeAreaInsets.top,
246
+ bottom: DEFAULT_INSETS.bottom + safeAreaInsets.bottom,
247
+ left: DEFAULT_INSETS.left + safeAreaInsets.left,
248
+ right: DEFAULT_INSETS.right + safeAreaInsets.right,
249
+ };
250
+
251
+ const contentClassName = popoverClassNames.content({
252
+ className,
253
+ });
254
+
255
+ const { entering, exiting } = usePopupPopoverContentAnimation({
256
+ placement,
257
+ offset,
258
+ animation,
259
+ });
260
+
261
+ return (
262
+ <PopoverContentContext value={{ placement }}>
263
+ {isReady && (
264
+ <AnimatedContent
265
+ ref={ref}
266
+ entering={entering}
267
+ exiting={exiting}
268
+ placement={placement}
269
+ align={align}
270
+ avoidCollisions={avoidCollisions}
271
+ offset={offset}
272
+ alignOffset={alignOffset}
273
+ insets={insets}
274
+ className={contentClassName}
275
+ style={[popoverStyleSheet.contentContainer, style]}
276
+ {...props}
277
+ >
278
+ {children}
279
+ </AnimatedContent>
280
+ )}
281
+ <AnimatedContent
282
+ placement={placement}
283
+ accessible={false}
284
+ accessibilityElementsHidden={true}
285
+ importantForAccessibility="no"
286
+ pointerEvents="none"
287
+ collapsable={false}
288
+ align={align}
289
+ avoidCollisions={avoidCollisions}
290
+ offset={offset}
291
+ alignOffset={alignOffset}
292
+ insets={insets}
293
+ className={cn(contentClassName, 'absolute opacity-0')}
294
+ style={[popoverStyleSheet.contentContainer, style]}
295
+ {...props}
296
+ >
297
+ {children}
298
+ </AnimatedContent>
299
+ </PopoverContentContext>
300
+ );
301
+ }
302
+ );
303
+
304
+ // --------------------------------------------------
305
+
306
+ const PopoverContentBottomSheet = forwardRef<
307
+ BottomSheet,
308
+ PopoverContentBottomSheetProps
309
+ >(
310
+ (
311
+ {
312
+ children,
313
+ index: initialIndex,
314
+ backgroundClassName,
315
+ handleIndicatorClassName,
316
+ contentContainerClassName: contentContainerClassNameProp,
317
+ contentContainerProps,
318
+ animation,
319
+ animationConfigs,
320
+ ...restProps
321
+ },
322
+ ref
323
+ ) => {
324
+ const { isOpen, onOpenChange } = usePopover();
325
+
326
+ const { progress, isDragging } = usePopoverAnimation();
327
+
328
+ return (
329
+ <BottomSheetContent
330
+ ref={ref}
331
+ index={initialIndex}
332
+ backgroundClassName={backgroundClassName}
333
+ handleIndicatorClassName={handleIndicatorClassName}
334
+ contentContainerClassName={contentContainerClassNameProp}
335
+ contentContainerProps={contentContainerProps}
336
+ animation={animation}
337
+ animationConfigs={animationConfigs}
338
+ backgroundStyle={[
339
+ popoverStyleSheet.contentContainer,
340
+ restProps.backgroundStyle,
341
+ ]}
342
+ isOpen={isOpen}
343
+ progress={progress}
344
+ isDragging={isDragging}
345
+ onOpenChange={onOpenChange}
346
+ {...restProps}
347
+ >
348
+ {children}
349
+ </BottomSheetContent>
350
+ );
351
+ }
352
+ );
353
+
354
+ // --------------------------------------------------
355
+
356
+ const PopoverContent = forwardRef<
357
+ PopoverPrimitivesTypes.ContentRef | BottomSheet,
358
+ PopoverContentProps
359
+ >((props, ref) => {
360
+ const { presentation: contextPresentation } = usePopover();
361
+
362
+ if (__DEV__) {
363
+ if (props.presentation !== contextPresentation) {
364
+ throw new Error(
365
+ `Popover.Content presentation prop ("${props.presentation}") does not match Popover.Root presentation prop ("${contextPresentation}"). They must be the same.`
366
+ );
367
+ }
368
+ }
369
+
370
+ if (props.presentation === 'bottom-sheet') {
371
+ return (
372
+ <PopoverContentBottomSheet
373
+ ref={ref as React.Ref<BottomSheet>}
374
+ {...(props as PopoverContentBottomSheetProps)}
375
+ />
376
+ );
377
+ }
378
+
379
+ return (
380
+ <PopoverContentPopover
381
+ ref={ref as React.Ref<PopoverPrimitivesTypes.ContentRef>}
382
+ {...(props as PopoverContentPopoverProps)}
383
+ />
384
+ );
385
+ });
386
+
387
+ // --------------------------------------------------
388
+
389
+ const PopoverClose = forwardRef<PressableRef, PopoverCloseProps>(
390
+ (props, ref) => {
391
+ const { onPress: onPressProp, ...restProps } = props;
392
+ const { onOpenChange } = usePopover();
393
+
394
+ const onPress = (ev: GestureResponderEvent) => {
395
+ onOpenChange(false);
396
+ if (typeof onPressProp === 'function') {
397
+ onPressProp(ev);
398
+ }
399
+ };
400
+
401
+ return <CloseButton ref={ref} onPress={onPress} {...restProps} />;
402
+ }
403
+ );
404
+
405
+ // --------------------------------------------------
406
+
407
+ const PopoverTitle = forwardRef<RNText, PopoverTitleProps>(
408
+ ({ className, children, ...props }, ref) => {
409
+ const titleClassName = popoverClassNames.label({ className });
410
+
411
+ return (
412
+ <HeroText
413
+ ref={ref}
414
+ role="heading"
415
+ accessibilityRole="header"
416
+ className={titleClassName}
417
+ {...props}
418
+ >
419
+ {children}
420
+ </HeroText>
421
+ );
422
+ }
423
+ );
424
+
425
+ // --------------------------------------------------
426
+
427
+ const PopoverDescription = forwardRef<RNText, PopoverDescriptionProps>(
428
+ ({ className, children, ...props }, ref) => {
429
+ const descriptionClassName = popoverClassNames.description({
430
+ className,
431
+ });
432
+
433
+ return (
434
+ <HeroText
435
+ ref={ref}
436
+ accessibilityRole="text"
437
+ className={descriptionClassName}
438
+ {...props}
439
+ >
440
+ {children}
441
+ </HeroText>
442
+ );
443
+ }
444
+ );
445
+
446
+ // --------------------------------------------------
447
+
448
+ const PopoverArrow = forwardRef<View, PopoverArrowProps>(
449
+ (
450
+ {
451
+ children,
452
+ style,
453
+ className,
454
+ height = 12,
455
+ width = 20,
456
+ fill,
457
+ stroke,
458
+ strokeWidth = 1,
459
+ placement: placementLocal,
460
+ strokeBaselineInset = 1,
461
+ },
462
+ ref
463
+ ) => {
464
+ const [themeColorOverlay, themeColorBorder] = useThemeColor([
465
+ 'overlay',
466
+ 'border',
467
+ ]);
468
+ const { triggerPosition, contentLayout } = usePopover();
469
+ const { placement: placementContext } = use(PopoverContentContext);
470
+
471
+ const placement = placementLocal || placementContext;
472
+
473
+ const arrowClassName = popoverClassNames.arrow({ className });
474
+
475
+ if (
476
+ !triggerPosition ||
477
+ !contentLayout ||
478
+ contentLayout.x === 0 ||
479
+ contentLayout.y === 0 ||
480
+ !placement
481
+ ) {
482
+ return null;
483
+ }
484
+
485
+ const arrowFill = fill || themeColorOverlay;
486
+ const arrowStroke = stroke || themeColorBorder;
487
+
488
+ const getArrowPosition = (): StyleProp<ViewStyle> => {
489
+ const triggerCenterX = triggerPosition.pageX + triggerPosition.width / 2;
490
+ const triggerCenterY = triggerPosition.pageY + triggerPosition.height / 2;
491
+
492
+ const baseStyle: ViewStyle = {
493
+ position: 'absolute',
494
+ };
495
+
496
+ switch (placement) {
497
+ case 'top':
498
+ return {
499
+ ...baseStyle,
500
+ bottom: -height + strokeBaselineInset,
501
+ left: Math.min(
502
+ Math.max(12, triggerCenterX - contentLayout.x - width / 2),
503
+ contentLayout.width - width - 12
504
+ ),
505
+ };
506
+ case 'bottom':
507
+ return {
508
+ ...baseStyle,
509
+ top: -height + strokeBaselineInset,
510
+ left: Math.min(
511
+ Math.max(12, triggerCenterX - contentLayout.x - width / 2),
512
+ contentLayout.width - width - 12
513
+ ),
514
+ };
515
+
516
+ case 'left':
517
+ return {
518
+ ...baseStyle,
519
+ right: -height + strokeBaselineInset,
520
+ top: Math.min(
521
+ Math.max(12, triggerCenterY - contentLayout.y - width / 2),
522
+ contentLayout.height - width - 12
523
+ ),
524
+ };
525
+
526
+ case 'right':
527
+ return {
528
+ ...baseStyle,
529
+ left: -height + strokeBaselineInset,
530
+ top: Math.min(
531
+ Math.max(12, triggerCenterY - contentLayout.y - width / 2),
532
+ contentLayout.height - width - 12
533
+ ),
534
+ };
535
+ default:
536
+ return baseStyle;
537
+ }
538
+ };
539
+
540
+ const arrowPositionStyle = getArrowPosition();
541
+
542
+ return (
543
+ <Animated.View
544
+ ref={ref}
545
+ className={arrowClassName}
546
+ style={[arrowPositionStyle, style]}
547
+ pointerEvents="none"
548
+ >
549
+ {children ? (
550
+ children
551
+ ) : (
552
+ <ArrowSvg
553
+ width={width}
554
+ height={height}
555
+ placement={placement}
556
+ fill={arrowFill}
557
+ stroke={arrowStroke}
558
+ strokeWidth={strokeWidth}
559
+ />
560
+ )}
561
+ </Animated.View>
562
+ );
563
+ }
564
+ );
565
+
566
+ // --------------------------------------------------
567
+
568
+ PopoverRoot.displayName = DISPLAY_NAME.ROOT;
569
+ PopoverTrigger.displayName = DISPLAY_NAME.TRIGGER;
570
+ PopoverPortal.displayName = DISPLAY_NAME.PORTAL;
571
+ PopoverOverlay.displayName = DISPLAY_NAME.OVERLAY;
572
+ PopoverContent.displayName = DISPLAY_NAME.CONTENT;
573
+ PopoverClose.displayName = DISPLAY_NAME.CLOSE;
574
+ PopoverTitle.displayName = DISPLAY_NAME.TITLE;
575
+ PopoverDescription.displayName = DISPLAY_NAME.DESCRIPTION;
576
+ PopoverArrow.displayName = DISPLAY_NAME.ARROW;
577
+
578
+ /**
579
+ * Compound Popover component with sub-components
580
+ *
581
+ * @component Popover - Main container that manages open/close state, positioning,
582
+ * and provides context to child components. Handles placement, alignment, and collision detection.
583
+ *
584
+ * @component Popover.Trigger - Clickable element that toggles the popover visibility.
585
+ * Wraps any child element with press handlers.
586
+ *
587
+ * @component Popover.Portal - Renders popover content in a portal layer above other content.
588
+ * Ensures proper stacking and positioning.
589
+ *
590
+ * @component Popover.Overlay - Optional background overlay. Can be transparent or
591
+ * semi-transparent to capture outside clicks.
592
+ *
593
+ * @component Popover.Content - Container for popover content with two presentation modes:
594
+ * default floating popover with positioning and collision detection, or bottom sheet modal.
595
+ * Supports arrow indicators and custom animations.
596
+ *
597
+ * @component Popover.Arrow - Optional arrow indicator pointing to the trigger element.
598
+ * Automatically positions itself based on popover placement.
599
+ *
600
+ * @component Popover.Close - Close button for the popover.
601
+ * Can accept custom children or uses default close icon.
602
+ *
603
+ * @component Popover.Title - Optional title text with pre-styled typography.
604
+ *
605
+ * @component Popover.Description - Optional description text with muted styling.
606
+ *
607
+ * Props flow from Popover to sub-components via context (placement, align, offset, etc.).
608
+ * The popover automatically positions itself relative to the trigger element.
609
+ *
610
+ * @see Full documentation: https://v3.heroui.com/docs/native/components/popover
611
+ */
612
+ const Popover = Object.assign(PopoverRoot, {
613
+ Trigger: PopoverTrigger,
614
+ Portal: PopoverPortal,
615
+ Overlay: PopoverOverlay,
616
+ Content: PopoverContent,
617
+ Arrow: PopoverArrow,
618
+ Close: PopoverClose,
619
+ Title: PopoverTitle,
620
+ Description: PopoverDescription,
621
+ });
622
+
623
+ export { usePopover, usePopoverAnimation };
624
+ export default Popover;