@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,373 @@
1
+ import type { SharedValue } from 'react-native-reanimated';
2
+ import type { ToastRootProps } from '../../components/toast/toast.types';
3
+
4
+ /**
5
+ * Global toast configuration
6
+ * These values are used as defaults for all toasts unless overridden locally
7
+ */
8
+ export interface ToastGlobalConfig
9
+ extends Pick<
10
+ ToastRootProps,
11
+ 'variant' | 'placement' | 'isSwipeable' | 'animation'
12
+ > {}
13
+
14
+ /**
15
+ * Insets for spacing from screen edges
16
+ */
17
+ export interface ToastInsets {
18
+ /**
19
+ * Inset from the top edge in pixels (added to safe area inset)
20
+ * @default Platform-specific: iOS = 0, Android = 12
21
+ */
22
+ top?: number;
23
+ /**
24
+ * Inset from the bottom edge in pixels (added to safe area inset)
25
+ * @default Platform-specific: iOS = 6, Android = 12
26
+ */
27
+ bottom?: number;
28
+ /**
29
+ * Inset from the left edge in pixels (added to safe area inset)
30
+ * @default 12
31
+ */
32
+ left?: number;
33
+ /**
34
+ * Inset from the right edge in pixels (added to safe area inset)
35
+ * @default 12
36
+ */
37
+ right?: number;
38
+ }
39
+
40
+ /**
41
+ * Props for the ToastProvider component
42
+ */
43
+ export interface ToastProviderProps {
44
+ /**
45
+ * When true, uses a regular View instead of FullWindowOverlay on iOS for toasts.
46
+ * Enables React Native element inspector but toasts won't appear above native modals.
47
+ * @default false
48
+ */
49
+ disableFullWindowOverlay?: boolean;
50
+ /**
51
+ * Global toast configuration
52
+ * These values are used as defaults for all toasts unless overridden locally
53
+ * Local configs have precedence over global config
54
+ */
55
+ defaultProps?: ToastGlobalConfig;
56
+ /**
57
+ * Insets for spacing from screen edges (added to safe area insets)
58
+ * @default Platform-specific:
59
+ * - iOS: { top: 0, bottom: 6, left: 12, right: 12 }
60
+ * - Android: { top: 12, bottom: 12, left: 12, right: 12 }
61
+ */
62
+ insets?: ToastInsets;
63
+ /**
64
+ * Maximum number of visible toasts before opacity starts fading
65
+ * Controls when toast items begin to fade out as they move beyond the visible stack
66
+ * @default 3
67
+ */
68
+ maxVisibleToasts?: number;
69
+ /**
70
+ * Custom wrapper function to wrap the toast content
71
+ * Receives children and should return a component that wraps them
72
+ * The wrapper should apply flex: 1 (via className or style) to ensure proper layout
73
+ * Can be any component wrapper - KeyboardAvoidingView, View, or any custom component
74
+ *
75
+ * @example
76
+ * ```tsx
77
+ * <ToastProvider
78
+ * contentWrapper={(children) => (
79
+ * <KeyboardAvoidingView
80
+ * behavior="padding"
81
+ * keyboardVerticalOffset={24}
82
+ * className="flex-1"
83
+ * >
84
+ * {children}
85
+ * </KeyboardAvoidingView>
86
+ * )}
87
+ * >
88
+ * ```
89
+ */
90
+ contentWrapper?: (children: React.ReactNode) => React.ReactElement;
91
+ /**
92
+ * Children to render
93
+ */
94
+ children?: React.ReactNode;
95
+ }
96
+
97
+ /**
98
+ * Props passed to the toast component function
99
+ */
100
+ export interface ToastComponentProps {
101
+ /**
102
+ * The unique ID of the toast
103
+ */
104
+ id: string;
105
+ /**
106
+ * The index of the toast in the array (0-based)
107
+ */
108
+ index: number;
109
+ /**
110
+ * The total number of toasts currently displayed
111
+ */
112
+ total: SharedValue<number>;
113
+ /**
114
+ * Heights of all toast items, keyed by toast ID
115
+ */
116
+ heights: SharedValue<Record<string, number>>;
117
+ /**
118
+ * Maximum number of visible toasts before opacity starts fading
119
+ * Controls when toast items begin to fade out as they move beyond the visible stack
120
+ * @default 3
121
+ */
122
+ maxVisibleToasts?: number;
123
+ /**
124
+ * Show a new toast
125
+ */
126
+ show: (options: string | ToastShowOptions) => string;
127
+ /**
128
+ * Hide one or more toasts
129
+ * - No argument: hides the last toast in the array
130
+ * - "all": hides all toasts
131
+ * - Single ID: hides that toast
132
+ * - Array of IDs: hides those toasts
133
+ */
134
+ hide: (ids?: string | string[] | 'all') => void;
135
+ }
136
+
137
+ /**
138
+ * Configuration for showing a default styled toast (usage pattern 2)
139
+ * Used when component is not provided
140
+ */
141
+ export interface ToastShowConfig
142
+ extends Pick<
143
+ ToastRootProps,
144
+ 'variant' | 'placement' | 'isSwipeable' | 'animation'
145
+ > {
146
+ /**
147
+ * Duration in milliseconds before the toast automatically disappears
148
+ * Set to `'persistent'` to prevent auto-hide (toast will remain until manually dismissed)
149
+ * @default 4000
150
+ */
151
+ duration?: number | 'persistent';
152
+ /**
153
+ * Optional ID for the toast
154
+ * If not provided, one will be generated automatically
155
+ */
156
+ id?: string;
157
+ /**
158
+ * Label text for the toast
159
+ */
160
+ label?: string;
161
+ /**
162
+ * Description text for the toast
163
+ */
164
+ description?: string;
165
+ /**
166
+ * Action button label text
167
+ */
168
+ actionLabel?: string;
169
+ /**
170
+ * Callback function called when the action button is pressed
171
+ * Receives show and hide functions for programmatic toast control
172
+ */
173
+ onActionPress?: (helpers: {
174
+ show: (options: string | ToastShowOptions) => string;
175
+ hide: (ids?: string | string[] | 'all') => void;
176
+ }) => void;
177
+ /**
178
+ * Icon element to display in the toast
179
+ */
180
+ icon?: React.ReactNode;
181
+ /**
182
+ * Callback function called when the toast is shown
183
+ */
184
+ onShow?: () => void;
185
+ /**
186
+ * Callback function called when the toast is hidden
187
+ */
188
+ onHide?: () => void;
189
+ }
190
+
191
+ /**
192
+ * Options for showing a toast with custom component (usage pattern 3)
193
+ * Used when component is provided
194
+ */
195
+ export interface ToastShowOptionsWithComponent {
196
+ /**
197
+ * Optional ID for the toast
198
+ * If not provided, one will be generated automatically
199
+ */
200
+ id?: string;
201
+ /**
202
+ * A function that receives toast props and returns a React element
203
+ */
204
+ component: (props: ToastComponentProps) => React.ReactElement;
205
+ /**
206
+ * Duration in milliseconds before the toast automatically disappears
207
+ * Set to `'persistent'` to prevent auto-hide (toast will remain until manually dismissed)
208
+ * @default 4000
209
+ */
210
+ duration?: number | 'persistent';
211
+ /**
212
+ * Callback function called when the toast is shown
213
+ */
214
+ onShow?: () => void;
215
+ /**
216
+ * Callback function called when the toast is hidden
217
+ */
218
+ onHide?: () => void;
219
+ }
220
+
221
+ /**
222
+ * Conditional type for toast show options
223
+ * - If component is provided: only id, component, onShow, onHide are allowed
224
+ * - If component is NOT provided: all config props are available
225
+ */
226
+ export type ToastShowOptions =
227
+ | ToastShowOptionsWithComponent
228
+ | (ToastShowConfig & { component?: never });
229
+
230
+ /**
231
+ * Represents a single toast item in the state
232
+ */
233
+ export interface ToastItem {
234
+ /**
235
+ * Unique identifier for the toast
236
+ */
237
+ id: string;
238
+ /**
239
+ * A function that receives toast props and returns a React element
240
+ */
241
+ component: (props: ToastComponentProps) => React.ReactElement;
242
+ /**
243
+ * Duration in milliseconds before the toast automatically disappears
244
+ * Set to `'persistent'` to prevent auto-hide (toast will remain until manually dismissed)
245
+ * @default 4000
246
+ */
247
+ duration?: number | 'persistent';
248
+ /**
249
+ * Callback function called when the toast is shown
250
+ */
251
+ onShow?: () => void;
252
+ /**
253
+ * Callback function called when the toast is hidden
254
+ */
255
+ onHide?: () => void;
256
+ }
257
+
258
+ /**
259
+ * Actions for the toast reducer
260
+ */
261
+ export type ToastAction =
262
+ | { type: 'SHOW'; payload: ToastItem }
263
+ | { type: 'HIDE'; payload: { ids: string[] } }
264
+ | { type: 'HIDE_ALL' };
265
+
266
+ /**
267
+ * Toast manager API
268
+ */
269
+ export interface ToastManager {
270
+ /**
271
+ * Show a toast
272
+ * @param options - Toast configuration options or simple string
273
+ * @returns The ID of the shown toast
274
+ *
275
+ * @example
276
+ * ```tsx
277
+ * const toast = useToast();
278
+ *
279
+ * // Simple string (usage pattern 1)
280
+ * toast.show('This is toast');
281
+ *
282
+ * // Config object with default styling (usage pattern 2)
283
+ * toast.show({
284
+ * label: 'Success!',
285
+ * description: 'Your action was completed',
286
+ * variant: 'success',
287
+ * actionLabel: 'Undo',
288
+ * onActionPress: ({ show, hide }) => hide(),
289
+ * });
290
+ *
291
+ * // Custom component (usage pattern 3)
292
+ * toast.show({
293
+ * component: (props) => <Toast>Hello</Toast>,
294
+ * });
295
+ *
296
+ * // With custom ID
297
+ * toast.show({ id: 'my-toast', component: (props) => <Toast>Hello</Toast> });
298
+ * ```
299
+ */
300
+ show: (options: string | ToastShowOptions) => string;
301
+
302
+ /**
303
+ * Hide one or more toasts
304
+ *
305
+ * @param ids - Optional ID(s) of toast(s) to hide
306
+ * - No argument: hides the last toast in the array
307
+ * - "all": hides all toasts
308
+ * - Single ID: hides that toast
309
+ * - Array of IDs: hides those toasts
310
+ *
311
+ * @example
312
+ * ```tsx
313
+ * const toast = useToast();
314
+ *
315
+ * toast.hide(); // Hide the last toast
316
+ * toast.hide('all'); // Hide all toasts
317
+ * toast.hide('my-toast'); // Hide specific toast
318
+ * toast.hide(['toast-1', 'toast-2']); // Hide multiple toasts
319
+ * ```
320
+ */
321
+ hide: (ids?: string | string[] | 'all') => void;
322
+ }
323
+
324
+ /**
325
+ * Props for the ToastItemRenderer component
326
+ */
327
+ export interface ToastItemRendererProps {
328
+ /**
329
+ * The toast item to render
330
+ */
331
+ toastItem: ToastItem;
332
+ /**
333
+ * The index of the toast in the array (0-based)
334
+ */
335
+ index: number;
336
+ /**
337
+ * The total number of toasts currently displayed
338
+ */
339
+ total: SharedValue<number>;
340
+ /**
341
+ * Heights of all toast items, keyed by toast ID
342
+ */
343
+ heights: SharedValue<Record<string, number>>;
344
+ /**
345
+ * Maximum number of visible toasts before opacity starts fading
346
+ * Controls when toast items begin to fade out as they move beyond the visible stack
347
+ * @default 3
348
+ */
349
+ maxVisibleToasts?: number;
350
+ /**
351
+ * Show a new toast
352
+ */
353
+ show: (options: string | ToastShowOptions) => string;
354
+ /**
355
+ * Hide one or more toasts
356
+ * - No argument: hides the last toast in the array
357
+ * - "all": hides all toasts
358
+ * - Single ID: hides that toast
359
+ * - Array of IDs: hides those toasts
360
+ */
361
+ hide: (ids?: string | string[] | 'all') => void;
362
+ }
363
+
364
+ /**
365
+ * Context value for the toast provider
366
+ */
367
+ export interface ToasterContextValue {
368
+ toast: ToastManager;
369
+ /**
370
+ * Whether any toast is currently visible
371
+ */
372
+ isToastVisible: boolean;
373
+ }
@@ -0,0 +1,3 @@
1
+ @import './variables.css';
2
+ @import './utilities.css';
3
+ @import './theme.css';
@@ -0,0 +1,112 @@
1
+ @theme inline static {
2
+ --color-background: var(--background);
3
+ --color-foreground: var(--foreground);
4
+
5
+ --color-surface: var(--surface);
6
+ --color-surface-foreground: var(--surface-foreground);
7
+ --color-surface-hover: color-mix(in oklab, var(--surface) 92%, var(--surface-foreground) 8%);
8
+
9
+ --color-surface-secondary: var(--surface-secondary);
10
+ --color-surface-secondary-foreground: var(--surface-secondary-foreground);
11
+
12
+ --color-surface-tertiary: var(--surface-tertiary);
13
+ --color-surface-tertiary-foreground: var(--surface-tertiary-foreground);
14
+
15
+ --color-overlay: var(--overlay);
16
+ --color-overlay-foreground: var(--overlay-foreground);
17
+
18
+ --color-muted: var(--muted);
19
+
20
+ --color-accent: var(--accent);
21
+ --color-accent-foreground: var(--accent-foreground);
22
+
23
+ --color-segment: var(--segment);
24
+ --color-segment-foreground: var(--segment-foreground);
25
+
26
+ --color-border: var(--border);
27
+ --color-separator: var(--separator);
28
+ --color-focus: var(--focus);
29
+ --color-link: var(--link);
30
+
31
+ --color-default: var(--default);
32
+ --color-default-foreground: var(--default-foreground);
33
+
34
+ --color-success: var(--success);
35
+ --color-success-foreground: var(--success-foreground);
36
+
37
+ --color-warning: var(--warning);
38
+ --color-warning-foreground: var(--warning-foreground);
39
+
40
+ --color-danger: var(--danger);
41
+ --color-danger-foreground: var(--danger-foreground);
42
+
43
+ /* Form Field Tokens */
44
+ --color-field: var(--field-background, var(--default));
45
+ --color-field-foreground: var(--field-foreground, var(--foreground));
46
+ --color-field-placeholder: var(--field-placeholder, var(--muted));
47
+ --color-field-border: var(--field-border, var(--border));
48
+ --radius-field: var(--field-radius, var(--radius-xl));
49
+ --border-width-field: var(--field-border-width, var(--border-width));
50
+
51
+ --shadow-surface: var(--surface-shadow);
52
+ --shadow-overlay: var(--overlay-shadow);
53
+ --shadow-field: var(--field-shadow);
54
+
55
+ /* Calculated Variables */
56
+
57
+ /* Colors */
58
+
59
+ /* --- background shades --- */
60
+ --color-background-secondary: color-mix(in oklab, var(--background) 96%, var(--foreground) 4%);
61
+ --color-background-tertiary: color-mix(in oklab, var(--background) 92%, var(--foreground) 8%);
62
+ --color-background-inverse: var(--foreground);
63
+
64
+ /* ------------------------- */
65
+ --color-default-hover: color-mix(in oklab, var(--default) 96%, var(--default-foreground) 4%);
66
+ --color-accent-hover: color-mix(in oklab, var(--accent) 90%, var(--accent-foreground) 10%);
67
+ --color-success-hover: color-mix(in oklab, var(--success) 90%, var(--success-foreground) 10%);
68
+ --color-warning-hover: color-mix(in oklab, var(--warning) 90%, var(--warning-foreground) 10%);
69
+ --color-danger-hover: color-mix(in oklab, var(--danger) 90%, var(--danger-foreground) 10%);
70
+
71
+ /* Form Field Colors */
72
+ --color-field-hover: color-mix(in oklab, var(--field-background, var(--default)) 90%, var(--field-foreground, var(--foreground)) 2%);
73
+ --color-field-focus: var(--field-background, var(--default));
74
+ --color-field-border-hover: color-mix(in oklab, var(--field-border, var(--border)) 88%, var(--field-foreground, var(--foreground)) 10%);
75
+ --color-field-border-focus: color-mix(in oklab, var(--field-border, var(--border)) 74%, var(--field-foreground, var(--foreground)) 22%);
76
+
77
+ /* Soft Colors */
78
+ --color-accent-soft: color-mix(in oklab, var(--accent) 15%, transparent);
79
+ --color-accent-soft-foreground: var(--accent);
80
+ --color-accent-soft-hover: color-mix(in oklab, var(--accent) 20%, transparent);
81
+
82
+ --color-danger-soft: color-mix(in oklab, var(--danger) 15%, transparent);
83
+ --color-danger-soft-foreground: var(--danger);
84
+ --color-danger-soft-hover: color-mix(in oklab, var(--danger) 20%, transparent);
85
+
86
+ --color-warning-soft: color-mix(in oklab, var(--warning) 15%, transparent);
87
+ --color-warning-soft-foreground: var(--warning);
88
+ --color-warning-soft-hover: color-mix(in oklab, var(--warning) 20%, transparent);
89
+
90
+ --color-success-soft: color-mix(in oklab, var(--success) 15%, transparent);
91
+ --color-success-soft-foreground: var(--success);
92
+ --color-success-soft-hover: color-mix(in oklab, var(--success) 20%, transparent);
93
+
94
+ /* Separator Colors - Levels */
95
+ --color-separator-secondary: color-mix(in oklab, var(--surface) 85%, var(--surface-foreground) 15%);
96
+ --color-separator-tertiary: color-mix(in oklab, var(--surface) 81%, var(--surface-foreground) 19%);
97
+
98
+ /* Border Colors - Levels (progressive contrast: default → secondary → tertiary) */
99
+ /* Light mode: lighter → darker | Dark mode: darker → lighter */
100
+ --color-border-secondary: color-mix(in oklab, var(--surface) 78%, var(--surface-foreground) 22%);
101
+ --color-border-tertiary: color-mix(in oklab, var(--surface) 66%, var(--surface-foreground) 34%);
102
+
103
+ /* Radius and default sizes - defaults can change by just changing the --radius */
104
+ --radius-xs: calc(var(--radius) * 0.25); /* 0.125rem (2px) */
105
+ --radius-sm: calc(var(--radius) * 0.5); /* 0.25rem (4px) */
106
+ --radius-md: calc(var(--radius) * 0.75); /* 0.375rem (6px) */
107
+ --radius-lg: calc(var(--radius) * 1); /* 0.5rem (8px) */
108
+ --radius-xl: calc(var(--radius) * 1.5); /* 0.75rem (12px) */
109
+ --radius-2xl: calc(var(--radius) * 2); /* 1rem (16px) */
110
+ --radius-3xl: calc(var(--radius) * 3); /* 1.5rem (24px) */
111
+ --radius-4xl: calc(var(--radius) * 4); /* 2rem (32px) */
112
+ }
@@ -0,0 +1,8 @@
1
+ @layer utilities {
2
+ .h-hairline {
3
+ height: hairlineWidth();
4
+ }
5
+ .w-hairline {
6
+ width: hairlineWidth();
7
+ }
8
+ }
@@ -0,0 +1,146 @@
1
+ @theme {
2
+ /* Primitive Colors (Do not change between light and dark) */
3
+ --white: oklch(100% 0 0);
4
+ --black: oklch(0% 0 0);
5
+ --snow: oklch(0.9911 0 0);
6
+ --eclipse: oklch(0.2103 0.0059 285.89);
7
+
8
+ /* Border */
9
+ --border-width: 1px;
10
+ --field-border-width: 0px;
11
+
12
+ /* Base radius */
13
+ --radius: 0.5rem;
14
+ --field-radius: calc(var(--radius) * 1.5);
15
+
16
+ /* Opacity */
17
+ --opacity-disabled: 0.5;
18
+ }
19
+
20
+ @layer theme {
21
+ :root {
22
+ @variant light {
23
+ /* Base Colors */
24
+ --background: oklch(0.9702 0 0);
25
+ --foreground: var(--eclipse);
26
+
27
+ /* Surface: Used for non-overlay components (cards, accordions, disclosure groups) */
28
+ --surface: var(--white);
29
+ --surface-foreground: var(--foreground);
30
+
31
+ --surface-secondary: oklch(0.9524 0.0013 286.37);
32
+ --surface-secondary-foreground: var(--foreground);
33
+
34
+ --surface-tertiary: oklch(0.9373 0.0013 286.37);
35
+ --surface-tertiary-foreground: var(--foreground);
36
+
37
+ /* Overlay: Used for floating/overlay components (dialogs, popovers, modals, menus) */
38
+ --overlay: var(--white);
39
+ --overlay-foreground: var(--foreground);
40
+
41
+ --muted: oklch(0.5517 0.0138 285.94);
42
+
43
+ --default: oklch(94% 0.001 286.375);
44
+ --default-foreground: var(--eclipse);
45
+
46
+ --accent: oklch(0.6204 0.195 253.83);
47
+ --accent-foreground: var(--snow);
48
+
49
+ /* Form Fields */
50
+ --field-background: var(--white);
51
+ --field-foreground: oklch(0.2103 0.0059 285.89);
52
+ --field-placeholder: var(--muted);
53
+ --field-border: transparent; /* no border by default on form fields */
54
+
55
+ /* Status Colors */
56
+ --success: oklch(0.7329 0.1935 150.81);
57
+ --success-foreground: var(--eclipse);
58
+
59
+ --warning: oklch(0.7819 0.1585 72.33);
60
+ --warning-foreground: var(--eclipse);
61
+
62
+ --danger: oklch(0.6532 0.2328 25.74);
63
+ --danger-foreground: var(--snow);
64
+
65
+ /* Component Colors */
66
+ --segment: var(--white);
67
+ --segment-foreground: var(--eclipse);
68
+
69
+ /* Misc Colors */
70
+ --border: oklch(90% 0.004 286.32);
71
+ --separator: oklch(74% 0.004 286.32);
72
+ --focus: var(--accent);
73
+ --link: var(--foreground);
74
+
75
+ /* Shadows */
76
+ --surface-shadow:
77
+ 0 2px 4px 0 rgba(0, 0, 0, 0.04), 0 1px 2px 0 rgba(0, 0, 0, 0.06),
78
+ 0 0 1px 0 rgba(0, 0, 0, 0.06);
79
+ --overlay-shadow:
80
+ 0 2px 8px 0 rgba(0, 0, 0, 0.02), 0 -6px 12px 0 rgba(0, 0, 0, 0.01),
81
+ 0 14px 28px 0 rgba(0, 0, 0, 0.03);
82
+ --field-shadow:
83
+ 0 2px 4px 0 rgba(0, 0, 0, 0.04), 0 1px 2px 0 rgba(0, 0, 0, 0.06),
84
+ 0 0 1px 0 rgba(0, 0, 0, 0.06);
85
+ }
86
+
87
+ @variant dark {
88
+ /* Base Colors */
89
+ --background: oklch(12% 0.005 285.823);
90
+ --foreground: var(--snow);
91
+
92
+ /* Surface: Used for non-overlay components (cards, accordions, disclosure groups) */
93
+ --surface: oklch(0.2103 0.0059 285.89);
94
+ --surface-foreground: var(--foreground);
95
+
96
+ --surface-secondary: oklch(0.257 0.0037 286.14);
97
+ --surface-secondary-foreground: var(--foreground);
98
+
99
+ --surface-tertiary: oklch(0.2721 0.0024 247.91);
100
+ --surface-tertiary-foreground: var(--foreground);
101
+
102
+ /* Overlay: Used for floating/overlay components (dialogs, popovers, modals, menus) - lighter for contrast */
103
+ --overlay: oklch(0.2103 0.0059 285.89);
104
+ --overlay-foreground: var(--foreground);
105
+
106
+ --muted: oklch(70.5% 0.015 286.067);
107
+
108
+ --default: oklch(27.4% 0.006 286.033);
109
+ --default-foreground: var(--snow);
110
+
111
+ --accent: oklch(0.6204 0.195 253.83);
112
+ --accent-foreground: var(--snow);
113
+
114
+ /* Form Field Defaults - Colors (only the ones that are different from light theme) */
115
+ --field-background: oklch(0.2103 0.0059 285.89);
116
+ --field-foreground: var(--foreground);
117
+ --field-placeholder: var(--muted);
118
+ --field-border: transparent; /* no border by default on form fields */
119
+
120
+ /* Status Colors */
121
+ --success: oklch(0.7329 0.1935 150.81);
122
+ --success-foreground: var(--eclipse);
123
+
124
+ --warning: oklch(0.8203 0.1388 76.34);
125
+ --warning-foreground: var(--eclipse);
126
+
127
+ --danger: oklch(0.594 0.1967 24.63);
128
+ --danger-foreground: var(--snow);
129
+
130
+ /* Component Colors */
131
+ --segment: oklch(0.3964 0.01 285.93);
132
+ --segment-foreground: var(--foreground);
133
+
134
+ /* Misc Colors */
135
+ --border: oklch(28% 0.006 286.033);
136
+ --separator: oklch(40% 0.006 286.033);
137
+ --focus: var(--accent);
138
+ --link: var(--foreground);
139
+
140
+ /* Shadows */
141
+ --surface-shadow: 0 0 0 0 transparent inset; /* No shadow on dark mode */
142
+ --overlay-shadow: 0 0 1px 0 rgba(255, 255, 255, 0.2) inset;
143
+ --field-shadow: 0 0 0 0 transparent inset; /* Transparent shadow to allow ring utilities to work */
144
+ }
145
+ }
146
+ }
@@ -62,7 +62,10 @@
62
62
  "react-native-web": "~0.21.0",
63
63
  "react-native-webview": "13.15.0",
64
64
  "react-native-worklets": "0.5.1",
65
- "zod": "^4.2.1"
65
+ "zod": "^4.2.1",
66
+ "@gorhom/bottom-sheet": "^5.2.8",
67
+ "tailwind-merge": "^3.4.0",
68
+ "tailwind-variants": "^3.2.2"
66
69
  },
67
70
  "devDependencies": {
68
71
  "@babel/core": "^7.25.2",
@@ -9,7 +9,7 @@
9
9
  "preinstall": "npx only-allow pnpm",
10
10
  "lint:client": "npm run lint --prefix ./client",
11
11
  "lint:server": "npm run lint --prefix ./server",
12
- "lint": "npm run lint --prefix ./client; npm run lint --prefix ./server"
12
+ "lint:all": "npm run lint --prefix ./client; npm run lint --prefix ./server"
13
13
  },
14
14
  "dependencies": {},
15
15
  "devDependencies": {},