@thewhileloop/whileui 1.2.3 → 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 +246 -83
  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 +9 -10
  107. package/dist/components/alert-dialog/alert-dialog.js +175 -51
  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,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React, { createContext, useContext, useState, useCallback } from 'react';
2
+ import React, { createContext, useContext, useState, useCallback, useMemo } from 'react';
3
3
  import { View, Pressable } from 'react-native';
4
4
  import Animated, { useSharedValue, useAnimatedStyle, withTiming, Easing, } from 'react-native-reanimated';
5
5
  import { cn } from '../../lib/cn';
@@ -14,7 +14,6 @@ const AccordionItemContext = createContext({
14
14
  value: '',
15
15
  isOpen: false,
16
16
  });
17
- // ─── Components ──────────────────────────────────────────────
18
17
  function Accordion({ type = 'single', defaultValue, collapsible = true, className, children, ...props }) {
19
18
  const [value, setValue] = useState(() => {
20
19
  if (!defaultValue)
@@ -35,12 +34,14 @@ function Accordion({ type = 'single', defaultValue, collapsible = true, classNam
35
34
  return [...prev, itemValue];
36
35
  });
37
36
  }, [type, collapsible]);
38
- return (_jsx(AccordionContext.Provider, { value: { type, value, onValueChange, collapsible }, children: _jsx(View, { className: cn('w-full', className), ...props, children: children }) }));
37
+ const contextValue = useMemo(() => ({ type, value, onValueChange, collapsible }), [collapsible, onValueChange, type, value]);
38
+ return (_jsx(AccordionContext.Provider, { value: contextValue, children: _jsx(View, { className: cn('w-full', className), ...props, children: children }) }));
39
39
  }
40
40
  function AccordionItem({ value, className, children, ...props }) {
41
41
  const { value: selectedValues } = useContext(AccordionContext);
42
42
  const isOpen = selectedValues.includes(value);
43
- return (_jsx(AccordionItemContext.Provider, { value: { value, isOpen }, children: _jsx(View, { className: cn('border-b border-border', className), ...props, children: children }) }));
43
+ const contextValue = useMemo(() => ({ value, isOpen }), [isOpen, value]);
44
+ return (_jsx(AccordionItemContext.Provider, { value: contextValue, children: _jsx(View, { className: cn('border-b border-border', className), ...props, children: children }) }));
44
45
  }
