@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,394 @@
1
+ import type BottomSheet from '@gorhom/bottom-sheet';
2
+ import type { ReactNode } from 'react';
3
+ import type { TextProps } from 'react-native';
4
+ import type { SharedValue, WithTimingConfig } from 'react-native-reanimated';
5
+ import type {
6
+ Animation,
7
+ AnimationRootDisableAll,
8
+ AnimationValue,
9
+ BaseBottomSheetContentProps,
10
+ PopupOverlayAnimation,
11
+ PopupPopoverContentAnimation,
12
+ } from '../../helpers/internal/types';
13
+ import type * as MenuPrimitivesTypes from '../../primitives/menu/menu.types';
14
+ import type { CloseButtonProps } from '../close-button/close-button.types';
15
+
16
+ /**
17
+ * Context value for menu animation state
18
+ */
19
+ export interface MenuAnimationContextValue {
20
+ /** Animation progress shared value (0=idle, 1=open, 2=close) */
21
+ progress: SharedValue<number>;
22
+ /** Dragging state shared value */
23
+ isDragging: SharedValue<boolean>;
24
+ }
25
+
26
+ /**
27
+ * Ref type for the Menu Trigger component
28
+ */
29
+ export type MenuTriggerRef = MenuPrimitivesTypes.TriggerRef;
30
+
31
+ /**
32
+ * Presentation mode for the menu content
33
+ */
34
+ export type MenuPresentation = 'popover' | 'bottom-sheet';
35
+
36
+ /**
37
+ * Menu placement options
38
+ */
39
+ export type MenuPlacement = 'top' | 'bottom' | 'left' | 'right';
40
+
41
+ /**
42
+ * Menu alignment options
43
+ */
44
+ export type MenuAlign = 'start' | 'center' | 'end';
45
+
46
+ /**
47
+ * Menu context value with presentation and placement
48
+ */
49
+ export interface MenuContentContextValue {
50
+ /**
51
+ * Current placement of the menu
52
+ */
53
+ placement?: MenuPlacement;
54
+ }
55
+
56
+ /**
57
+ * Menu Root component props
58
+ */
59
+ export interface MenuRootProps extends MenuPrimitivesTypes.RootProps {
60
+ /**
61
+ * The content of the menu
62
+ */
63
+ children?: ReactNode;
64
+ /**
65
+ * Animation configuration for menu root
66
+ * - `"disable-all"`: Disable all animations including children
67
+ * - `true` or `undefined`: Use default animations
68
+ */
69
+ animation?: AnimationRootDisableAll;
70
+ }
71
+
72
+ /**
73
+ * Menu Trigger component props
74
+ */
75
+ export interface MenuTriggerProps extends MenuPrimitivesTypes.TriggerProps {
76
+ /**
77
+ * The trigger element content
78
+ */
79
+ children?: ReactNode;
80
+ /**
81
+ * Additional CSS class for the trigger
82
+ */
83
+ className?: string;
84
+ }
85
+
86
+ /**
87
+ * Menu Portal component props
88
+ */
89
+ export interface MenuPortalProps extends MenuPrimitivesTypes.PortalProps {
90
+ /**
91
+ * When true, uses a regular View instead of FullWindowOverlay on iOS.
92
+ * Enables React Native element inspector but overlay won't appear above native modals.
93
+ * @default false
94
+ */
95
+ disableFullWindowOverlay?: boolean;
96
+ /**
97
+ * Additional CSS class for the portal container
98
+ */
99
+ className?: string;
100
+ /**
101
+ * The portal content
102
+ */
103
+ children: ReactNode;
104
+ }
105
+
106
+ /**
107
+ * Menu Overlay component props
108
+ */
109
+ export interface MenuOverlayProps extends MenuPrimitivesTypes.OverlayProps {
110
+ /**
111
+ * Additional CSS class for the overlay
112
+ */
113
+ className?: string;
114
+ /**
115
+ * Animation configuration for overlay
116
+ * - `false` or `"disabled"`: Disable all animations
117
+ * - `true` or `undefined`: Use default animations
118
+ * - `object`: Custom animation configuration
119
+ */
120
+ animation?: PopupOverlayAnimation;
121
+ /**
122
+ * Whether animated styles (react-native-reanimated) are active
123
+ * When `false`, the animated style is removed and you can implement custom logic
124
+ * @default true
125
+ */
126
+ isAnimatedStyleActive?: boolean;
127
+ }
128
+
129
+ /**
130
+ * Menu Content props for 'popover' presentation
131
+ */
132
+ export interface MenuContentPopoverProps
133
+ extends MenuPrimitivesTypes.ContentProps {
134
+ /**
135
+ * Presentation mode for the menu content
136
+ */
137
+ presentation: 'popover';
138
+ /**
139
+ * Additional CSS class for the content container
140
+ */
141
+ className?: string;
142
+ /**
143
+ * The menu content
144
+ */
145
+ children?: ReactNode;
146
+ /**
147
+ * Animation configuration for content
148
+ * - `false` or `"disabled"`: Disable all animations
149
+ * - `true` or `undefined`: Use default animations
150
+ * - `object`: Custom animation configuration
151
+ */
152
+ animation?: PopupPopoverContentAnimation;
153
+ }
154
+
155
+ /**
156
+ * Menu Content props for 'bottom-sheet' presentation
157
+ */
158
+ export interface MenuContentBottomSheetProps
159
+ extends Partial<React.ComponentProps<typeof BottomSheet>>,
160
+ BaseBottomSheetContentProps {
161
+ /**
162
+ * Presentation mode for the menu
163
+ */
164
+ presentation: 'bottom-sheet';
165
+ }
166
+
167
+ /**
168
+ * Menu Content component props
169
+ */
170
+ export type MenuContentProps =
171
+ | MenuContentPopoverProps
172
+ | MenuContentBottomSheetProps;
173
+
174
+ /**
175
+ * Menu Close component props
176
+ *
177
+ * Extends CloseButtonProps, allowing full override of all close button props.
178
+ * Automatically handles menu close functionality when pressed.
179
+ */
180
+ export type MenuCloseProps = CloseButtonProps;
181
+
182
+ // --------------------------------------------------
183
+ // Group
184
+ // --------------------------------------------------
185
+
186
+ /**
187
+ * Menu Group component props
188
+ */
189
+ export interface MenuGroupProps
190
+ extends Omit<MenuPrimitivesTypes.GroupProps, 'asChild'> {
191
+ /**
192
+ * Additional CSS class for the group container
193
+ */
194
+ className?: string;
195
+ /**
196
+ * The group content (Menu.Item elements)
197
+ */
198
+ children?: ReactNode;
199
+ }
200
+
201
+ // --------------------------------------------------
202
+ // Label
203
+ // --------------------------------------------------
204
+
205
+ /**
206
+ * Menu Label component props
207
+ */
208
+ export interface MenuLabelProps extends TextProps {
209
+ /**
210
+ * Additional CSS class for the label
211
+ */
212
+ className?: string;
213
+ }
214
+
215
+ // --------------------------------------------------
216
+ // Item
217
+ // --------------------------------------------------
218
+
219
+ /**
220
+ * Animation configuration for a Menu Item.
221
+ * Controls scale and background-color transitions on press.
222
+ *
223
+ * - `true` or `undefined`: Use default animations
224
+ * - `false` or `"disabled"`: Disable all item animations
225
+ * - `object`: Custom animation configuration
226
+ */
227
+ export type MenuItemAnimation = Animation<{
228
+ /**
229
+ * Scale animation when pressed
230
+ */
231
+ scale?: AnimationValue<{
232
+ /**
233
+ * Scale value when pressed
234
+ * @default 0.99
235
+ */
236
+ value?: number;
237
+ /**
238
+ * Animation timing configuration
239
+ * @default { duration: 200, easing: Easing.out(Easing.ease) }
240
+ */
241
+ timingConfig?: WithTimingConfig;
242
+ }>;
243
+ /**
244
+ * Background-color animation when pressed
245
+ */
246
+ backgroundColor?: AnimationValue<{
247
+ /**
248
+ * Background color shown while pressed.
249
+ * Resolved from the `default` theme token when omitted.
250
+ * @default useThemeColor('default')
251
+ */
252
+ value?: string;
253
+ /**
254
+ * Animation timing configuration
255
+ * @default { duration: 150 }
256
+ */
257
+ timingConfig?: WithTimingConfig;
258
+ }>;
259
+ }>;
260
+
261
+ /**
262
+ * Render function props for MenuItem children
263
+ */
264
+ export interface MenuItemRenderProps {
265
+ /** Whether this item is currently selected */
266
+ isSelected: boolean;
267
+ /** Whether the item is disabled */
268
+ isDisabled: boolean;
269
+ /** Whether the item is currently pressed */
270
+ isPressed: SharedValue<boolean>;
271
+ /** Visual variant of the item */
272
+ variant: MenuPrimitivesTypes.ItemVariant;
273
+ }
274
+
275
+ /**
276
+ * Menu Item component props
277
+ */
278
+ export interface MenuItemProps
279
+ extends Omit<MenuPrimitivesTypes.ItemProps, 'children'> {
280
+ /**
281
+ * Additional CSS class for the item
282
+ */
283
+ className?: string;
284
+ /**
285
+ * Animation configuration for press feedback (scale + background color).
286
+ * - `false` or `"disabled"`: Disable all item animations
287
+ * - `true` or `undefined`: Use default animations
288
+ * - `object`: Custom animation configuration
289
+ */
290
+ animation?: MenuItemAnimation;
291
+ /**
292
+ * Whether animated styles (react-native-reanimated) are active.
293
+ * When `false`, the animated style is removed and you can implement custom logic.
294
+ * @default true
295
+ */
296
+ isAnimatedStyleActive?: boolean;
297
+ /**
298
+ * Child elements to render inside the item, or a render function
299
+ */
300
+ children?: ReactNode | ((props: MenuItemRenderProps) => ReactNode);
301
+ }
302
+
303
+ /**
304
+ * Menu ItemTitle component props
305
+ */
306
+ export interface MenuItemTitleProps extends TextProps {
307
+ /**
308
+ * Additional CSS class for the item title
309
+ */
310
+ className?: string;
311
+ }
312
+
313
+ /**
314
+ * Menu ItemDescription component props
315
+ */
316
+ export interface MenuItemDescriptionProps extends TextProps {
317
+ /**
318
+ * Additional CSS class for the item description
319
+ */
320
+ className?: string;
321
+ }
322
+
323
+ /**
324
+ * Visual variant for the item indicator.
325
+ * - `'checkmark'` – Renders a check icon when selected.
326
+ * - `'dot'` – Renders a small filled circle when selected.
327
+ */
328
+ export type MenuItemIndicatorVariant = 'checkmark' | 'dot';
329
+
330
+ /**
331
+ * Menu Item Indicator Icon props (applies to the `'checkmark'` variant)
332
+ */
333
+ export interface MenuItemIndicatorIconProps {
334
+ /**
335
+ * Size of the check icon
336
+ * @default 16
337
+ */
338
+ size?: number;
339
+ /**
340
+ * Color of the check icon
341
+ */
342
+ color?: string;
343
+ }
344
+
345
+ /**
346
+ * Menu ItemIndicator component props
347
+ */
348
+ export interface MenuItemIndicatorProps
349
+ extends MenuPrimitivesTypes.ItemIndicatorProps {
350
+ /**
351
+ * Additional CSS class for the item indicator
352
+ */
353
+ className?: string;
354
+ /**
355
+ * Visual variant of the indicator.
356
+ * - `'checkmark'` renders a check icon
357
+ * - `'dot'` renders a filled circle
358
+ * @default 'checkmark'
359
+ */
360
+ variant?: MenuItemIndicatorVariant;
361
+ /**
362
+ * Check icon props (only used when `variant` is `'checkmark'`)
363
+ */
364
+ iconProps?: MenuItemIndicatorIconProps;
365
+ }
366
+
367
+ // --------------------------------------------------
368
+ // Hook return types
369
+ // --------------------------------------------------
370
+
371
+ /**
372
+ * Return type for the useMenu hook
373
+ */
374
+ export type UseMenuReturn = MenuPrimitivesTypes.IRootContext;
375
+
376
+ /**
377
+ * Return type for the useMenuAnimation hook
378
+ */
379
+ export interface UseMenuAnimationReturn {
380
+ /** Animation progress shared value (0=idle, 1=open, 2=close) */
381
+ progress: SharedValue<number>;
382
+ /** Dragging state shared value */
383
+ isDragging: SharedValue<boolean>;
384
+ }
385
+
386
+ // --------------------------------------------------
387
+ // Re-export primitive types used by consumers
388
+ // --------------------------------------------------
389
+
390
+ export type {
391
+ GroupSelectionMode as MenuGroupSelectionMode,
392
+ ItemVariant as MenuItemVariant,
393
+ MenuKey,
394
+ } from '../../primitives/menu/menu.types';
@@ -0,0 +1,180 @@
1
+ import type { ComponentProps } from 'react';
2
+ import type { ViewStyle } from 'react-native';
3
+ import Svg, { Path } from 'react-native-svg';
4
+
5
+ export interface ArrowSvgProps {
6
+ width: number;
7
+ height: number;
8
+ placement: 'top' | 'bottom' | 'left' | 'right';
9
+ fill: string;
10
+ stroke?: string;
11
+ strokeWidth?: number;
12
+ style?: ViewStyle;
13
+ svgProps?: ComponentProps<typeof Svg>;
14
+ }
15
+
16
+ export const ArrowSvg = ({
17
+ width,
18
+ height,
19
+ placement,
20
+ fill,
21
+ stroke,
22
+ strokeWidth = 1,
23
+ style,
24
+ svgProps,
25
+ }: ArrowSvgProps) => {
26
+ const getPaths = () => {
27
+ const strokePadding = strokeWidth / 2;
28
+ const cornerRadius = 2;
29
+ const baselineInset = strokeWidth;
30
+
31
+ switch (placement) {
32
+ case 'top': {
33
+ const tipX = width / 2;
34
+ const tipY = height - strokePadding;
35
+
36
+ const fillLeftX = strokePadding;
37
+ const fillLeftY = strokePadding;
38
+ const fillRightX = width - strokePadding;
39
+ const fillRightY = strokePadding;
40
+ const fillPath = `M ${fillLeftX} ${fillLeftY} L ${tipX} ${tipY} L ${fillRightX} ${fillRightY} Z`;
41
+
42
+ const strokeLeftX = strokePadding;
43
+ const strokeLeftY = strokePadding + baselineInset;
44
+ const strokeRightX = width - strokePadding;
45
+ const strokeRightY = strokePadding + baselineInset;
46
+ const leftTipX = tipX - cornerRadius;
47
+ const leftTipY = tipY - cornerRadius * 0.8;
48
+ const rightTipX = tipX + cornerRadius;
49
+ const rightTipY = tipY - cornerRadius * 0.8;
50
+ const strokePath = `M ${strokeLeftX} ${strokeLeftY} L ${leftTipX} ${leftTipY} Q ${tipX} ${tipY} ${rightTipX} ${rightTipY} L ${strokeRightX} ${strokeRightY}`;
51
+
52
+ return {
53
+ fillPath,
54
+ strokePath,
55
+ viewBox: `0 0 ${width} ${height}`,
56
+ svgWidth: width,
57
+ svgHeight: height,
58
+ };
59
+ }
60
+
61
+ case 'bottom': {
62
+ const tipX = width / 2;
63
+ const tipY = strokePadding;
64
+
65
+ const fillLeftX = strokePadding;
66
+ const fillLeftY = height - strokePadding;
67
+ const fillRightX = width - strokePadding;
68
+ const fillRightY = height - strokePadding;
69
+ const fillPath = `M ${fillLeftX} ${fillLeftY} L ${tipX} ${tipY} L ${fillRightX} ${fillRightY} Z`;
70
+
71
+ const strokeLeftX = strokePadding;
72
+ const strokeLeftY = height - strokePadding - baselineInset;
73
+ const strokeRightX = width - strokePadding;
74
+ const strokeRightY = height - strokePadding - baselineInset;
75
+ const leftTipX = tipX - cornerRadius;
76
+ const leftTipY = tipY + cornerRadius * 0.8;
77
+ const rightTipX = tipX + cornerRadius;
78
+ const rightTipY = tipY + cornerRadius * 0.8;
79
+ const strokePath = `M ${strokeLeftX} ${strokeLeftY} L ${leftTipX} ${leftTipY} Q ${tipX} ${tipY} ${rightTipX} ${rightTipY} L ${strokeRightX} ${strokeRightY}`;
80
+
81
+ return {
82
+ fillPath,
83
+ strokePath,
84
+ viewBox: `0 0 ${width} ${height}`,
85
+ svgWidth: width,
86
+ svgHeight: height,
87
+ };
88
+ }
89
+
90
+ case 'left': {
91
+ const tipX = height - strokePadding;
92
+ const tipY = width / 2;
93
+
94
+ const fillTopX = strokePadding;
95
+ const fillTopY = strokePadding;
96
+ const fillBottomX = strokePadding;
97
+ const fillBottomY = width - strokePadding;
98
+ const fillPath = `M ${fillTopX} ${fillTopY} L ${tipX} ${tipY} L ${fillBottomX} ${fillBottomY} Z`;
99
+
100
+ const strokeTopX = strokePadding + baselineInset;
101
+ const strokeTopY = strokePadding;
102
+ const strokeBottomX = strokePadding + baselineInset;
103
+ const strokeBottomY = width - strokePadding;
104
+ const topTipX = tipX - cornerRadius * 0.8;
105
+ const topTipY = tipY - cornerRadius;
106
+ const bottomTipX = tipX - cornerRadius * 0.8;
107
+ const bottomTipY = tipY + cornerRadius;
108
+ const strokePath = `M ${strokeTopX} ${strokeTopY} L ${topTipX} ${topTipY} Q ${tipX} ${tipY} ${bottomTipX} ${bottomTipY} L ${strokeBottomX} ${strokeBottomY}`;
109
+
110
+ return {
111
+ fillPath,
112
+ strokePath,
113
+ viewBox: `0 0 ${height} ${width}`,
114
+ svgWidth: height,
115
+ svgHeight: width,
116
+ };
117
+ }
118
+
119
+ case 'right': {
120
+ const tipX = strokePadding;
121
+ const tipY = width / 2;
122
+
123
+ const fillTopX = height - strokePadding;
124
+ const fillTopY = strokePadding;
125
+ const fillBottomX = height - strokePadding;
126
+ const fillBottomY = width - strokePadding;
127
+ const fillPath = `M ${fillTopX} ${fillTopY} L ${tipX} ${tipY} L ${fillBottomX} ${fillBottomY} Z`;
128
+
129
+ const strokeTopX = height - strokePadding - baselineInset;
130
+ const strokeTopY = strokePadding;
131
+ const strokeBottomX = height - strokePadding - baselineInset;
132
+ const strokeBottomY = width - strokePadding;
133
+ const topTipX = tipX + cornerRadius * 0.8;
134
+ const topTipY = tipY - cornerRadius;
135
+ const bottomTipX = tipX + cornerRadius * 0.8;
136
+ const bottomTipY = tipY + cornerRadius;
137
+ const strokePath = `M ${strokeTopX} ${strokeTopY} L ${topTipX} ${topTipY} Q ${tipX} ${tipY} ${bottomTipX} ${bottomTipY} L ${strokeBottomX} ${strokeBottomY}`;
138
+
139
+ return {
140
+ fillPath,
141
+ strokePath,
142
+ viewBox: `0 0 ${height} ${width}`,
143
+ svgWidth: height,
144
+ svgHeight: width,
145
+ };
146
+ }
147
+
148
+ default:
149
+ return {
150
+ fillPath: '',
151
+ strokePath: '',
152
+ viewBox: '0 0 0 0',
153
+ svgWidth: 0,
154
+ svgHeight: 0,
155
+ };
156
+ }
157
+ };
158
+
159
+ const { fillPath, strokePath, viewBox, svgWidth, svgHeight } = getPaths();
160
+
161
+ return (
162
+ <Svg
163
+ width={svgWidth}
164
+ height={svgHeight}
165
+ viewBox={viewBox}
166
+ style={style}
167
+ {...svgProps}
168
+ >
169
+ <Path d={fillPath} fill={fill} stroke="none" />
170
+ <Path
171
+ d={strokePath}
172
+ fill="none"
173
+ stroke={stroke}
174
+ strokeWidth={strokeWidth}
175
+ strokeLinecap="round"
176
+ strokeLinejoin="round"
177
+ />
178
+ </Svg>
179
+ );
180
+ };
@@ -0,0 +1,18 @@
1
+ export { default as Popover, usePopover, usePopoverAnimation } from './popover';
2
+ export { popoverClassNames } from './popover.styles';
3
+ export type {
4
+ PopoverAlign,
5
+ PopoverArrowProps,
6
+ PopoverCloseProps,
7
+ PopoverContentProps,
8
+ PopoverDescriptionProps,
9
+ PopoverOverlayProps,
10
+ PopoverPlacement,
11
+ PopoverPortalProps,
12
+ PopoverRootProps,
13
+ PopoverTitleProps,
14
+ PopoverTriggerProps,
15
+ PopoverTriggerRef,
16
+ UsePopoverAnimationReturn,
17
+ UsePopoverReturn,
18
+ } from './popover.types';
@@ -0,0 +1,9 @@
1
+ import { createContext } from '../../helpers/internal/utils';
2
+ import type { PopoverAnimationContextValue } from './popover.types';
3
+
4
+ const [PopoverAnimationProvider, usePopoverAnimation] =
5
+ createContext<PopoverAnimationContextValue>({
6
+ name: 'PopoverAnimationContext',
7
+ });
8
+
9
+ export { PopoverAnimationProvider, usePopoverAnimation };
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Display names for the Popover components
3
+ */
4
+ export const DISPLAY_NAME = {
5
+ ROOT: 'HeroUINative.Popover.Root',
6
+ TRIGGER: 'HeroUINative.Popover.Trigger',
7
+ PORTAL: 'HeroUINative.Popover.Portal',
8
+ OVERLAY: 'HeroUINative.Popover.Overlay',
9
+ CONTENT: 'HeroUINative.Popover.Content',
10
+ CLOSE: 'HeroUINative.Popover.Close',
11
+ TITLE: 'HeroUINative.Popover.Title',
12
+ DESCRIPTION: 'HeroUINative.Popover.Description',
13
+ ARROW: 'HeroUINative.Popover.Arrow',
14
+ };
15
+
16
+ /**
17
+ * Default offset from trigger element
18
+ */
19
+ export const DEFAULT_OFFSET = 9;
20
+
21
+ /**
22
+ * Default alignment offset
23
+ */
24
+ export const DEFAULT_ALIGN_OFFSET = 0;
25
+
26
+ /**
27
+ * Default screen edge insets
28
+ */
29
+ export const DEFAULT_INSETS = {
30
+ top: 12,
31
+ bottom: 12,
32
+ left: 12,
33
+ right: 12,
34
+ };