@thewhileloop/whileui 1.2.2 → 2.0.0

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 (688) hide show
  1. package/README.md +248 -85
  2. package/dist/blocks/chat/chat.d.ts +3 -4
  3. package/dist/blocks/chat/chat.js +29 -17
  4. package/dist/blocks/chat/index.d.ts +0 -1
  5. package/dist/blocks/chat/index.js +0 -1
  6. package/dist/blocks/commerce/checkout-summary.d.ts +1 -2
  7. package/dist/blocks/commerce/checkout-summary.js +16 -4
  8. package/dist/blocks/commerce/feature-gate.d.ts +1 -2
  9. package/dist/blocks/commerce/feature-gate.js +14 -4
  10. package/dist/blocks/commerce/index.d.ts +0 -1
  11. package/dist/blocks/commerce/index.js +0 -1
  12. package/dist/blocks/commerce/metric-card.d.ts +3 -4
  13. package/dist/blocks/commerce/metric-card.js +7 -3
  14. package/dist/blocks/commerce/plan-toggle.d.ts +1 -2
  15. package/dist/blocks/commerce/plan-toggle.js +11 -9
  16. package/dist/blocks/commerce/pricing-card.d.ts +1 -2
  17. package/dist/blocks/commerce/pricing-card.js +23 -6
  18. package/dist/blocks/commerce/product-card.d.ts +1 -2
  19. package/dist/blocks/commerce/product-card.js +23 -9
  20. package/dist/blocks/commerce/subscription-card.d.ts +1 -2
  21. package/dist/blocks/commerce/subscription-card.js +6 -3
  22. package/dist/blocks/commerce/upgrade-banner.d.ts +1 -2
  23. package/dist/blocks/commerce/upgrade-banner.js +13 -3
  24. package/dist/blocks/commerce/usage-bar.d.ts +1 -2
  25. package/dist/blocks/commerce/usage-bar.js +4 -2
  26. package/dist/blocks/datepicker/date-range-picker-modal.d.ts +2 -3
  27. package/dist/blocks/datepicker/date-range-picker-modal.js +33 -7
  28. package/dist/blocks/datepicker/datepicker-inline.d.ts +1 -2
  29. package/dist/blocks/datepicker/datepicker-inline.js +9 -3
  30. package/dist/blocks/datepicker/datepicker-modal.d.ts +2 -3
  31. package/dist/blocks/datepicker/datepicker-modal.js +49 -17
  32. package/dist/blocks/datepicker/index.d.ts +0 -1
  33. package/dist/blocks/datepicker/index.js +0 -1
  34. package/dist/blocks/datepicker/use-calendar-theme.d.ts +0 -1
  35. package/dist/blocks/datepicker/use-calendar-theme.js +0 -1
  36. package/dist/blocks/layout/action-bar.d.ts +1 -2
  37. package/dist/blocks/layout/action-bar.js +0 -1
  38. package/dist/blocks/layout/app-shell.d.ts +1 -2
  39. package/dist/blocks/layout/app-shell.js +11 -5
  40. package/dist/blocks/layout/confirm-action-sheet.d.ts +1 -2
  41. package/dist/blocks/layout/confirm-action-sheet.js +18 -6
  42. package/dist/blocks/layout/content-skeleton.d.ts +1 -2
  43. package/dist/blocks/layout/content-skeleton.js +22 -9
  44. package/dist/blocks/layout/docked-input.d.ts +11 -0
  45. package/dist/blocks/layout/docked-input.js +27 -0
  46. package/dist/blocks/layout/empty-state.d.ts +1 -2
  47. package/dist/blocks/layout/empty-state.js +10 -5
  48. package/dist/blocks/layout/error-boundary.d.ts +1 -2
  49. package/dist/blocks/layout/error-boundary.js +0 -2
  50. package/dist/blocks/layout/error-state.d.ts +1 -2
  51. package/dist/blocks/layout/error-state.js +0 -2
  52. package/dist/blocks/layout/form-modal-screen.d.ts +1 -2
  53. package/dist/blocks/layout/form-modal-screen.js +24 -21
  54. package/dist/blocks/layout/index.d.ts +2 -2
  55. package/dist/blocks/layout/index.js +2 -2
  56. package/dist/blocks/layout/keyboard-aware-screen.d.ts +14 -0
  57. package/dist/blocks/layout/keyboard-aware-screen.js +12 -0
  58. package/dist/blocks/layout/loading-screen.d.ts +1 -2
  59. package/dist/blocks/layout/loading-screen.js +6 -8
  60. package/dist/blocks/layout/page-skeleton.d.ts +1 -2
  61. package/dist/blocks/layout/page-skeleton.js +38 -20
  62. package/dist/blocks/layout/pull-to-refresh-scroll-view.d.ts +8 -4
  63. package/dist/blocks/layout/pull-to-refresh-scroll-view.js +17 -4
  64. package/dist/blocks/layout/screen-skeleton.d.ts +1 -2
  65. package/dist/blocks/layout/screen-skeleton.js +0 -1
  66. package/dist/blocks/layout/sheet.d.ts +9 -9
  67. package/dist/blocks/layout/sheet.js +51 -21
  68. package/dist/blocks/layout/smart-input.d.ts +6 -1
  69. package/dist/blocks/layout/smart-input.js +121 -9
  70. package/dist/blocks/lists/index.d.ts +0 -2
  71. package/dist/blocks/lists/index.js +0 -2
  72. package/dist/blocks/lists/list-item.d.ts +1 -2
  73. package/dist/blocks/lists/list-item.js +20 -6
  74. package/dist/blocks/lists/notification-item.d.ts +1 -2
  75. package/dist/blocks/lists/notification-item.js +19 -6
  76. package/dist/blocks/lists/timeline-feed.d.ts +1 -2
  77. package/dist/blocks/lists/timeline-feed.js +4 -2
  78. package/dist/blocks/media/index.d.ts +0 -1
  79. package/dist/blocks/media/index.js +0 -1
  80. package/dist/blocks/media/smart-image.d.ts +0 -1
  81. package/dist/blocks/media/smart-image.js +24 -8
  82. package/dist/blocks/navigation/bottom-nav.d.ts +1 -2
  83. package/dist/blocks/navigation/bottom-nav.js +7 -4
  84. package/dist/blocks/navigation/drawer-menu.d.ts +1 -2
  85. package/dist/blocks/navigation/drawer-menu.js +52 -15
  86. package/dist/blocks/navigation/floating-bottom-nav.d.ts +1 -2
  87. package/dist/blocks/navigation/floating-bottom-nav.js +14 -5
  88. package/dist/blocks/navigation/header.d.ts +2 -3
  89. package/dist/blocks/navigation/header.js +13 -5
  90. package/dist/blocks/navigation/index.d.ts +0 -2
  91. package/dist/blocks/navigation/index.js +0 -2
  92. package/dist/blocks/navigation/tab-bar.d.ts +1 -2
  93. package/dist/blocks/navigation/tab-bar.js +22 -10
  94. package/dist/blocks/splash/index.d.ts +0 -1
  95. package/dist/blocks/splash/index.js +0 -1
  96. package/dist/blocks/splash/splash-screen.d.ts +3 -4
  97. package/dist/blocks/splash/splash-screen.js +15 -11
  98. package/dist/components/accordion/accordion.d.ts +4 -5
  99. package/dist/components/accordion/accordion.js +6 -7
  100. package/dist/components/accordion/index.d.ts +0 -1
  101. package/dist/components/accordion/index.js +0 -1
  102. package/dist/components/alert/alert.d.ts +2 -3
  103. package/dist/components/alert/alert.js +19 -8
  104. package/dist/components/alert/index.d.ts +0 -1
  105. package/dist/components/alert/index.js +0 -1
  106. package/dist/components/alert-dialog/alert-dialog.d.ts +16 -12
  107. package/dist/components/alert-dialog/alert-dialog.js +184 -49
  108. package/dist/components/alert-dialog/index.d.ts +0 -1
  109. package/dist/components/alert-dialog/index.js +0 -1
  110. package/dist/components/aspect-ratio/aspect-ratio.d.ts +1 -2
  111. package/dist/components/aspect-ratio/aspect-ratio.js +0 -3
  112. package/dist/components/aspect-ratio/index.d.ts +0 -1
  113. package/dist/components/aspect-ratio/index.js +0 -1
  114. package/dist/components/avatar/avatar.d.ts +2 -3
  115. package/dist/components/avatar/avatar.js +7 -8
  116. package/dist/components/avatar/index.d.ts +0 -1
  117. package/dist/components/avatar/index.js +0 -1
  118. package/dist/components/badge/badge.d.ts +6 -7
  119. package/dist/components/badge/badge.js +21 -9
  120. package/dist/components/badge/index.d.ts +0 -1
  121. package/dist/components/badge/index.js +0 -1
  122. package/dist/components/button/button.d.ts +11 -10
  123. package/dist/components/button/button.js +62 -33
  124. package/dist/components/button/index.d.ts +0 -1
  125. package/dist/components/button/index.js +0 -1
  126. package/dist/components/card/card.d.ts +5 -3
  127. package/dist/components/card/card.js +28 -14
  128. package/dist/components/card/index.d.ts +0 -1
  129. package/dist/components/card/index.js +0 -1
  130. package/dist/components/checkbox/checkbox.d.ts +1 -2
  131. package/dist/components/checkbox/checkbox.js +15 -2
  132. package/dist/components/checkbox/index.d.ts +0 -1
  133. package/dist/components/checkbox/index.js +0 -1
  134. package/dist/components/collapsible/collapsible.d.ts +4 -4
  135. package/dist/components/collapsible/collapsible.js +8 -11
  136. package/dist/components/collapsible/index.d.ts +0 -1
  137. package/dist/components/collapsible/index.js +0 -1
  138. package/dist/components/container/container.d.ts +146 -0
  139. package/dist/components/container/container.js +43 -0
  140. package/dist/components/container/index.d.ts +1 -0
  141. package/dist/components/container/index.js +1 -0
  142. package/dist/components/context-menu/context-menu.d.ts +6 -7
  143. package/dist/components/context-menu/context-menu.js +42 -12
  144. package/dist/components/context-menu/index.d.ts +0 -1
  145. package/dist/components/context-menu/index.js +0 -1
  146. package/dist/components/data-row/data-row.d.ts +0 -1
  147. package/dist/components/data-row/data-row.js +35 -17
  148. package/dist/components/data-row/index.d.ts +0 -1
  149. package/dist/components/data-row/index.js +0 -1
  150. package/dist/components/dialog/dialog.d.ts +8 -9
  151. package/dist/components/dialog/dialog.js +48 -24
  152. package/dist/components/dialog/index.d.ts +0 -1
  153. package/dist/components/dialog/index.js +0 -1
  154. package/dist/components/dropdown-menu/dropdown-menu.d.ts +6 -7
  155. package/dist/components/dropdown-menu/dropdown-menu.js +45 -11
  156. package/dist/components/dropdown-menu/index.d.ts +0 -1
  157. package/dist/components/dropdown-menu/index.js +0 -1
  158. package/dist/components/form-field/form-field.d.ts +0 -1
  159. package/dist/components/form-field/form-field.js +26 -13
  160. package/dist/components/form-field/index.d.ts +0 -1
  161. package/dist/components/form-field/index.js +0 -1
  162. package/dist/components/hover-card/hover-card.d.ts +1 -2
  163. package/dist/components/hover-card/hover-card.js +12 -3
  164. package/dist/components/hover-card/index.d.ts +0 -1
  165. package/dist/components/hover-card/index.js +0 -1
  166. package/dist/components/input/index.d.ts +0 -1
  167. package/dist/components/input/index.js +0 -1
  168. package/dist/components/input/input.d.ts +2 -3
  169. package/dist/components/input/input.js +18 -3
  170. package/dist/components/label/index.d.ts +0 -1
  171. package/dist/components/label/index.js +0 -1
  172. package/dist/components/label/label.d.ts +0 -1
  173. package/dist/components/label/label.js +0 -1
  174. package/dist/components/labeled-field/index.d.ts +0 -1
  175. package/dist/components/labeled-field/index.js +0 -1
  176. package/dist/components/labeled-field/labeled-field.d.ts +1 -2
  177. package/dist/components/labeled-field/labeled-field.js +10 -2
  178. package/dist/components/menubar/index.d.ts +0 -1
  179. package/dist/components/menubar/index.js +0 -1
  180. package/dist/components/menubar/menubar.d.ts +7 -8
  181. package/dist/components/menubar/menubar.js +48 -15
  182. package/dist/components/numeric-input/index.d.ts +0 -1
  183. package/dist/components/numeric-input/index.js +0 -1
  184. package/dist/components/numeric-input/numeric-input.d.ts +6 -5
  185. package/dist/components/numeric-input/numeric-input.js +55 -26
  186. package/dist/components/otp-input/index.d.ts +0 -1
  187. package/dist/components/otp-input/index.js +0 -1
  188. package/dist/components/otp-input/otp-input.d.ts +3 -4
  189. package/dist/components/otp-input/otp-input.js +13 -9
  190. package/dist/components/popover/index.d.ts +0 -1
  191. package/dist/components/popover/index.js +0 -1
  192. package/dist/components/popover/popover.d.ts +4 -2
  193. package/dist/components/popover/popover.js +21 -4
  194. package/dist/components/pressable/index.d.ts +0 -1
  195. package/dist/components/pressable/index.js +0 -1
  196. package/dist/components/pressable/pressable.d.ts +7 -1
  197. package/dist/components/pressable/pressable.js +47 -4
  198. package/dist/components/progress/index.d.ts +0 -1
  199. package/dist/components/progress/index.js +0 -1
  200. package/dist/components/progress/progress.d.ts +0 -1
  201. package/dist/components/progress/progress.js +5 -2
  202. package/dist/components/radio-group/index.d.ts +0 -1
  203. package/dist/components/radio-group/index.js +0 -1
  204. package/dist/components/radio-group/radio-group.d.ts +2 -3
  205. package/dist/components/radio-group/radio-group.js +16 -7
  206. package/dist/components/row/index.d.ts +0 -1
  207. package/dist/components/row/index.js +0 -1
  208. package/dist/components/row/row.d.ts +0 -1
  209. package/dist/components/row/row.js +0 -1
  210. package/dist/components/segmented-control/index.d.ts +0 -1
  211. package/dist/components/segmented-control/index.js +0 -1
  212. package/dist/components/segmented-control/segmented-control.d.ts +7 -8
  213. package/dist/components/segmented-control/segmented-control.js +57 -24
  214. package/dist/components/select/index.d.ts +0 -1
  215. package/dist/components/select/index.js +0 -1
  216. package/dist/components/select/select.d.ts +15 -7
  217. package/dist/components/select/select.js +53 -11
  218. package/dist/components/separator/index.d.ts +0 -1
  219. package/dist/components/separator/index.js +0 -1
  220. package/dist/components/separator/separator.d.ts +0 -1
  221. package/dist/components/separator/separator.js +0 -1
  222. package/dist/components/skeleton/index.d.ts +0 -1
  223. package/dist/components/skeleton/index.js +0 -1
  224. package/dist/components/skeleton/skeleton.d.ts +3 -4
  225. package/dist/components/skeleton/skeleton.js +7 -8
  226. package/dist/components/spinner/index.d.ts +0 -1
  227. package/dist/components/spinner/index.js +0 -1
  228. package/dist/components/spinner/spinner.d.ts +1 -2
  229. package/dist/components/spinner/spinner.js +4 -2
  230. package/dist/components/stack/index.d.ts +0 -1
  231. package/dist/components/stack/index.js +0 -1
  232. package/dist/components/stack/stack.d.ts +0 -1
  233. package/dist/components/stack/stack.js +0 -1
  234. package/dist/components/switch/index.d.ts +0 -1
  235. package/dist/components/switch/index.js +0 -1
  236. package/dist/components/switch/switch.d.ts +1 -2
  237. package/dist/components/switch/switch.js +21 -2
  238. package/dist/components/tabs/index.d.ts +0 -1
  239. package/dist/components/tabs/index.js +0 -1
  240. package/dist/components/tabs/tabs.d.ts +6 -7
  241. package/dist/components/tabs/tabs.js +42 -12
  242. package/dist/components/text/index.d.ts +0 -1
  243. package/dist/components/text/index.js +0 -1
  244. package/dist/components/text/text.d.ts +0 -1
  245. package/dist/components/text/text.js +0 -1
  246. package/dist/components/textarea/index.d.ts +0 -1
  247. package/dist/components/textarea/index.js +0 -1
  248. package/dist/components/textarea/textarea.d.ts +2 -3
  249. package/dist/components/textarea/textarea.js +16 -8
  250. package/dist/components/toast/index.d.ts +0 -1
  251. package/dist/components/toast/index.js +0 -1
  252. package/dist/components/toast/toast.d.ts +5 -6
  253. package/dist/components/toast/toast.js +40 -24
  254. package/dist/components/toggle/index.d.ts +0 -1
  255. package/dist/components/toggle/index.js +0 -1
  256. package/dist/components/toggle/toggle.d.ts +6 -7
  257. package/dist/components/toggle/toggle.js +32 -16
  258. package/dist/components/toggle-group/index.d.ts +0 -1
  259. package/dist/components/toggle-group/index.js +0 -1
  260. package/dist/components/toggle-group/toggle-group.d.ts +7 -8
  261. package/dist/components/toggle-group/toggle-group.js +36 -19
  262. package/dist/components/tooltip/index.d.ts +0 -1
  263. package/dist/components/tooltip/index.js +0 -1
  264. package/dist/components/tooltip/tooltip.d.ts +1 -2
  265. package/dist/components/tooltip/tooltip.js +20 -3
  266. package/dist/components/view/index.d.ts +0 -1
  267. package/dist/components/view/index.js +0 -1
  268. package/dist/components/view/view.d.ts +0 -1
  269. package/dist/components/view/view.js +0 -1
  270. package/dist/index.d.ts +9 -3
  271. package/dist/index.js +9 -7
  272. package/dist/lib/cn.d.ts +0 -1
  273. package/dist/lib/cn.js +0 -1
  274. package/dist/lib/compose-event-handlers.d.ts +15 -0
  275. package/dist/lib/compose-event-handlers.js +20 -0
  276. package/dist/lib/focus-ring.d.ts +25 -0
  277. package/dist/lib/focus-ring.js +25 -0
  278. package/dist/lib/font-context.d.ts +1 -1
  279. package/dist/lib/font-context.js +6 -4
  280. package/dist/lib/frosted-surface.d.ts +0 -1
  281. package/dist/lib/frosted-surface.js +31 -6
  282. package/dist/lib/interaction-tokens.d.ts +12 -1
  283. package/dist/lib/interaction-tokens.js +27 -13
  284. package/dist/lib/motion-policy.d.ts +25 -0
  285. package/dist/lib/motion-policy.js +97 -0
  286. package/dist/lib/overlay-insets.d.ts +17 -0
  287. package/dist/lib/overlay-insets.js +23 -0
  288. package/dist/lib/portal.d.ts +0 -1
  289. package/dist/lib/portal.js +0 -1
  290. package/dist/lib/react-native-classname.d.ts +0 -1
  291. package/dist/lib/react-native-classname.js +0 -1
  292. package/dist/lib/recipes.d.ts +30 -0
  293. package/dist/lib/recipes.js +138 -0
  294. package/dist/lib/tap-only.d.ts +11 -0
  295. package/dist/lib/tap-only.js +24 -0
  296. package/dist/lib/theme-bridge.d.ts +0 -1
  297. package/dist/lib/theme-bridge.js +11 -3
  298. package/dist/lib/theme-colors.d.ts +2 -46
  299. package/dist/lib/theme-colors.js +25 -226
  300. package/dist/lib/theme-contract.d.ts +78 -0
  301. package/dist/lib/theme-contract.js +481 -0
  302. package/dist/lib/theme-derive.d.ts +4 -0
  303. package/dist/lib/theme-derive.js +80 -0
  304. package/dist/lib/theme-presets.d.ts +31 -0
  305. package/dist/lib/theme-presets.js +221 -0
  306. package/dist/lib/tv.d.ts +0 -1
  307. package/dist/lib/tv.js +0 -1
  308. package/dist/lib/visual-token-contract.d.ts +110 -0
  309. package/dist/lib/visual-token-contract.js +583 -0
  310. package/dist/lib/visual-tokens.d.ts +2 -38
  311. package/dist/lib/visual-tokens.js +22 -75
  312. package/dist/tokens.d.ts +4 -0
  313. package/dist/tokens.js +6 -0
  314. package/dist/vite.d.ts +0 -1
  315. package/dist/vite.js +0 -1
  316. package/package.json +30 -20
  317. package/dist/blocks/auth/forgot-password-form.d.ts +0 -10
  318. package/dist/blocks/auth/forgot-password-form.d.ts.map +0 -1
  319. package/dist/blocks/auth/forgot-password-form.js +0 -17
  320. package/dist/blocks/auth/forgot-password-form.js.map +0 -1
  321. package/dist/blocks/auth/index.d.ts +0 -8
  322. package/dist/blocks/auth/index.d.ts.map +0 -1
  323. package/dist/blocks/auth/index.js +0 -8
  324. package/dist/blocks/auth/index.js.map +0 -1
  325. package/dist/blocks/auth/reset-password-form.d.ts +0 -9
  326. package/dist/blocks/auth/reset-password-form.d.ts.map +0 -1
  327. package/dist/blocks/auth/reset-password-form.js +0 -16
  328. package/dist/blocks/auth/reset-password-form.js.map +0 -1
  329. package/dist/blocks/auth/sign-in-form.d.ts +0 -17
  330. package/dist/blocks/auth/sign-in-form.d.ts.map +0 -1
  331. package/dist/blocks/auth/sign-in-form.js +0 -19
  332. package/dist/blocks/auth/sign-in-form.js.map +0 -1
  333. package/dist/blocks/auth/sign-up-form.d.ts +0 -17
  334. package/dist/blocks/auth/sign-up-form.d.ts.map +0 -1
  335. package/dist/blocks/auth/sign-up-form.js +0 -21
  336. package/dist/blocks/auth/sign-up-form.js.map +0 -1
  337. package/dist/blocks/auth/social-connections.d.ts +0 -10
  338. package/dist/blocks/auth/social-connections.d.ts.map +0 -1
  339. package/dist/blocks/auth/social-connections.js +0 -8
  340. package/dist/blocks/auth/social-connections.js.map +0 -1
  341. package/dist/blocks/auth/user-menu.d.ts +0 -12
  342. package/dist/blocks/auth/user-menu.d.ts.map +0 -1
  343. package/dist/blocks/auth/user-menu.js +0 -10
  344. package/dist/blocks/auth/user-menu.js.map +0 -1
  345. package/dist/blocks/auth/verify-email-form.d.ts +0 -10
  346. package/dist/blocks/auth/verify-email-form.d.ts.map +0 -1
  347. package/dist/blocks/auth/verify-email-form.js +0 -17
  348. package/dist/blocks/auth/verify-email-form.js.map +0 -1
  349. package/dist/blocks/chat/chat.d.ts.map +0 -1
  350. package/dist/blocks/chat/chat.js.map +0 -1
  351. package/dist/blocks/chat/index.d.ts.map +0 -1
  352. package/dist/blocks/chat/index.js.map +0 -1
  353. package/dist/blocks/commerce/checkout-summary.d.ts.map +0 -1
  354. package/dist/blocks/commerce/checkout-summary.js.map +0 -1
  355. package/dist/blocks/commerce/feature-gate.d.ts.map +0 -1
  356. package/dist/blocks/commerce/feature-gate.js.map +0 -1
  357. package/dist/blocks/commerce/index.d.ts.map +0 -1
  358. package/dist/blocks/commerce/index.js.map +0 -1
  359. package/dist/blocks/commerce/metric-card.d.ts.map +0 -1
  360. package/dist/blocks/commerce/metric-card.js.map +0 -1
  361. package/dist/blocks/commerce/plan-toggle.d.ts.map +0 -1
  362. package/dist/blocks/commerce/plan-toggle.js.map +0 -1
  363. package/dist/blocks/commerce/pricing-card.d.ts.map +0 -1
  364. package/dist/blocks/commerce/pricing-card.js.map +0 -1
  365. package/dist/blocks/commerce/product-card.d.ts.map +0 -1
  366. package/dist/blocks/commerce/product-card.js.map +0 -1
  367. package/dist/blocks/commerce/subscription-card.d.ts.map +0 -1
  368. package/dist/blocks/commerce/subscription-card.js.map +0 -1
  369. package/dist/blocks/commerce/upgrade-banner.d.ts.map +0 -1
  370. package/dist/blocks/commerce/upgrade-banner.js.map +0 -1
  371. package/dist/blocks/commerce/usage-bar.d.ts.map +0 -1
  372. package/dist/blocks/commerce/usage-bar.js.map +0 -1
  373. package/dist/blocks/datepicker/date-range-picker-modal.d.ts.map +0 -1
  374. package/dist/blocks/datepicker/date-range-picker-modal.js.map +0 -1
  375. package/dist/blocks/datepicker/datepicker-inline.d.ts.map +0 -1
  376. package/dist/blocks/datepicker/datepicker-inline.js.map +0 -1
  377. package/dist/blocks/datepicker/datepicker-modal.d.ts.map +0 -1
  378. package/dist/blocks/datepicker/datepicker-modal.js.map +0 -1
  379. package/dist/blocks/datepicker/index.d.ts.map +0 -1
  380. package/dist/blocks/datepicker/index.js.map +0 -1
  381. package/dist/blocks/datepicker/use-calendar-theme.d.ts.map +0 -1
  382. package/dist/blocks/datepicker/use-calendar-theme.js.map +0 -1
  383. package/dist/blocks/layout/action-bar.d.ts.map +0 -1
  384. package/dist/blocks/layout/action-bar.js.map +0 -1
  385. package/dist/blocks/layout/app-shell.d.ts.map +0 -1
  386. package/dist/blocks/layout/app-shell.js.map +0 -1
  387. package/dist/blocks/layout/confirm-action-sheet.d.ts.map +0 -1
  388. package/dist/blocks/layout/confirm-action-sheet.js.map +0 -1
  389. package/dist/blocks/layout/content-skeleton.d.ts.map +0 -1
  390. package/dist/blocks/layout/content-skeleton.js.map +0 -1
  391. package/dist/blocks/layout/empty-state.d.ts.map +0 -1
  392. package/dist/blocks/layout/empty-state.js.map +0 -1
  393. package/dist/blocks/layout/error-boundary.d.ts.map +0 -1
  394. package/dist/blocks/layout/error-boundary.js.map +0 -1
  395. package/dist/blocks/layout/error-state.d.ts.map +0 -1
  396. package/dist/blocks/layout/error-state.js.map +0 -1
  397. package/dist/blocks/layout/form-modal-screen.d.ts.map +0 -1
  398. package/dist/blocks/layout/form-modal-screen.js.map +0 -1
  399. package/dist/blocks/layout/index.d.ts.map +0 -1
  400. package/dist/blocks/layout/index.js.map +0 -1
  401. package/dist/blocks/layout/loading-screen.d.ts.map +0 -1
  402. package/dist/blocks/layout/loading-screen.js.map +0 -1
  403. package/dist/blocks/layout/onboarding-screen.d.ts +0 -19
  404. package/dist/blocks/layout/onboarding-screen.d.ts.map +0 -1
  405. package/dist/blocks/layout/onboarding-screen.js +0 -35
  406. package/dist/blocks/layout/onboarding-screen.js.map +0 -1
  407. package/dist/blocks/layout/page-skeleton.d.ts.map +0 -1
  408. package/dist/blocks/layout/page-skeleton.js.map +0 -1
  409. package/dist/blocks/layout/pull-to-refresh-scroll-view.d.ts.map +0 -1
  410. package/dist/blocks/layout/pull-to-refresh-scroll-view.js.map +0 -1
  411. package/dist/blocks/layout/screen-skeleton.d.ts.map +0 -1
  412. package/dist/blocks/layout/screen-skeleton.js.map +0 -1
  413. package/dist/blocks/layout/sheet.d.ts.map +0 -1
  414. package/dist/blocks/layout/sheet.js.map +0 -1
  415. package/dist/blocks/layout/smart-image.d.ts +0 -9
  416. package/dist/blocks/layout/smart-image.d.ts.map +0 -1
  417. package/dist/blocks/layout/smart-image.js +0 -23
  418. package/dist/blocks/layout/smart-image.js.map +0 -1
  419. package/dist/blocks/layout/smart-input.d.ts.map +0 -1
  420. package/dist/blocks/layout/smart-input.js.map +0 -1
  421. package/dist/blocks/lists/index.d.ts.map +0 -1
  422. package/dist/blocks/lists/index.js.map +0 -1
  423. package/dist/blocks/lists/list-item.d.ts.map +0 -1
  424. package/dist/blocks/lists/list-item.js.map +0 -1
  425. package/dist/blocks/lists/notification-item.d.ts.map +0 -1
  426. package/dist/blocks/lists/notification-item.js.map +0 -1
  427. package/dist/blocks/lists/swipeable-item.d.ts +0 -17
  428. package/dist/blocks/lists/swipeable-item.d.ts.map +0 -1
  429. package/dist/blocks/lists/swipeable-item.js +0 -65
  430. package/dist/blocks/lists/swipeable-item.js.map +0 -1
  431. package/dist/blocks/lists/timeline-feed.d.ts.map +0 -1
  432. package/dist/blocks/lists/timeline-feed.js.map +0 -1
  433. package/dist/blocks/media/index.d.ts.map +0 -1
  434. package/dist/blocks/media/index.js.map +0 -1
  435. package/dist/blocks/media/smart-image.d.ts.map +0 -1
  436. package/dist/blocks/media/smart-image.js.map +0 -1
  437. package/dist/blocks/navigation/bottom-nav.d.ts.map +0 -1
  438. package/dist/blocks/navigation/bottom-nav.js.map +0 -1
  439. package/dist/blocks/navigation/drawer-menu.d.ts.map +0 -1
  440. package/dist/blocks/navigation/drawer-menu.js.map +0 -1
  441. package/dist/blocks/navigation/floating-bottom-nav.d.ts.map +0 -1
  442. package/dist/blocks/navigation/floating-bottom-nav.js.map +0 -1
  443. package/dist/blocks/navigation/header.d.ts.map +0 -1
  444. package/dist/blocks/navigation/header.js.map +0 -1
  445. package/dist/blocks/navigation/index.d.ts.map +0 -1
  446. package/dist/blocks/navigation/index.js.map +0 -1
  447. package/dist/blocks/navigation/navigation-sidebar.d.ts +0 -25
  448. package/dist/blocks/navigation/navigation-sidebar.d.ts.map +0 -1
  449. package/dist/blocks/navigation/navigation-sidebar.js +0 -18
  450. package/dist/blocks/navigation/navigation-sidebar.js.map +0 -1
  451. package/dist/blocks/navigation/tab-bar.d.ts.map +0 -1
  452. package/dist/blocks/navigation/tab-bar.js.map +0 -1
  453. package/dist/blocks/profile/account-card.d.ts +0 -11
  454. package/dist/blocks/profile/account-card.d.ts.map +0 -1
  455. package/dist/blocks/profile/account-card.js +0 -10
  456. package/dist/blocks/profile/account-card.js.map +0 -1
  457. package/dist/blocks/profile/index.d.ts +0 -5
  458. package/dist/blocks/profile/index.d.ts.map +0 -1
  459. package/dist/blocks/profile/index.js +0 -5
  460. package/dist/blocks/profile/index.js.map +0 -1
  461. package/dist/blocks/profile/profile-header.d.ts +0 -27
  462. package/dist/blocks/profile/profile-header.d.ts.map +0 -1
  463. package/dist/blocks/profile/profile-header.js +0 -11
  464. package/dist/blocks/profile/profile-header.js.map +0 -1
  465. package/dist/blocks/profile/settings-item.d.ts +0 -15
  466. package/dist/blocks/profile/settings-item.d.ts.map +0 -1
  467. package/dist/blocks/profile/settings-item.js +0 -11
  468. package/dist/blocks/profile/settings-item.js.map +0 -1
  469. package/dist/blocks/profile/settings-section.d.ts +0 -7
  470. package/dist/blocks/profile/settings-section.d.ts.map +0 -1
  471. package/dist/blocks/profile/settings-section.js +0 -9
  472. package/dist/blocks/profile/settings-section.js.map +0 -1
  473. package/dist/blocks/splash/index.d.ts.map +0 -1
  474. package/dist/blocks/splash/index.js.map +0 -1
  475. package/dist/blocks/splash/splash-screen.d.ts.map +0 -1
  476. package/dist/blocks/splash/splash-screen.js.map +0 -1
  477. package/dist/components/accordion/accordion.d.ts.map +0 -1
  478. package/dist/components/accordion/accordion.js.map +0 -1
  479. package/dist/components/accordion/index.d.ts.map +0 -1
  480. package/dist/components/accordion/index.js.map +0 -1
  481. package/dist/components/alert/alert.d.ts.map +0 -1
  482. package/dist/components/alert/alert.js.map +0 -1
  483. package/dist/components/alert/index.d.ts.map +0 -1
  484. package/dist/components/alert/index.js.map +0 -1
  485. package/dist/components/alert-dialog/alert-dialog.d.ts.map +0 -1
  486. package/dist/components/alert-dialog/alert-dialog.js.map +0 -1
  487. package/dist/components/alert-dialog/index.d.ts.map +0 -1
  488. package/dist/components/alert-dialog/index.js.map +0 -1
  489. package/dist/components/aspect-ratio/aspect-ratio.d.ts.map +0 -1
  490. package/dist/components/aspect-ratio/aspect-ratio.js.map +0 -1
  491. package/dist/components/aspect-ratio/index.d.ts.map +0 -1
  492. package/dist/components/aspect-ratio/index.js.map +0 -1
  493. package/dist/components/avatar/avatar.d.ts.map +0 -1
  494. package/dist/components/avatar/avatar.js.map +0 -1
  495. package/dist/components/avatar/index.d.ts.map +0 -1
  496. package/dist/components/avatar/index.js.map +0 -1
  497. package/dist/components/badge/badge.d.ts.map +0 -1
  498. package/dist/components/badge/badge.js.map +0 -1
  499. package/dist/components/badge/index.d.ts.map +0 -1
  500. package/dist/components/badge/index.js.map +0 -1
  501. package/dist/components/box/box.d.ts +0 -143
  502. package/dist/components/box/box.d.ts.map +0 -1
  503. package/dist/components/box/box.js +0 -38
  504. package/dist/components/box/box.js.map +0 -1
  505. package/dist/components/box/index.d.ts +0 -2
  506. package/dist/components/box/index.d.ts.map +0 -1
  507. package/dist/components/box/index.js +0 -2
  508. package/dist/components/box/index.js.map +0 -1
  509. package/dist/components/button/button.d.ts.map +0 -1
  510. package/dist/components/button/button.js.map +0 -1
  511. package/dist/components/button/index.d.ts.map +0 -1
  512. package/dist/components/button/index.js.map +0 -1
  513. package/dist/components/card/card.d.ts.map +0 -1
  514. package/dist/components/card/card.js.map +0 -1
  515. package/dist/components/card/index.d.ts.map +0 -1
  516. package/dist/components/card/index.js.map +0 -1
  517. package/dist/components/checkbox/checkbox.d.ts.map +0 -1
  518. package/dist/components/checkbox/checkbox.js.map +0 -1
  519. package/dist/components/checkbox/index.d.ts.map +0 -1
  520. package/dist/components/checkbox/index.js.map +0 -1
  521. package/dist/components/collapsible/collapsible.d.ts.map +0 -1
  522. package/dist/components/collapsible/collapsible.js.map +0 -1
  523. package/dist/components/collapsible/index.d.ts.map +0 -1
  524. package/dist/components/collapsible/index.js.map +0 -1
  525. package/dist/components/context-menu/context-menu.d.ts.map +0 -1
  526. package/dist/components/context-menu/context-menu.js.map +0 -1
  527. package/dist/components/context-menu/index.d.ts.map +0 -1
  528. package/dist/components/context-menu/index.js.map +0 -1
  529. package/dist/components/data-row/data-row.d.ts.map +0 -1
  530. package/dist/components/data-row/data-row.js.map +0 -1
  531. package/dist/components/data-row/index.d.ts.map +0 -1
  532. package/dist/components/data-row/index.js.map +0 -1
  533. package/dist/components/dialog/dialog.d.ts.map +0 -1
  534. package/dist/components/dialog/dialog.js.map +0 -1
  535. package/dist/components/dialog/index.d.ts.map +0 -1
  536. package/dist/components/dialog/index.js.map +0 -1
  537. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +0 -1
  538. package/dist/components/dropdown-menu/dropdown-menu.js.map +0 -1
  539. package/dist/components/dropdown-menu/index.d.ts.map +0 -1
  540. package/dist/components/dropdown-menu/index.js.map +0 -1
  541. package/dist/components/form-field/form-field.d.ts.map +0 -1
  542. package/dist/components/form-field/form-field.js.map +0 -1
  543. package/dist/components/form-field/index.d.ts.map +0 -1
  544. package/dist/components/form-field/index.js.map +0 -1
  545. package/dist/components/hover-card/hover-card.d.ts.map +0 -1
  546. package/dist/components/hover-card/hover-card.js.map +0 -1
  547. package/dist/components/hover-card/index.d.ts.map +0 -1
  548. package/dist/components/hover-card/index.js.map +0 -1
  549. package/dist/components/input/index.d.ts.map +0 -1
  550. package/dist/components/input/index.js.map +0 -1
  551. package/dist/components/input/input.d.ts.map +0 -1
  552. package/dist/components/input/input.js.map +0 -1
  553. package/dist/components/label/index.d.ts.map +0 -1
  554. package/dist/components/label/index.js.map +0 -1
  555. package/dist/components/label/label.d.ts.map +0 -1
  556. package/dist/components/label/label.js.map +0 -1
  557. package/dist/components/labeled-field/index.d.ts.map +0 -1
  558. package/dist/components/labeled-field/index.js.map +0 -1
  559. package/dist/components/labeled-field/labeled-field.d.ts.map +0 -1
  560. package/dist/components/labeled-field/labeled-field.js.map +0 -1
  561. package/dist/components/layout/index.d.ts +0 -2
  562. package/dist/components/layout/index.d.ts.map +0 -1
  563. package/dist/components/layout/index.js +0 -2
  564. package/dist/components/layout/index.js.map +0 -1
  565. package/dist/components/layout/layout.d.ts +0 -395
  566. package/dist/components/layout/layout.d.ts.map +0 -1
  567. package/dist/components/layout/layout.js +0 -93
  568. package/dist/components/layout/layout.js.map +0 -1
  569. package/dist/components/menubar/index.d.ts.map +0 -1
  570. package/dist/components/menubar/index.js.map +0 -1
  571. package/dist/components/menubar/menubar.d.ts.map +0 -1
  572. package/dist/components/menubar/menubar.js.map +0 -1
  573. package/dist/components/numeric-input/index.d.ts.map +0 -1
  574. package/dist/components/numeric-input/index.js.map +0 -1
  575. package/dist/components/numeric-input/numeric-input.d.ts.map +0 -1
  576. package/dist/components/numeric-input/numeric-input.js.map +0 -1
  577. package/dist/components/otp-input/index.d.ts.map +0 -1
  578. package/dist/components/otp-input/index.js.map +0 -1
  579. package/dist/components/otp-input/otp-input.d.ts.map +0 -1
  580. package/dist/components/otp-input/otp-input.js.map +0 -1
  581. package/dist/components/popover/index.d.ts.map +0 -1
  582. package/dist/components/popover/index.js.map +0 -1
  583. package/dist/components/popover/popover.d.ts.map +0 -1
  584. package/dist/components/popover/popover.js.map +0 -1
  585. package/dist/components/pressable/index.d.ts.map +0 -1
  586. package/dist/components/pressable/index.js.map +0 -1
  587. package/dist/components/pressable/pressable.d.ts.map +0 -1
  588. package/dist/components/pressable/pressable.js.map +0 -1
  589. package/dist/components/progress/index.d.ts.map +0 -1
  590. package/dist/components/progress/index.js.map +0 -1
  591. package/dist/components/progress/progress.d.ts.map +0 -1
  592. package/dist/components/progress/progress.js.map +0 -1
  593. package/dist/components/radio-group/index.d.ts.map +0 -1
  594. package/dist/components/radio-group/index.js.map +0 -1
  595. package/dist/components/radio-group/radio-group.d.ts.map +0 -1
  596. package/dist/components/radio-group/radio-group.js.map +0 -1
  597. package/dist/components/row/index.d.ts.map +0 -1
  598. package/dist/components/row/index.js.map +0 -1
  599. package/dist/components/row/row.d.ts.map +0 -1
  600. package/dist/components/row/row.js.map +0 -1
  601. package/dist/components/segmented-control/index.d.ts.map +0 -1
  602. package/dist/components/segmented-control/index.js.map +0 -1
  603. package/dist/components/segmented-control/segmented-control.d.ts.map +0 -1
  604. package/dist/components/segmented-control/segmented-control.js.map +0 -1
  605. package/dist/components/select/index.d.ts.map +0 -1
  606. package/dist/components/select/index.js.map +0 -1
  607. package/dist/components/select/select.d.ts.map +0 -1
  608. package/dist/components/select/select.js.map +0 -1
  609. package/dist/components/separator/index.d.ts.map +0 -1
  610. package/dist/components/separator/index.js.map +0 -1
  611. package/dist/components/separator/separator.d.ts.map +0 -1
  612. package/dist/components/separator/separator.js.map +0 -1
  613. package/dist/components/skeleton/index.d.ts.map +0 -1
  614. package/dist/components/skeleton/index.js.map +0 -1
  615. package/dist/components/skeleton/skeleton.d.ts.map +0 -1
  616. package/dist/components/skeleton/skeleton.js.map +0 -1
  617. package/dist/components/spinner/index.d.ts.map +0 -1
  618. package/dist/components/spinner/index.js.map +0 -1
  619. package/dist/components/spinner/spinner.d.ts.map +0 -1
  620. package/dist/components/spinner/spinner.js.map +0 -1
  621. package/dist/components/stack/index.d.ts.map +0 -1
  622. package/dist/components/stack/index.js.map +0 -1
  623. package/dist/components/stack/stack.d.ts.map +0 -1
  624. package/dist/components/stack/stack.js.map +0 -1
  625. package/dist/components/switch/index.d.ts.map +0 -1
  626. package/dist/components/switch/index.js.map +0 -1
  627. package/dist/components/switch/switch.d.ts.map +0 -1
  628. package/dist/components/switch/switch.js.map +0 -1
  629. package/dist/components/tabs/index.d.ts.map +0 -1
  630. package/dist/components/tabs/index.js.map +0 -1
  631. package/dist/components/tabs/tabs.d.ts.map +0 -1
  632. package/dist/components/tabs/tabs.js.map +0 -1
  633. package/dist/components/text/index.d.ts.map +0 -1
  634. package/dist/components/text/index.js.map +0 -1
  635. package/dist/components/text/text.d.ts.map +0 -1
  636. package/dist/components/text/text.js.map +0 -1
  637. package/dist/components/textarea/index.d.ts.map +0 -1
  638. package/dist/components/textarea/index.js.map +0 -1
  639. package/dist/components/textarea/textarea.d.ts.map +0 -1
  640. package/dist/components/textarea/textarea.js.map +0 -1
  641. package/dist/components/toast/index.d.ts.map +0 -1
  642. package/dist/components/toast/index.js.map +0 -1
  643. package/dist/components/toast/toast.d.ts.map +0 -1
  644. package/dist/components/toast/toast.js.map +0 -1
  645. package/dist/components/toggle/index.d.ts.map +0 -1
  646. package/dist/components/toggle/index.js.map +0 -1
  647. package/dist/components/toggle/toggle.d.ts.map +0 -1
  648. package/dist/components/toggle/toggle.js.map +0 -1
  649. package/dist/components/toggle-group/index.d.ts.map +0 -1
  650. package/dist/components/toggle-group/index.js.map +0 -1
  651. package/dist/components/toggle-group/toggle-group.d.ts.map +0 -1
  652. package/dist/components/toggle-group/toggle-group.js.map +0 -1
  653. package/dist/components/tooltip/index.d.ts.map +0 -1
  654. package/dist/components/tooltip/index.js.map +0 -1
  655. package/dist/components/tooltip/tooltip.d.ts.map +0 -1
  656. package/dist/components/tooltip/tooltip.js.map +0 -1
  657. package/dist/components/view/index.d.ts.map +0 -1
  658. package/dist/components/view/index.js.map +0 -1
  659. package/dist/components/view/view.d.ts.map +0 -1
  660. package/dist/components/view/view.js.map +0 -1
  661. package/dist/index.d.ts.map +0 -1
  662. package/dist/index.js.map +0 -1
  663. package/dist/lib/cn.d.ts.map +0 -1
  664. package/dist/lib/cn.js.map +0 -1
  665. package/dist/lib/font-context.d.ts.map +0 -1
  666. package/dist/lib/font-context.js.map +0 -1
  667. package/dist/lib/frosted-surface.d.ts.map +0 -1
  668. package/dist/lib/frosted-surface.js.map +0 -1
  669. package/dist/lib/index.d.ts +0 -6
  670. package/dist/lib/index.d.ts.map +0 -1
  671. package/dist/lib/index.js +0 -6
  672. package/dist/lib/index.js.map +0 -1
  673. package/dist/lib/interaction-tokens.d.ts.map +0 -1
  674. package/dist/lib/interaction-tokens.js.map +0 -1
  675. package/dist/lib/portal.d.ts.map +0 -1
  676. package/dist/lib/portal.js.map +0 -1
  677. package/dist/lib/react-native-classname.d.ts.map +0 -1
  678. package/dist/lib/react-native-classname.js.map +0 -1
  679. package/dist/lib/theme-bridge.d.ts.map +0 -1
  680. package/dist/lib/theme-bridge.js.map +0 -1
  681. package/dist/lib/theme-colors.d.ts.map +0 -1
  682. package/dist/lib/theme-colors.js.map +0 -1
  683. package/dist/lib/tv.d.ts.map +0 -1
  684. package/dist/lib/tv.js.map +0 -1
  685. package/dist/lib/visual-tokens.d.ts.map +0 -1
  686. package/dist/lib/visual-tokens.js.map +0 -1
  687. package/dist/vite.d.ts.map +0 -1
  688. package/dist/vite.js.map +0 -1