45
46
  function AccordionTrigger({ className, children, style: styleProp, ...props }) {
46
47
  const { onValueChange } = useContext(AccordionContext);
@@ -49,7 +50,7 @@ function AccordionTrigger({ className, children, style: styleProp, ...props }) {
49
50
  const interactiveStyle = withInteractivePressableStyle(styleProp, interaction, {
50
51
  pressedVariant: 'default',
51
52
  });
52
- return (_jsxs(Pressable, { className: cn('flex flex-row items-center justify-between py-4', className), onPress: () => onValueChange(value), style: interactiveStyle, ...props, children: [children, _jsx(View, { className: cn('border-foreground h-2 w-2 rotate-45 border-b-2 border-r-2 transition-transform', isOpen && 'rotate-[225deg]') })] }));
53
+ return (_jsxs(Pressable, { accessibilityRole: "button", className: cn('flex flex-row items-center justify-between py-4', className), onPress: () => onValueChange(value), style: interactiveStyle, ...props, children: [children, _jsx(View, { className: cn('border-foreground h-2 w-2 rotate-45 border-b-2 border-r-2 transition-transform', isOpen && 'rotate-[225deg]') })] }));
53
54
  }
54
55
  function AccordionContent({ className, children, ...props }) {
55
56
  const { isOpen } = useContext(AccordionItemContext);
@@ -72,6 +73,4 @@ Accordion.displayName = 'Accordion';
72
73
  AccordionItem.displayName = 'AccordionItem';
73
74
  AccordionTrigger.displayName = 'AccordionTrigger';
74
75
  AccordionContent.displayName = 'AccordionContent';
75
- // ─── Exports ─────────────────────────────────────────────────
76
76
  export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
77
- //# sourceMappingURL=accordion.js.map
@@ -1,2 +1 @@
1
1
  export { Accordion, AccordionItem, AccordionTrigger, AccordionContent, type AccordionProps, type AccordionItemProps, type AccordionTriggerProps, type AccordionContentProps, } from './accordion';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1 @@
1
1
  export { Accordion, AccordionItem, AccordionTrigger, AccordionContent, } from './accordion';
2
- //# sourceMappingURL=index.js.map
@@ -9,7 +9,7 @@ declare const alertVariants: import("tailwind-variants").TVReturnType<{
9
9
  warning: string;
10
10
  info: string;
11
11
  };
12
- }, undefined, "w-full rounded-lg border p-4", import("tailwind-variants/dist/config.js").TVConfig<{
12
+ }, undefined, "w-full border", import("tailwind-variants/dist/config.js").TVConfig<{
13
13
  variant: {
14
14
  default: string;
15
15
  destructive: string;
@@ -41,7 +41,7 @@ declare const alertVariants: import("tailwind-variants").TVReturnType<{
41
41
  warning: string;
42
42
  info: string;
43
43
  };
44
- }, undefined, "w-full rounded-lg border p-4", import("tailwind-variants/dist/config.js").TVConfig<{
44
+ }, undefined, "w-full border", import("tailwind-variants/dist/config.js").TVConfig<{
45
45
  variant: {
46
46
  default: string;
47
47
  destructive: string;
@@ -68,4 +68,3 @@ export interface AlertDescriptionProps extends TextProps {
68
68
  }
69
69
  declare const AlertDescription: React.ForwardRefExoticComponent<AlertDescriptionProps & React.RefAttributes<Text>>;
70
70
  export { Alert, AlertTitle, AlertDescription, alertVariants };
71
- //# sourceMappingURL=alert.d.ts.map
@@ -3,8 +3,10 @@ import React from 'react';
3
3
  import { View, Text } from 'react-native';
4
4
  import { cn } from '../../lib/cn';
5
5
  import { tv } from '../../lib/tv';
6
+ import { useVisualTokens } from '../../lib/visual-tokens';
7
+ import { surfacePadding, surfaceRadius, typographyStyle } from '../../lib/recipes';
6
8
  const alertVariants = tv({
7
- base: 'w-full rounded-lg border p-4',
9
+ base: 'w-full border',
8
10
  variants: {
9
11
  variant: {
10
12
  default: 'border-border bg-background',
@@ -18,17 +20,26 @@ const alertVariants = tv({
18
20
  variant: 'default',
19
21
  },
20
22
  });
21
- const Alert = React.forwardRef(({ className, variant, ...props }, ref) => {
22
- return _jsx(View, { ref: ref, className: cn(alertVariants({ variant }), className), ...props });
23
+ const Alert = React.forwardRef(({ className, variant, style, ...props }, ref) => {
24
+ const visual = useVisualTokens();
25
+ return (_jsx(View, { ref: ref, className: cn(alertVariants({ variant }), className), style: [
26
+ {
27
+ borderRadius: surfaceRadius(visual, 'lg'),
28
+ borderWidth: visual.borderWidthHairline,
29
+ padding: surfacePadding(visual, 'sm'),
30
+ },
31
+ style,
32
+ ], ...props }));
23
33
  });
24
34
  Alert.displayName = 'Alert';
25
- const AlertTitle = React.forwardRef(({ className, ...props }, ref) => {
26
- return (_jsx(Text, { ref: ref, className: cn('mb-1 text-base font-semibold text-foreground', className), ...props }));
35
+ const AlertTitle = React.forwardRef(({ className, style, ...props }, ref) => {
36
+ const visual = useVisualTokens();
37
+ return (_jsx(Text, { ref: ref, className: cn('mb-1 font-semibold text-foreground', className), style: [typographyStyle(visual, 'body'), style], ...props }));
27
38
  });
28
39
  AlertTitle.displayName = 'AlertTitle';
29
- const AlertDescription = React.forwardRef(({ className, ...props }, ref) => {
30
- return _jsx(Text, { ref: ref, className: cn('text-sm text-muted-foreground', className), ...props });
40
+ const AlertDescription = React.forwardRef(({ className, style, ...props }, ref) => {
41
+ const visual = useVisualTokens();
42
+ return (_jsx(Text, { ref: ref, className: cn('text-muted-foreground', className), style: [typographyStyle(visual, 'label'), style], ...props }));
31
43
  });
32
44
  AlertDescription.displayName = 'AlertDescription';
33
45
  export { Alert, AlertTitle, AlertDescription, alertVariants };
34
- //# sourceMappingURL=alert.js.map
@@ -1,2 +1 @@
1
1
  export { Alert, AlertTitle, AlertDescription, alertVariants, type AlertProps, type AlertTitleProps, type AlertDescriptionProps, } from './alert';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1 @@
1
1
  export { Alert, AlertTitle, AlertDescription, alertVariants, } from './alert';
2
- //# sourceMappingURL=index.js.map
@@ -41,41 +41,40 @@ export interface AlertDialogActionProps extends PressableProps {
41
41
  export interface AlertDialogCancelProps extends PressableProps {
42
42
  className?: string;
43
43
  }
44
- declare function AlertDialog({ defaultOpen, open: controlledOpen, onOpenChange, children, }: AlertDialogProps): import("react/jsx-runtime").JSX.Element;
44
+ declare function AlertDialog({ defaultOpen, open: controlledOpen, onOpenChange, children, }: AlertDialogProps): React.JSX.Element;
45
45
  declare namespace AlertDialog {
46
46
  var displayName: string;
47
47
  }
48
- declare function AlertDialogTrigger({ className, children, asChild, ...props }: AlertDialogTriggerProps): import("react/jsx-runtime").JSX.Element;
48
+ declare function AlertDialogTrigger({ className, children, asChild, onPress, ...props }: AlertDialogTriggerProps): React.JSX.Element;
49
49
  declare namespace AlertDialogTrigger {
50
50
  var displayName: string;
51
51
  }
52
- declare function AlertDialogContent({ className, children, presentation, frosted, blurIntensity, blurTintToken, style, ...props }: AlertDialogContentProps): import("react/jsx-runtime").JSX.Element;
52
+ declare function AlertDialogContent({ className, children, presentation, frosted, blurIntensity, blurTintToken, style, ...props }: AlertDialogContentProps): React.JSX.Element;
53
53
  declare namespace AlertDialogContent {
54
54
  var displayName: string;
55
55
  }
56
- declare function AlertDialogHeader({ className, ...props }: AlertDialogHeaderProps): import("react/jsx-runtime").JSX.Element;
56
+ declare function AlertDialogHeader({ className, ...props }: AlertDialogHeaderProps): React.JSX.Element;
57
57
  declare namespace AlertDialogHeader {
58
58
  var displayName: string;
59
59
  }
60
- declare function AlertDialogFooter({ className, ...props }: AlertDialogFooterProps): import("react/jsx-runtime").JSX.Element;
60
+ declare function AlertDialogFooter({ className, ...props }: AlertDialogFooterProps): React.JSX.Element;
61
61
  declare namespace AlertDialogFooter {
62
62
  var displayName: string;
63
63
  }
64
- declare function AlertDialogTitle({ className, children, ...props }: AlertDialogTitleProps): import("react/jsx-runtime").JSX.Element;
64
+ declare function AlertDialogTitle({ className, children, style, ...props }: AlertDialogTitleProps): React.JSX.Element;
65
65
  declare namespace AlertDialogTitle {
66
66
  var displayName: string;
67
67
  }
68
- declare function AlertDialogDescription({ className, children, ...props }: AlertDialogDescriptionProps): import("react/jsx-runtime").JSX.Element;
68
+ declare function AlertDialogDescription({ className, children, style, ...props }: AlertDialogDescriptionProps): React.JSX.Element;
69
69
  declare namespace AlertDialogDescription {
70
70
  var displayName: string;
71
71
  }
72
- declare function AlertDialogAction({ className, children, asChild, ...props }: AlertDialogActionProps): import("react/jsx-runtime").JSX.Element;
72
+ declare function AlertDialogAction({ className, children, asChild, onPress, ...props }: AlertDialogActionProps): React.JSX.Element;
73
73
  declare namespace AlertDialogAction {
74
74
  var displayName: string;
75
75
  }
76
- declare function AlertDialogCancel({ className, children, ...props }: AlertDialogCancelProps): import("react/jsx-runtime").JSX.Element;
76
+ declare function AlertDialogCancel({ className, children, onPress, ...props }: AlertDialogCancelProps): React.JSX.Element;
77
77
  declare namespace AlertDialogCancel {
78
78
  var displayName: string;
79
79
  }
80
80
  export { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
81
- //# sourceMappingURL=alert-dialog.d.ts.map
@@ -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,
@@ -147,7 +184,44 @@ function AlertDialogContent({ className, children, presentation = 'modal', frost
147
184
  prevOpenRef.current = false;
148
185
  };
149
186
  }, [open, useNativeAlert, setOpen, nativeCopyRef]);
150
- const themedBody = (_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] }) }));
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] }) }));
151
225
  if (useNativeAlert) {
152
226
  return (_jsx(View, { pointerEvents: "none", style: nativeHiddenStyle, collapsable: false, importantForAccessibility: "no-hide-descendants", children: children }));
153
227
  }
@@ -156,11 +230,11 @@ function AlertDialogContent({ className, children, presentation = 'modal', frost
156
230
  return (_jsx(View, { pointerEvents: "none", style: nativeHiddenStyle, collapsable: false, importantForAccessibility: "no-hide-descendants", children: children }));
157
231
  }
158
232
  return (_jsx(View, { pointerEvents: "box-none", style: [
159
- StyleSheet.absoluteFillObject,
233
+ StyleSheet.absoluteFill,
160
234
  { zIndex: 100, elevation: Platform.OS === 'android' ? 24 : undefined },
161
235
  ], children: themedBody }));
162
236
  }
163
- return (_jsx(Modal, { visible: open, transparent: true, animationType: "fade", presentationStyle: Platform.OS === 'ios' ? 'overFullScreen' : undefined, statusBarTranslucent: Platform.OS === 'android', children: themedBody }));
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 }));
164
238
  }
