@btndprojects/loam-ui-native 0.2.1 → 0.3.1

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 (365) hide show
  1. package/dist/accordion/index.js +4 -2
  2. package/dist/adaptive/index.js +12 -2
  3. package/dist/address-block/index.js +23 -0
  4. package/dist/alert/index.js +5 -2
  5. package/dist/analyzer/index.js +13 -5
  6. package/dist/announcement/index.js +15 -5
  7. package/dist/appearance-picker/index.js +15 -0
  8. package/dist/audio-player/index.js +26 -2
  9. package/dist/avatar/index.js +2 -2
  10. package/dist/avatar-group/index.js +5 -3
  11. package/dist/badge/index.js +6 -3
  12. package/dist/banner/index.js +3 -2
  13. package/dist/board/index.js +13 -6
  14. package/dist/button/index.js +6 -3
  15. package/dist/camera-permission/index.js +19 -11
  16. package/dist/capture-result/index.js +26 -16
  17. package/dist/card/index.js +7 -3
  18. package/dist/card-form/index.js +15 -9
  19. package/dist/carousel/index.js +3 -1
  20. package/dist/chart/index.js +15 -5
  21. package/dist/charts/index.js +18 -5
  22. package/dist/chat/index.js +35 -10
  23. package/dist/checkbox/index.js +6 -4
  24. package/dist/checklist/index.js +16 -7
  25. package/dist/checkout/index.js +25 -12
  26. package/dist/chip/index.js +7 -4
  27. package/dist/chunk-2BZD3NAP.js +1110 -0
  28. package/dist/chunk-2YKVID2V.js +35 -0
  29. package/dist/{chunk-H7DWSL4O.js → chunk-36DA3IPO.js} +115 -27
  30. package/dist/chunk-3A56MIAN.js +599 -0
  31. package/dist/{chunk-AEB7KCHQ.js → chunk-3SCKCWF5.js} +39 -28
  32. package/dist/chunk-3TZNDHKO.js +187 -0
  33. package/dist/chunk-43K3BLXV.js +9 -0
  34. package/dist/chunk-46ZJIQ2Z.js +208 -0
  35. package/dist/{chunk-PMMTGBBS.js → chunk-4CZMQDQL.js} +75 -22
  36. package/dist/chunk-4QCR3K2J.js +1 -0
  37. package/dist/{chunk-E2E3I5W2.js → chunk-5DTKORLI.js} +54 -45
  38. package/dist/{chunk-5VFZRGVD.js → chunk-5J4WFXFA.js} +32 -15
  39. package/dist/{chunk-JBMLWFSJ.js → chunk-5KJ7TEQ6.js} +83 -48
  40. package/dist/chunk-5NU33TXK.js +529 -0
  41. package/dist/chunk-6KSUS7DF.js +690 -0
  42. package/dist/{chunk-3WEZCGHX.js → chunk-6RV6UW2J.js} +140 -56
  43. package/dist/chunk-6RZM7RP2.js +520 -0
  44. package/dist/{chunk-JJLPBRVZ.js → chunk-75BDCC7K.js} +2 -0
  45. package/dist/{chunk-U5NLHYV6.js → chunk-7CGJBQUA.js} +333 -22
  46. package/dist/{chunk-I4FHVKEC.js → chunk-7IVF6JLJ.js} +16 -5
  47. package/dist/chunk-7IWCGXYA.js +143 -0
  48. package/dist/chunk-7LM4ASFH.js +172 -0
  49. package/dist/chunk-7MCEJFWV.js +341 -0
  50. package/dist/{chunk-2SY63FCH.js → chunk-7NGMUVNU.js} +66 -30
  51. package/dist/chunk-7PBSIXT7.js +355 -0
  52. package/dist/chunk-7QOYGENL.js +443 -0
  53. package/dist/{chunk-TDMG26JI.js → chunk-A7SWYDE5.js} +40 -9
  54. package/dist/chunk-ADHPJALR.js +3051 -0
  55. package/dist/{chunk-ZLTO5VQI.js → chunk-ALJYZLNQ.js} +131 -61
  56. package/dist/{chunk-GDKVKNR2.js → chunk-AQ5FIG74.js} +110 -30
  57. package/dist/chunk-B2MMZZQB.js +426 -0
  58. package/dist/{chunk-QYPE5JX3.js → chunk-B7JZ3N5G.js} +142 -105
  59. package/dist/{chunk-QHTVYA65.js → chunk-BL37SW6G.js} +388 -102
  60. package/dist/chunk-BTRMA7GC.js +21 -0
  61. package/dist/{chunk-FUMHAAF3.js → chunk-C7IUWIUZ.js} +243 -92
  62. package/dist/chunk-CA3DUVYD.js +10 -0
  63. package/dist/{chunk-FYWNRX4F.js → chunk-CBCJSO2B.js} +143 -13
  64. package/dist/chunk-CHPX4MFI.js +239 -0
  65. package/dist/chunk-CLGAMIOT.js +648 -0
  66. package/dist/chunk-CUE7VML6.js +1141 -0
  67. package/dist/{chunk-D5N5QWI7.js → chunk-CVU6S2E5.js} +497 -235
  68. package/dist/{chunk-U23FYWME.js → chunk-CXPQMA6Z.js} +101 -34
  69. package/dist/{chunk-36EC2T6P.js → chunk-D2LN4I7I.js} +1 -1
  70. package/dist/{chunk-TLCIR6RG.js → chunk-D34LNBO5.js} +411 -155
  71. package/dist/{chunk-FV6HMP7W.js → chunk-D4BCQICM.js} +207 -65
  72. package/dist/chunk-EABKIIA4.js +1 -0
  73. package/dist/chunk-EICSYRAG.js +341 -0
  74. package/dist/chunk-EMWAJMAS.js +83 -0
  75. package/dist/chunk-EOLZWRV6.js +149 -0
  76. package/dist/chunk-EOQVTGB6.js +350 -0
  77. package/dist/{chunk-ZVATDZOM.js → chunk-ESGUHNB2.js} +106 -28
  78. package/dist/{chunk-46MMSDGL.js → chunk-F2KNBPKY.js} +104 -73
  79. package/dist/{chunk-KQZ3GLHR.js → chunk-G7H3NX3G.js} +40 -17
  80. package/dist/{chunk-3QMEOFW5.js → chunk-GM7YIPB7.js} +421 -207
  81. package/dist/{chunk-QHAITQIF.js → chunk-GVQQG435.js} +256 -86
  82. package/dist/chunk-HE43OMEL.js +1056 -0
  83. package/dist/{chunk-XIDTBCBA.js → chunk-HHOMFQ7R.js} +1049 -207
  84. package/dist/chunk-HNAKS4Z3.js +207 -0
  85. package/dist/chunk-HP6ST2OW.js +352 -0
  86. package/dist/chunk-HW3OWDTU.js +1 -0
  87. package/dist/{chunk-QP3KMOVF.js → chunk-HZDB44K4.js} +24 -14
  88. package/dist/chunk-I6CUP2LW.js +1155 -0
  89. package/dist/chunk-ICV4Y2WY.js +27 -0
  90. package/dist/chunk-IHSIENOE.js +3950 -0
  91. package/dist/{chunk-T5LTPKX6.js → chunk-IMMALLRU.js} +53 -25
  92. package/dist/{chunk-C4GTDLRC.js → chunk-JA6TK7H2.js} +154 -67
  93. package/dist/{chunk-EVOIGUBI.js → chunk-JAVZ5JPV.js} +43 -13
  94. package/dist/{chunk-CPTOADB2.js → chunk-JCMTP3E4.js} +527 -201
  95. package/dist/{chunk-OJQUBQWA.js → chunk-JCXFFK64.js} +73 -16
  96. package/dist/{chunk-V2OEB75Z.js → chunk-JWCVBFDU.js} +75 -35
  97. package/dist/chunk-JXRTD5RI.js +414 -0
  98. package/dist/chunk-JYIUZUIQ.js +1567 -0
  99. package/dist/chunk-K3TK3GIV.js +219 -0
  100. package/dist/chunk-KEVZIHM2.js +1511 -0
  101. package/dist/{chunk-VAOAKWUK.js → chunk-KHZDNQQD.js} +42 -8
  102. package/dist/chunk-KL4GDV4V.js +131 -0
  103. package/dist/{chunk-Q6NKEPRE.js → chunk-KNILMM4H.js} +73 -28
  104. package/dist/chunk-KRBUZV45.js +25 -0
  105. package/dist/{chunk-7BUIKDD6.js → chunk-KXLDK6HB.js} +91 -30
  106. package/dist/chunk-KZ3X7TSL.js +196 -0
  107. package/dist/{chunk-5UTRIXQ6.js → chunk-L2WMOA2V.js} +187 -43
  108. package/dist/chunk-L4D5LHCH.js +109 -0
  109. package/dist/{chunk-W63AJTM7.js → chunk-LAUJPLDB.js} +236 -71
  110. package/dist/{chunk-TN2ZNJUI.js → chunk-LGNTP5XA.js} +47 -13
  111. package/dist/chunk-LUZFCCSD.js +271 -0
  112. package/dist/{chunk-XTORZWRF.js → chunk-LXJCP4PL.js} +111 -30
  113. package/dist/chunk-MCOZJWPU.js +731 -0
  114. package/dist/{chunk-SATMR6SG.js → chunk-MG4SKWLL.js} +780 -142
  115. package/dist/{chunk-JUYWSSKW.js → chunk-MPEPTSER.js} +95 -16
  116. package/dist/chunk-MWPJ4YGP.js +1 -0
  117. package/dist/{chunk-LUMVGO2K.js → chunk-N7AX4OA4.js} +80 -29
  118. package/dist/chunk-NHSLM6SE.js +523 -0
  119. package/dist/{chunk-IT6FUXXG.js → chunk-NNJLVA7M.js} +43 -11
  120. package/dist/{chunk-TQVAIKFD.js → chunk-NZG75DGA.js} +102 -62
  121. package/dist/chunk-O76QXRBV.js +431 -0
  122. package/dist/chunk-OANH27AK.js +223 -0
  123. package/dist/chunk-OCHPK5YV.js +609 -0
  124. package/dist/chunk-OMHVEVX4.js +436 -0
  125. package/dist/{chunk-SWS5JQIF.js → chunk-ONKQUJWD.js} +187 -60
  126. package/dist/chunk-OVTK7A6T.js +615 -0
  127. package/dist/{chunk-UXGIW7OK.js → chunk-PCEFCOLN.js} +5 -1
  128. package/dist/{chunk-QIKT7LIB.js → chunk-PFLNFIVB.js} +91 -23
  129. package/dist/chunk-PHSZY37H.js +300 -0
  130. package/dist/chunk-PJLTKDVY.js +18 -0
  131. package/dist/{chunk-SHHY5OMK.js → chunk-PK7BN3MI.js} +83 -15
  132. package/dist/{chunk-YXOAPXMU.js → chunk-PWFRDRGS.js} +101 -14
  133. package/dist/{chunk-TY4MTKQJ.js → chunk-PYPMD46W.js} +332 -66
  134. package/dist/chunk-Q6CCHDI7.js +331 -0
  135. package/dist/chunk-QFA5WS2A.js +750 -0
  136. package/dist/chunk-QJMMM4RC.js +124 -0
  137. package/dist/chunk-QYWEVAM6.js +407 -0
  138. package/dist/chunk-R5T4VZ7Z.js +126 -0
  139. package/dist/chunk-R77HFLZD.js +1 -0
  140. package/dist/{chunk-LMPHCVJJ.js → chunk-RAESDNU5.js} +162 -68
  141. package/dist/chunk-RBYQUXNL.js +1 -0
  142. package/dist/chunk-RCM3DT5E.js +1 -0
  143. package/dist/chunk-RGNY56L7.js +282 -0
  144. package/dist/chunk-RIK6UX2K.js +344 -0
  145. package/dist/{chunk-5LAAAXFP.js → chunk-RJA3RXO3.js} +63 -54
  146. package/dist/chunk-RJYRJ3LD.js +1 -0
  147. package/dist/chunk-RMA3NOY4.js +599 -0
  148. package/dist/{chunk-VDPK5CY4.js → chunk-RSWKKAHK.js} +143 -61
  149. package/dist/{chunk-B7N4ASYE.js → chunk-RVOIIX3V.js} +17 -45
  150. package/dist/chunk-SA2RRBGT.js +1077 -0
  151. package/dist/{chunk-7OVVSVEZ.js → chunk-SG3J4R45.js} +440 -169
  152. package/dist/chunk-SPUK7JD4.js +238 -0
  153. package/dist/chunk-SWXV2K5N.js +434 -0
  154. package/dist/chunk-SYJEPXP6.js +1303 -0
  155. package/dist/{chunk-LKFC4CS7.js → chunk-SZLI34TA.js} +18 -9
  156. package/dist/{chunk-NBEF4EPJ.js → chunk-T77WJA74.js} +131 -16
  157. package/dist/chunk-TDWWVJA4.js +630 -0
  158. package/dist/chunk-TFHI5XDR.js +610 -0
  159. package/dist/chunk-TH4PW2WU.js +17 -0
  160. package/dist/chunk-TTQ24HQX.js +12 -0
  161. package/dist/chunk-TUACVJNG.js +12 -0
  162. package/dist/{chunk-F5B3UINI.js → chunk-TUL5RUIA.js} +171 -62
  163. package/dist/{chunk-C6APNDVA.js → chunk-TYOSA7JG.js} +63 -34
  164. package/dist/chunk-TYQTMMEV.js +1 -0
  165. package/dist/{chunk-DW3L54DQ.js → chunk-TZO6YDS7.js} +53 -12
  166. package/dist/{chunk-67IZZ2MJ.js → chunk-U3ETF22F.js} +75 -30
  167. package/dist/{chunk-EDCBJV7J.js → chunk-U6BYHD2N.js} +87 -31
  168. package/dist/{chunk-ENP3BMZU.js → chunk-UF6EJXPQ.js} +16 -1
  169. package/dist/{chunk-IPUNJMAQ.js → chunk-UNNQIPGK.js} +304 -68
  170. package/dist/chunk-UQVO6AJV.js +171 -0
  171. package/dist/{chunk-FZGAAOKS.js → chunk-VFDQAAIW.js} +138 -32
  172. package/dist/chunk-VIUE3VQT.js +1 -0
  173. package/dist/{chunk-5RENVKBQ.js → chunk-VJLSSSGC.js} +126 -30
  174. package/dist/chunk-VLMT6KYT.js +350 -0
  175. package/dist/chunk-VMHGBUGS.js +35 -0
  176. package/dist/{chunk-4IZXHVFJ.js → chunk-VQKPBYW6.js} +228 -172
  177. package/dist/{chunk-G6UESEVN.js → chunk-VSSTWLC5.js} +49 -11
  178. package/dist/{chunk-TRGFFU6A.js → chunk-VZYYZRPN.js} +866 -330
  179. package/dist/{chunk-JLC6PM5S.js → chunk-WAIJCD2V.js} +128 -54
  180. package/dist/chunk-WFMQ3WKM.js +378 -0
  181. package/dist/chunk-WJ2KDRMY.js +66 -0
  182. package/dist/chunk-WKFZJO54.js +437 -0
  183. package/dist/{chunk-QEYFDRHR.js → chunk-WVVD3XOV.js} +146 -84
  184. package/dist/chunk-XAIWMSLB.js +1 -0
  185. package/dist/chunk-XBXUBBJZ.js +98 -0
  186. package/dist/chunk-XCU7MYBJ.js +1 -0
  187. package/dist/chunk-XHE4PGCI.js +717 -0
  188. package/dist/chunk-XRSJ32M3.js +331 -0
  189. package/dist/chunk-XTCVOEAW.js +1 -0
  190. package/dist/chunk-XWGXVQF6.js +58 -0
  191. package/dist/{chunk-MKSNFG7H.js → chunk-Y3XKKO5K.js} +191 -109
  192. package/dist/chunk-Y4QNMBLO.js +533 -0
  193. package/dist/chunk-Y5H4CTKO.js +1 -0
  194. package/dist/chunk-YBQIN75A.js +403 -0
  195. package/dist/{chunk-PNF3NKB5.js → chunk-YJ5PXOX3.js} +28 -11
  196. package/dist/{chunk-M656FYNH.js → chunk-YLRSRUPS.js} +63 -49
  197. package/dist/chunk-YM6MPJ4A.js +1 -0
  198. package/dist/chunk-YV7KZENV.js +200 -0
  199. package/dist/chunk-Z7I4ZSO6.js +316 -0
  200. package/dist/{chunk-EY4DD67D.js → chunk-ZIRMWD2B.js} +199 -126
  201. package/dist/chunk-ZPMG3FWU.js +75 -0
  202. package/dist/{chunk-QRUMA22E.js → chunk-ZTXMK2G7.js} +92 -43
  203. package/dist/{chunk-2OLKPG4E.js → chunk-ZVJCWXAL.js} +189 -87
  204. package/dist/{chunk-YAAHPATV.js → chunk-ZYQ23DPT.js} +49 -34
  205. package/dist/coachmark/index.js +7 -3
  206. package/dist/code-block/index.js +4 -3
  207. package/dist/color-field/index.js +12 -4
  208. package/dist/color-picker/index.js +23 -0
  209. package/dist/commerce/index.js +27 -16
  210. package/dist/confirm/index.js +31 -0
  211. package/dist/connection-card/index.js +34 -0
  212. package/dist/connectivity/index.js +3 -2
  213. package/dist/context-menu/index.js +10 -2
  214. package/dist/copy-button/index.js +3 -2
  215. package/dist/data-grid/index.js +30 -17
  216. package/dist/date-range-picker/index.js +19 -9
  217. package/dist/description-list/index.js +4 -1
  218. package/dist/device-frame/index.js +30 -0
  219. package/dist/dialog/index.js +8 -2
  220. package/dist/divider/index.js +2 -0
  221. package/dist/empty-state/index.js +13 -2
  222. package/dist/error-summary/index.js +7 -2
  223. package/dist/fab/index.js +4 -2
  224. package/dist/file-manager/index.js +33 -17
  225. package/dist/file-upload/index.js +12 -6
  226. package/dist/filter-bar/index.js +10 -6
  227. package/dist/flow-run/index.js +19 -12
  228. package/dist/form/index.js +30 -3
  229. package/dist/gallery/index.js +5 -2
  230. package/dist/hold-to-confirm/index.js +4 -2
  231. package/dist/hover-card/index.js +18 -0
  232. package/dist/icon-tile/index.js +10 -0
  233. package/dist/image/index.js +9 -0
  234. package/dist/index.d.ts +29826 -17941
  235. package/dist/index.js +197 -141
  236. package/dist/infinite-list/index.js +4 -2
  237. package/dist/inline-edit/index.js +5 -4
  238. package/dist/input/index.js +4 -3
  239. package/dist/interactions/index.js +4 -1
  240. package/dist/invoice/index.js +18 -9
  241. package/dist/job-row/index.js +22 -0
  242. package/dist/json-inspector/index.js +20 -0
  243. package/dist/kbd/index.js +2 -2
  244. package/dist/keyboard/index.js +7 -2
  245. package/dist/level-meter/index.js +9 -0
  246. package/dist/list-row/index.js +11 -3
  247. package/dist/log-viewer/index.js +9 -2
  248. package/dist/map-view/index.js +13 -2
  249. package/dist/markdown/index.js +8 -5
  250. package/dist/metric/index.js +6 -3
  251. package/dist/metric-strip/index.js +12 -0
  252. package/dist/money/index.js +11 -4
  253. package/dist/nav-drawer/index.js +6 -2
  254. package/dist/nav-header/index.js +10 -4
  255. package/dist/navigation/index.js +29 -2
  256. package/dist/notification-center/index.js +24 -10
  257. package/dist/number-roll/index.js +3 -1
  258. package/dist/onboarding-pager/index.js +22 -0
  259. package/dist/one-handed/index.js +2 -2
  260. package/dist/os-surfaces/index.js +6 -3
  261. package/dist/otp/index.js +5 -4
  262. package/dist/page-header/index.js +2 -1
  263. package/dist/pagination/index.js +4 -2
  264. package/dist/payment-method/index.js +17 -11
  265. package/dist/payment-status/index.js +22 -14
  266. package/dist/permission/index.js +18 -2
  267. package/dist/picker/index.js +17 -6
  268. package/dist/progress/index.js +7 -2
  269. package/dist/provenance/index.js +16 -0
  270. package/dist/pull-to-refresh/index.js +2 -2
  271. package/dist/qr-code/index.js +16 -0
  272. package/dist/query-builder/index.js +30 -0
  273. package/dist/radio-group/index.js +6 -4
  274. package/dist/rating/index.js +7 -2
  275. package/dist/receivables/index.js +31 -18
  276. package/dist/recording-indicator/index.js +21 -0
  277. package/dist/refund/index.js +24 -15
  278. package/dist/repeatable-rows/index.js +19 -0
  279. package/dist/save-status/index.js +5 -3
  280. package/dist/screen/index.js +3 -0
  281. package/dist/scroll-area/index.js +1 -1
  282. package/dist/search-field/index.js +8 -3
  283. package/dist/secret-field/index.js +19 -0
  284. package/dist/section-header/index.js +4 -0
  285. package/dist/segmented-control/index.js +2 -2
  286. package/dist/sheet/index.js +9 -3
  287. package/dist/shortcuts-sheet/index.js +2 -0
  288. package/dist/sign-in-screen/index.js +25 -0
  289. package/dist/skeleton/index.js +3 -1
  290. package/dist/slider/index.js +2 -1
  291. package/dist/sortable/index.js +4 -3
  292. package/dist/spinner/index.js +2 -1
  293. package/dist/split-button/index.js +17 -5
  294. package/dist/spotlight/index.js +7 -1
  295. package/dist/stack/index.js +2 -0
  296. package/dist/stage-timeline/index.js +6 -3
  297. package/dist/status-dot/index.js +6 -2
  298. package/dist/stepper/index.js +7 -3
  299. package/dist/streaming-text/index.js +2 -1
  300. package/dist/survey/index.js +24 -14
  301. package/dist/switch/index.js +6 -2
  302. package/dist/system-state/index.js +12 -4
  303. package/dist/tab-bar/index.js +10 -2
  304. package/dist/tabs/index.js +10 -2
  305. package/dist/tags-input/index.js +8 -5
  306. package/dist/text/index.js +4 -0
  307. package/dist/textarea/index.js +5 -4
  308. package/dist/thinking/index.js +4 -1
  309. package/dist/tile-rail/index.js +10 -0
  310. package/dist/time-field/index.js +15 -7
  311. package/dist/time-range-control/index.js +26 -12
  312. package/dist/timeline/index.js +2 -2
  313. package/dist/toast/index.js +4 -2
  314. package/dist/toolbar/index.js +3 -2
  315. package/dist/tour/index.js +12 -10
  316. package/dist/transcript/index.js +28 -0
  317. package/dist/truncation-notice/index.js +2 -2
  318. package/dist/update-notice/index.js +15 -8
  319. package/dist/video-player/index.js +26 -2
  320. package/dist/viewfinder/index.js +12 -4
  321. package/dist/widget/index.js +11 -4
  322. package/dist/wizard/index.js +7 -4
  323. package/package.json +13 -13
  324. package/dist/chunk-2PKYGLQ6.js +0 -268
  325. package/dist/chunk-2SWKL3AJ.js +0 -466
  326. package/dist/chunk-2TXERVVA.js +0 -1081
  327. package/dist/chunk-3DUWIYV5.js +0 -437
  328. package/dist/chunk-3NMD74ZU.js +0 -4
  329. package/dist/chunk-4DS5ZWVC.js +0 -83
  330. package/dist/chunk-6YAQBXB3.js +0 -93
  331. package/dist/chunk-74FLKD24.js +0 -237
  332. package/dist/chunk-CMTVNF3D.js +0 -104
  333. package/dist/chunk-DN7MNQIP.js +0 -799
  334. package/dist/chunk-DVGBZ3TX.js +0 -455
  335. package/dist/chunk-F3H33DQX.js +0 -300
  336. package/dist/chunk-FAJI7BSC.js +0 -443
  337. package/dist/chunk-G3AFC24V.js +0 -60
  338. package/dist/chunk-HJLPZA4X.js +0 -369
  339. package/dist/chunk-HYEOQWT7.js +0 -647
  340. package/dist/chunk-IDM7JJMO.js +0 -110
  341. package/dist/chunk-IVKMZ7BB.js +0 -326
  342. package/dist/chunk-IXKWIFWZ.js +0 -334
  343. package/dist/chunk-JV5YOTOB.js +0 -164
  344. package/dist/chunk-KFJGFLMW.js +0 -158
  345. package/dist/chunk-LQP4KEXZ.js +0 -214
  346. package/dist/chunk-NTQ2F3AU.js +0 -257
  347. package/dist/chunk-O5V4TG3V.js +0 -329
  348. package/dist/chunk-OWAMM2DK.js +0 -280
  349. package/dist/chunk-PID3NJB7.js +0 -405
  350. package/dist/chunk-QDZGFXQD.js +0 -176
  351. package/dist/chunk-QPWDDJJ4.js +0 -385
  352. package/dist/chunk-ROCUG24E.js +0 -416
  353. package/dist/chunk-RU3ZPNL6.js +0 -1986
  354. package/dist/chunk-RXSCIO6W.js +0 -153
  355. package/dist/chunk-SKWO3SZF.js +0 -2284
  356. package/dist/chunk-UQGBTPXH.js +0 -218
  357. package/dist/chunk-UYGDJWMN.js +0 -273
  358. package/dist/chunk-W74TXYFB.js +0 -107
  359. package/dist/chunk-WRDSPUE7.js +0 -417
  360. package/dist/chunk-XBZGDDMR.js +0 -105
  361. package/dist/chunk-XN4KG3P4.js +0 -1040
  362. package/dist/chunk-XQXMLMH3.js +0 -211
  363. package/dist/chunk-ZECZOOSB.js +0 -245
  364. /package/dist/{chunk-VFCUIDRT.js → chunk-3BKLBYPK.js} +0 -0
  365. /package/dist/{chunk-GEIGMWNF.js → chunk-QNZII37O.js} +0 -0
