@btndprojects/loam-ui-native 0.1.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 (412) hide show
  1. package/dist/accordion/index.js +7 -3
  2. package/dist/adaptive/index.js +16 -2
  3. package/dist/address-block/index.js +23 -0
  4. package/dist/alert/index.js +8 -2
  5. package/dist/analyzer/index.js +17 -6
  6. package/dist/announcement/index.js +18 -5
  7. package/dist/appearance-picker/index.js +15 -0
  8. package/dist/audio-player/index.js +29 -3
  9. package/dist/avatar/index.js +5 -2
  10. package/dist/avatar-group/index.js +9 -3
  11. package/dist/badge/index.js +10 -4
  12. package/dist/banner/index.js +6 -2
  13. package/dist/board/index.js +18 -6
  14. package/dist/button/index.js +9 -3
  15. package/dist/camera-permission/index.js +23 -12
  16. package/dist/capture-result/index.js +30 -17
  17. package/dist/card/index.js +10 -3
  18. package/dist/card-form/index.js +19 -9
  19. package/dist/carousel/index.js +6 -2
  20. package/dist/chart/index.js +18 -5
  21. package/dist/charts/index.js +21 -6
  22. package/dist/chat/index.js +41 -0
  23. package/dist/checkbox/index.js +9 -5
  24. package/dist/checklist/index.js +20 -8
  25. package/dist/checkout/index.js +30 -12
  26. package/dist/chip/index.js +11 -5
  27. package/dist/chunk-2BZD3NAP.js +1110 -0
  28. package/dist/chunk-2YKVID2V.js +35 -0
  29. package/dist/{chunk-JUAMLEHX.js → chunk-36DA3IPO.js} +137 -37
  30. package/dist/chunk-3A56MIAN.js +599 -0
  31. package/dist/chunk-3SCKCWF5.js +298 -0
  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-4CZMQDQL.js +192 -0
  36. package/dist/chunk-5DTKORLI.js +255 -0
  37. package/dist/{chunk-LOE5YNN3.js → chunk-5J4WFXFA.js} +68 -24
  38. package/dist/chunk-5KJ7TEQ6.js +305 -0
  39. package/dist/chunk-5NU33TXK.js +529 -0
  40. package/dist/chunk-5Z5ZYMOJ.js +1 -0
  41. package/dist/chunk-6KSUS7DF.js +690 -0
  42. package/dist/chunk-6RV6UW2J.js +349 -0
  43. package/dist/chunk-6RZM7RP2.js +520 -0
  44. package/dist/{chunk-4BXMXBJO.js → chunk-75BDCC7K.js} +24 -11
  45. package/dist/{chunk-PZXZJBMP.js → chunk-7CGJBQUA.js} +357 -32
  46. package/dist/{chunk-CJ5EOYZE.js → chunk-7IVF6JLJ.js} +24 -7
  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-7NGMUVNU.js +245 -0
  51. package/dist/chunk-7PBSIXT7.js +355 -0
  52. package/dist/chunk-7QOYGENL.js +443 -0
  53. package/dist/{chunk-H6NIOQHK.js → chunk-A7SWYDE5.js} +66 -15
  54. package/dist/chunk-ADHPJALR.js +3051 -0
  55. package/dist/chunk-ALJYZLNQ.js +509 -0
  56. package/dist/chunk-APCWFOZW.js +28 -0
  57. package/dist/chunk-AQ5FIG74.js +419 -0
  58. package/dist/chunk-AWKQIE5I.js +139 -0
  59. package/dist/chunk-B2MMZZQB.js +426 -0
  60. package/dist/{chunk-ZVFE5QGU.js → chunk-B7JZ3N5G.js} +174 -97
  61. package/dist/chunk-BL37SW6G.js +1314 -0
  62. package/dist/chunk-BTRMA7GC.js +21 -0
  63. package/dist/chunk-C7IUWIUZ.js +643 -0
  64. package/dist/chunk-CA3DUVYD.js +10 -0
  65. package/dist/{chunk-S7F6XLTK.js → chunk-CBCJSO2B.js} +213 -54
  66. package/dist/chunk-CHPX4MFI.js +239 -0
  67. package/dist/chunk-CLGAMIOT.js +648 -0
  68. package/dist/chunk-CUE7VML6.js +1141 -0
  69. package/dist/chunk-CVU6S2E5.js +1587 -0
  70. package/dist/{chunk-AZRX6SAC.js → chunk-CXPQMA6Z.js} +112 -37
  71. package/dist/chunk-D2LN4I7I.js +581 -0
  72. package/dist/{chunk-UWFLYMAR.js → chunk-D34LNBO5.js} +635 -238
  73. package/dist/chunk-D4BCQICM.js +765 -0
  74. package/dist/chunk-EABKIIA4.js +1 -0
  75. package/dist/chunk-EICSYRAG.js +341 -0
  76. package/dist/chunk-EMWAJMAS.js +83 -0
  77. package/dist/chunk-EOLZWRV6.js +149 -0
  78. package/dist/chunk-EOQVTGB6.js +350 -0
  79. package/dist/{chunk-BEDBFJND.js → chunk-ESGUHNB2.js} +119 -43
  80. package/dist/{chunk-Q72LJOVE.js → chunk-F2KNBPKY.js} +74 -18
  81. package/dist/{chunk-O7AE6DAF.js → chunk-G7H3NX3G.js} +57 -24
  82. package/dist/chunk-GM7YIPB7.js +1052 -0
  83. package/dist/chunk-GVQQG435.js +581 -0
  84. package/dist/chunk-HE43OMEL.js +1056 -0
  85. package/dist/chunk-HHOMFQ7R.js +2535 -0
  86. package/dist/chunk-HJFFOOJ4.js +1 -0
  87. package/dist/chunk-HNAKS4Z3.js +207 -0
  88. package/dist/chunk-HP6ST2OW.js +352 -0
  89. package/dist/chunk-HW3OWDTU.js +1 -0
  90. package/dist/{chunk-3ENTMPQY.js → chunk-HZDB44K4.js} +102 -52
  91. package/dist/chunk-I2KLQ2HA.js +19 -0
  92. package/dist/chunk-I6CUP2LW.js +1155 -0
  93. package/dist/chunk-ICV4Y2WY.js +27 -0
  94. package/dist/chunk-IHSIENOE.js +3950 -0
  95. package/dist/{chunk-CUMUNPXY.js → chunk-IMMALLRU.js} +68 -32
  96. package/dist/chunk-J64KGCGX.js +55 -0
  97. package/dist/{chunk-IVNRBPGC.js → chunk-JA6TK7H2.js} +255 -84
  98. package/dist/{chunk-OOPPQH27.js → chunk-JAVZ5JPV.js} +83 -29
  99. package/dist/chunk-JCMTP3E4.js +1251 -0
  100. package/dist/{chunk-U7TFM2JA.js → chunk-JCXFFK64.js} +75 -18
  101. package/dist/chunk-JWCVBFDU.js +236 -0
  102. package/dist/chunk-JXRTD5RI.js +414 -0
  103. package/dist/chunk-JYIUZUIQ.js +1567 -0
  104. package/dist/chunk-K3TK3GIV.js +219 -0
  105. package/dist/chunk-KEVZIHM2.js +1511 -0
  106. package/dist/chunk-KHZDNQQD.js +171 -0
  107. package/dist/chunk-KL4GDV4V.js +131 -0
  108. package/dist/chunk-KNILMM4H.js +225 -0
  109. package/dist/chunk-KRBUZV45.js +25 -0
  110. package/dist/{chunk-ITTYJZWX.js → chunk-KXLDK6HB.js} +161 -45
  111. package/dist/chunk-KZ3X7TSL.js +196 -0
  112. package/dist/chunk-L2WMOA2V.js +474 -0
  113. package/dist/chunk-L4D5LHCH.js +109 -0
  114. package/dist/chunk-LAUJPLDB.js +853 -0
  115. package/dist/{chunk-SBMNWWBV.js → chunk-LGNTP5XA.js} +89 -17
  116. package/dist/chunk-LUZFCCSD.js +271 -0
  117. package/dist/{chunk-HPPW424V.js → chunk-LXJCP4PL.js} +129 -37
  118. package/dist/chunk-MCOZJWPU.js +731 -0
  119. package/dist/chunk-MG4SKWLL.js +2587 -0
  120. package/dist/chunk-MPEPTSER.js +414 -0
  121. package/dist/chunk-MWPJ4YGP.js +1 -0
  122. package/dist/{chunk-TKQYWZ5V.js → chunk-N7AX4OA4.js} +108 -41
  123. package/dist/chunk-NHSLM6SE.js +523 -0
  124. package/dist/chunk-NNCOFLNE.js +24 -0
  125. package/dist/{chunk-J7Q7VCVC.js → chunk-NNJLVA7M.js} +54 -15
  126. package/dist/chunk-NZG75DGA.js +282 -0
  127. package/dist/chunk-O76QXRBV.js +431 -0
  128. package/dist/chunk-OANH27AK.js +223 -0
  129. package/dist/chunk-OCHPK5YV.js +609 -0
  130. package/dist/chunk-OMHVEVX4.js +436 -0
  131. package/dist/{chunk-YF4NSSMT.js → chunk-ONKQUJWD.js} +220 -65
  132. package/dist/chunk-OVTK7A6T.js +615 -0
  133. package/dist/chunk-PCEFCOLN.js +120 -0
  134. package/dist/chunk-PFLNFIVB.js +186 -0
  135. package/dist/chunk-PHSZY37H.js +300 -0
  136. package/dist/chunk-PJLTKDVY.js +18 -0
  137. package/dist/{chunk-4YIP3CWS.js → chunk-PK7BN3MI.js} +89 -19
  138. package/dist/{chunk-KMI5ML5I.js → chunk-PWFRDRGS.js} +155 -29
  139. package/dist/chunk-PYPMD46W.js +707 -0
  140. package/dist/chunk-Q6CCHDI7.js +331 -0
  141. package/dist/chunk-QFA5WS2A.js +750 -0
  142. package/dist/chunk-QJMMM4RC.js +124 -0
  143. package/dist/chunk-QNZII37O.js +10 -0
  144. package/dist/chunk-QYWEVAM6.js +407 -0
  145. package/dist/chunk-R5T4VZ7Z.js +126 -0
  146. package/dist/chunk-R77HFLZD.js +1 -0
  147. package/dist/{chunk-YC6WORFL.js → chunk-RAESDNU5.js} +228 -102
  148. package/dist/chunk-RBYQUXNL.js +1 -0
  149. package/dist/chunk-RCM3DT5E.js +1 -0
  150. package/dist/chunk-RGNY56L7.js +282 -0
  151. package/dist/chunk-RIK6UX2K.js +344 -0
  152. package/dist/{chunk-LAECSR4H.js → chunk-RJA3RXO3.js} +75 -60
  153. package/dist/chunk-RJYRJ3LD.js +1 -0
  154. package/dist/chunk-RMA3NOY4.js +599 -0
  155. package/dist/{chunk-DM5QUKKO.js → chunk-RSWKKAHK.js} +160 -66
  156. package/dist/chunk-RVOIIX3V.js +204 -0
  157. package/dist/chunk-SA2RRBGT.js +1077 -0
  158. package/dist/chunk-SG3J4R45.js +1428 -0
  159. package/dist/chunk-SPUK7JD4.js +238 -0
  160. package/dist/chunk-SWXV2K5N.js +434 -0
  161. package/dist/chunk-SYJEPXP6.js +1303 -0
  162. package/dist/{chunk-N32RGOA5.js → chunk-SZLI34TA.js} +93 -28
  163. package/dist/{chunk-4GBOGOTV.js → chunk-T77WJA74.js} +143 -18
  164. package/dist/chunk-TDWWVJA4.js +630 -0
  165. package/dist/chunk-TFHI5XDR.js +610 -0
  166. package/dist/chunk-TH4PW2WU.js +17 -0
  167. package/dist/chunk-TTQ24HQX.js +12 -0
  168. package/dist/chunk-TUACVJNG.js +12 -0
  169. package/dist/{chunk-CYRBHQQZ.js → chunk-TUL5RUIA.js} +201 -59
  170. package/dist/{chunk-4ZAHCY44.js → chunk-TYOSA7JG.js} +74 -38
  171. package/dist/chunk-TYQTMMEV.js +1 -0
  172. package/dist/chunk-TZO6YDS7.js +346 -0
  173. package/dist/chunk-U3ETF22F.js +328 -0
  174. package/dist/chunk-U6BYHD2N.js +213 -0
  175. package/dist/{chunk-WSW6ZFAQ.js → chunk-UF6EJXPQ.js} +20 -5
  176. package/dist/chunk-UNNQIPGK.js +792 -0
  177. package/dist/chunk-UQEN55EY.js +1 -0
  178. package/dist/chunk-UQVO6AJV.js +171 -0
  179. package/dist/chunk-VFDQAAIW.js +351 -0
  180. package/dist/chunk-VIUE3VQT.js +1 -0
  181. package/dist/chunk-VJLSSSGC.js +438 -0
  182. package/dist/chunk-VLMT6KYT.js +350 -0
  183. package/dist/chunk-VMHGBUGS.js +35 -0
  184. package/dist/{chunk-7O2FMUPT.js → chunk-VQKPBYW6.js} +400 -139
  185. package/dist/{chunk-EJBDRVIH.js → chunk-VSSTWLC5.js} +61 -16
  186. package/dist/chunk-VZYYZRPN.js +1992 -0
  187. package/dist/chunk-W23G6JLF.js +37 -0
  188. package/dist/chunk-WAIJCD2V.js +480 -0
  189. package/dist/chunk-WFMQ3WKM.js +378 -0
  190. package/dist/chunk-WJ2KDRMY.js +66 -0
  191. package/dist/chunk-WKFZJO54.js +437 -0
  192. package/dist/{chunk-SYNOJOQO.js → chunk-WVVD3XOV.js} +189 -93
  193. package/dist/chunk-XAIWMSLB.js +1 -0
  194. package/dist/chunk-XBXUBBJZ.js +98 -0
  195. package/dist/chunk-XCU7MYBJ.js +1 -0
  196. package/dist/chunk-XHE4PGCI.js +717 -0
  197. package/dist/chunk-XRSJ32M3.js +331 -0
  198. package/dist/chunk-XTCVOEAW.js +1 -0
  199. package/dist/chunk-XWGXVQF6.js +58 -0
  200. package/dist/{chunk-35OFI3JG.js → chunk-Y3XKKO5K.js} +258 -123
  201. package/dist/chunk-Y4QNMBLO.js +533 -0
  202. package/dist/chunk-Y5H4CTKO.js +1 -0
  203. package/dist/chunk-YBQIN75A.js +403 -0
  204. package/dist/chunk-YJ5PXOX3.js +158 -0
  205. package/dist/{chunk-AWJOCGFZ.js → chunk-YLRSRUPS.js} +81 -55
  206. package/dist/chunk-YM6MPJ4A.js +1 -0
  207. package/dist/chunk-YV7KZENV.js +200 -0
  208. package/dist/chunk-Z7I4ZSO6.js +316 -0
  209. package/dist/chunk-ZIRMWD2B.js +555 -0
  210. package/dist/chunk-ZPMG3FWU.js +75 -0
  211. package/dist/{chunk-QWCMU5B2.js → chunk-ZTXMK2G7.js} +289 -115
  212. package/dist/chunk-ZVJCWXAL.js +541 -0
  213. package/dist/{chunk-P23EQNRQ.js → chunk-ZYQ23DPT.js} +215 -49
  214. package/dist/coachmark/index.js +10 -3
  215. package/dist/code-block/index.js +6 -3
  216. package/dist/color-field/index.js +15 -5
  217. package/dist/color-picker/index.js +23 -0
  218. package/dist/commerce/index.js +31 -17
  219. package/dist/confirm/index.js +31 -0
  220. package/dist/connection-card/index.js +34 -0
  221. package/dist/connectivity/index.js +6 -2
  222. package/dist/context-menu/index.js +13 -3
  223. package/dist/copy-button/index.js +5 -2
  224. package/dist/data-grid/index.js +35 -17
  225. package/dist/date-range-picker/index.js +22 -9
  226. package/dist/description-list/index.js +6 -1
  227. package/dist/device-frame/index.js +30 -0
  228. package/dist/dialog/index.js +10 -2
  229. package/dist/divider/index.js +2 -0
  230. package/dist/empty-state/index.js +15 -2
  231. package/dist/error-summary/index.js +9 -2
  232. package/dist/fab/index.js +7 -2
  233. package/dist/file-manager/index.js +44 -0
  234. package/dist/file-upload/index.js +16 -7
  235. package/dist/filter-bar/index.js +14 -7
  236. package/dist/flow-run/index.js +23 -13
  237. package/dist/form/index.js +32 -3
  238. package/dist/gallery/index.js +8 -2
  239. package/dist/hold-to-confirm/index.js +6 -2
  240. package/dist/hover-card/index.js +18 -0
  241. package/dist/icon-tile/index.js +10 -0
  242. package/dist/image/index.js +9 -0
  243. package/dist/index.d.ts +30789 -12332
  244. package/dist/index.js +424 -135
  245. package/dist/infinite-list/index.js +6 -2
  246. package/dist/inline-edit/index.js +8 -5
  247. package/dist/input/index.js +7 -4
  248. package/dist/interactions/index.js +5 -1
  249. package/dist/invoice/index.js +22 -9
  250. package/dist/job-row/index.js +22 -0
  251. package/dist/json-inspector/index.js +20 -0
  252. package/dist/kbd/index.js +5 -1
  253. package/dist/keyboard/index.js +9 -2
  254. package/dist/level-meter/index.js +9 -0
  255. package/dist/list-row/index.js +14 -4
  256. package/dist/log-viewer/index.js +11 -2
  257. package/dist/map-view/index.js +16 -3
  258. package/dist/markdown/index.js +12 -6
  259. package/dist/metric/index.js +10 -4
  260. package/dist/metric-strip/index.js +12 -0
  261. package/dist/money/index.js +16 -3
  262. package/dist/nav-drawer/index.js +8 -2
  263. package/dist/nav-header/index.js +15 -0
  264. package/dist/navigation/index.js +32 -2
  265. package/dist/notification-center/index.js +28 -12
  266. package/dist/number-roll/index.js +7 -2
  267. package/dist/onboarding-pager/index.js +22 -0
  268. package/dist/one-handed/index.js +5 -3
  269. package/dist/os-surfaces/index.js +9 -3
  270. package/dist/otp/index.js +9 -5
  271. package/dist/page-header/index.js +3 -1
  272. package/dist/pagination/index.js +8 -0
  273. package/dist/payment-method/index.js +21 -11
  274. package/dist/payment-status/index.js +26 -15
  275. package/dist/permission/index.js +21 -2
  276. package/dist/picker/index.js +22 -6
  277. package/dist/progress/index.js +11 -3
  278. package/dist/provenance/index.js +16 -0
  279. package/dist/pull-to-refresh/index.js +4 -2
  280. package/dist/qr-code/index.js +16 -0
  281. package/dist/query-builder/index.js +30 -0
  282. package/dist/radio-group/index.js +9 -5
  283. package/dist/rating/index.js +10 -2
  284. package/dist/receivables/index.js +35 -17
  285. package/dist/recording-indicator/index.js +21 -0
  286. package/dist/refund/index.js +28 -15
  287. package/dist/repeatable-rows/index.js +19 -0
  288. package/dist/save-status/index.js +7 -3
  289. package/dist/screen/index.js +3 -0
  290. package/dist/scroll-area/index.js +3 -1
  291. package/dist/search-field/index.js +13 -0
  292. package/dist/secret-field/index.js +19 -0
  293. package/dist/section-header/index.js +4 -0
  294. package/dist/segmented-control/index.js +4 -3
  295. package/dist/sheet/index.js +11 -3
  296. package/dist/shortcuts-sheet/index.js +2 -0
  297. package/dist/sign-in-screen/index.js +25 -0
  298. package/dist/skeleton/index.js +5 -1
  299. package/dist/slider/index.js +5 -2
  300. package/dist/sortable/index.js +8 -0
  301. package/dist/spinner/index.js +4 -1
  302. package/dist/split-button/index.js +21 -6
  303. package/dist/spotlight/index.js +9 -1
  304. package/dist/stack/index.js +2 -0
  305. package/dist/stage-timeline/index.js +8 -3
  306. package/dist/status-dot/index.js +8 -2
  307. package/dist/stepper/index.js +11 -4
  308. package/dist/streaming-text/index.js +4 -2
  309. package/dist/survey/index.js +29 -16
  310. package/dist/switch/index.js +9 -3
  311. package/dist/system-state/index.js +15 -4
  312. package/dist/tab-bar/index.js +13 -2
  313. package/dist/tabs/index.js +12 -2
  314. package/dist/tags-input/index.js +13 -0
  315. package/dist/text/index.js +4 -0
  316. package/dist/textarea/index.js +8 -5
  317. package/dist/thinking/index.js +6 -1
  318. package/dist/tile-rail/index.js +10 -0
  319. package/dist/time-field/index.js +20 -0
  320. package/dist/time-range-control/index.js +36 -0
  321. package/dist/timeline/index.js +4 -2
  322. package/dist/toast/index.js +6 -2
  323. package/dist/toolbar/index.js +5 -2
  324. package/dist/tour/index.js +15 -10
  325. package/dist/transcript/index.js +28 -0
  326. package/dist/truncation-notice/index.js +5 -2
  327. package/dist/update-notice/index.js +19 -9
  328. package/dist/video-player/index.js +29 -2
  329. package/dist/viewfinder/index.js +15 -5
  330. package/dist/widget/index.js +14 -4
  331. package/dist/wizard/index.js +10 -4
  332. package/package.json +13 -12
  333. package/dist/chunk-223Q2T2Q.js +0 -229
  334. package/dist/chunk-2A5NIQAK.js +0 -254
  335. package/dist/chunk-2GK6PHGE.js +0 -363
  336. package/dist/chunk-2ZZ7TDJ4.js +0 -324
  337. package/dist/chunk-3ARE4TES.js +0 -195
  338. package/dist/chunk-3NMD74ZU.js +0 -4
  339. package/dist/chunk-3WPW4KUN.js +0 -182
  340. package/dist/chunk-423B7SPN.js +0 -993
  341. package/dist/chunk-47FWHGUN.js +0 -394
  342. package/dist/chunk-4DS5ZWVC.js +0 -83
  343. package/dist/chunk-4SZYY6AN.js +0 -99
  344. package/dist/chunk-4YQOR7JM.js +0 -204
  345. package/dist/chunk-52X2VYTD.js +0 -228
  346. package/dist/chunk-5YNTNN5A.js +0 -177
  347. package/dist/chunk-6HT2LP62.js +0 -504
  348. package/dist/chunk-6N33LFQA.js +0 -35
  349. package/dist/chunk-6X6PQ443.js +0 -432
  350. package/dist/chunk-7CFF4HXS.js +0 -126
  351. package/dist/chunk-AI4DWZCD.js +0 -162
  352. package/dist/chunk-BTTFCMKG.js +0 -166
  353. package/dist/chunk-BV3B2HYZ.js +0 -1635
  354. package/dist/chunk-C2NTXVWM.js +0 -98
  355. package/dist/chunk-CDRZHT42.js +0 -424
  356. package/dist/chunk-DHWADYZX.js +0 -144
  357. package/dist/chunk-F5XNPWS7.js +0 -1024
  358. package/dist/chunk-FMYDDECK.js +0 -1521
  359. package/dist/chunk-GDKZTW34.js +0 -395
  360. package/dist/chunk-GL7B2DOW.js +0 -134
  361. package/dist/chunk-GNNJ4GCC.js +0 -471
  362. package/dist/chunk-HET4LLMX.js +0 -129
  363. package/dist/chunk-HZ6CNMAF.js +0 -870
  364. package/dist/chunk-IIQTAY3J.js +0 -715
  365. package/dist/chunk-JNH2TYIN.js +0 -96
  366. package/dist/chunk-JNY4ZHAR.js +0 -634
  367. package/dist/chunk-JXJB2X6M.js +0 -131
  368. package/dist/chunk-LRJNDEIA.js +0 -302
  369. package/dist/chunk-LSS54GLJ.js +0 -116
  370. package/dist/chunk-LZLHELAG.js +0 -137
  371. package/dist/chunk-MOUJOP55.js +0 -425
  372. package/dist/chunk-NKB7BZYK.js +0 -167
  373. package/dist/chunk-NQYBUO3K.js +0 -1795
  374. package/dist/chunk-O4AEHWII.js +0 -464
  375. package/dist/chunk-OETCUXQP.js +0 -134
  376. package/dist/chunk-OPXFZ4Y5.js +0 -204
  377. package/dist/chunk-PJXUJYS6.js +0 -248
  378. package/dist/chunk-PUPM2YGF.js +0 -376
  379. package/dist/chunk-QCDXZBC5.js +0 -247
  380. package/dist/chunk-QDYDBCFP.js +0 -197
  381. package/dist/chunk-QJJ6MADV.js +0 -274
  382. package/dist/chunk-QKXCPTFS.js +0 -349
  383. package/dist/chunk-RIBDXGUG.js +0 -108
  384. package/dist/chunk-RJQOOHT2.js +0 -214
  385. package/dist/chunk-RNGLIHFA.js +0 -191
  386. package/dist/chunk-RQ3HASCC.js +0 -6
  387. package/dist/chunk-RSOJT5YW.js +0 -124
  388. package/dist/chunk-RUZHTGKB.js +0 -237
  389. package/dist/chunk-RW6ZL2FQ.js +0 -284
  390. package/dist/chunk-TKVFVF5D.js +0 -95
  391. package/dist/chunk-TOXAGRDQ.js +0 -144
  392. package/dist/chunk-TUTI5HOZ.js +0 -112
  393. package/dist/chunk-UC2WGUP3.js +0 -627
  394. package/dist/chunk-UYG5L34B.js +0 -87
  395. package/dist/chunk-VBOXAEPI.js +0 -336
  396. package/dist/chunk-VCDBXW5H.js +0 -188
  397. package/dist/chunk-VEAYTRPX.js +0 -414
  398. package/dist/chunk-VQHPQEUH.js +0 -273
  399. package/dist/chunk-VXDZFJGP.js +0 -874
  400. package/dist/chunk-XNUVB5OL.js +0 -375
  401. package/dist/chunk-XOSCY2CW.js +0 -242
  402. package/dist/chunk-XXXEFXY5.js +0 -99
  403. package/dist/chunk-YDGVJETP.js +0 -60
  404. package/dist/chunk-YG3ZJHGU.js +0 -223
  405. package/dist/chunk-YTFKPRUK.js +0 -845
  406. package/dist/chunk-Z7H7VSFZ.js +0 -323
  407. package/dist/header/index.js +0 -5
  408. package/dist/search-bar/index.js +0 -5
  409. /package/dist/{chunk-3ECPOSKO.js → chunk-3BKLBYPK.js} +0 -0
  410. /package/dist/{chunk-JRLTGLN4.js → chunk-3UG6JUCV.js} +0 -0
  411. /package/dist/{chunk-RTIKSY6A.js → chunk-4QCR3K2J.js} +0 -0
  412. /package/dist/{chunk-VFCUIDRT.js → chunk-5WWRTEPS.js} +0 -0