165
239
  function useAlertDialogNativeCopy() {
166
240
  return useContext(AlertDialogContext).nativeCopyRef;
@@ -171,75 +245,126 @@ function AlertDialogHeader({ className, ...props }) {
171
245
  function AlertDialogFooter({ className, ...props }) {
172
246
  return _jsx(View, { className: cn('flex flex-row justify-end gap-2 pt-4', className), ...props });
173
247
  }
174
- function AlertDialogTitle({ className, children, ...props }) {
248
+ function AlertDialogTitle({ className, children, style, ...props }) {
175
249
  const nativeCopyRef = useAlertDialogNativeCopy();
250
+ const visual = useVisualTokens();
176
251
  useLayoutEffect(() => {
177
- nativeCopyRef.current.title = textFromNode(children);
252
+ const copy = nativeCopyRef.current;
253
+ copy.title = textFromNode(children);
178
254
  return () => {
179
- nativeCopyRef.current.title = '';
255
+ copy.title = '';
180
256
  };
181
257
  }, [children, nativeCopyRef]);
182
- 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 }));
183
265
  }
184
- function AlertDialogDescription({ className, children, ...props }) {
266
+ function AlertDialogDescription({ className, children, style, ...props }) {
185
267
  const nativeCopyRef = useAlertDialogNativeCopy();
268
+ const visual = useVisualTokens();
186
269
  useLayoutEffect(() => {
187
- nativeCopyRef.current.message = textFromNode(children);
270
+ const copy = nativeCopyRef.current;
271
+ copy.message = textFromNode(children);
188
272
  return () => {
189
- nativeCopyRef.current.message = '';
273
+ copy.message = '';
190
274
  };
191
275
  }, [children, nativeCopyRef]);
192
- 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 }));
193
277
  }