@@ -1,5 +1,8 @@
1
+ import { Avatar } from './chunk-JWCVBFDU.js';
2
+ import { isAndroidIdiom } from './chunk-TH4PW2WU.js';
1
3
  import { useLabels } from './chunk-APCWFOZW.js';
2
- import { Icon } from './chunk-UXGIW7OK.js';
4
+ import { useFocusRing } from './chunk-2YKVID2V.js';
5
+ import { Icon } from './chunk-PCEFCOLN.js';
3
6
  import * as React from 'react';
4
7
  import { Dimensions, Animated, Easing, PanResponder, View, Platform, findNodeHandle, AccessibilityInfo, StyleSheet, Pressable, Text, Modal } from 'react-native';
5
8
  import { createStyleSheet, useLoamTheme, useStyles } from '@btndprojects/loam-theme-native';
@@ -10,6 +13,7 @@ var DEFAULT_LABELS = {
10
13
  close: "Close navigation"
11
14
  };
12
15
  var PANEL_FRACTION = 0.78;
16
+ var SIZE_FRACTION = { sm: 0.66, md: PANEL_FRACTION, lg: 0.88 };
13
17
  var SWIPE_SLOP = 10;
14
18
  var SWIPE_DISMISS_FRACTION = 0.3;
15
19
  var SWIPE_FLICK_VELOCITY = 0.4;
