@coze-arch/cli 0.0.10-alpha.11b7ea → 0.0.10-alpha.954690

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 (433) 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 +1 -4
  4. package/lib/__templates__/expo/client/components/Screen.tsx +1 -4
  5. package/lib/__templates__/expo/client/eslint.config.mjs +0 -2
  6. package/lib/__templates__/expo/client/global.css +0 -1
  7. package/lib/__templates__/expo/client/package.json +1 -4
  8. package/lib/__templates__/expo/package.json +1 -1
  9. package/lib/__templates__/expo/pnpm-lock.yaml +0 -68
  10. package/lib/__templates__/nextjs/AGENTS.md +6 -2
  11. package/lib/__templates__/nextjs/eslint.config.mjs +9 -0
  12. package/lib/__templates__/taro/project.config.json +1 -1
  13. package/lib/cli.js +4 -15
  14. package/package.json +1 -1
  15. package/lib/__templates__/expo/client/heroui/components/accordion/accordion.animation.ts +0 -178
  16. package/lib/__templates__/expo/client/heroui/components/accordion/accordion.constants.ts +0 -62
  17. package/lib/__templates__/expo/client/heroui/components/accordion/accordion.md +0 -437
  18. package/lib/__templates__/expo/client/heroui/components/accordion/accordion.styles.ts +0 -95
  19. package/lib/__templates__/expo/client/heroui/components/accordion/accordion.tsx +0 -340
  20. package/lib/__templates__/expo/client/heroui/components/accordion/accordion.types.ts +0 -267
  21. package/lib/__templates__/expo/client/heroui/components/accordion/index.ts +0 -17
  22. package/lib/__templates__/expo/client/heroui/components/alert/alert.constants.ts +0 -13
  23. package/lib/__templates__/expo/client/heroui/components/alert/alert.hooks.ts +0 -28
  24. package/lib/__templates__/expo/client/heroui/components/alert/alert.md +0 -263
  25. package/lib/__templates__/expo/client/heroui/components/alert/alert.styles.ts +0 -65
  26. package/lib/__templates__/expo/client/heroui/components/alert/alert.tsx +0 -181
  27. package/lib/__templates__/expo/client/heroui/components/alert/alert.types.ts +0 -99
  28. package/lib/__templates__/expo/client/heroui/components/alert/alert.utils.tsx +0 -25
  29. package/lib/__templates__/expo/client/heroui/components/alert/default-icon.tsx +0 -28
  30. package/lib/__templates__/expo/client/heroui/components/alert/index.ts +0 -15
  31. package/lib/__templates__/expo/client/heroui/components/alert/success-icon.tsx +0 -28
  32. package/lib/__templates__/expo/client/heroui/components/alert/warning-icon.tsx +0 -28
  33. package/lib/__templates__/expo/client/heroui/components/avatar/avatar.animation.ts +0 -123
  34. package/lib/__templates__/expo/client/heroui/components/avatar/avatar.constants.ts +0 -19
  35. package/lib/__templates__/expo/client/heroui/components/avatar/avatar.context.ts +0 -11
  36. package/lib/__templates__/expo/client/heroui/components/avatar/avatar.md +0 -386
  37. package/lib/__templates__/expo/client/heroui/components/avatar/avatar.styles.ts +0 -145
  38. package/lib/__templates__/expo/client/heroui/components/avatar/avatar.tsx +0 -307
  39. package/lib/__templates__/expo/client/heroui/components/avatar/avatar.types.ts +0 -239
  40. package/lib/__templates__/expo/client/heroui/components/avatar/index.ts +0 -13
  41. package/lib/__templates__/expo/client/heroui/components/avatar/person-icon.tsx +0 -23
  42. package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.animation.ts +0 -42
  43. package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.constants.ts +0 -13
  44. package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.md +0 -349
  45. package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.styles.ts +0 -66
  46. package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.tsx +0 -351
  47. package/lib/__templates__/expo/client/heroui/components/bottom-sheet/bottom-sheet.types.ts +0 -150
  48. package/lib/__templates__/expo/client/heroui/components/bottom-sheet/index.ts +0 -16
  49. package/lib/__templates__/expo/client/heroui/components/button/button.constants.ts +0 -7
  50. package/lib/__templates__/expo/client/heroui/components/button/button.md +0 -381
  51. package/lib/__templates__/expo/client/heroui/components/button/button.styles.ts +0 -89
  52. package/lib/__templates__/expo/client/heroui/components/button/button.tsx +0 -284
  53. package/lib/__templates__/expo/client/heroui/components/button/button.types.ts +0 -175
  54. package/lib/__templates__/expo/client/heroui/components/button/button.utils.ts +0 -34
  55. package/lib/__templates__/expo/client/heroui/components/button/index.ts +0 -9
  56. package/lib/__templates__/expo/client/heroui/components/card/card.constants.ts +0 -11
  57. package/lib/__templates__/expo/client/heroui/components/card/card.md +0 -186
  58. package/lib/__templates__/expo/client/heroui/components/card/card.styles.ts +0 -35
  59. package/lib/__templates__/expo/client/heroui/components/card/card.tsx +0 -153
  60. package/lib/__templates__/expo/client/heroui/components/card/card.types.ts +0 -77
  61. package/lib/__templates__/expo/client/heroui/components/card/index.ts +0 -10
  62. package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.animation.ts +0 -202
  63. package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.constants.ts +0 -6
  64. package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.md +0 -311
  65. package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.styles.ts +0 -105
  66. package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.tsx +0 -251
  67. package/lib/__templates__/expo/client/heroui/components/checkbox/checkbox.types.ts +0 -216
  68. package/lib/__templates__/expo/client/heroui/components/checkbox/index.ts +0 -3
  69. package/lib/__templates__/expo/client/heroui/components/chip/chip.animation.ts +0 -18
  70. package/lib/__templates__/expo/client/heroui/components/chip/chip.constants.ts +0 -7
  71. package/lib/__templates__/expo/client/heroui/components/chip/chip.md +0 -190
  72. package/lib/__templates__/expo/client/heroui/components/chip/chip.styles.ts +0 -234
  73. package/lib/__templates__/expo/client/heroui/components/chip/chip.tsx +0 -125
  74. package/lib/__templates__/expo/client/heroui/components/chip/chip.types.ts +0 -69
  75. package/lib/__templates__/expo/client/heroui/components/chip/index.ts +0 -3
  76. package/lib/__templates__/expo/client/heroui/components/close-button/close-button.constants.ts +0 -6
  77. package/lib/__templates__/expo/client/heroui/components/close-button/close-button.md +0 -109
  78. package/lib/__templates__/expo/client/heroui/components/close-button/close-button.styles.ts +0 -13
  79. package/lib/__templates__/expo/client/heroui/components/close-button/close-button.tsx +0 -57
  80. package/lib/__templates__/expo/client/heroui/components/close-button/close-button.types.ts +0 -30
  81. package/lib/__templates__/expo/client/heroui/components/close-button/index.ts +0 -6
  82. package/lib/__templates__/expo/client/heroui/components/control-field/control-field.animation.ts +0 -18
  83. package/lib/__templates__/expo/client/heroui/components/control-field/control-field.constants.ts +0 -7
  84. package/lib/__templates__/expo/client/heroui/components/control-field/control-field.context.ts +0 -14
  85. package/lib/__templates__/expo/client/heroui/components/control-field/control-field.md +0 -241
  86. package/lib/__templates__/expo/client/heroui/components/control-field/control-field.styles.ts +0 -15
  87. package/lib/__templates__/expo/client/heroui/components/control-field/control-field.tsx +0 -245
  88. package/lib/__templates__/expo/client/heroui/components/control-field/control-field.types.ts +0 -67
  89. package/lib/__templates__/expo/client/heroui/components/control-field/index.ts +0 -6
  90. package/lib/__templates__/expo/client/heroui/components/description/description.animation.ts +0 -53
  91. package/lib/__templates__/expo/client/heroui/components/description/description.constants.ts +0 -30
  92. package/lib/__templates__/expo/client/heroui/components/description/description.md +0 -129
  93. package/lib/__templates__/expo/client/heroui/components/description/description.styles.ts +0 -25
  94. package/lib/__templates__/expo/client/heroui/components/description/description.tsx +0 -81
  95. package/lib/__templates__/expo/client/heroui/components/description/description.types.ts +0 -77
  96. package/lib/__templates__/expo/client/heroui/components/description/index.ts +0 -3
  97. package/lib/__templates__/expo/client/heroui/components/dialog/dialog.animation.ts +0 -9
  98. package/lib/__templates__/expo/client/heroui/components/dialog/dialog.constants.ts +0 -13
  99. package/lib/__templates__/expo/client/heroui/components/dialog/dialog.md +0 -288
  100. package/lib/__templates__/expo/client/heroui/components/dialog/dialog.styles.ts +0 -77
  101. package/lib/__templates__/expo/client/heroui/components/dialog/dialog.tsx +0 -379
  102. package/lib/__templates__/expo/client/heroui/components/dialog/dialog.types.ts +0 -199
  103. package/lib/__templates__/expo/client/heroui/components/dialog/index.ts +0 -12
  104. package/lib/__templates__/expo/client/heroui/components/field-error/field-error.animation.ts +0 -50
  105. package/lib/__templates__/expo/client/heroui/components/field-error/field-error.constants.ts +0 -31
  106. package/lib/__templates__/expo/client/heroui/components/field-error/field-error.md +0 -204
  107. package/lib/__templates__/expo/client/heroui/components/field-error/field-error.styles.ts +0 -23
  108. package/lib/__templates__/expo/client/heroui/components/field-error/field-error.tsx +0 -91
  109. package/lib/__templates__/expo/client/heroui/components/field-error/field-error.types.ts +0 -79
  110. package/lib/__templates__/expo/client/heroui/components/field-error/index.ts +0 -3
  111. package/lib/__templates__/expo/client/heroui/components/input/index.ts +0 -3
  112. package/lib/__templates__/expo/client/heroui/components/input/input.constants.ts +0 -6
  113. package/lib/__templates__/expo/client/heroui/components/input/input.md +0 -193
  114. package/lib/__templates__/expo/client/heroui/components/input/input.styles.ts +0 -51
  115. package/lib/__templates__/expo/client/heroui/components/input/input.tsx +0 -96
  116. package/lib/__templates__/expo/client/heroui/components/input/input.types.ts +0 -44
  117. package/lib/__templates__/expo/client/heroui/components/input-group/index.ts +0 -9
  118. package/lib/__templates__/expo/client/heroui/components/input-group/input-group.animation.ts +0 -14
  119. package/lib/__templates__/expo/client/heroui/components/input-group/input-group.constants.ts +0 -6
  120. package/lib/__templates__/expo/client/heroui/components/input-group/input-group.md +0 -197
  121. package/lib/__templates__/expo/client/heroui/components/input-group/input-group.styles.ts +0 -31
  122. package/lib/__templates__/expo/client/heroui/components/input-group/input-group.tsx +0 -239
  123. package/lib/__templates__/expo/client/heroui/components/input-group/input-group.types.ts +0 -98
  124. package/lib/__templates__/expo/client/heroui/components/input-otp/index.ts +0 -9
  125. package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.animation.ts +0 -199
  126. package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.constants.ts +0 -12
  127. package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.md +0 -376
  128. package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.styles.ts +0 -68
  129. package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.tsx +0 -414
  130. package/lib/__templates__/expo/client/heroui/components/input-otp/input-otp.types.ts +0 -275
  131. package/lib/__templates__/expo/client/heroui/components/label/index.ts +0 -3
  132. package/lib/__templates__/expo/client/heroui/components/label/label.animation.ts +0 -18
  133. package/lib/__templates__/expo/client/heroui/components/label/label.constants.ts +0 -7
  134. package/lib/__templates__/expo/client/heroui/components/label/label.md +0 -187
  135. package/lib/__templates__/expo/client/heroui/components/label/label.styles.ts +0 -44
  136. package/lib/__templates__/expo/client/heroui/components/label/label.tsx +0 -172
  137. package/lib/__templates__/expo/client/heroui/components/label/label.types.ts +0 -86
  138. package/lib/__templates__/expo/client/heroui/components/list-group/index.ts +0 -17
  139. package/lib/__templates__/expo/client/heroui/components/list-group/list-group.constants.ts +0 -17
  140. package/lib/__templates__/expo/client/heroui/components/list-group/list-group.md +0 -387
  141. package/lib/__templates__/expo/client/heroui/components/list-group/list-group.styles.ts +0 -40
  142. package/lib/__templates__/expo/client/heroui/components/list-group/list-group.tsx +0 -206
  143. package/lib/__templates__/expo/client/heroui/components/list-group/list-group.types.ts +0 -132
  144. package/lib/__templates__/expo/client/heroui/components/menu/index.ts +0 -38
  145. package/lib/__templates__/expo/client/heroui/components/menu/menu.animation.ts +0 -121
  146. package/lib/__templates__/expo/client/heroui/components/menu/menu.constants.ts +0 -37
  147. package/lib/__templates__/expo/client/heroui/components/menu/menu.md +0 -620
  148. package/lib/__templates__/expo/client/heroui/components/menu/menu.styles.ts +0 -107
  149. package/lib/__templates__/expo/client/heroui/components/menu/menu.tsx +0 -664
  150. package/lib/__templates__/expo/client/heroui/components/menu/menu.types.ts +0 -394
  151. package/lib/__templates__/expo/client/heroui/components/popover/arrow-svg.tsx +0 -180
  152. package/lib/__templates__/expo/client/heroui/components/popover/index.ts +0 -18
  153. package/lib/__templates__/expo/client/heroui/components/popover/popover.animation.ts +0 -9
  154. package/lib/__templates__/expo/client/heroui/components/popover/popover.constants.ts +0 -34
  155. package/lib/__templates__/expo/client/heroui/components/popover/popover.md +0 -508
  156. package/lib/__templates__/expo/client/heroui/components/popover/popover.styles.ts +0 -98
  157. package/lib/__templates__/expo/client/heroui/components/popover/popover.tsx +0 -624
  158. package/lib/__templates__/expo/client/heroui/components/popover/popover.types.ts +0 -290
  159. package/lib/__templates__/expo/client/heroui/components/pressable-feedback/index.ts +0 -3
  160. package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.animation.ts +0 -450
  161. package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.constants.ts +0 -12
  162. package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.md +0 -328
  163. package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.styles.ts +0 -84
  164. package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.tsx +0 -330
  165. package/lib/__templates__/expo/client/heroui/components/pressable-feedback/pressable-feedback.types.ts +0 -386
  166. package/lib/__templates__/expo/client/heroui/components/radio/index.ts +0 -9
  167. package/lib/__templates__/expo/client/heroui/components/radio/radio.animation.ts +0 -92
  168. package/lib/__templates__/expo/client/heroui/components/radio/radio.constants.ts +0 -11
  169. package/lib/__templates__/expo/client/heroui/components/radio/radio.md +0 -339
  170. package/lib/__templates__/expo/client/heroui/components/radio/radio.styles.ts +0 -80
  171. package/lib/__templates__/expo/client/heroui/components/radio/radio.tsx +0 -217
  172. package/lib/__templates__/expo/client/heroui/components/radio/radio.types.ts +0 -106
  173. package/lib/__templates__/expo/client/heroui/components/radio-group/index.ts +0 -9
  174. package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.animation.ts +0 -20
  175. package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.constants.ts +0 -7
  176. package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.context.ts +0 -14
  177. package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.md +0 -273
  178. package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.styles.ts +0 -15
  179. package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.tsx +0 -220
  180. package/lib/__templates__/expo/client/heroui/components/radio-group/radio-group.types.ts +0 -64
  181. package/lib/__templates__/expo/client/heroui/components/scroll-shadow/index.ts +0 -7
  182. package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.animation.ts +0 -132
  183. package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.constants.ts +0 -21
  184. package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.md +0 -206
  185. package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.styles.ts +0 -52
  186. package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.tsx +0 -262
  187. package/lib/__templates__/expo/client/heroui/components/scroll-shadow/scroll-shadow.types.ts +0 -121
  188. package/lib/__templates__/expo/client/heroui/components/search-field/index.ts +0 -17
  189. package/lib/__templates__/expo/client/heroui/components/search-field/search-field.animation.ts +0 -18
  190. package/lib/__templates__/expo/client/heroui/components/search-field/search-field.constants.ts +0 -10
  191. package/lib/__templates__/expo/client/heroui/components/search-field/search-field.md +0 -231
  192. package/lib/__templates__/expo/client/heroui/components/search-field/search-field.styles.ts +0 -35
  193. package/lib/__templates__/expo/client/heroui/components/search-field/search-field.tsx +0 -253
  194. package/lib/__templates__/expo/client/heroui/components/search-field/search-field.types.ts +0 -160
  195. package/lib/__templates__/expo/client/heroui/components/search-field/search-icon.tsx +0 -37
  196. package/lib/__templates__/expo/client/heroui/components/select/index.ts +0 -28
  197. package/lib/__templates__/expo/client/heroui/components/select/select.animation.ts +0 -92
  198. package/lib/__templates__/expo/client/heroui/components/select/select.constants.ts +0 -53
  199. package/lib/__templates__/expo/client/heroui/components/select/select.md +0 -796
  200. package/lib/__templates__/expo/client/heroui/components/select/select.styles.ts +0 -149
  201. package/lib/__templates__/expo/client/heroui/components/select/select.tsx +0 -828
  202. package/lib/__templates__/expo/client/heroui/components/select/select.types.ts +0 -438
  203. package/lib/__templates__/expo/client/heroui/components/separator/index.ts +0 -7
  204. package/lib/__templates__/expo/client/heroui/components/separator/separator.constants.ts +0 -6
  205. package/lib/__templates__/expo/client/heroui/components/separator/separator.md +0 -106
  206. package/lib/__templates__/expo/client/heroui/components/separator/separator.styles.ts +0 -50
  207. package/lib/__templates__/expo/client/heroui/components/separator/separator.tsx +0 -62
  208. package/lib/__templates__/expo/client/heroui/components/separator/separator.types.ts +0 -40
  209. package/lib/__templates__/expo/client/heroui/components/skeleton/index.ts +0 -7
  210. package/lib/__templates__/expo/client/heroui/components/skeleton/linear-gradient.tsx +0 -45
  211. package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.animation.ts +0 -351
  212. package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.constants.ts +0 -39
  213. package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.md +0 -208
  214. package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.styles.ts +0 -49
  215. package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.tsx +0 -183
  216. package/lib/__templates__/expo/client/heroui/components/skeleton/skeleton.types.ts +0 -191
  217. package/lib/__templates__/expo/client/heroui/components/skeleton-group/index.ts +0 -7
  218. package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.constants.ts +0 -7
  219. package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.md +0 -247
  220. package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.styles.ts +0 -10
  221. package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.tsx +0 -94
  222. package/lib/__templates__/expo/client/heroui/components/skeleton-group/skeleton-group.types.ts +0 -28
  223. package/lib/__templates__/expo/client/heroui/components/slider/index.ts +0 -23
  224. package/lib/__templates__/expo/client/heroui/components/slider/slider.animation.ts +0 -87
  225. package/lib/__templates__/expo/client/heroui/components/slider/slider.constants.ts +0 -24
  226. package/lib/__templates__/expo/client/heroui/components/slider/slider.md +0 -348
  227. package/lib/__templates__/expo/client/heroui/components/slider/slider.styles.ts +0 -85
  228. package/lib/__templates__/expo/client/heroui/components/slider/slider.tsx +0 -413
  229. package/lib/__templates__/expo/client/heroui/components/slider/slider.types.ts +0 -120
  230. package/lib/__templates__/expo/client/heroui/components/spinner/index.ts +0 -10
  231. package/lib/__templates__/expo/client/heroui/components/spinner/spinner-icon.tsx +0 -49
  232. package/lib/__templates__/expo/client/heroui/components/spinner/spinner.animation.ts +0 -150
  233. package/lib/__templates__/expo/client/heroui/components/spinner/spinner.constants.ts +0 -36
  234. package/lib/__templates__/expo/client/heroui/components/spinner/spinner.md +0 -199
  235. package/lib/__templates__/expo/client/heroui/components/spinner/spinner.styles.ts +0 -44
  236. package/lib/__templates__/expo/client/heroui/components/spinner/spinner.tsx +0 -198
  237. package/lib/__templates__/expo/client/heroui/components/spinner/spinner.types.ts +0 -158
  238. package/lib/__templates__/expo/client/heroui/components/surface/index.ts +0 -3
  239. package/lib/__templates__/expo/client/heroui/components/surface/surface.animation.ts +0 -18
  240. package/lib/__templates__/expo/client/heroui/components/surface/surface.constants.ts +0 -6
  241. package/lib/__templates__/expo/client/heroui/components/surface/surface.md +0 -136
  242. package/lib/__templates__/expo/client/heroui/components/surface/surface.styles.ts +0 -28
  243. package/lib/__templates__/expo/client/heroui/components/surface/surface.tsx +0 -66
  244. package/lib/__templates__/expo/client/heroui/components/surface/surface.types.ts +0 -46
  245. package/lib/__templates__/expo/client/heroui/components/switch/index.ts +0 -3
  246. package/lib/__templates__/expo/client/heroui/components/switch/switch.animation.ts +0 -243
  247. package/lib/__templates__/expo/client/heroui/components/switch/switch.constants.ts +0 -26
  248. package/lib/__templates__/expo/client/heroui/components/switch/switch.md +0 -334
  249. package/lib/__templates__/expo/client/heroui/components/switch/switch.styles.ts +0 -83
  250. package/lib/__templates__/expo/client/heroui/components/switch/switch.tsx +0 -280
  251. package/lib/__templates__/expo/client/heroui/components/switch/switch.types.ts +0 -208
  252. package/lib/__templates__/expo/client/heroui/components/tabs/index.ts +0 -8
  253. package/lib/__templates__/expo/client/heroui/components/tabs/tabs.animation.ts +0 -246
  254. package/lib/__templates__/expo/client/heroui/components/tabs/tabs.constants.ts +0 -17
  255. package/lib/__templates__/expo/client/heroui/components/tabs/tabs.context.ts +0 -28
  256. package/lib/__templates__/expo/client/heroui/components/tabs/tabs.md +0 -565
  257. package/lib/__templates__/expo/client/heroui/components/tabs/tabs.styles.ts +0 -168
  258. package/lib/__templates__/expo/client/heroui/components/tabs/tabs.tsx +0 -445
  259. package/lib/__templates__/expo/client/heroui/components/tabs/tabs.types.ts +0 -341
  260. package/lib/__templates__/expo/client/heroui/components/tag-group/index.ts +0 -15
  261. package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.animation.ts +0 -17
  262. package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.constants.ts +0 -10
  263. package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.md +0 -404
  264. package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.styles.ts +0 -74
  265. package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.tsx +0 -325
  266. package/lib/__templates__/expo/client/heroui/components/tag-group/tag-group.types.ts +0 -125
  267. package/lib/__templates__/expo/client/heroui/components/text-area/index.ts +0 -3
  268. package/lib/__templates__/expo/client/heroui/components/text-area/text-area.constants.ts +0 -6
  269. package/lib/__templates__/expo/client/heroui/components/text-area/text-area.md +0 -133
  270. package/lib/__templates__/expo/client/heroui/components/text-area/text-area.styles.ts +0 -10
  271. package/lib/__templates__/expo/client/heroui/components/text-area/text-area.tsx +0 -44
  272. package/lib/__templates__/expo/client/heroui/components/text-area/text-area.types.ts +0 -6
  273. package/lib/__templates__/expo/client/heroui/components/text-field/index.ts +0 -3
  274. package/lib/__templates__/expo/client/heroui/components/text-field/text-field.animation.ts +0 -20
  275. package/lib/__templates__/expo/client/heroui/components/text-field/text-field.constants.ts +0 -6
  276. package/lib/__templates__/expo/client/heroui/components/text-field/text-field.md +0 -256
  277. package/lib/__templates__/expo/client/heroui/components/text-field/text-field.styles.ts +0 -10
  278. package/lib/__templates__/expo/client/heroui/components/text-field/text-field.tsx +0 -82
  279. package/lib/__templates__/expo/client/heroui/components/text-field/text-field.types.ts +0 -56
  280. package/lib/__templates__/expo/client/heroui/components/toast/index.ts +0 -4
  281. package/lib/__templates__/expo/client/heroui/components/toast/toast.animation.ts +0 -381
  282. package/lib/__templates__/expo/client/heroui/components/toast/toast.constants.ts +0 -10
  283. package/lib/__templates__/expo/client/heroui/components/toast/toast.hooks.ts +0 -73
  284. package/lib/__templates__/expo/client/heroui/components/toast/toast.md +0 -420
  285. package/lib/__templates__/expo/client/heroui/components/toast/toast.styles.ts +0 -89
  286. package/lib/__templates__/expo/client/heroui/components/toast/toast.tsx +0 -472
  287. package/lib/__templates__/expo/client/heroui/components/toast/toast.types.ts +0 -320
  288. package/lib/__templates__/expo/client/heroui/docs.md +0 -47
  289. package/lib/__templates__/expo/client/heroui/helpers/external/hooks/index.ts +0 -3
  290. package/lib/__templates__/expo/client/heroui/helpers/external/hooks/use-is-on-surface.ts +0 -8
  291. package/lib/__templates__/expo/client/heroui/helpers/external/hooks/use-theme-color.ts +0 -137
  292. package/lib/__templates__/expo/client/heroui/helpers/external/utils/cn.ts +0 -12
  293. package/lib/__templates__/expo/client/heroui/helpers/external/utils/color-kit/index.ts +0 -2395
  294. package/lib/__templates__/expo/client/heroui/helpers/external/utils/color-kit/types.ts +0 -212
  295. package/lib/__templates__/expo/client/heroui/helpers/external/utils/index.ts +0 -2
  296. package/lib/__templates__/expo/client/heroui/helpers/internal/components/animated-check-icon.tsx +0 -78
  297. package/lib/__templates__/expo/client/heroui/helpers/internal/components/bottom-sheet-content-container.tsx +0 -97
  298. package/lib/__templates__/expo/client/heroui/helpers/internal/components/bottom-sheet-content.tsx +0 -158
  299. package/lib/__templates__/expo/client/heroui/helpers/internal/components/check-icon.tsx +0 -28
  300. package/lib/__templates__/expo/client/heroui/helpers/internal/components/chevron-down-icon.tsx +0 -28
  301. package/lib/__templates__/expo/client/heroui/helpers/internal/components/chevron-right-icon.tsx +0 -29
  302. package/lib/__templates__/expo/client/heroui/helpers/internal/components/close-icon.tsx +0 -29
  303. package/lib/__templates__/expo/client/heroui/helpers/internal/components/full-window-overlay.tsx +0 -48
  304. package/lib/__templates__/expo/client/heroui/helpers/internal/components/hero-text.tsx +0 -71
  305. package/lib/__templates__/expo/client/heroui/helpers/internal/components/index.ts +0 -9
  306. package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/animation-settings-context.ts +0 -19
  307. package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/bottom-sheet-is-dragging-context.ts +0 -11
  308. package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/form-field-context.ts +0 -36
  309. package/lib/__templates__/expo/client/heroui/helpers/internal/contexts/index.ts +0 -3
  310. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/index.ts +0 -14
  311. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-augmented-ref.ts +0 -32
  312. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-bottom-sheet-aware-handlers.ts +0 -94
  313. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-bottom-sheet-gesture-handlers.ts +0 -52
  314. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-combined-animation-disabled-state.ts +0 -49
  315. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-controllable-state.ts +0 -124
  316. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-dev-info.ts +0 -38
  317. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-keyboard-status.ts +0 -22
  318. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-bottom-sheet-content-animation.ts +0 -67
  319. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-dialog-content-animation.ts +0 -296
  320. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-overlay-animation.ts +0 -91
  321. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-popover-content-animation.ts +0 -199
  322. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-popup-root-animation.ts +0 -26
  323. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-relative-position.ts +0 -353
  324. package/lib/__templates__/expo/client/heroui/helpers/internal/hooks/use-resolved-style-property.ts +0 -118
  325. package/lib/__templates__/expo/client/heroui/helpers/internal/types/animation.ts +0 -131
  326. package/lib/__templates__/expo/client/heroui/helpers/internal/types/bottom-sheet.ts +0 -99
  327. package/lib/__templates__/expo/client/heroui/helpers/internal/types/index.ts +0 -5
  328. package/lib/__templates__/expo/client/heroui/helpers/internal/types/misc.ts +0 -10
  329. package/lib/__templates__/expo/client/heroui/helpers/internal/types/primitives.ts +0 -146
  330. package/lib/__templates__/expo/client/heroui/helpers/internal/types/theme.ts +0 -18
  331. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/animation.ts +0 -266
  332. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/children-to-string.ts +0 -117
  333. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/combine-styles.ts +0 -17
  334. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/create-context.ts +0 -60
  335. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/ease-gradient/create-interpolation.ts +0 -35
  336. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/ease-gradient/index.ts +0 -97
  337. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/get-element-by-display-name.ts +0 -15
  338. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/get-element-with-default.ts +0 -17
  339. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/has-prop.ts +0 -18
  340. package/lib/__templates__/expo/client/heroui/helpers/internal/utils/index.ts +0 -8
  341. package/lib/__templates__/expo/client/heroui/index.tsx +0 -51
  342. package/lib/__templates__/expo/client/heroui/primitives/README.md +0 -27
  343. package/lib/__templates__/expo/client/heroui/primitives/accordion/accordion.tsx +0 -270
  344. package/lib/__templates__/expo/client/heroui/primitives/accordion/accordion.types.ts +0 -117
  345. package/lib/__templates__/expo/client/heroui/primitives/accordion/accordion.utils.ts +0 -12
  346. package/lib/__templates__/expo/client/heroui/primitives/accordion/index.ts +0 -2
  347. package/lib/__templates__/expo/client/heroui/primitives/activity-indicator/activity-indicator.tsx +0 -50
  348. package/lib/__templates__/expo/client/heroui/primitives/activity-indicator/activity-indicator.types.ts +0 -24
  349. package/lib/__templates__/expo/client/heroui/primitives/activity-indicator/index.ts +0 -2
  350. package/lib/__templates__/expo/client/heroui/primitives/alert/alert.tsx +0 -124
  351. package/lib/__templates__/expo/client/heroui/primitives/alert/alert.types.ts +0 -87
  352. package/lib/__templates__/expo/client/heroui/primitives/alert/index.ts +0 -2
  353. package/lib/__templates__/expo/client/heroui/primitives/avatar/avatar.tsx +0 -171
  354. package/lib/__templates__/expo/client/heroui/primitives/avatar/avatar.types.ts +0 -62
  355. package/lib/__templates__/expo/client/heroui/primitives/avatar/avatar.utils.ts +0 -102
  356. package/lib/__templates__/expo/client/heroui/primitives/avatar/index.ts +0 -2
  357. package/lib/__templates__/expo/client/heroui/primitives/bottom-sheet/bottom-sheet.tsx +0 -235
  358. package/lib/__templates__/expo/client/heroui/primitives/bottom-sheet/bottom-sheet.types.ts +0 -127
  359. package/lib/__templates__/expo/client/heroui/primitives/bottom-sheet/index.ts +0 -2
  360. package/lib/__templates__/expo/client/heroui/primitives/checkbox/checkbox.tsx +0 -119
  361. package/lib/__templates__/expo/client/heroui/primitives/checkbox/checkbox.types.ts +0 -37
  362. package/lib/__templates__/expo/client/heroui/primitives/checkbox/index.ts +0 -2
  363. package/lib/__templates__/expo/client/heroui/primitives/dialog/dialog.tsx +0 -274
  364. package/lib/__templates__/expo/client/heroui/primitives/dialog/dialog.types.ts +0 -129
  365. package/lib/__templates__/expo/client/heroui/primitives/dialog/index.ts +0 -2
  366. package/lib/__templates__/expo/client/heroui/primitives/input-otp/index.ts +0 -3
  367. package/lib/__templates__/expo/client/heroui/primitives/input-otp/input-otp.tsx +0 -431
  368. package/lib/__templates__/expo/client/heroui/primitives/input-otp/input-otp.types.ts +0 -169
  369. package/lib/__templates__/expo/client/heroui/primitives/input-otp/input-otp.utils.ts +0 -31
  370. package/lib/__templates__/expo/client/heroui/primitives/label/index.ts +0 -2
  371. package/lib/__templates__/expo/client/heroui/primitives/label/label.tsx +0 -24
  372. package/lib/__templates__/expo/client/heroui/primitives/label/label.types.ts +0 -39
  373. package/lib/__templates__/expo/client/heroui/primitives/menu/index.ts +0 -2
  374. package/lib/__templates__/expo/client/heroui/primitives/menu/menu.tsx +0 -765
  375. package/lib/__templates__/expo/client/heroui/primitives/menu/menu.types.ts +0 -401
  376. package/lib/__templates__/expo/client/heroui/primitives/popover/index.ts +0 -2
  377. package/lib/__templates__/expo/client/heroui/primitives/popover/popover.tsx +0 -382
  378. package/lib/__templates__/expo/client/heroui/primitives/popover/popover.types.ts +0 -201
  379. package/lib/__templates__/expo/client/heroui/primitives/portal/index.ts +0 -1
  380. package/lib/__templates__/expo/client/heroui/primitives/portal/portal.tsx +0 -126
  381. package/lib/__templates__/expo/client/heroui/primitives/radio/index.ts +0 -2
  382. package/lib/__templates__/expo/client/heroui/primitives/radio/radio.tsx +0 -133
  383. package/lib/__templates__/expo/client/heroui/primitives/radio/radio.types.ts +0 -47
  384. package/lib/__templates__/expo/client/heroui/primitives/radio-group/index.ts +0 -2
  385. package/lib/__templates__/expo/client/heroui/primitives/radio-group/radio-group.tsx +0 -114
  386. package/lib/__templates__/expo/client/heroui/primitives/radio-group/radio-group.types.ts +0 -65
  387. package/lib/__templates__/expo/client/heroui/primitives/select/index.ts +0 -2
  388. package/lib/__templates__/expo/client/heroui/primitives/select/select.tsx +0 -705
  389. package/lib/__templates__/expo/client/heroui/primitives/select/select.types.ts +0 -409
  390. package/lib/__templates__/expo/client/heroui/primitives/select/select.utils.ts +0 -35
  391. package/lib/__templates__/expo/client/heroui/primitives/slider/index.ts +0 -3
  392. package/lib/__templates__/expo/client/heroui/primitives/slider/slider.tsx +0 -464
  393. package/lib/__templates__/expo/client/heroui/primitives/slider/slider.types.ts +0 -208
  394. package/lib/__templates__/expo/client/heroui/primitives/slider/slider.utils.ts +0 -93
  395. package/lib/__templates__/expo/client/heroui/primitives/slot/index.ts +0 -1
  396. package/lib/__templates__/expo/client/heroui/primitives/slot/slot.tsx +0 -122
  397. package/lib/__templates__/expo/client/heroui/primitives/slot/types.ts +0 -19
  398. package/lib/__templates__/expo/client/heroui/primitives/slot/utils.ts +0 -96
  399. package/lib/__templates__/expo/client/heroui/primitives/switch/index.ts +0 -2
  400. package/lib/__templates__/expo/client/heroui/primitives/switch/switch.tsx +0 -61
  401. package/lib/__templates__/expo/client/heroui/primitives/switch/switch.types.ts +0 -55
  402. package/lib/__templates__/expo/client/heroui/primitives/tabs/index.ts +0 -2
  403. package/lib/__templates__/expo/client/heroui/primitives/tabs/tabs.tsx +0 -202
  404. package/lib/__templates__/expo/client/heroui/primitives/tabs/tabs.types.ts +0 -77
  405. package/lib/__templates__/expo/client/heroui/primitives/tag-group/index.ts +0 -2
  406. package/lib/__templates__/expo/client/heroui/primitives/tag-group/tag-group.tsx +0 -324
  407. package/lib/__templates__/expo/client/heroui/primitives/tag-group/tag-group.types.ts +0 -119
  408. package/lib/__templates__/expo/client/heroui/primitives/toast/index.ts +0 -2
  409. package/lib/__templates__/expo/client/heroui/primitives/toast/toast.tsx +0 -138
  410. package/lib/__templates__/expo/client/heroui/primitives/toast/toast.types.ts +0 -86
  411. package/lib/__templates__/expo/client/heroui/providers/animation-settings/index.ts +0 -8
  412. package/lib/__templates__/expo/client/heroui/providers/animation-settings/provider.tsx +0 -47
  413. package/lib/__templates__/expo/client/heroui/providers/animation-settings/types.ts +0 -27
  414. package/lib/__templates__/expo/client/heroui/providers/hero-ui-native/index.ts +0 -2
  415. package/lib/__templates__/expo/client/heroui/providers/hero-ui-native/provider.tsx +0 -67
  416. package/lib/__templates__/expo/client/heroui/providers/hero-ui-native/types.ts +0 -114
  417. package/lib/__templates__/expo/client/heroui/providers/hero-ui-native-raw/index.ts +0 -2
  418. package/lib/__templates__/expo/client/heroui/providers/hero-ui-native-raw/provider.tsx +0 -50
  419. package/lib/__templates__/expo/client/heroui/providers/hero-ui-native-raw/types.ts +0 -39
  420. package/lib/__templates__/expo/client/heroui/providers/text-component/index.ts +0 -2
  421. package/lib/__templates__/expo/client/heroui/providers/text-component/provider.tsx +0 -9
  422. package/lib/__templates__/expo/client/heroui/providers/text-component/types.ts +0 -52
  423. package/lib/__templates__/expo/client/heroui/providers/toast/index.ts +0 -3
  424. package/lib/__templates__/expo/client/heroui/providers/toast/insets-container.tsx +0 -87
  425. package/lib/__templates__/expo/client/heroui/providers/toast/provider.tsx +0 -431
  426. package/lib/__templates__/expo/client/heroui/providers/toast/reducer.ts +0 -34
  427. package/lib/__templates__/expo/client/heroui/providers/toast/toast-config.context.ts +0 -27
  428. package/lib/__templates__/expo/client/heroui/providers/toast/toast-item-renderer.tsx +0 -45
  429. package/lib/__templates__/expo/client/heroui/providers/toast/types.ts +0 -373
  430. package/lib/__templates__/expo/client/heroui/styles/index.css +0 -3
  431. package/lib/__templates__/expo/client/heroui/styles/theme.css +0 -112
  432. package/lib/__templates__/expo/client/heroui/styles/utilities.css +0 -8
  433. package/lib/__templates__/expo/client/heroui/styles/variables.css +0 -146