194
- function AlertDialogAction({ className, children, asChild, ...props }) {
278
+ function AlertDialogAction({ className, children, asChild, onPress, ...props }) {
195
279
  const { setOpen, nativeCopyRef } = useContext(AlertDialogContext);
196
- const onPressRef = useRef(props.onPress);
197
- onPressRef.current = props.onPress;
280
+ const interaction = useInteractionTokens();
281
+ const visual = useVisualTokens();
282
+ const onPressRef = useRef(onPress);
198
283
  useLayoutEffect(() => {
199
- nativeCopyRef.current.confirmLabel = textFromPressableChildren(children);
200
- nativeCopyRef.current.onConfirm = () => {
284
+ onPressRef.current = onPress;
285
+ }, [onPress]);
286
+ const interactiveStyle = withInteractivePressableStyle(undefined, interaction, {
287
+ pressedVariant: 'strong',
288
+ });
289
+ useLayoutEffect(() => {
290
+ const copy = nativeCopyRef.current;
291
+ copy.confirmLabel = textFromPressableChildren(children);
292
+ copy.onConfirm = () => {
201
293
  const h = onPressRef.current;
202
294
  if (h)
203
295
  h();
204
296
  };
205
297
  return () => {
206
- nativeCopyRef.current.confirmLabel = 'OK';
207
- nativeCopyRef.current.onConfirm = null;
298
+ copy.confirmLabel = 'OK';
299
+ copy.onConfirm = null;
208
300
  };
209
301
  }, [children, nativeCopyRef]);
210
- const handlePress = (e) => {
211
- props.onPress?.(e);
212
- setOpen(false);
213
- };
214
302
  if (asChild && React.isValidElement(children)) {
215
303
  const child = children;
216
304
  return React.cloneElement(child, {
217
- onPress: handlePress,
218
305
  ...props,
306
+ className: cn(child.props.className, className),
307
+ onPress: composeEventHandlers(composeEventHandlers(child.props.onPress, onPress), () => setOpen(false)),
219
308
  });
220
309
  }
221
- 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) }));
222
330
  }