@@ -1,9 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React, { createContext, useContext, useLayoutEffect, useRef, useState } from 'react';
2
+ import React, { createContext, useCallback, useContext, useLayoutEffect, useMemo, useRef, useState, } from 'react';
3
3
  import { View, Modal, Pressable, Text, Alert, Platform, StyleSheet, } from 'react-native';
4
4
  import { cn } from '../../lib/cn';
5
+ import { composeEventHandlers } from '../../lib/compose-event-handlers';
6
+ import { useInteractionTokens, withInteractivePressableStyle } from '../../lib/interaction-tokens';
5
7
  import { useThemeColors } from '../../lib/theme-colors';
6
8
  import { useFrostedSurface } from '../../lib/frosted-surface';
9
+ import { useVisualTokens } from '../../lib/visual-tokens';
10
+ import { shadowStyle, typographyStyle } from '../../lib/recipes';
7
11
  function emptyNativeCopy() {
8
12
  return {
9
13
  title: '',
@@ -19,13 +23,43 @@ function textFromNode(node) {
19
23
  return '';
20
24
  if (typeof node === 'string' || typeof node === 'number')
21
25
  return String(node);
22
- if (Array.isArray(node))
23
- return node.map(textFromNode).filter(Boolean).join(' ');
26
+ if (Array.isArray(node)) {
27
+ return node
28
+ .reduce((parts, child) => {
29
+ const text = textFromNode(child);
30
+ if (text)
31
+ parts.push(text);
32
+ return parts;
33
+ }, [])
34
+ .join(' ');
35
+ }
24
36
  if (React.isValidElement(node)) {
25
37
  return textFromNode(node.props.children);
26
38
  }
27
39
  return '';
28
40
  }
41
+ /**
42
+ * Finds the `AlertDialogTitle` in a subtree and returns its text, so the panel can carry
43
+ * an accessible name from the same render that draws it. The native-alert path's copy ref
44
+ * cannot serve this: it is populated by child layout effects, which run after this render
45
+ * and never schedule another.
46
+ */
47
+ function titleTextFromChildren(node) {
48
+ if (Array.isArray(node)) {
49
+ for (const child of node) {
50
+ const found = titleTextFromChildren(child);
51
+ if (found)
52
+ return found;
53
+ }
54
+ return '';
55
+ }
56
+ if (!React.isValidElement(node))
57
+ return '';
58
+ const children = node.props.children;
59
+ if (node.type === AlertDialogTitle)
60
+ return textFromNode(children);
61
+ return titleTextFromChildren(children);
62
+ }
29
63
  /** Pressable children may be a render function; native alert only supports static labels. */
30
64
  function textFromPressableChildren(children) {
31
65
  if (typeof children === 'function')
@@ -38,30 +72,32 @@ const AlertDialogContext = createContext({
38
72
  setOpen: () => { },
39
73
  nativeCopyRef: fallbackNativeRef,
40
74
  });
41
- // ─── Components ──────────────────────────────────────────────
42
75
  function AlertDialog({ defaultOpen = false, open: controlledOpen, onOpenChange, children, }) {
43
76
  const [internalOpen, setInternalOpen] = useState(defaultOpen);
44
77
  const open = controlledOpen ?? internalOpen;
45
- const nativeCopyRef = useRef(emptyNativeCopy());
46
- const setOpen = (value) => {
47
- setInternalOpen(value);
78
+ const [nativeCopyRef] = useState(() => ({
79
+ current: emptyNativeCopy(),
80
+ }));
81
+ const setOpen = useCallback((value) => {
82
+ if (controlledOpen === undefined) {
83
+ setInternalOpen(value);
84
+ }
48
85
  onOpenChange?.(value);
49
- };
50
- return (_jsx(AlertDialogContext.Provider, { value: { open, setOpen, nativeCopyRef }, children: children }));
86
+ }, [controlledOpen, onOpenChange]);
87
+ const contextValue = useMemo(() => ({ open, setOpen, nativeCopyRef }), [nativeCopyRef, open, setOpen]);
88
+ return _jsx(AlertDialogContext.Provider, { value: contextValue, children: children });
51
89
  }
52
- function AlertDialogTrigger({ className, children, asChild, ...props }) {
90
+ function AlertDialogTrigger({ className, children, asChild, onPress, ...props }) {
53
91
  const { setOpen } = useContext(AlertDialogContext);
54
92
  if (asChild && React.isValidElement(children)) {
55
93
  const child = children;
56
94
  return React.cloneElement(child, {
57
- onPress: (e) => {
58
- child.props.onPress?.(e);
59
- setOpen(true);
60
- },
61
95
  ...props,
96
+ className: cn(child.props.className, className),
97
+ onPress: composeEventHandlers(composeEventHandlers(child.props.onPress, onPress), () => setOpen(true)),
62
98
  });
63
99
  }
64
- return (_jsx(Pressable, { className: cn(className), onPress: () => setOpen(true), ...props, children: children }));
100
+ return (_jsx(Pressable, { accessibilityRole: "button", ...props, className: cn(className), onPress: composeEventHandlers(onPress, () => setOpen(true)), children: children }));
65
101
  }
66
102
  const nativeHiddenStyle = StyleSheet.create({
67
103
  root: {
@@ -77,6 +113,7 @@ const nativeHiddenStyle = StyleSheet.create({
77
113
  function AlertDialogContent({ className, children, presentation = 'modal', frosted = false, blurIntensity, blurTintToken, style, ...props }) {
78
114
  const { open, setOpen, nativeCopyRef } = useContext(AlertDialogContext);
79
115
  const colors = useThemeColors();
116
+ const visual = useVisualTokens();
80
117
  const frostedSurface = useFrostedSurface({
81
118
  frosted,
82
119
  blurIntensity,
@@ -86,6 +123,7 @@ function AlertDialogContent({ className, children, presentation = 'modal', frost
86
123
  });
87
124
  const contentStyle = [frostedSurface.surfaceStyle, style];
88
125
  const useNativeAlert = presentation === 'native' && (Platform.OS === 'ios' || Platform.OS === 'android');
126
+ const useOverlay = presentation === 'overlay';
89
127
  const prevOpenRef = useRef(false);
90
128
  const nativeAlertShownForOpenRef = useRef(false);
91
129
  useLayoutEffect(() => {
@@ -146,10 +184,57 @@ function AlertDialogContent({ className, children, presentation = 'modal', frost
146
184
  prevOpenRef.current = false;
147
185
  };
148
186
  }, [open, useNativeAlert, setOpen, nativeCopyRef]);
187
+ const themedBody = (_jsx(Pressable
188
+ // Tap-to-dismiss is a pointer affordance. Left accessible, this Pressable would be
189
+ // a single accessibility element wrapping the entire dialog, so VoiceOver would
190
+ // reach one "dismiss" target and none of the buttons inside it. Screen reader users
191
+ // dismiss with Cancel.
192
+ , {
193
+ // Tap-to-dismiss is a pointer affordance. Left accessible, this Pressable would be
194
+ // a single accessibility element wrapping the entire dialog, so VoiceOver would
195
+ // reach one "dismiss" target and none of the buttons inside it. Screen reader users
196
+ // dismiss with Cancel.
197
+ accessible: false, importantForAccessibility: "no", className: "flex-1 justify-center items-center px-4", style: { backgroundColor: colors.overlayStrong }, onPress: () => setOpen(false), children: _jsxs(Pressable
198
+ // This Pressable is a container: its only `onPress` stops the backdrop from
199
+ // dismissing. `accessible={false}` is what keeps it that way — Pressable defaults
200
+ // to `accessible: true`, which on iOS collapses every descendant into one element
201
+ // and makes the confirm and cancel buttons unreachable.
202
+ , {
203
+ // This Pressable is a container: its only `onPress` stops the backdrop from
204
+ // dismissing. `accessible={false}` is what keeps it that way — Pressable defaults
205
+ // to `accessible: true`, which on iOS collapses every descendant into one element
206
+ // and makes the confirm and cancel buttons unreachable.
207
+ accessible: false,
208
+ // A destructive confirmation is the worst place for a screen reader to wander
209
+ // out of. `accessibilityViewIsModal` keeps VoiceOver inside the panel; Android
210
+ // gets the same containment from the host Modal.
211
+ accessibilityViewIsModal: true, accessibilityRole: "alert",
212
+ // Names the panel where the container is exposed (Android contentDescription,
213
+ // web `aria-label`). Read from the element tree because the native-alert copy ref
214
+ // is filled by child layout effects, which run after this render.
215
+ accessibilityLabel: titleTextFromChildren(children) || undefined, className: cn('w-full border-border relative overflow-hidden', frosted ? 'bg-transparent' : 'bg-background', className), style: [
216
+ {
217
+ maxWidth: visual.sheetMaxWidth,
218
+ borderWidth: visual.borderWidthHairline,
219
+ borderRadius: visual.radiusXl,
220
+ padding: visual.surfacePaddingDefault,
221
+ },
222
+ shadowStyle(visual, colors, 'lg'),
223
+ contentStyle,
224
+ ], onPress: (event) => event.stopPropagation(), ...props, children: [frostedSurface.overlay, children] }) }));
149
225
  if (useNativeAlert) {
150
226
  return (_jsx(View, { pointerEvents: "none", style: nativeHiddenStyle, collapsable: false, importantForAccessibility: "no-hide-descendants", children: children }));
151
227
  }
152
- return (_jsx(Modal, { visible: open, transparent: true, animationType: "fade", presentationStyle: Platform.OS === 'ios' ? 'overFullScreen' : undefined, statusBarTranslucent: Platform.OS === 'android', children: _jsx(View, { className: "flex-1 justify-center items-center px-4", style: { backgroundColor: colors.overlayStrong }, children: _jsxs(View, { className: cn('w-full max-w-lg rounded-lg border border-border p-6 shadow-lg relative overflow-hidden', frosted ? 'bg-transparent' : 'bg-background', className), style: contentStyle, ...props, children: [frostedSurface.overlay, children] }) }) }));
228
+ if (useOverlay) {
229
+ if (!open) {
230
+ return (_jsx(View, { pointerEvents: "none", style: nativeHiddenStyle, collapsable: false, importantForAccessibility: "no-hide-descendants", children: children }));
231
+ }
232
+ return (_jsx(View, { pointerEvents: "box-none", style: [
233
+ StyleSheet.absoluteFill,
234
+ { zIndex: 100, elevation: Platform.OS === 'android' ? 24 : undefined },
235
+ ], children: themedBody }));
236
+ }
237
+ return (_jsx(Modal, { visible: open, transparent: true, animationType: "fade", presentationStyle: Platform.OS === 'ios' ? 'overFullScreen' : undefined, statusBarTranslucent: Platform.OS === 'android', navigationBarTranslucent: Platform.OS === 'android', onRequestClose: () => setOpen(false), children: themedBody }));
153
238
  }
154
239
  function useAlertDialogNativeCopy() {
155
240
  return useContext(AlertDialogContext).nativeCopyRef;
@@ -160,75 +245,126 @@ function AlertDialogHeader({ className, ...props }) {
160
245
  function AlertDialogFooter({ className, ...props }) {
161
246
  return _jsx(View, { className: cn('flex flex-row justify-end gap-2 pt-4', className), ...props });
162
247
  }
163
- function AlertDialogTitle({ className, children, ...props }) {
248
+ function AlertDialogTitle({ className, children, style, ...props }) {
164
249
  const nativeCopyRef = useAlertDialogNativeCopy();
250
+ const visual = useVisualTokens();
165
251
  useLayoutEffect(() => {
166
- nativeCopyRef.current.title = textFromNode(children);
252
+ const copy = nativeCopyRef.current;
253
+ copy.title = textFromNode(children);
167
254
  return () => {
168
- nativeCopyRef.current.title = '';
255
+ copy.title = '';
169
256
  };
170
257
  }, [children, nativeCopyRef]);
171
- return (_jsx(Text, { className: cn('text-lg font-semibold text-foreground', className), ...props, children: children }));
258
+ return (_jsx(Text
259
+ // Gives VoiceOver and TalkBack something to land on first inside the modal, and
260
+ // lets rotor navigation find it. Set before the spread so callers can override.
261
+ , {
262
+ // Gives VoiceOver and TalkBack something to land on first inside the modal, and
263
+ // lets rotor navigation find it. Set before the spread so callers can override.
264
+ accessibilityRole: "header", className: cn('font-semibold text-foreground', className), style: [typographyStyle(visual, 'title'), style], ...props, children: children }));
172
265
  }
173
- function AlertDialogDescription({ className, children, ...props }) {
266
+ function AlertDialogDescription({ className, children, style, ...props }) {
174
267
  const nativeCopyRef = useAlertDialogNativeCopy();
268
+ const visual = useVisualTokens();
175
269
  useLayoutEffect(() => {
176
- nativeCopyRef.current.message = textFromNode(children);
270
+ const copy = nativeCopyRef.current;
271
+ copy.message = textFromNode(children);
177
272
  return () => {
178
- nativeCopyRef.current.message = '';
273
+ copy.message = '';
179
274
  };
180
275
  }, [children, nativeCopyRef]);
181
- return (_jsx(Text, { className: cn('text-sm text-muted-foreground', className), ...props, children: children }));
276
+ return (_jsx(Text, { className: cn('text-muted-foreground', className), style: [typographyStyle(visual, 'label'), style], ...props, children: children }));
182
277
  }
183
- function AlertDialogAction({ className, children, asChild, ...props }) {
278
+ function AlertDialogAction({ className, children, asChild, onPress, ...props }) {
184
279
  const { setOpen, nativeCopyRef } = useContext(AlertDialogContext);
185
- const onPressRef = useRef(props.onPress);
186
- onPressRef.current = props.onPress;
280
+ const interaction = useInteractionTokens();
281
+ const visual = useVisualTokens();
282
+ const onPressRef = useRef(onPress);
283
+ useLayoutEffect(() => {
284
+ onPressRef.current = onPress;
285
+ }, [onPress]);
286
+ const interactiveStyle = withInteractivePressableStyle(undefined, interaction, {
287
+ pressedVariant: 'strong',
288
+ });
187
289
  useLayoutEffect(() => {
188
- nativeCopyRef.current.confirmLabel = textFromPressableChildren(children);
189
- nativeCopyRef.current.onConfirm = () => {
290
+ const copy = nativeCopyRef.current;
291
+ copy.confirmLabel = textFromPressableChildren(children);
292
+ copy.onConfirm = () => {
190
293
  const h = onPressRef.current;
191
294
  if (h)
192
295
  h();
193
296
  };
194
297
  return () => {
195
- nativeCopyRef.current.confirmLabel = 'OK';
196
- nativeCopyRef.current.onConfirm = null;
298
+ copy.confirmLabel = 'OK';
299
+ copy.onConfirm = null;
197
300
  };
198
301
  }, [children, nativeCopyRef]);
199
- const handlePress = (e) => {
200
- props.onPress?.(e);
201
- setOpen(false);
202
- };
203
302
  if (asChild && React.isValidElement(children)) {
204
303
  const child = children;
205
304
  return React.cloneElement(child, {
206
- onPress: handlePress,
207
305
  ...props,
306
+ className: cn(child.props.className, className),
307
+ onPress: composeEventHandlers(composeEventHandlers(child.props.onPress, onPress), () => setOpen(false)),
208
308
  });
209
309
  }
210
- return (_jsx(Pressable, { className: cn('inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 active:bg-primary-active', className), onPress: handlePress, ...props, children: typeof children === 'string' ? (_jsx(Text, { className: "text-sm font-medium text-primary-foreground", children: children })) : (children) }));
310
+ return (_jsx(Pressable
311
+ // Pressable sets no role of its own, so without this the confirm button in a
312
+ // destructive dialog announces as a plain view. Before the spread, so a caller can
313
+ // still override it.
314
+ , {
315
+ // Pressable sets no role of its own, so without this the confirm button in a
316
+ // destructive dialog announces as a plain view. Before the spread, so a caller can
317
+ // still override it.
318
+ accessibilityRole: "button", ...props, className: cn('inline-flex items-center justify-center bg-primary', className), style: (state) => {
319
+ const baseStyle = typeof interactiveStyle === 'function' ? interactiveStyle(state) : interactiveStyle;
320
+ return [
321
+ baseStyle,
322
+ {
323
+ minHeight: visual.controlHeightDefault,
324
+ borderRadius: visual.radiusLg,
325
+ paddingHorizontal: visual.controlPaddingXDefault,
326
+ paddingVertical: visual.controlPaddingYDefault,
327
+ },
328
+ ];
329
+ }, onPress: composeEventHandlers(onPress, () => setOpen(false)), children: typeof children === 'string' ? (_jsx(Text, { className: "font-medium text-primary-foreground", style: typographyStyle(visual, 'label'), children: children })) : (children) }));
211
330
  }
212
- function AlertDialogCancel({ className, children, ...props }) {
331
+ function AlertDialogCancel({ className, children, onPress, ...props }) {
213
332
  const { setOpen, nativeCopyRef } = useContext(AlertDialogContext);
214
- const onPressRef = useRef(props.onPress);
215
- onPressRef.current = props.onPress;
333
+ const interaction = useInteractionTokens();
334
+ const visual = useVisualTokens();
335
+ const onPressRef = useRef(onPress);
336
+ useLayoutEffect(() => {
337
+ onPressRef.current = onPress;
338
+ }, [onPress]);
339
+ const interactiveStyle = withInteractivePressableStyle(undefined, interaction, {
340
+ pressedVariant: 'default',
341
+ });
216
342
  useLayoutEffect(() => {
217
- nativeCopyRef.current.cancelLabel = textFromPressableChildren(children);
218
- nativeCopyRef.current.onCancel = () => {
343
+ const copy = nativeCopyRef.current;
344
+ copy.cancelLabel = textFromPressableChildren(children);
345
+ copy.onCancel = () => {
219
346
  const h = onPressRef.current;
220
347
  if (h)
221
348
  h();
222
349
  };
223
350
  return () => {
224
- nativeCopyRef.current.cancelLabel = 'Cancel';
225
- nativeCopyRef.current.onCancel = null;
351
+ copy.cancelLabel = 'Cancel';
352
+ copy.onCancel = null;
226
353
  };
227
354
  }, [children, nativeCopyRef]);
228
- return (_jsx(Pressable, { className: cn('inline-flex items-center justify-center rounded-md border border-border bg-transparent px-4 py-2 active:bg-accent', className), onPress: (e) => {
229
- props.onPress?.(e);
230
- setOpen(false);
231
- }, ...props, children: typeof children === 'string' ? (_jsx(Text, { className: "text-sm font-medium text-foreground", children: children })) : (children) }));
355
+ return (_jsx(Pressable, { accessibilityRole: "button", ...props, className: cn('inline-flex items-center justify-center border-border bg-transparent', className), style: (state) => {
356
+ const baseStyle = typeof interactiveStyle === 'function' ? interactiveStyle(state) : interactiveStyle;
357
+ return [
358
+ baseStyle,
359
+ {
360
+ minHeight: visual.controlHeightDefault,
361
+ borderWidth: visual.borderWidthControl,
362
+ borderRadius: visual.radiusLg,
363
+ paddingHorizontal: visual.controlPaddingXDefault,
364
+ paddingVertical: visual.controlPaddingYDefault,
365
+ },
366
+ ];
367
+ }, onPress: composeEventHandlers(onPress, () => setOpen(false)), children: typeof children === 'string' ? (_jsx(Text, { className: "font-medium text-foreground", style: typographyStyle(visual, 'label'), children: children })) : (children) }));
232
368
  }
233
369
  AlertDialog.displayName = 'AlertDialog';
234
370
  AlertDialogTrigger.displayName = 'AlertDialogTrigger';
@@ -240,4 +376,3 @@ AlertDialogDescription.displayName = 'AlertDialogDescription';
240
376
  AlertDialogAction.displayName = 'AlertDialogAction';
241
377
  AlertDialogCancel.displayName = 'AlertDialogCancel';
242
378
  export { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
243
- //# sourceMappingURL=alert-dialog.js.map
@@ -1,2 +1 @@
1
1
  export { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, type AlertDialogProps, type AlertDialogTriggerProps, type AlertDialogContentProps, type AlertDialogHeaderProps, type AlertDialogFooterProps, type AlertDialogTitleProps, type AlertDialogDescriptionProps, type AlertDialogActionProps, type AlertDialogCancelProps, type AlertDialogPresentation, } from './alert-dialog';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1 @@
1
1
  export { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, } from './alert-dialog';
2
- //# sourceMappingURL=index.js.map
@@ -3,9 +3,8 @@ export interface AspectRatioProps extends ViewProps {
3
3
  ratio?: number;
4
4
  className?: string;
5
5
  }
6
- declare function AspectRatio({ ratio, className, children, style, ...props }: AspectRatioProps): import("react/jsx-runtime").JSX.Element;
6
+ declare function AspectRatio({ ratio, className, children, style, ...props }: AspectRatioProps): import("react").JSX.Element;
7
7
  declare namespace AspectRatio {
8
8
  var displayName: string;
9
9
  }
10
10
  export { AspectRatio };
11
- //# sourceMappingURL=aspect-ratio.d.ts.map
@@ -1,11 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { View } from 'react-native';
3
3
  import { cn } from '../../lib/cn';
4
- // ─── Component ───────────────────────────────────────────────
5
4
  function AspectRatio({ ratio = 1, className, children, style, ...props }) {
6
5
  return (_jsx(View, { className: cn('relative', className), style: [{ aspectRatio: ratio }, style], ...props, children: children }));
7
6
  }
8
7
  AspectRatio.displayName = 'AspectRatio';
9
- // ─── Exports ─────────────────────────────────────────────────
10
8
  export { AspectRatio };
11
- //# sourceMappingURL=aspect-ratio.js.map
@@ -1,2 +1 @@
1
1
  export { AspectRatio, type AspectRatioProps } from './aspect-ratio';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1 @@
1
1
  export { AspectRatio } from './aspect-ratio';
2
- //# sourceMappingURL=index.js.map
@@ -62,13 +62,12 @@ export interface AvatarFallbackProps extends ViewProps {
62
62
  className?: string;
63
63
  }
64
64
  declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<View>>;
65
- declare function AvatarImage({ className, onLoadingStatusChange, ...props }: AvatarImageProps): import("react/jsx-runtime").JSX.Element;
65
+ declare function AvatarImage({ className, onLoadingStatusChange, ...props }: AvatarImageProps): React.JSX.Element;
66
66
  declare namespace AvatarImage {
67
67
  var displayName: string;
68
68
  }
69
- declare function AvatarFallback({ className, children, ...props }: AvatarFallbackProps): import("react/jsx-runtime").JSX.Element | null;
69
+ declare function AvatarFallback({ className, children, ...props }: AvatarFallbackProps): React.JSX.Element | null;
70
70
  declare namespace AvatarFallback {
71
71
  var displayName: string;
72
72
  }
73
73
  export { Avatar, AvatarImage, AvatarFallback, avatarVariants };
74
- //# sourceMappingURL=avatar.d.ts.map
@@ -1,9 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import React, { useState } from 'react';
2
+ import React, { useMemo, useState } from 'react';
3
3
  import { View, Image, Text } from 'react-native';
4
4
  import { cn } from '../../lib/cn';
5
5
  import { tv } from '../../lib/tv';
6
- // ─── Variants ────────────────────────────────────────────────
6
+ import { useVisualTokens } from '../../lib/visual-tokens';
7
+ import { typographyStyle } from '../../lib/recipes';
7
8
  const avatarVariants = tv({
8
9
  base: 'relative flex shrink-0 overflow-hidden rounded-full',
9
10
  variants: {
@@ -18,15 +19,14 @@ const avatarVariants = tv({
18
19
  size: 'default',
19
20
  },
20
21
  });
21
- // ─── Context ─────────────────────────────────────────────────
22
22
  const AvatarContext = React.createContext({
23
23
  imageLoaded: false,
24
24
  setImageLoaded: () => { },
25
25
  });
26
- // ─── Components ──────────────────────────────────────────────
27
26
  const Avatar = React.forwardRef(({ className, size, ...props }, ref) => {
28
27
  const [imageLoaded, setImageLoaded] = useState(false);
29
- return (_jsx(AvatarContext.Provider, { value: { imageLoaded, setImageLoaded }, children: _jsx(View, { ref: ref, className: cn(avatarVariants({ size }), className), ...props }) }));
28
+ const contextValue = useMemo(() => ({ imageLoaded, setImageLoaded }), [imageLoaded]);
29
+ return (_jsx(AvatarContext.Provider, { value: contextValue, children: _jsx(View, { ref: ref, className: cn(avatarVariants({ size }), className), ...props }) }));
30
30
  });
31
31
  Avatar.displayName = 'Avatar';
32
32
  function AvatarImage({ className, onLoadingStatusChange, ...props }) {
@@ -42,11 +42,10 @@ function AvatarImage({ className, onLoadingStatusChange, ...props }) {
42
42
  AvatarImage.displayName = 'AvatarImage';
43
43
  function AvatarFallback({ className, children, ...props }) {
44
44
  const { imageLoaded } = React.useContext(AvatarContext);
45
+ const visual = useVisualTokens();
45
46
  if (imageLoaded)
46
47
  return null;
47
- return (_jsx(View, { className: cn('flex h-full w-full items-center justify-center rounded-full bg-muted', className), ...props, children: typeof children === 'string' ? (_jsx(Text, { className: "text-sm font-medium text-muted-foreground", children: children })) : (children) }));
48
+ return (_jsx(View, { className: cn('flex h-full w-full items-center justify-center rounded-full bg-muted', className), ...props, children: typeof children === 'string' ? (_jsx(Text, { className: "font-medium text-muted-foreground", style: typographyStyle(visual, 'label'), children: children })) : (children) }));
48
49
  }
49
50
  AvatarFallback.displayName = 'AvatarFallback';
50
- // ─── Exports ─────────────────────────────────────────────────
51
51
  export { Avatar, AvatarImage, AvatarFallback, avatarVariants };
52
- //# sourceMappingURL=avatar.js.map
@@ -1,2 +1 @@
1
1
  export { Avatar, AvatarImage, AvatarFallback, avatarVariants, type AvatarProps, type AvatarImageProps, type AvatarFallbackProps, } from './avatar';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1 @@
1
1
  export { Avatar, AvatarImage, AvatarFallback, avatarVariants, } from './avatar';
2
- //# sourceMappingURL=index.js.map
@@ -16,7 +16,7 @@ declare const badgeVariants: import("tailwind-variants").TVReturnType<{
16
16
  'soft-warning': string;
17
17
  'soft-info': string;
18
18
  };
19
- }, undefined, "inline-flex items-center rounded-full px-2.5 py-0.5", import("tailwind-variants/dist/config.js").TVConfig<{
19
+ }, undefined, "inline-flex items-center", import("tailwind-variants/dist/config.js").TVConfig<{
20
20
  variant: {
21
21
  default: string;
22
22
  secondary: string;
@@ -80,7 +80,7 @@ declare const badgeVariants: import("tailwind-variants").TVReturnType<{
80
80
  'soft-warning': string;
81
81
  'soft-info': string;
82
82
  };
83
- }, undefined, "inline-flex items-center rounded-full px-2.5 py-0.5", import("tailwind-variants/dist/config.js").TVConfig<{
83
+ }, undefined, "inline-flex items-center", import("tailwind-variants/dist/config.js").TVConfig<{
84
84
  variant: {
85
85
  default: string;
86
86
  secondary: string;
@@ -129,7 +129,7 @@ declare const badgeTextVariants: import("tailwind-variants").TVReturnType<{
129
129
  'soft-warning': string;
130
130
  'soft-info': string;
131
131
  };
132
- }, undefined, "text-xs font-semibold", import("tailwind-variants/dist/config.js").TVConfig<{
132
+ }, undefined, "font-semibold", import("tailwind-variants/dist/config.js").TVConfig<{
133
133
  variant: {
134
134
  default: string;
135
135
  secondary: string;
@@ -193,7 +193,7 @@ declare const badgeTextVariants: import("tailwind-variants").TVReturnType<{
193
193
  'soft-warning': string;
194
194
  'soft-info': string;
195
195
  };
196
- }, undefined, "text-xs font-semibold", import("tailwind-variants/dist/config.js").TVConfig<{
196
+ }, undefined, "font-semibold", import("tailwind-variants/dist/config.js").TVConfig<{
197
197
  variant: {
198
198
  default: string;
199
199
  secondary: string;
@@ -230,13 +230,12 @@ export interface BadgeProps extends ViewProps, VariantProps<typeof badgeVariants
230
230
  }
231
231
  export interface BadgeTextProps extends TextProps, VariantProps<typeof badgeTextVariants> {
232
232
  }
233
- declare function Badge({ className, variant, children, ...props }: BadgeProps): import("react/jsx-runtime").JSX.Element;
233
+ declare function Badge({ className, variant, children, style, ...props }: BadgeProps): import("react").JSX.Element;
234
234
  declare namespace Badge {
235
235
  var displayName: string;
236
236
  }
237
- declare function BadgeText({ className, variant: variantProp, ...props }: BadgeTextProps): import("react/jsx-runtime").JSX.Element;
237
+ declare function BadgeText({ className, variant: variantProp, style, ...props }: BadgeTextProps): import("react").JSX.Element;
238
238
  declare namespace BadgeText {
239
239
  var displayName: string;
240
240
  }
241
241
  export { Badge, BadgeText, badgeVariants, badgeTextVariants };
242
- //# sourceMappingURL=badge.d.ts.map
@@ -1,20 +1,22 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createContext, useContext } from 'react';
2
+ import { createContext, useContext, useMemo } from 'react';
3
3
  import { View } from 'react-native';
4
4
  import { Text } from '../text';
5
5
  import { cn } from '../../lib/cn';
6
6
  import { tv } from '../../lib/tv';
7
+ import { useVisualTokens } from '../../lib/visual-tokens';
8
+ import { typographyStyle } from '../../lib/recipes';
7
9
  const BadgeContext = createContext({
8
10
  variant: 'default',
9
11
  });
10
12
  const badgeVariants = tv({
11
- base: 'inline-flex items-center rounded-full px-2.5 py-0.5',
13
+ base: 'inline-flex items-center',
12
14
  variants: {
13
15
  variant: {
14
16
  default: 'bg-primary',
15
17
  secondary: 'bg-secondary',
16
18
  destructive: 'bg-destructive',
17
- outline: 'border border-border bg-transparent',
19
+ outline: 'border-border bg-transparent',
18
20
  success: 'bg-success',
19
21
  warning: 'bg-warning',
20
22
  info: 'bg-info',
@@ -31,7 +33,7 @@ const badgeVariants = tv({
31
33
  },
32
34
  });
33
35
  const badgeTextVariants = tv({
34
- base: 'text-xs font-semibold',
36
+ base: 'font-semibold',
35
37
  variants: {
36
38
  variant: {
37
39
  default: 'text-primary-foreground',
@@ -53,15 +55,25 @@ const badgeTextVariants = tv({
53
55
  variant: 'default',
54
56
  },
55
57
  });
56
- function Badge({ className, variant = 'default', children, ...props }) {
57
- return (_jsx(BadgeContext.Provider, { value: { variant }, children: _jsx(View, { className: cn(badgeVariants({ variant }), className), ...props, children: children }) }));
58
+ function Badge({ className, variant = 'default', children, style, ...props }) {
59
+ const visual = useVisualTokens();
60
+ const contextValue = useMemo(() => ({ variant }), [variant]);
61
+ return (_jsx(BadgeContext.Provider, { value: contextValue, children: _jsx(View, { className: cn(badgeVariants({ variant }), className), style: [
62
+ {
63
+ borderRadius: visual.badgeRadius,
64
+ paddingHorizontal: visual.badgePaddingX,
65
+ paddingVertical: visual.badgePaddingY,
66
+ ...(variant === 'outline' ? { borderWidth: visual.borderWidthHairline } : null),
67
+ },
68
+ style,
69
+ ], ...props, children: children }) }));
58
70
  }
59
- function BadgeText({ className, variant: variantProp, ...props }) {
71
+ function BadgeText({ className, variant: variantProp, style, ...props }) {
60
72
  const context = useContext(BadgeContext);
73
+ const visual = useVisualTokens();
61
74
  const variant = variantProp ?? context.variant;
62
- return _jsx(Text, { className: cn(badgeTextVariants({ variant }), className), ...props });
75
+ return (_jsx(Text, { className: cn(badgeTextVariants({ variant }), className), style: [typographyStyle(visual, 'caption'), style], ...props }));
63
76
  }
64
77
  Badge.displayName = 'Badge';
65
78
  BadgeText.displayName = 'BadgeText';
66
79
  export { Badge, BadgeText, badgeVariants, badgeTextVariants };
67
- //# sourceMappingURL=badge.js.map
@@ -1,2 +1 @@
1
1
  export { Badge, BadgeText, badgeVariants, badgeTextVariants, type BadgeProps, type BadgeTextProps, } from './badge';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1 @@
1
1
  export { Badge, BadgeText, badgeVariants, badgeTextVariants, } from './badge';
2
- //# sourceMappingURL=index.js.map