@@ -27,12 +31,12 @@ var SPEC = {
27
31
  headerPadX: 10,
28
32
  /** Gap between the name and the email. */
29
33
  identityGap: 1,
30
- /** Avatar diameter. */
31
- avatar: 40,
32
- /** Display-name size. */
33
- nameSize: 14.5,
34
- /** Email size. */
35
- emailSize: 11.5
34
+ /** Row height on iOS (the OS list row). */
35
+ rowIOS: 44,
36
+ /** Row height on Android (the Material drawer item). */
37
+ rowAndroid: 56,
38
+ /** Leading glyph size. */
39
+ glyph: 22
36
40
  };
37
41
  function NavDrawer({
38
42
  open,
@@ -46,12 +50,18 @@ function NavDrawer({
46
50
  motion = "full",
47
51
  inline = false,
48
52
  onOpen,
53
+ platform,
54
+ variant = "default",
55
+ size,
49
56
  labels: labelsProp
50
57
  }) {
51
58
  const labels = useLabels("navDrawer", DEFAULT_LABELS, labelsProp);
52
59
  const theme = useLoamTheme("nav-drawer");
53
60
  const { styles } = useStyles(navDrawer);
54
- const panelWidth = React.useMemo(() => Dimensions.get("window").width * PANEL_FRACTION, []);
61
+ const android = isAndroidIdiom(theme, platform);
62
+ const fraction = size ? SIZE_FRACTION[size] : PANEL_FRACTION;
63
+ const panelWidth = React.useMemo(() => Dimensions.get("window").width * fraction, [fraction]);
64
+ const rowHeight = size ? size === "sm" ? theme.tapMin : Math.max(theme.tapMin, theme.ctl.lg) + (size === "lg" ? theme.space.s2 : 0) : void 0;
55
65
  const reducedMotion = theme.reduceMotion || motion === "reduced";
56
66
  const instantMotion = motion === "none";
57
67
  const [visible, setVisible] = React.useState(open);
@@ -274,8 +284,9 @@ function NavDrawer({
274
284
  accessibilityLabel: userName ?? labels.navigation,
275
285
  style: [
276
286
  styles.panel,
287
+ variant === "soft" ? { backgroundColor: theme.color.surface2 } : null,
277
288
  {
278
- width: inline ? `${PANEL_FRACTION * 100}%` : panelWidth,
289
+ width: inline ? `${fraction * 100}%` : panelWidth,
279
290
  paddingTop: SPEC.panelPadTop + safeAreaTop,
280
291
  opacity: panelOpacity,
281
292
  transform: [{ translateX }]
@@ -283,7 +294,7 @@ function NavDrawer({
283
294
  ],
284
295
  children: [
285
296
  (avatarInitials || userName || userEmail) && /* @__PURE__ */ jsxs(View, { style: styles.header, children: [
286
- avatarInitials ? /* @__PURE__ */ jsx(View, { style: styles.avatar, children: /* @__PURE__ */ jsx(Text, { style: styles.avatarText, children: avatarInitials }) }) : null,
297
+ avatarInitials || userName ? /* @__PURE__ */ jsx(Avatar, { size: "lg", name: userName ?? avatarInitials }) : null,
287
298
  /* @__PURE__ */ jsxs(View, { style: styles.identity, children: [
288
299
  userName ? /* @__PURE__ */ jsx(Text, { style: styles.userName, numberOfLines: 1, children: userName }) : null,
289
300
  userEmail ? /* @__PURE__ */ jsx(Text, { style: styles.userEmail, numberOfLines: 1, children: userEmail }) : null
@@ -291,23 +302,28 @@ function NavDrawer({
291
302
  ] }),
292
303
  /* @__PURE__ */ jsx(View, { style: styles.list, children: items.map((item, i) => {
293
304
  const active = item.active ?? false;
294
- const fg = active ? theme.color.accentOnSoft : theme.color.text;
295
- return /* @__PURE__ */ jsxs(
296
- Pressable,
297
- {
298
- accessibilityRole: "link",
299
- accessibilityLabel: item.label,
300
- accessibilityState: { selected: active },
301
- ...active ? { "aria-current": "page" } : null,
302
- onPress: () => handleItemPress(item),
303
- style: [styles.item, active ? styles.itemActive : null],
304
- children: [
305
- /* @__PURE__ */ jsx(Icon, { name: item.icon, size: 20, color: fg }),
306
- /* @__PURE__ */ jsx(Text, { style: [styles.itemLabel, { color: fg }], numberOfLines: 1, children: item.label })
307
- ]
308
- },
309
- `${item.label}-${i}`
310
- );
305
+ const section = item.section && item.section !== items[i - 1]?.section ? item.section : null;
306
+ return /* @__PURE__ */ jsxs(React.Fragment, { children: [
307
+ section ? /* @__PURE__ */ jsx(
308
+ Text,
309
+ {
310
+ accessibilityRole: "header",
311
+ style: [styles.section, android ? styles.sectionAndroid : null],
312
+ children: android ? section : section.toUpperCase()
313
+ }
314
+ ) : null,
315
+ /* @__PURE__ */ jsx(
316
+ DrawerRow,
317
+ {
318
+ item,
319
+ active,
320
+ android,
321
+ rowHeight,
322
+ styles,
323
+ onPress: () => handleItemPress(item)
324
+ }
325
+ )
326
+ ] }, `${item.label}-${i}`);
311
327
  }) })
312
328
  ]
313
329
  }
@@ -329,6 +345,49 @@ function NavDrawer({
329
345
  )
330
346
  ] });
331
347
  }
348
+ function DrawerRow({
349
+ item,
350
+ active,
351
+ android,
352
+ rowHeight,
353
+ styles,
354
+ onPress
355
+ }) {
356
+ const theme = useLoamTheme("nav-drawer");
357
+ const focusRing = useFocusRing(theme.radius.md);
358
+ return /* @__PURE__ */ jsxs(
359
+ Pressable,
360
+ {
361
+ accessibilityRole: "link",
362
+ accessibilityLabel: item.count !== void 0 ? `${item.label}, ${item.count}` : item.label,
363
+ accessibilityState: { selected: active },
364
+ ...active ? { "aria-current": "page" } : null,
365
+ onPress,
366
+ onFocus: focusRing.handlers.onFocus,
367
+ onBlur: focusRing.handlers.onBlur,
368
+ android_ripple: android ? { color: theme.state.pressed } : void 0,
369
+ style: ({ pressed }) => [
370
+ styles.item,
371
+ { minHeight: rowHeight ?? (android ? SPEC.rowAndroid : SPEC.rowIOS) },
372
+ active ? styles.itemActive : null,
373
+ pressed && !android && !active ? styles.itemPressed : null,
374
+ focusRing.style
375
+ ],
376
+ children: [
377
+ /* @__PURE__ */ jsx(
378
+ Icon,
379
+ {
380
+ name: item.icon,
381
+ size: SPEC.glyph,
382
+ color: active ? theme.color.accentStrong : theme.color.text2
383
+ }
384
+ ),
385
+ /* @__PURE__ */ jsx(Text, { style: [styles.itemLabel, android ? styles.itemLabelAndroid : null], numberOfLines: 1, children: item.label }),
386
+ item.count !== void 0 ? /* @__PURE__ */ jsx(Text, { style: styles.itemCount, accessibilityElementsHidden: true, importantForAccessibility: "no", children: item.count }) : null
387
+ ]
388
+ }
389
+ );
390
+ }
332
391
  var navDrawer = createStyleSheet((theme) => ({
333
392
  root: {
334
393
  flex: 1,
@@ -369,20 +428,6 @@ var navDrawer = createStyleSheet((theme) => ({
369
428
  paddingHorizontal: SPEC.headerPadX,
370
429
  paddingBottom: theme.space.s4
371
430
  },
372
- avatar: {
373
- width: SPEC.avatar,
374
- height: SPEC.avatar,
375
- borderRadius: theme.radius.full,
376
- backgroundColor: theme.color.accent,
377
- alignItems: "center",
378
- justifyContent: "center"
379
- },
380
- avatarText: {
381
- fontFamily: theme.font.sans,
382
- fontWeight: theme.fontWeight.bold,
383
- fontSize: theme.fontSize[14],
384
- color: theme.color.accentInk
385
- },
386
431
  // `minWidth: 0` lets a long name/email truncate instead of widening the row.
387
432
  identity: {
388
433
  flex: 1,
@@ -392,47 +437,72 @@ var navDrawer = createStyleSheet((theme) => ({
392
437
  },
393
438
  userName: {
394
439
  fontFamily: theme.font.sans,
395
- fontWeight: theme.fontWeight.bold,
396
- fontSize: SPEC.nameSize,
397
- lineHeight: SPEC.nameSize * theme.lineHeight.snug,
440
+ fontWeight: theme.fontWeight.semibold,
441
+ fontSize: theme.type.body.fontSize,
442
+ lineHeight: theme.type.body.lineHeight,
398
443
  color: theme.color.text
399
444
  },
400
445
  userEmail: {
401
446
  fontFamily: theme.font.sans,
402
- fontSize: SPEC.emailSize,
403
- lineHeight: SPEC.emailSize * theme.lineHeight.snug,
447
+ fontSize: theme.type.footnote.fontSize,
448
+ lineHeight: theme.type.footnote.lineHeight,
404
449
  color: theme.color.text2
405
450
  },
406
451
  // Horizontal padding now lives on the panel, so the rows sit inside its 12px.
407
452
  list: {
408
453
  gap: SPEC.itemGap
409
454
  },
455
+ section: {
456
+ fontFamily: theme.font.sans,
457
+ fontSize: theme.type.footnote.fontSize,
458
+ lineHeight: theme.type.footnote.lineHeight,
459
+ color: theme.color.text2,
460
+ paddingHorizontal: theme.space.s3,
461
+ paddingTop: theme.space.s4,
462
+ paddingBottom: theme.space[6]
463
+ },
464
+ // Material titleSmall, accent-strong.
465
+ sectionAndroid: {
466
+ fontSize: theme.fontSize[14],
467
+ lineHeight: theme.space[20],
468
+ fontWeight: theme.fontWeight.medium,
469
+ color: theme.color.accentStrong
470
+ },
471
+ // OS-tier rows (44 iOS / 56 Android) at r 12; the height is set at the use site.
410
472
  item: {
411
473
  flexDirection: "row",
412
474
  alignItems: "center",
413
- // Reference (buildDrawer): `gap:14px` — 14px is a step of the spacing ramp.
414
475
  gap: theme.space[14],
415
- // Reference: `padding:13px 12px` — use paddingVertical instead of fixed height.
416
- paddingVertical: theme.space[13],
417
476
  paddingHorizontal: theme.space.s3,
418
477
  borderRadius: theme.radius.md,
419
- backgroundColor: "transparent",
420
- // Reserved on every row, not just the active one: a border that appears with
421
- // the state would move every label 1px when the selection changes.
422
- borderWidth: theme.borderWidth.base,
423
- borderColor: "transparent"
478
+ overflow: "hidden",
479
+ backgroundColor: "transparent"
424
480
  },
481
+ // Selection is state-selected and the accent-strong glyph; no edge (no start bar).
425
482
  itemActive: {
426
- backgroundColor: theme.color.accentSoft,
427
- // Which item you are on is carried by a fill alone, and a fill is what high
428
- // contrast re-resolves away — the accent edge is what still says "here".
429
- borderColor: theme.edge.accent
483
+ backgroundColor: theme.state.selected
484
+ },
485
+ itemPressed: {
486
+ backgroundColor: theme.state.pressed
430
487
  },
431
488
  itemLabel: {
489
+ flex: 1,
432
490
  fontFamily: theme.font.sans,
433
- fontWeight: theme.fontWeight.semibold,
434
- // Reference (buildDrawer): `font-size:15px` — 15px, read from the ramp rather than hardcoded.
435
- fontSize: theme.fontSize[15]
491
+ fontSize: theme.type.body.fontSize,
492
+ lineHeight: theme.type.body.lineHeight,
493
+ fontWeight: theme.fontWeight.regular,
494
+ color: theme.color.text
495
+ },
496
+ itemCount: {
497
+ fontFamily: theme.font.sans,
498
+ fontSize: theme.fontSize[13],
499
+ color: theme.color.text3
500
+ },
501
+ // Material label large, 14 / 500.
502
+ itemLabelAndroid: {
503
+ fontSize: theme.fontSize[14],
504
+ lineHeight: theme.space[20],
505
+ fontWeight: theme.fontWeight.medium
436
506
  }
437
507
  }));
438
508
 
@@ -1,7 +1,11 @@
1
+ import { resolveTextRole } from './chunk-L4D5LHCH.js';
2
+ import { SkeletonText } from './chunk-YJ5PXOX3.js';
3
+ import { softToneSkin } from './chunk-PJLTKDVY.js';
1
4
  import { useLabels } from './chunk-APCWFOZW.js';
2
- import { Icon } from './chunk-UXGIW7OK.js';
5
+ import { useFocusRing } from './chunk-2YKVID2V.js';
6
+ import { Icon } from './chunk-PCEFCOLN.js';
3
7
  import * as React from 'react';
4
- import { Animated, Pressable, Text, Easing, Platform, findNodeHandle, AccessibilityInfo, Modal, View } from 'react-native';
8
+ import { Animated, Pressable, Text, Platform, Easing, findNodeHandle, AccessibilityInfo, Modal, View } from 'react-native';
5
9
  import { useStyles, createStyleSheet, useLoamTheme } from '@btndprojects/loam-theme-native';
6
10
  import { jsx, jsxs } from 'react/jsx-runtime';
7
11
 
@@ -16,13 +20,22 @@ var defaultRememberStorage = {
16
20
  function measureBox(node) {
17
21
  return new Promise((resolve) => {
18
22
  if (!node?.measureInWindow) return resolve(null);
19
- node.measureInWindow((x, y, w, h) => resolve(Number.isFinite(x) && w > 0 && h > 0 ? { x, y, w, h } : null));
23
+ node.measureInWindow(
24
+ (x, y, w, h) => resolve(Number.isFinite(x) && w > 0 && h > 0 ? { x, y, w, h } : null)
25
+ );
20
26
  });
21
27
  }
22
28
  var DEFAULT_LABELS = {
23
29
  closeDialog: "Close dialog",
24
30
  close: "Close"
25
31
  };
32
+ var DialogPlatformContext = React.createContext(void 0);
33
+ function resolveDialogPlatform(explicit, themed) {
34
+ if (explicit) return explicit;
35
+ if (Platform.OS === "ios") return "ios";
36
+ if (Platform.OS === "android") return "android";
37
+ return themed === "Android" ? "android" : "ios";
38
+ }
26
39
  function Dialog({
27
40
  open,
28
41
  defaultOpen = false,
@@ -37,13 +50,20 @@ function Dialog({
37
50
  showClose = dismissible,
38
51
  accessibilityLabel,
39
52
  motion = "full",
53
+ size,
54
+ loading = false,
55
+ tone,
40
56
  morphFrom,
41
57
  children,
42
- labels: labelsProp
58
+ labels: labelsProp,
59
+ platform
43
60
  }) {
44
61
  const labels = useLabels("dialog", DEFAULT_LABELS, labelsProp);
45
62
  const theme = useLoamTheme("dialog");
63
+ const closeRing = useFocusRing(theme.ctl.r.md);
64
+ const os = resolveDialogPlatform(platform, theme.platform);
46
65
  const { styles } = useStyles(sheet);
66
+ const skin = tone ? softToneSkin(theme, tone) : null;
47
67
  const controlled = open !== void 0;
48
68
  const persist = remember && rememberKey != null;
49
69
  const reducedMotion = theme.reduceMotion || motion === "reduced";
@@ -89,7 +109,11 @@ function Dialog({
89
109
  const ox = root?.x ?? 0;
90
110
  const oy = root?.y ?? 0;
91
111
  const radius = Math.abs(src.w - src.h) < 2 ? src.h / 2 : Math.min(src.h / 2, theme.radius.md);
92
- return { src: { ...src, x: src.x - ox, y: src.y - oy }, dst: { ...dst, x: dst.x - ox, y: dst.y - oy }, radius };
112
+ return {
113
+ src: { ...src, x: src.x - ox, y: src.y - oy },
114
+ dst: { ...dst, x: dst.x - ox, y: dst.y - oy },
115
+ radius
116
+ };
93
117
  }, [morphFrom, theme.radius.md]);
94
118
  const onCardLayout = React.useCallback(() => {
95
119
  if (!pending) return;
@@ -204,7 +228,12 @@ function Dialog({
204
228
  // The content arrives once the clip is big enough to hold it.
205
229
  opacity: fly.interpolate({ inputRange: [0, 0.4, 1], outputRange: [0, 0, 1] })
206
230
  } : styles.rest;
207
- const cardStyle = flight ? [styles.card, styles.flat, { width: flight.dst.w, maxWidth: flight.dst.w }] : [styles.card, { opacity: pending ? 0 : progress, transform: [{ scale: cardScale }] }];
231
+ const cardStyle = flight ? [styles.card, styles.flat, { width: flight.dst.w, maxWidth: flight.dst.w }] : [
232
+ styles.card,
233
+ size ? { maxWidth: theme.dialog[size] } : null,
234
+ skin ? { borderWidth: theme.borderWidth.thin, borderColor: skin.edge } : null,
235
+ { opacity: pending ? 0 : progress, transform: [{ scale: cardScale }] }
236
+ ];
208
237
  return /* @__PURE__ */ jsx(Modal, { transparent: true, visible: mounted, animationType: "none", onRequestClose: requestDismiss, children: /* @__PURE__ */ jsxs(View, { ref: rootRef, collapsable: false, style: styles.root, children: [
209
238
  /* @__PURE__ */ jsx(
210
239
  AnimatedPressable,
@@ -224,6 +253,7 @@ function Dialog({
224
253
  role: "dialog",
225
254
  accessibilityViewIsModal: true,
226
255
  accessibilityLabel: accessibilityLabel ?? title,
256
+ "aria-busy": loading || void 0,
227
257
  onLayout: onCardLayout,
228
258
  style: cardStyle,
229
259
  children: [
@@ -233,23 +263,46 @@ function Dialog({
233
263
  accessibilityRole: "button",
234
264
  accessibilityLabel: labels.close,
235
265
  onPress: requestDismiss,
236
- style: styles.close,
237
- hitSlop: 8,
238
- children: /* @__PURE__ */ jsx(Icon, { name: "x", size: 20, color: theme.color.text3 })
266
+ onFocus: closeRing.handlers.onFocus,
267
+ onBlur: closeRing.handlers.onBlur,
268
+ style: ({ pressed }) => [
269
+ styles.close,
270
+ pressed && styles.closePressed,
271
+ closeRing.focused && closeRing.style
272
+ ],
273
+ hitSlop: Math.max(0, (theme.tapMin - theme.ctl.iconBtn) / 2),
274
+ children: /* @__PURE__ */ jsx(Icon, { name: "x", size: theme.ctl.icon.md, color: theme.color.text3 })
239
275
  }
240
276
  ) : null,
241
- title ? /* @__PURE__ */ jsx(DialogTitle, { ref: titleRef, children: title }) : null,
242
- description ? /* @__PURE__ */ jsx(DialogDescription, { children: description }) : null,
243
- children
277
+ /* @__PURE__ */ jsxs(DialogPlatformContext.Provider, { value: os, children: [
278
+ title ? /* @__PURE__ */ jsx(DialogTitle, { ref: titleRef, color: skin?.ink, children: title }) : null,
279
+ description ? /* @__PURE__ */ jsx(DialogDescription, { children: description }) : null,
280
+ loading ? /* @__PURE__ */ jsx(SkeletonText, { lines: 3 }) : children
281
+ ] })
244
282
  ]
245
283
  }
246
284
  ) }) })
247
285
  ] }) });
248
286
  }
249
287
  var DialogTitle = React.forwardRef(
250
- function DialogTitle2({ children }, ref) {
251
- const { styles } = useStyles(sheet);
252
- return /* @__PURE__ */ jsx(Text, { ref, accessibilityRole: "header", style: styles.title, children });
288
+ function DialogTitle2({ children, color }, ref) {
289
+ const { styles, theme } = useStyles(sheet);
290
+ const os = resolveDialogPlatform(React.useContext(DialogPlatformContext), theme.platform);
291
+ const brand = theme.font.display !== theme.font.sans;
292
+ return /* @__PURE__ */ jsx(
293
+ Text,
294
+ {
295
+ ref,
296
+ accessibilityRole: "header",
297
+ style: [
298
+ styles.title,
299
+ resolveTextRole(theme, "dialogTitle", os === "android"),
300
+ brand ? { fontFamily: theme.font.display } : null,
301
+ color ? { color } : null
302
+ ],
303
+ children
304
+ }
305
+ );
253
306
  }
254
307
  );
255
308
  function DialogDescription({ children }) {
@@ -257,8 +310,17 @@ function DialogDescription({ children }) {
257
310
  return /* @__PURE__ */ jsx(Text, { style: styles.description, children });
258
311
  }
259
312
  function DialogFooter({ children }) {
260
- const { styles } = useStyles(sheet);
261
- return /* @__PURE__ */ jsx(View, { style: styles.footer, children });
313
+ const { styles, theme } = useStyles(sheet);
314
+ const os = resolveDialogPlatform(React.useContext(DialogPlatformContext), theme.platform);
315
+ if (os === "android") return /* @__PURE__ */ jsx(View, { style: styles.footer, children });
316
+ const ordered = React.Children.toArray(children).filter(Boolean);
317
+ const longLabel = ordered.some((child) => {
318
+ const label = React.isValidElement(child) ? child.props.children : null;
319
+ return typeof label === "string" && label.length >= 12;
320
+ });
321
+ const stacked = ordered.length >= 3 || longLabel;
322
+ const actions = stacked && ordered.length === 2 ? [...ordered].reverse() : ordered;
323
+ return /* @__PURE__ */ jsx(View, { style: stacked ? styles.footerStacked : styles.footerColumns, children: actions.map((child, i) => /* @__PURE__ */ jsx(View, { style: stacked ? void 0 : styles.column, children: child }, i)) });
262
324
  }
263
325
  var sheet = createStyleSheet((theme) => ({
264
326
  root: {
@@ -308,23 +370,27 @@ var sheet = createStyleSheet((theme) => ({
308
370
  },
309
371
  close: {
310
372
  position: "absolute",
311
- top: theme.space.s3,
312
- right: theme.space.s3,
373
+ top: theme.space.s4,
374
+ right: theme.space.s4,
313
375
  zIndex: 1,
314
- padding: theme.space.s1,
315
- borderRadius: theme.radius.full
376
+ // Ghost icon button: 36 box, the control radius, pressed = the state fill.
377
+ width: theme.ctl.iconBtn,
378
+ height: theme.ctl.iconBtn,
379
+ alignItems: "center",
380
+ justifyContent: "center",
381
+ borderRadius: theme.ctl.r.md
316
382
  },
383
+ closePressed: { backgroundColor: theme.state.pressed },
317
384
  title: {
318
- fontFamily: theme.font.display,
319
- fontWeight: `${theme.font.displayWeight}`,
320
- fontSize: theme.fontSize[26],
385
+ fontFamily: theme.font.sans,
321
386
  color: theme.color.text
322
387
  },
388
+ // F10: the subheadline role — 15 on iOS, 14 on Android.
323
389
  description: {
324
390
  fontFamily: theme.font.sans,
325
- // Reference (buildOverlays, Android): font-size:14px — sm token matches exactly.
326
- fontSize: theme.fontSize[14],
327
- lineHeight: theme.fontSize[14] * 1.5,
391
+ fontSize: theme.type.subheadline.fontSize,
392
+ lineHeight: theme.type.subheadline.lineHeight,
393
+ letterSpacing: theme.type.subheadline.letterSpacing,
328
394
  color: theme.color.text2
329
395
  },
330
396
  footer: {
@@ -332,8 +398,22 @@ var sheet = createStyleSheet((theme) => ({
332
398
  justifyContent: "flex-end",
333
399
  alignItems: "center",
334
400
  gap: theme.space.s2,
335
- marginTop: theme.space.s2
336
- }
401
+ // 24 below the body: the card's 12 gap plus this.
402
+ marginTop: theme.space.s3
403
+ },
404
+ footerColumns: {
405
+ flexDirection: "row",
406
+ alignItems: "stretch",
407
+ gap: theme.space.s2,
408
+ marginTop: theme.space.s3
409
+ },
410
+ footerStacked: {
411
+ flexDirection: "column",
412
+ alignItems: "stretch",
413
+ gap: theme.space.s2,
414
+ marginTop: theme.space.s3
415
+ },
416
+ column: { flex: 1 }
337
417
  }));
338
418
 
339
- export { Dialog, DialogDescription, DialogFooter, DialogTitle, defaultRememberStorage };
419
+ export { Dialog, DialogDescription, DialogFooter, DialogTitle, defaultRememberStorage, measureBox };