223
- function AlertDialogCancel({ className, children, ...props }) {
331
+ function AlertDialogCancel({ className, children, onPress, ...props }) {
224
332
  const { setOpen, nativeCopyRef } = useContext(AlertDialogContext);
225
- const onPressRef = useRef(props.onPress);
226
- onPressRef.current = props.onPress;
333
+ const interaction = useInteractionTokens();
334
+ const visual = useVisualTokens();
335
+ const onPressRef = useRef(onPress);
227
336
  useLayoutEffect(() => {
228
- nativeCopyRef.current.cancelLabel = textFromPressableChildren(children);
229
- nativeCopyRef.current.onCancel = () => {
337
+ onPressRef.current = onPress;
338
+ }, [onPress]);
339
+ const interactiveStyle = withInteractivePressableStyle(undefined, interaction, {
340
+ pressedVariant: 'default',
341
+ });
342
+ useLayoutEffect(() => {
343
+ const copy = nativeCopyRef.current;
344
+ copy.cancelLabel = textFromPressableChildren(children);
345
+ copy.onCancel = () => {
230
346
  const h = onPressRef.current;
231
347
  if (h)
232
348
  h();
233
349
  };
234
350
  return () => {
235
- nativeCopyRef.current.cancelLabel = 'Cancel';
236
- nativeCopyRef.current.onCancel = null;
351
+ copy.cancelLabel = 'Cancel';
352
+ copy.onCancel = null;
237
353
  };
238
354
  }, [children, nativeCopyRef]);
239
- 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) => {
240
- props.onPress?.(e);
241
- setOpen(false);
242
- }, ...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) }));
243
368
  }
244
369
  AlertDialog.displayName = 'AlertDialog';
245
370
  AlertDialogTrigger.displayName = 'AlertDialogTrigger';
@@ -251,4 +376,3 @@ AlertDialogDescription.displayName = 'AlertDialogDescription';
251
376
  AlertDialogAction.displayName = 'AlertDialogAction';
252
377
  AlertDialogCancel.displayName = 'AlertDialogCancel';
253
378
  export { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
254
- //# 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