@@ -1,8 +1,11 @@
1
- import { ContextMenuOverlay, LONG_PRESS_DELAY_MS } from './chunk-PZXZJBMP.js';
1
+ import { ContextMenuOverlay, LONG_PRESS_DELAY_MS } from './chunk-7CGJBQUA.js';
2
+ import { resolveTextRole } from './chunk-L4D5LHCH.js';
2
3
  import { haptics } from './chunk-NY2U3PBI.js';
3
- import { Icon } from './chunk-TKVFVF5D.js';
4
+ import { isAndroidIdiom } from './chunk-TH4PW2WU.js';
5
+ import { useLabels } from './chunk-APCWFOZW.js';
6
+ import { Icon } from './chunk-PCEFCOLN.js';
4
7
  import * as React from 'react';
5
- import { Animated, Easing, PanResponder, View, Pressable, StyleSheet, Text } from 'react-native';
8
+ import { View, Animated, Easing, PanResponder, Pressable, StyleSheet, Text } from 'react-native';
6
9
  import { createStyleSheet, useLoamTheme, useStyles } from '@btndprojects/loam-theme-native';
7
10
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
11
 
@@ -39,6 +42,8 @@ function activeSwipeSide(offset) {
39
42
  if (offset < 0) return "trailing";
40
43
  return null;
41
44
  }