@@ -1,765 +0,0 @@
1
- import React, {
2
- createContext,
3
- forwardRef,
4
- useCallback,
5
- useContext,
6
- useEffect,
7
- useId,
8
- useMemo,
9
- useState,
10
- } from 'react';
11
- import {
12
- BackHandler,
13
- Pressable,
14
- Text,
15
- View,
16
- type GestureResponderEvent,
17
- type LayoutChangeEvent,
18
- type LayoutRectangle,
19
- } from 'react-native';
20
- import {
21
- useAugmentedRef,
22
- useControllableState,
23
- useRelativePosition,
24
- type LayoutPosition,
25
- } from '../../helpers/internal/hooks';
26
- import { Portal as PrimitivePortal } from '../portal';
27
- import * as Slot from '../slot';
28
- import type {
29
- CloseProps,
30
- CloseRef,
31
- ContentProps,
32
- ContentRef,
33
- GroupContextValue,
34
- GroupProps,
35
- GroupRef,
36
- IItemContext,
37
- IRootContext,
38
- ItemDescriptionProps,
39
- ItemDescriptionRef,
40
- ItemIndicatorProps,
41
- ItemIndicatorRef,
42
- ItemProps,
43
- ItemRef,
44
- ItemTitleProps,
45
- ItemTitleRef,
46
- LabelProps,
47
- LabelRef,
48
- MenuKey,
49
- OverlayProps,
50
- OverlayRef,
51
- PortalProps,
52
- RootProps,
53
- RootRef,
54
- TriggerProps,
55
- TriggerRef,
56
- } from './menu.types';
57
-
58
- const RootContext = React.createContext<IRootContext | null>(null);
59
-
60
- const useRootContext = () => {
61
- const context = useContext(RootContext);
62
- if (!context) {
63
- throw new Error(
64
- 'Menu compound components cannot be rendered outside the Menu component'
65
- );
66
- }
67
- return context;
68
- };
69
-
70
- const Root = forwardRef<RootRef, RootProps>(
71
- (
72
- {
73
- asChild,
74
- isOpen: isOpenProp,
75
- isDefaultOpen,
76
- onOpenChange: onOpenChangeProp,
77
- isDisabled,
78
- presentation = 'popover',
79
- ...viewProps
80
- },
81
- ref
82
- ) => {
83
- const [isOpen = false, onOpenChange] = useControllableState({
84
- prop: isOpenProp,
85
- defaultProp: isDefaultOpen,
86
- onChange: onOpenChangeProp,
87
- });
88
- const [triggerPosition, setTriggerPosition] =
89
- useState<LayoutPosition | null>(null);
90
- const [contentLayout, setContentLayout] = useState<LayoutRectangle | null>(
91
- null
92
- );
93
-
94
- const nativeID = useId();
95
-
96
- const Component = asChild ? Slot.View : View;
97
- return (
98
- <RootContext.Provider
99
- value={{
100
- isOpen,
101
- onOpenChange,
102
- isDisabled,
103
- contentLayout,
104
- nativeID,
105
- setContentLayout,
106
- setTriggerPosition,
107
- triggerPosition,
108
- isDefaultOpen,
109
- presentation,
110
- }}
111
- >
112
- <Component ref={ref} {...viewProps} />
113
- </RootContext.Provider>
114
- );
115
- }
116
- );
117
-
118
- // --------------------------------------------------
119
-
120
- const Trigger = forwardRef<TriggerRef, TriggerProps>(
121
- ({ asChild, onPress: onPressProp, isDisabled = false, ...props }, ref) => {
122
- const {
123
- onOpenChange,
124
- isOpen,
125
- isDisabled: isDisabledRoot,
126
- setTriggerPosition,
127
- setContentLayout,
128
- isDefaultOpen,
129
- triggerPosition,
130
- } = useRootContext();
131
-
132
- const isDisabledValue = isDisabled ?? isDisabledRoot ?? undefined;
133
-
134
- const augmentedRef = useAugmentedRef({
135
- ref,
136
- methods: {
137
- open: () => {
138
- augmentedRef.current?.measure(
139
- (_x, _y, width, height, pageX, pageY) => {
140
- setTriggerPosition({ width, pageX, pageY: pageY, height });
141
- }
142
- );
143
- onOpenChange(true);
144
- },
145
- close: () => {
146
- onOpenChange(false);
147
- setTriggerPosition(null);
148
- setContentLayout(null);
149
- },
150
- },
151
- deps: [isOpen],
152
- });
153
-
154
- // Open menu on mount if isDefaultOpen is true
155
- useEffect(() => {
156
- if ((isDefaultOpen || isOpen) && !triggerPosition) {
157
- // Use setTimeout to ensure the component is mounted and can be measured
158
- const timeoutId = setTimeout(() => {
159
- augmentedRef.current?.measure(
160
- (_x, _y, width, height, pageX, pageY) => {
161
- setTriggerPosition({ width, pageX, pageY: pageY, height });
162
- if (isDefaultOpen) {
163
- onOpenChange(true);
164
- }
165
- }
166
- );
167
- }, 0);
168
- return () => clearTimeout(timeoutId);
169
- }
170
- return undefined;
171
- // eslint-disable-next-line react-hooks/exhaustive-deps
172
- }, []);
173
-
174
- function onPress(ev: GestureResponderEvent) {
175
- augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => {
176
- setTriggerPosition({ width, pageX, pageY, height });
177
- });
178
- onOpenChange(!isOpen);
179
- onPressProp?.(ev);
180
- }
181
-
182
- const Component = asChild ? Slot.Pressable : Pressable;
183
-
184
- return (
185
- <Component
186
- ref={augmentedRef}
187
- aria-disabled={isDisabledValue}
188
- role="button"
189
- onPress={onPress}
190
- disabled={isDisabledValue}
191
- {...props}
192
- />
193
- );
194
- }
195
- );
196
-
197
- // --------------------------------------------------
198
-
199
- /**
200
- * @warning when using a custom `<PortalHost />`, you might have to adjust the Content's offset to account for nav elements like headers.
201
- */
202
- function Portal({ forceMount, hostName, children }: PortalProps) {
203
- const value = useRootContext();
204
-
205
- const isBottomSheet = value.presentation === 'bottom-sheet';
206
-
207
- if (!value.triggerPosition && !isBottomSheet) {
208
- return null;
209
- }
210
-
211
- if (!forceMount && !isBottomSheet) {
212
- if (!value.isOpen) {
213
- return null;
214
- }
215
- }
216
-
217
- return (
218
- <PrimitivePortal hostName={hostName} name={`${value.nativeID}_menu_portal`}>
219
- <RootContext.Provider value={value}>{children}</RootContext.Provider>
220
- </PrimitivePortal>
221
- );
222
- }
223
-
224
- // --------------------------------------------------
225
-
226
- const Overlay = forwardRef<OverlayRef, OverlayProps>(
227
- (
228
- {
229
- asChild,
230
- forceMount,
231
- onPress: OnPressProp,
232
- closeOnPress = true,
233
- ...props
234
- },
235
- ref
236
- ) => {
237
- const { isOpen, onOpenChange, setTriggerPosition, setContentLayout } =
238
- useRootContext();
239
-
240
- function onPress(ev: GestureResponderEvent) {
241
- if (closeOnPress) {
242
- onOpenChange(false);
243
- setTriggerPosition(null);
244
- setContentLayout(null);
245
- }
246
- OnPressProp?.(ev);
247
- }
248
-
249
- if (!forceMount) {
250
- if (!isOpen) {
251
- return null;
252
- }
253
- }
254
-
255
- const Component = asChild ? Slot.Pressable : Pressable;
256
-
257
- return <Component ref={ref} onPress={onPress} {...props} />;
258
- }
259
- );
260
-
261
- // --------------------------------------------------
262
-
263
- /**
264
- * @info `position`, `top`, `left`, and `maxWidth` style properties are controlled internally. Opt out of this behavior by setting `disablePositioningStyle` to `true`.
265
- */
266
- const Content = forwardRef<ContentRef, ContentProps>(
267
- (
268
- {
269
- asChild = false,
270
- forceMount,
271
- align = 'start',
272
- placement = 'bottom',
273
- offset = 0,
274
- alignOffset = 0,
275
- avoidCollisions = true,
276
- onLayout: onLayoutProp,
277
- insets,
278
- style,
279
- disablePositioningStyle,
280
- width = 'content-fit',
281
- ...props
282
- },
283
- ref
284
- ) => {
285
- const {
286
- isOpen,
287
- onOpenChange,
288
- contentLayout,
289
- nativeID,
290
- setContentLayout,
291
- setTriggerPosition,
292
- triggerPosition,
293
- } = useRootContext();
294
-
295
- useEffect(() => {
296
- const backHandler = BackHandler.addEventListener(
297
- 'hardwareBackPress',
298
- () => {
299
- onOpenChange(false);
300
- setTriggerPosition(null);
301
- setContentLayout(null);
302
- return true;
303
- }
304
- );
305
-
306
- return () => {
307
- setContentLayout(null);
308
- backHandler.remove();
309
- };
310
- // eslint-disable-next-line react-hooks/exhaustive-deps
311
- }, []);
312
-
313
- const positionStyle = useRelativePosition({
314
- align,
315
- avoidCollisions,
316
- triggerPosition,
317
- contentLayout,
318
- alignOffset,
319
- insets,
320
- offset,
321
- placement,
322
- disablePositioningStyle,
323
- });
324
-
325
- // Calculate content width based on width prop
326
- const widthStyle: { width?: number | `${number}%` } = {};
327
- if (width === 'trigger' && triggerPosition) {
328
- widthStyle.width = triggerPosition.width;
329
- } else if (width === 'full') {
330
- widthStyle.width = '100%';
331
- } else if (typeof width === 'number') {
332
- widthStyle.width = width;
333
- }
334
- // 'content-fit' is default - no explicit width set
335
-
336
- function onLayout(event: LayoutChangeEvent) {
337
- setContentLayout(event.nativeEvent.layout);
338
- onLayoutProp?.(event);
339
- }
340
-
341
- if (!forceMount) {
342
- if (!isOpen) {
343
- return null;
344
- }
345
- }
346
-
347
- const Component = asChild ? Slot.View : View;
348
-
349
- return (
350
- <Component
351
- ref={ref}
352
- role="menu"
353
- nativeID={nativeID}
354
- aria-modal={true}
355
- style={[positionStyle, widthStyle, style]}
356
- onLayout={onLayout}
357
- {...props}
358
- />
359
- );
360
- }
361
- );
362
-
363
- // --------------------------------------------------
364
-
365
- const Close = forwardRef<CloseRef, CloseProps>(
366
- ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => {
367
- const { onOpenChange, setContentLayout, setTriggerPosition } =
368
- useRootContext();
369
-
370
- function onPress(ev: GestureResponderEvent) {
371
- if (disabled) return;
372
- onOpenChange(false);
373
- setTriggerPosition(null);
374
- setContentLayout(null);
375
- onPressProp?.(ev);
376
- }
377
-
378
- const Component = asChild ? Slot.Pressable : Pressable;
379
-
380
- return (
381
- <Component
382
- ref={ref}
383
- aria-disabled={disabled ?? undefined}
384
- role="button"
385
- onPress={onPress}
386
- disabled={disabled ?? undefined}
387
- {...props}
388
- />
389
- );
390
- }
391
- );
392
-
393
- // --------------------------------------------------
394
- // Group Context
395
- // --------------------------------------------------
396
-
397
- const GroupContext = createContext<GroupContextValue | null>(null);
398
-
399
- /**
400
- * Hook to access Menu Group context.
401
- * Provides selection state, disabled state, and selection mode.
402
- *
403
- * @throws Error if used outside a Menu Group component
404
- */
405
- function useGroupContext() {
406
- const context = useContext(GroupContext);
407
-
408
- if (!context) {
409
- throw new Error(
410
- 'Menu.Group compound components cannot be rendered outside Menu.Group'
411
- );
412
- }
413
-
414
- return context;
415
- }
416
-
417
- /**
418
- * Reads the Group context without throwing if absent.
419
- * Returns `null` when Item is used outside a Group (standalone mode).
420
- */
421
- function useOptionalGroupContext() {
422
- return useContext(GroupContext);
423
- }
424
-
425
- // --------------------------------------------------
426
- // Item Context
427
- // --------------------------------------------------
428
-
429
- const ItemContext = createContext<IItemContext | null>(null);
430
-
431
- /**
432
- * Hook to access Menu Item context.
433
- * Provides the item's id, selected state, and disabled state.
434
- *
435
- * @throws Error if used outside a Menu Item component
436
- */
437
- function useItemContext() {
438
- const context = useContext(ItemContext);
439
-
440
- if (!context) {
441
- throw new Error(
442
- 'Menu.Item compound components cannot be rendered outside Menu.Item'
443
- );
444
- }
445
-
446
- return context;
447
- }
448
-
449
- // --------------------------------------------------
450
- // Group
451
- // --------------------------------------------------
452
-
453
- const Group = forwardRef<GroupRef, GroupProps>(
454
- (
455
- {
456
- asChild,
457
- selectionMode = 'none',
458
- selectedKeys: selectedKeysProp,
459
- defaultSelectedKeys,
460
- onSelectionChange: onSelectionChangeProp,
461
- disabledKeys: disabledKeysProp,
462
- isDisabled = false,
463
- shouldCloseOnSelect,
464
- ...viewProps
465
- },
466
- ref
467
- ) => {
468
- const isControlled = selectedKeysProp !== undefined;
469
-
470
- const [internalSelectedKeys, setInternalSelectedKeys] = useState<
471
- Set<MenuKey>
472
- >(() => new Set(defaultSelectedKeys ?? []));
473
-
474
- const selectedKeys = useMemo(
475
- () =>
476
- isControlled ? new Set(selectedKeysProp ?? []) : internalSelectedKeys,
477
- [isControlled, selectedKeysProp, internalSelectedKeys]
478
- );
479
-
480
- const disabledKeys = useMemo(
481
- () => new Set(disabledKeysProp ?? []),
482
- [disabledKeysProp]
483
- );
484
-
485
- const onSelectionChange = useCallback(
486
- (keys: Set<MenuKey>) => {
487
- if (!isControlled) {
488
- setInternalSelectedKeys(keys);
489
- }
490
- onSelectionChangeProp?.(keys);
491
- },
492
- [isControlled, onSelectionChangeProp]
493
- );
494
-
495
- const contextValue = useMemo<GroupContextValue>(
496
- () => ({
497
- selectionMode,
498
- selectedKeys,
499
- onSelectionChange,
500
- disabledKeys,
501
- isDisabled,
502
- shouldCloseOnSelect,
503
- }),
504
- [
505
- selectionMode,
506
- selectedKeys,
507
- onSelectionChange,
508
- disabledKeys,
509
- isDisabled,
510
- shouldCloseOnSelect,
511
- ]
512
- );
513
-
514
- const Component = asChild ? Slot.View : View;
515
-
516
- return (
517
- <GroupContext.Provider value={contextValue}>
518
- <Component ref={ref} role="group" {...viewProps} />
519
- </GroupContext.Provider>
520
- );
521
- }
522
- );
523
-
524
- // --------------------------------------------------
525
- // Item
526
- // --------------------------------------------------
527
-
528
- const Item = forwardRef<ItemRef, ItemProps>(
529
- (
530
- {
531
- asChild,
532
- id: itemId,
533
- isDisabled: isDisabledProp = false,
534
- shouldCloseOnSelect: shouldCloseOnSelectProp,
535
- isSelected: isSelectedProp,
536
- onSelectedChange,
537
- onPress: onPressProp,
538
- variant = 'default',
539
- ...props
540
- },
541
- ref
542
- ) => {
543
- const { onOpenChange, setTriggerPosition, setContentLayout } =
544
- useRootContext();
545
-
546
- const groupContext = useOptionalGroupContext();
547
- const isInsideGroup = groupContext !== null;
548
-
549
- if (isInsideGroup && itemId === undefined) {
550
- throw new Error(
551
- 'Menu.Item requires an `id` prop when used inside Menu.Group'
552
- );
553
- }
554
-
555
- // -- Resolve disabled state --
556
- const effectiveDisabled = isInsideGroup
557
- ? groupContext.isDisabled ||
558
- isDisabledProp ||
559
- (itemId !== undefined && groupContext.disabledKeys.has(itemId))
560
- : isDisabledProp;
561
-
562
- // -- Resolve selected state --
563
- const isSelected = isInsideGroup
564
- ? itemId !== undefined && groupContext.selectedKeys.has(itemId)
565
- : (isSelectedProp ?? false);
566
-
567
- // -- Resolve shouldCloseOnSelect --
568
- // Priority: item prop > group prop > selectionMode default
569
- const defaultCloseOnSelect = isInsideGroup
570
- ? groupContext.selectionMode !== 'multiple'
571
- : true;
572
-
573
- const effectiveCloseOnSelect = isInsideGroup
574
- ? (shouldCloseOnSelectProp ??
575
- groupContext.shouldCloseOnSelect ??
576
- defaultCloseOnSelect)
577
- : (shouldCloseOnSelectProp ?? true);
578
-
579
- // -- Resolve ARIA role --
580
- // RN's Role type only supports "menuitem"; selection semantics are
581
- // conveyed via aria-checked and accessibilityState.checked instead.
582
- const role = 'menuitem' as const;
583
-
584
- const closeMenu = useCallback(() => {
585
- onOpenChange(false);
586
- setTriggerPosition(null);
587
- setContentLayout(null);
588
- }, [onOpenChange, setTriggerPosition, setContentLayout]);
589
-
590
- const onPress = useCallback(
591
- (ev: GestureResponderEvent) => {
592
- if (effectiveDisabled) return;
593
-
594
- if (isInsideGroup && itemId !== undefined) {
595
- const { selectionMode, selectedKeys, onSelectionChange } =
596
- groupContext;
597
-
598
- if (selectionMode === 'single') {
599
- const newKeys = isSelected
600
- ? new Set<MenuKey>()
601
- : new Set<MenuKey>([itemId]);
602
- onSelectionChange(newKeys);
603
- } else if (selectionMode === 'multiple') {
604
- const newKeys = new Set(selectedKeys);
605
- if (isSelected) {
606
- newKeys.delete(itemId);
607
- } else {
608
- newKeys.add(itemId);
609
- }
610
- onSelectionChange(newKeys);
611
- }
612
- } else {
613
- // Standalone: toggle via callback if provided
614
- onSelectedChange?.(!isSelected);
615
- }
616
-
617
- onPressProp?.(ev);
618
-
619
- if (effectiveCloseOnSelect) {
620
- closeMenu();
621
- }
622
- },
623
- [
624
- effectiveDisabled,
625
- isInsideGroup,
626
- itemId,
627
- groupContext,
628
- isSelected,
629
- onSelectedChange,
630
- onPressProp,
631
- effectiveCloseOnSelect,
632
- closeMenu,
633
- ]
634
- );
635
-
636
- const itemContextValue = useMemo<IItemContext>(
637
- () => ({
638
- id: itemId,
639
- isSelected,
640
- isDisabled: effectiveDisabled,
641
- variant,
642
- }),
643
- [itemId, isSelected, effectiveDisabled, variant]
644
- );
645
-
646
- const isCheckable = isInsideGroup
647
- ? groupContext.selectionMode !== 'none'
648
- : isSelectedProp !== undefined || onSelectedChange !== undefined;
649
-
650
- const Component = asChild ? Slot.Pressable : Pressable;
651
-
652
- return (
653
- <ItemContext.Provider value={itemContextValue}>
654
- <Component
655
- ref={ref}
656
- role={role}
657
- aria-checked={isCheckable ? isSelected : undefined}
658
- aria-disabled={effectiveDisabled}
659
- disabled={effectiveDisabled}
660
- accessibilityState={{
661
- disabled: effectiveDisabled,
662
- ...(isCheckable ? { checked: isSelected } : {}),
663
- }}
664
- onPress={onPress}
665
- {...props}
666
- />
667
- </ItemContext.Provider>
668
- );
669
- }
670
- );
671
-
672
- // --------------------------------------------------
673
- // ItemTitle
674
- // --------------------------------------------------
675
-
676
- const ItemTitle = forwardRef<ItemTitleRef, ItemTitleProps>(
677
- ({ asChild, ...props }, ref) => {
678
- useItemContext();
679
-
680
- const Component = asChild ? Slot.Text : Text;
681
-
682
- return <Component ref={ref} {...props} />;
683
- }
684
- );
685
-
686
- // --------------------------------------------------
687
- // ItemDescription
688
- // --------------------------------------------------
689
-
690
- const ItemDescription = forwardRef<ItemDescriptionRef, ItemDescriptionProps>(
691
- ({ asChild, ...props }, ref) => {
692
- useItemContext();
693
-
694
- const Component = asChild ? Slot.Text : Text;
695
-
696
- return <Component ref={ref} {...props} />;
697
- }
698
- );
699
-
700
- // --------------------------------------------------
701
- // ItemIndicator
702
- // --------------------------------------------------
703
-
704
- const ItemIndicator = forwardRef<ItemIndicatorRef, ItemIndicatorProps>(
705
- ({ asChild, forceMount, ...props }, ref) => {
706
- const { isSelected } = useItemContext();
707
-
708
- if (!forceMount && !isSelected) {
709
- return null;
710
- }
711
-
712
- const Component = asChild ? Slot.View : View;
713
-
714
- return (
715
- <Component
716
- ref={ref}
717
- role="presentation"
718
- aria-hidden={!isSelected}
719
- {...props}
720
- />
721
- );
722
- }
723
- );
724
-
725
- // --------------------------------------------------
726
- // Label
727
- // --------------------------------------------------
728
-
729
- const Label = forwardRef<LabelRef, LabelProps>(({ asChild, ...props }, ref) => {
730
- const Component = asChild ? Slot.Text : Text;
731
-
732
- return <Component ref={ref} accessibilityRole="header" {...props} />;
733
- });
734
-
735
- // --------------------------------------------------
736
-
737
- Root.displayName = 'HeroUINative.Menu.Root';
738
- Trigger.displayName = 'HeroUINative.Menu.Trigger';
739
- Overlay.displayName = 'HeroUINative.Menu.Overlay';
740
- Content.displayName = 'HeroUINative.Menu.Content';
741
- Close.displayName = 'HeroUINative.Menu.Close';
742
- Group.displayName = 'HeroUINative.Menu.Group';
743
- Item.displayName = 'HeroUINative.Menu.Item';
744
- ItemTitle.displayName = 'HeroUINative.Menu.ItemTitle';
745
- ItemDescription.displayName = 'HeroUINative.Menu.ItemDescription';
746
- ItemIndicator.displayName = 'HeroUINative.Menu.ItemIndicator';
747
- Label.displayName = 'HeroUINative.Menu.Label';
748
-
749
- export {
750
- Close,
751
- Content,
752
- Group,
753
- Item,
754
- ItemDescription,
755
- ItemIndicator,
756
- ItemTitle,
757
- Label,
758
- Overlay,
759
- Portal,
760
- Root,
761
- Trigger,
762
- useGroupContext,
763
- useItemContext,
764
- useRootContext,
765
- };