45
+ var SWIPE_PEEK_FRACTION = 0.4;
46
+ var swipePeekShown = false;
42
47
  function swipeActionCollapses(action) {
43
48
  return action.collapses ?? action.destructive === true;
44
49
  }
@@ -115,6 +120,15 @@ function resolveSwipeAccessibilityAction(actions, name) {
115
120
  if (name === "longpress") return "menu";
116
121
  return actions.find((a) => a.key === name) ?? null;
117
122
  }
123
+ var DEFAULT_LABELS = {
124
+ dragHandle: "Drag to reorder",
125
+ rowActions: "Row actions",
126
+ release: "Release",
127
+ swipeHint: "Long press for actions",
128
+ moveUp: "Move up",
129
+ moveDown: "Move down",
130
+ reorderHint: (handle) => `${handle}. Use the move up and move down actions to reorder.`
131
+ };
118
132
  function resolveRowMotion(motion, osReduced) {
119
133
  if (motion === "none") return "none";
120
134
  if (motion === "reduced") return "reduced";
@@ -125,7 +139,7 @@ function line(value, style) {
125
139
  return typeof value === "string" || typeof value === "number" ? /* @__PURE__ */ jsx(Text, { style, numberOfLines: 1, children: value }) : value;
126
140
  }
127
141
  function SelectionIndicator({ selected }) {
128
- const theme = useLoamTheme();
142
+ const theme = useLoamTheme("list-row");
129
143
  const { styles } = useStyles(sheet, { selectedBox: selected });
130
144
  return /* @__PURE__ */ jsx(
131
145
  View,
@@ -152,9 +166,11 @@ function RowBody({
152
166
  trailing,
153
167
  onPress,
154
168
  divider = false,
155
- disabled = false,
169
+ chevron = false,
170
+ platform,
171
+ disabled: disabledProp,
156
172
  accessibilityLabel,
157
- density = "comfortable",
173
+ density: densityProp,
158
174
  selectable = false,
159
175
  selected = false,
160
176
  onToggleSelected,
@@ -166,19 +182,55 @@ function RowBody({
166
182
  accessibilityHint,
167
183
  dragHandle
168
184
  }) {
169
- const { styles } = useStyles(sheet, { divider, disabled, density, selected });
185
+ const theme = useLoamTheme("list-row");
186
+ const group = React.useContext(ListGroupContext);
187
+ const android = isAndroidIdiom(theme, platform ?? group?.platform);
188
+ const density = densityProp ?? group?.density ?? "comfortable";
189
+ const disabled = disabledProp ?? group?.disabled ?? false;
190
+ const { styles } = useStyles(sheet, {
191
+ divider: divider && !group && !android,
192
+ disabled,
193
+ density
194
+ });
195
+ const [textStart, setTextStart] = React.useState();
196
+ const separator = !android && group?.separator === true;
197
+ const metrics = density === "compact" ? {} : {
198
+ minHeight: android ? subtitle != null ? theme.space[72] : theme.space[56] : subtitle != null ? theme.space[60] : theme.space[44],
199
+ paddingVertical: theme.space[android ? 8 : 6]
200
+ };
201
+ const titleRole = resolveTextRole(theme, "body", android);
202
+ const subtitleRole = resolveTextRole(theme, "subheadline", android);
203
+ const fill = selected ? { backgroundColor: theme.state.selected } : group && android ? { backgroundColor: theme.color.surface } : null;
170
204
  const content = /* @__PURE__ */ jsxs(Fragment, { children: [
171
- selectable && selected ? /* @__PURE__ */ jsx(View, { accessible: false, style: styles.selectBar }) : null,
172
205
  selectable ? /* @__PURE__ */ jsx(View, { style: styles.slot, children: /* @__PURE__ */ jsx(SelectionIndicator, { selected }) }) : null,
173
206
  leading != null ? /* @__PURE__ */ jsx(View, { style: styles.slot, children: leading }) : null,
174
- /* @__PURE__ */ jsxs(View, { style: styles.main, children: [
175
- line(title, styles.title),
176
- line(subtitle, styles.subtitle)
177
- ] }),
207
+ /* @__PURE__ */ jsxs(
208
+ View,
209
+ {
210
+ style: styles.main,
211
+ onLayout: separator ? (e) => setTextStart(e.nativeEvent.layout.x) : void 0,
212
+ children: [
213
+ line(title, [styles.title, titleRole]),
214
+ line(subtitle, [styles.subtitle, subtitleRole])
215
+ ]
216
+ }
217
+ ),
178
218
  trailing != null ? /* @__PURE__ */ jsx(View, { style: styles.slot, children: trailing }) : null,
179
- dragHandle != null ? dragHandle : null
219
+ chevron ? /* @__PURE__ */ jsx(View, { style: styles.slot, children: /* @__PURE__ */ jsx(Icon, { name: "chevron-right", size: theme.icon.sm, color: theme.color.text3 }) }) : null,
220
+ dragHandle != null ? dragHandle : null,
221
+ separator ? /* @__PURE__ */ jsx(
222
+ View,
223
+ {
224
+ "aria-hidden": true,
225
+ accessibilityElementsHidden: true,
226
+ importantForAccessibility: "no-hide-descendants",
227
+ testID: "list-row-separator",
228
+ style: [styles.separator, { start: textStart ?? theme.space.s4 }]
229
+ }
230
+ ) : null
180
231
  ] });
181
- const primaryPress = selectable ? onToggleSelected : onPress;
232
+ const readOnly = group?.interactive === false;
233
+ const primaryPress = readOnly ? void 0 : selectable ? onToggleSelected : onPress;
182
234
  if (primaryPress || interactive) {
183
235
  const label = accessibilityLabel ?? (typeof title === "string" ? title : void 0);
184
236
  return /* @__PURE__ */ jsx(
@@ -195,21 +247,32 @@ function RowBody({
195
247
  onPress: disabled ? void 0 : primaryPress,
196
248
  onLongPress: disabled ? void 0 : onLongPress,
197
249
  delayLongPress: LONG_PRESS_DELAY_MS,
198
- style: ({ pressed }) => [styles.base, style, pressed && !disabled ? styles.pressed : null],
250
+ android_ripple: android ? { color: theme.state.pressed, borderless: false } : void 0,
251
+ style: ({ pressed }) => [
252
+ styles.base,
253
+ metrics,
254
+ fill,
255
+ style,
256
+ pressed && !disabled && !android ? styles.pressed : null
257
+ ],
199
258
  children: content
200
259
  }
201
260
  );
202
261
  }
203
- return /* @__PURE__ */ jsx(View, { style: [styles.base, style], children: content });
262
+ return /* @__PURE__ */ jsx(View, { style: [styles.base, metrics, fill, style], children: content });
204
263
  }
205
264
  function ListRow(props) {
206
265
  const {
207
266
  swipeActions,
208
267
  swipeReleaseLabel,
209
268
  swipeMenuLabel,
269
+ menuItems,
210
270
  swipeHint,
271
+ swipePeek = true,
272
+ onSwipePeek,
211
273
  selectable = false,
212
274
  selected,
275
+ value,
213
276
  defaultSelected = false,
214
277
  onSelectedChange,
215
278
  draggable = false,
@@ -220,11 +283,15 @@ function ListRow(props) {
220
283
  onMoveDown,
221
284
  dragHandleLabel,
222
285
  motion = "full",
286
+ labels: labelsProp,
223
287
  ...rest
224
288
  } = props;
225
- const isControlled = selected !== void 0;
289
+ const labels = useLabels("listRow", DEFAULT_LABELS, labelsProp);
290
+ const groupSelected = React.useContext(ListGroupContext)?.selected;
291
+ const effectiveSelected = selected ?? (selectable && groupSelected && value !== void 0 ? groupSelected.includes(value) : void 0);
292
+ const isControlled = effectiveSelected !== void 0;
226
293
  const [internalSelected, setInternalSelected] = React.useState(defaultSelected);
227
- const isSelected = isControlled ? selected : internalSelected;
294
+ const isSelected = effectiveSelected ?? internalSelected;
228
295
  const toggleSelected = React.useCallback(() => {
229
296
  const next = !isSelected;
230
297
  if (!isControlled) setInternalSelected(next);
@@ -248,33 +315,83 @@ function ListRow(props) {
248
315
  onDragEnd,
249
316
  onMoveUp,
250
317
  onMoveDown,
251
- handleLabel: dragHandleLabel ?? "Drag to reorder",
318
+ handleLabel: dragHandleLabel ?? labels.dragHandle,
319
+ labels,
252
320
  motion
253
321
  }
254
322
  );
255
323
  }
256
- if (sides.leading.length === 0 && sides.trailing.length === 0) return /* @__PURE__ */ jsx(RowBody, { ...row });
324
+ if (sides.leading.length === 0 && sides.trailing.length === 0) {
325
+ return menuItems && menuItems.length > 0 ? /* @__PURE__ */ jsx(MenuRow, { row, items: menuItems, menuLabel: swipeMenuLabel ?? labels.rowActions }) : /* @__PURE__ */ jsx(RowBody, { ...row });
326
+ }
257
327
  return /* @__PURE__ */ jsx(
258
328
  SwipeRow,
259
329
  {
260
330
  row,
261
331
  sides,
262
- releaseLabel: swipeReleaseLabel ?? "Release",
263
- menuLabel: swipeMenuLabel ?? "Row actions",
264
- hint: swipeHint ?? "Long press for actions",
265
- motion
332
+ menuItems,
333
+ releaseLabel: swipeReleaseLabel ?? labels.release,
334
+ menuLabel: swipeMenuLabel ?? labels.rowActions,
335
+ hint: swipeHint ?? labels.swipeHint,
336
+ motion,
337
+ peek: swipePeek,
338
+ onPeek: onSwipePeek
266
339
  }
267
340
  );
268
341
  }
342
+ function MenuRow({
343
+ row,
344
+ items,
345
+ menuLabel
346
+ }) {
347
+ const [open, setOpen] = React.useState(false);
348
+ const [anchor, setAnchor] = React.useState(null);
349
+ const rootRef = React.useRef(null);
350
+ const openMenu = () => {
351
+ const node = rootRef.current;
352
+ if (node && typeof node.measureInWindow === "function") {
353
+ node.measureInWindow((mx, my, width, height) => setAnchor({ x: mx, y: my, width, height }));
354
+ }
355
+ haptics.impact("heavy");
356
+ setOpen(true);
357
+ };
358
+ return /* @__PURE__ */ jsxs(View, { ref: rootRef, collapsable: false, children: [
359
+ /* @__PURE__ */ jsx(
360
+ RowBody,
361
+ {
362
+ ...row,
363
+ interactive: true,
364
+ onLongPress: openMenu,
365
+ accessibilityActions: [{ name: "longpress", label: menuLabel }],
366
+ onAccessibilityAction: (e) => {
367
+ if (e.nativeEvent.actionName === "longpress") openMenu();
368
+ }
369
+ }
370
+ ),
371
+ /* @__PURE__ */ jsx(
372
+ ContextMenuOverlay,
373
+ {
374
+ open,
375
+ onClose: () => setOpen(false),
376
+ items,
377
+ anchor,
378
+ accessibilityLabel: menuLabel
379
+ }
380
+ )
381
+ ] });
382
+ }
269
383
  function SwipeRow({
270
384
  row,
271
385
  sides,
386
+ menuItems: menuOverride,
272
387
  releaseLabel,
273
388
  menuLabel,
274
389
  hint,
275
- motion
390
+ motion,
391
+ peek,
392
+ onPeek
276
393
  }) {
277
- const theme = useLoamTheme();
394
+ const theme = useLoamTheme("list-row");
278
395
  const { styles } = useStyles(sheet, { divider: false, disabled: false });
279
396
  const reducedMotion = resolveRowMotion(motion, theme.reduceMotion) !== "full";
280
397
  const hasLeading = sides.leading.length > 0;
@@ -506,6 +623,31 @@ function SwipeRow({
506
623
  rowWidth.current = e.nativeEvent.layout.width || FALLBACK_ROW_WIDTH;
507
624
  rowHeight.current = e.nativeEvent.layout.height || rowHeight.current;
508
625
  };
626
+ const peekRef = React.useRef({ peek, onPeek, rails, springTo, hasTrailing });
627
+ peekRef.current = { peek, onPeek, rails, springTo, hasTrailing };
628
+ React.useEffect(() => {
629
+ const cfg = peekRef.current;
630
+ if (!cfg.peek || swipePeekShown) return;
631
+ const side = cfg.hasTrailing ? "trailing" : "leading";
632
+ const open = cfg.rails[side].openOffset;
633
+ if (open === 0) return;
634
+ swipePeekShown = true;
635
+ let back = null;
636
+ const start = setTimeout(() => {
637
+ if (axis.current !== null || cur.current !== 0) return;
638
+ peekRef.current.onPeek?.();
639
+ peekRef.current.springTo(open * SWIPE_PEEK_FRACTION, 0, SWIPE_SPRING_SNAP);
640
+ back = setTimeout(() => {
641
+ if (axis.current === null && Math.abs(cur.current) < Math.abs(open)) {
642
+ peekRef.current.springTo(0, 0, SWIPE_SPRING_SNAP);
643
+ }
644
+ }, theme.duration.slow);
645
+ }, theme.duration.slow);
646
+ return () => {
647
+ clearTimeout(start);
648
+ if (back) clearTimeout(back);
649
+ };
650
+ }, []);
509
651
  const openMenu = () => {
510
652
  const node = rootRef.current;
511
653
  if (node && typeof node.measureInWindow === "function") {
@@ -520,7 +662,7 @@ function SwipeRow({
520
662
  if (target === "menu") openMenu();
521
663
  else if (target) fire(target);
522
664
  };
523
- const menuItems = allActions.map((a) => ({
665
+ const menuItems = menuOverride ?? allActions.map((a) => ({
524
666
  key: a.key,
525
667
  label: a.label,
526
668
  icon: a.icon ?? (a.destructive === true ? "trash" : "folder"),
@@ -627,7 +769,7 @@ function SwipeActionButton({
627
769
  reduced,
628
770
  onPress
629
771
  }) {
630
- const theme = useLoamTheme();
772
+ const theme = useLoamTheme("list-row");
631
773
  const destructive = action.destructive === true;
632
774
  const { styles } = useStyles(sheet, { destructive });
633
775
  const p = side === "leading" ? x.interpolate({
@@ -671,10 +813,10 @@ function SwipeActionButton({
671
813
  ) }) })
672
814
  );
673
815
  }
674
- function dragAccessibilityActions(canMoveUp, canMoveDown) {
816
+ function dragAccessibilityActions(canMoveUp, canMoveDown, labels = DEFAULT_LABELS) {
675
817
  const actions = [];
676
- if (canMoveUp) actions.push({ name: "moveUp", label: "Move up" });
677
- if (canMoveDown) actions.push({ name: "moveDown", label: "Move down" });
818
+ if (canMoveUp) actions.push({ name: "moveUp", label: labels.moveUp });
819
+ if (canMoveDown) actions.push({ name: "moveDown", label: labels.moveDown });
678
820
  return actions;
679
821
  }
680
822
  function DraggableRow({
@@ -685,9 +827,10 @@ function DraggableRow({
685
827
  onMoveUp,
686
828
  onMoveDown,
687
829
  handleLabel,
830
+ labels,
688
831
  motion
689
832
  }) {
690
- const theme = useLoamTheme();
833
+ const theme = useLoamTheme("list-row");
691
834
  const { styles } = useStyles(sheet, { divider: false, disabled: false });
692
835
  const reducedMotion = resolveRowMotion(motion, theme.reduceMotion) !== "full";
693
836
  const noMotion = motion === "none";
@@ -750,7 +893,7 @@ function DraggableRow({
750
893
  onPanResponderTerminate: () => settleRef.current()
751
894
  })
752
895
  ).current;
753
- const dragActions = dragAccessibilityActions(onMoveUp != null, onMoveDown != null);
896
+ const dragActions = dragAccessibilityActions(onMoveUp != null, onMoveDown != null, labels);
754
897
  const onRowAction = (e) => {
755
898
  if (e.nativeEvent.actionName === "moveUp") onMoveUp?.();
756
899
  else if (e.nativeEvent.actionName === "moveDown") onMoveDown?.();
@@ -790,35 +933,73 @@ function DraggableRow({
790
933
  dragHandle: handle,
791
934
  accessibilityActions: dragActions.length > 0 ? dragActions : void 0,
792
935
  onAccessibilityAction: dragActions.length > 0 ? onRowAction : void 0,
793
- accessibilityHint: `${handleLabel}. Use the move up and move down actions to reorder.`
936
+ accessibilityHint: labels.reorderHint(handleLabel)
794
937
  }
795
938
  )
796
939
  }
797
940
  );
798
941
  }
799
- function List({ children, role }) {
942
+ var ListGroupContext = React.createContext(null);
943
+ function List({
944
+ children,
945
+ role,
946
+ platform,
947
+ density,
948
+ disabled,
949
+ interactive,
950
+ leading,
951
+ trailing,
952
+ tone,
953
+ selected
954
+ }) {
955
+ const theme = useLoamTheme("list-row");
800
956
  const { styles } = useStyles(sheet, { divider: false, disabled: false });
957
+ const android = isAndroidIdiom(theme, platform);
801
958
  const items = React.Children.toArray(children).filter(Boolean);
802
- return /* @__PURE__ */ jsx(View, { role, accessibilityRole: role, style: styles.list, children: items.map((child, i) => /* @__PURE__ */ jsxs(React.Fragment, { children: [
803
- child,
804
- i < items.length - 1 ? (
805
- // Hidden, not just unlabelled. The dividers are interleaved between
806
- // the children, so under `role="list"` they would be owned children
807
- // of the list alongside the items — and a `list` may own only
808
- // `listitem`s. Hiding them keeps `aria-required-children` satisfied
809
- // while `role="list"` satisfies `aria-required-parent`, which is the
810
- // trade the board and notification-center notes both warn about.
811
- /* @__PURE__ */ jsx(
812
- View,
813
- {
814
- "aria-hidden": true,
815
- accessibilityElementsHidden: true,
816
- importantForAccessibility: "no-hide-descendants",
817
- style: styles.listDivider
818
- }
819
- )
820
- ) : null
821
- ] }, i)) });
959
+ const isRow = (child) => React.isValidElement(child) && child.type === ListRow;
960
+ return /* @__PURE__ */ jsxs(
961
+ View,
962
+ {
963
+ role,
964
+ accessibilityRole: role,
965
+ style: [
966
+ styles.list,
967
+ android ? styles.listAndroid : null,
968
+ tone && { backgroundColor: theme.color[`${tone}Soft`], borderColor: theme.edge[tone] }
969
+ ],
970
+ children: [
971
+ leading != null ? /* @__PURE__ */ jsx(View, { style: styles.listSlot, children: leading }) : null,
972
+ items.map((child, i) => /* @__PURE__ */ jsxs(
973
+ ListGroupContext.Provider,
974
+ {
975
+ value: { platform, separator: i < items.length - 1, density, disabled, interactive, selected },
976
+ children: [
977
+ child,
978
+ i < items.length - 1 && !isRow(child) && !android ? (
979
+ // Hidden, not just unlabelled. The dividers are interleaved between
980
+ // the children, so under `role="list"` they would be owned children
981
+ // of the list alongside the items — and a `list` may own only
982
+ // `listitem`s. Hiding them keeps `aria-required-children` satisfied
983
+ // while `role="list"` satisfies `aria-required-parent`, which is the
984
+ // trade the board and notification-center notes both warn about.
985
+ /* @__PURE__ */ jsx(
986
+ View,
987
+ {
988
+ "aria-hidden": true,
989
+ accessibilityElementsHidden: true,
990
+ importantForAccessibility: "no-hide-descendants",
991
+ style: styles.listDivider
992
+ }
993
+ )
994
+ ) : null
995
+ ]
996
+ },
997
+ i
998
+ )),
999
+ trailing != null ? /* @__PURE__ */ jsx(View, { style: styles.listSlot, children: trailing }) : null
1000
+ ]
1001
+ }
1002
+ );
822
1003
  }
823
1004
  var sheet = createStyleSheet((theme) => ({
824
1005
  base: {
@@ -836,14 +1017,6 @@ var sheet = createStyleSheet((theme) => ({
836
1017
  comfortable: { minHeight: theme.layout.listRowH, paddingVertical: theme.space.s3 },
837
1018
  compact: { minHeight: theme.ctl.lg, paddingVertical: theme.space.s2 }
838
1019
  },
839
- // A selected row is drawn on an opaque `surface` — not the translucent
840
- // `selected` wash — so its `text2` subtitle keeps a full AA margin (5.65:1
841
- // in light) instead of the 4.28:1 the wash would leave it with over the
842
- // page background. The accent signal is the start-edge bar + filled check.
843
- selected: {
844
- true: { backgroundColor: theme.color.surface },
845
- false: {}
846
- },
847
1020
  divider: {
848
1021
  true: { borderBottomWidth: theme.borderWidth.thin, borderBottomColor: theme.color.border },
849
1022
  false: {}
@@ -854,16 +1027,13 @@ var sheet = createStyleSheet((theme) => ({
854
1027
  }
855
1028
  }
856
1029
  },
857
- pressed: { backgroundColor: theme.color.surface2 },
1030
+ pressed: { backgroundColor: theme.state.pressed },
858
1031
  slot: { flexShrink: 0 },
859
1032
  main: { flex: 1, minWidth: 0, gap: theme.space.s1 },
860
- // Row title = the "Headline" role (the one emphasised body-size style).
1033
+ // Row title: the font family, ink and platform role come from resolveTextRole
1034
+ // at render (body 17 / 400 iOS, bodyLarge Android); only the ink is fixed here.
861
1035
  title: {
862
1036
  fontFamily: theme.font.sans,
863
- fontWeight: theme.type.headline.fontWeight,
864
- fontSize: theme.type.headline.fontSize,
865
- lineHeight: theme.type.headline.lineHeight,
866
- letterSpacing: theme.type.headline.letterSpacing,
867
1037
  color: theme.color.text
868
1038
  },
869
1039
  // Row subtitle = the "Subheadline" role (supporting text under the title).
@@ -878,10 +1048,25 @@ var sheet = createStyleSheet((theme) => ({
878
1048
  backgroundColor: theme.color.surface,
879
1049
  borderWidth: theme.borderWidth.thin,
880
1050
  borderColor: theme.color.border,
881
- borderRadius: theme.radius.xl,
1051
+ borderRadius: theme.radius.lg,
882
1052
  overflow: "hidden"
883
1053
  },
1054
+ listSlot: { paddingHorizontal: theme.space.s4, paddingVertical: theme.space.s2 },
884
1055
  listDivider: { height: theme.space[1], backgroundColor: theme.color.border },
1056
+ // Android: no dividers — the rows sit on surface tiles separated by space.
1057
+ listAndroid: {
1058
+ backgroundColor: "transparent",
1059
+ borderWidth: 0,
1060
+ gap: theme.space[2]
1061
+ },
1062
+ separator: {
1063
+ position: "absolute",
1064
+ end: 0,
1065
+ bottom: 0,
1066
+ height: theme.borderWidth.thin,
1067
+ backgroundColor: theme.color.border,
1068
+ pointerEvents: "none"
1069
+ },
885
1070
  /* ---- selection affordance ---- */
886
1071
  /**
887
1072
  * The leading selection circle. `w2` is the static ring weight (part of the
@@ -907,20 +1092,6 @@ var sheet = createStyleSheet((theme) => ({
907
1092
  }
908
1093
  }
909
1094
  },
910
- /**
911
- * The start-edge accent bar marking a selected row. Absolutely positioned so
912
- * it adds no layout shift between selected/unselected, and `accent` clears the
913
- * 3:1 non-text-contrast bar against the surface in both modes.
914
- */
915
- selectBar: {
916
- position: "absolute",
917
- top: 0,
918
- bottom: 0,
919
- start: 0,
920
- width: theme.space.s1,
921
- backgroundColor: theme.color.accent,
922
- pointerEvents: "none"
923
- },
924
1095
  /* ---- drag layer ---- */
925
1096
  /** The draggable root at rest — transparent, so a grouped List's surface shows. */
926
1097
  dragRoot: { backgroundColor: "transparent" },