@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,8 +1,10 @@
1
+ import { TranscriptSlot } from './chunk-3A56MIAN.js';
2
+ import { formatTime } from './chunk-CA3DUVYD.js';
1
3
  import { useLabels } from './chunk-APCWFOZW.js';
2
- import { Icon } from './chunk-UXGIW7OK.js';
4
+ import { Icon } from './chunk-PCEFCOLN.js';
3
5
  import { useResolvedMotion, springConfig, motionTiming } from './chunk-J64KGCGX.js';
4
6
  import * as React from 'react';
5
- import { View, Pressable, Text, Animated, Easing } from 'react-native';
7
+ import { Animated, Easing, View, Pressable, Text, ActivityIndicator, Platform, BackHandler } from 'react-native';
6
8
  import { createStyleSheet, useStyles, useLoamTheme } from '@btndprojects/loam-theme-native';
7
9
  import { jsxs, jsx } from 'react/jsx-runtime';
8
10
 
@@ -20,35 +22,54 @@ var DEFAULT_LABELS = {
20
22
  artwork: "Artwork 1:1",
21
23
  position: "Playback position",
22
24
  skipBack: "Skip back",
23
- skipForward: "Skip forward"
25
+ skipForward: "Skip forward",
26
+ speed: "Playback speed",
27
+ sleep: "Sleep timer",
28
+ route: "Audio output",
29
+ chapters: "Chapters",
30
+ queue: "Up next",
31
+ loading: "Loading",
32
+ skipBy: (label, seconds) => `${label} ${seconds} seconds`
24
33
  };
25
- function PlayPauseGlyph({ playing, size, color }) {
34
+ function PlayPauseGlyph({
35
+ playing,
36
+ size,
37
+ color
38
+ }) {
26
39
  const theme = useLoamTheme("audio-player");
27
40
  const level = useResolvedMotion(void 0, "audio-player");
28
41
  const v = React.useRef(new Animated.Value(playing ? 1 : 0)).current;
29
42
  React.useEffect(() => {
30
43
  const toValue = playing ? 1 : 0;
31
44
  if (level === "none") v.setValue(toValue);
32
- else if (level === "reduced") Animated.timing(v, { ...motionTiming(level), toValue, useNativeDriver: true }).start();
33
- else Animated.spring(v, { ...springConfig(theme, "fs"), toValue, useNativeDriver: true }).start();
45
+ else if (level === "reduced")
46
+ Animated.timing(v, { ...motionTiming(level), toValue, useNativeDriver: true }).start();
47
+ else
48
+ Animated.spring(v, { ...springConfig(theme, "fs"), toValue, useNativeDriver: true }).start();
34
49
  }, [playing, level, v, theme]);
35
50
  const layer = (shown) => ({
36
51
  position: "absolute",
37
52
  opacity: shown,
38
53
  transform: level === "full" ? [{ scale: shown.interpolate({ inputRange: [0, 1], outputRange: [0.5, 1] }) }] : []
39
54
  });
40
- const pauseShown = v.interpolate({ inputRange: [0, 1], outputRange: [0, 1], extrapolate: "clamp" });
41
- const playShown = v.interpolate({ inputRange: [0, 1], outputRange: [1, 0], extrapolate: "clamp" });
55
+ const pauseShown = v.interpolate({
56
+ inputRange: [0, 1],
57
+ outputRange: [0, 1],
58
+ extrapolate: "clamp"
59
+ });
60
+ const playShown = v.interpolate({
61
+ inputRange: [0, 1],
62
+ outputRange: [1, 0],
63
+ extrapolate: "clamp"
64
+ });
42
65
  return /* @__PURE__ */ jsxs(View, { style: { width: size, height: size, alignItems: "center", justifyContent: "center" }, children: [
43
66
  /* @__PURE__ */ jsx(Animated.View, { style: layer(playShown), children: /* @__PURE__ */ jsx(Icon, { name: "play", size, color }) }),
44
67
  /* @__PURE__ */ jsx(Animated.View, { style: layer(pauseShown), children: /* @__PURE__ */ jsx(Icon, { name: "pause", size, color }) })
45
68
  ] });
46
69
  }
47
70
  var SEEK_STEP = 5;
48
- function formatTime(seconds) {
49
- const s = Number.isFinite(seconds) && seconds > 0 ? Math.floor(seconds) : 0;
50
- return `${Math.floor(s / 60)}:${String(s % 60).padStart(2, "0")}`;
51
- }
71
+ var MINI_SIZE = { sm: [48, 32], md: [56, 36], lg: [64, 44] };
72
+ var SHEET_SIZE = { sm: [200, 48], md: [264, 56], lg: [320, 64] };
52
73
  function AudioMiniBar({
53
74
  title,
54
75
  meta,
@@ -56,12 +77,28 @@ function AudioMiniBar({
56
77
  progress,
57
78
  onPress,
58
79
  onTogglePlay,
59
- labels: labelsProp
80
+ labels: labelsProp,
81
+ size = "md",
82
+ loading = false,
83
+ motion = "none"
60
84
  }) {
61
85
  const labels = useLabels("audioPlayer", DEFAULT_LABELS, labelsProp);
62
86
  const { styles } = useStyles(sheet);
63
87
  const theme = useLoamTheme("audio-player");
64
- return /* @__PURE__ */ jsxs(View, { style: styles.mini, children: [
88
+ const resolved = useResolvedMotion(motion, "audio-player");
89
+ const [rowH, artEdge] = MINI_SIZE[size];
90
+ const pct = progress != null ? Math.max(0, Math.min(1, progress)) : 0;
91
+ const fill = React.useRef(new Animated.Value(pct)).current;
92
+ React.useEffect(() => {
93
+ if (resolved !== "full") return fill.setValue(pct);
94
+ Animated.timing(fill, {
95
+ toValue: pct,
96
+ duration: theme.duration.base,
97
+ easing: Easing.bezier(...theme.easing.base),
98
+ useNativeDriver: false
99
+ }).start();
100
+ }, [pct, resolved, fill, theme.duration.base, theme.easing.base]);
101
+ return /* @__PURE__ */ jsxs(View, { style: [styles.mini, { minHeight: theme.space[rowH] }], "aria-busy": loading || void 0, children: [
65
102
  /* @__PURE__ */ jsxs(
66
103
  Pressable,
67
104
  {
@@ -70,7 +107,12 @@ function AudioMiniBar({
70
107
  onPress,
71
108
  style: styles.miniBody,
72
109
  children: [
73
- /* @__PURE__ */ jsx(View, { style: styles.miniArt }),
110
+ /* @__PURE__ */ jsx(
111
+ View,
112
+ {
113
+ style: [styles.miniArt, { width: theme.space[artEdge], height: theme.space[artEdge] }]
114
+ }
115
+ ),
74
116
  /* @__PURE__ */ jsxs(View, { style: styles.miniText, children: [
75
117
  /* @__PURE__ */ jsx(Text, { style: styles.miniTitle, numberOfLines: 1, children: title }),
76
118
  meta ? /* @__PURE__ */ jsx(Text, { style: styles.miniMeta, numberOfLines: 1, children: meta }) : null
@@ -86,13 +128,23 @@ function AudioMiniBar({
86
128
  onPress: onTogglePlay,
87
129
  hitSlop: Math.max(0, (theme.tapMin - theme.ctl.iconBtn) / 2),
88
130
  style: styles.miniTransport,
89
- children: /* @__PURE__ */ jsx(PlayPauseGlyph, { playing, size: 16, color: theme.color.accentInk })
131
+ children: loading ? /* @__PURE__ */ jsx(
132
+ ActivityIndicator,
133
+ {
134
+ size: "small",
135
+ color: theme.color.accentInk,
136
+ accessibilityLabel: labels.loading
137
+ }
138
+ ) : /* @__PURE__ */ jsx(PlayPauseGlyph, { playing, size: 16, color: theme.color.accentInk })
90
139
  }
91
140
  ),
92
141
  progress != null ? /* @__PURE__ */ jsx(
93
- View,
142
+ Animated.View,
94
143
  {
95
- style: [styles.miniProgress, { width: `${Math.max(0, Math.min(1, progress)) * 100}%` }]
144
+ style: [
145
+ styles.miniProgress,
146
+ { width: fill.interpolate({ inputRange: [0, 1], outputRange: ["0%", "100%"] }) }
147
+ ]
96
148
  }
97
149
  ) : null
98
150
  ] });
@@ -108,7 +160,23 @@ function AudioSheet({
108
160
  onSkipBack,
109
161
  onSkipForward,
110
162
  onCollapse,
111
- labels: labelsProp
163
+ skipBackBy = 15,
164
+ skipForwardBy = 30,
165
+ playbackRate,
166
+ onSpeedPress,
167
+ sleepTimer,
168
+ onSleepPress,
169
+ onRoutePress,
170
+ chapters,
171
+ onChapterPress,
172
+ queue,
173
+ onQueuePress,
174
+ transcript,
175
+ labels: labelsProp,
176
+ size = "md",
177
+ loading = false,
178
+ side = "bottom",
179
+ presentation = "sheet"
112
180
  }) {
113
181
  const labels = useLabels("audioPlayer", DEFAULT_LABELS, labelsProp);
114
182
  const { styles } = useStyles(sheet);
@@ -118,24 +186,30 @@ function AudioSheet({
118
186
  const held = React.useRef(new Animated.Value(0)).current;
119
187
  const hold = (to) => {
120
188
  if (theme.reduceMotion) return held.setValue(0);
121
- Animated.spring(held, { ...springConfig(theme, "fs"), toValue: to, useNativeDriver: true }).start();
189
+ Animated.spring(held, {
190
+ ...springConfig(theme, "fs"),
191
+ toValue: to,
192
+ useNativeDriver: true
193
+ }).start();
122
194
  };
123
195
  const seekFromX = (x) => {
124
196
  if (!onSeek || trackWidth <= 0 || duration <= 0) return;
125
197
  onSeek(Math.min(duration, Math.max(0, x / trackWidth * duration)));
126
198
  };
127
- return /* @__PURE__ */ jsxs(View, { style: styles.sheetBody, children: [
128
- /* @__PURE__ */ jsx(
129
- Pressable,
130
- {
131
- accessibilityRole: "button",
132
- accessibilityLabel: labels.collapse,
133
- onPress: onCollapse,
134
- style: styles.grabberHit,
135
- children: /* @__PURE__ */ jsx(View, { style: styles.grabber })
136
- }
137
- ),
138
- /* @__PURE__ */ jsx(View, { style: styles.artwork, children: /* @__PURE__ */ jsx(Text, { style: styles.artworkLabel, children: labels.artwork }) }),
199
+ const [artMax, primaryEdge] = SHEET_SIZE[size];
200
+ const grabber = presentation === "inline" ? null : /* @__PURE__ */ jsx(
201
+ Pressable,
202
+ {
203
+ accessibilityRole: "button",
204
+ accessibilityLabel: labels.collapse,
205
+ onPress: onCollapse,
206
+ style: styles.grabberHit,
207
+ children: /* @__PURE__ */ jsx(View, { style: styles.grabber })
208
+ }
209
+ );
210
+ return /* @__PURE__ */ jsxs(View, { style: styles.sheetBody, "aria-busy": loading || void 0, children: [
211
+ side === "top" ? null : grabber,
212
+ /* @__PURE__ */ jsx(View, { style: [styles.artwork, { maxWidth: artMax }], children: /* @__PURE__ */ jsx(Text, { style: styles.artworkLabel, children: labels.artwork }) }),
139
213
  /* @__PURE__ */ jsxs(View, { style: styles.sheetText, children: [
140
214
  /* @__PURE__ */ jsx(Text, { style: styles.sheetTitle, children: title }),
141
215
  meta ? /* @__PURE__ */ jsx(Text, { style: styles.sheetMeta, children: meta }) : null
@@ -168,7 +242,12 @@ function AudioSheet({
168
242
  {
169
243
  style: [
170
244
  styles.progressTrack,
171
- { pointerEvents: "none", transform: [{ scaleY: held.interpolate({ inputRange: [0, 1], outputRange: [1, 2] }) }] }
245
+ {
246
+ pointerEvents: "none",
247
+ transform: [
248
+ { scaleY: held.interpolate({ inputRange: [0, 1], outputRange: [1, 2] }) }
249
+ ]
250
+ }
172
251
  ],
173
252
  children: /* @__PURE__ */ jsx(View, { style: [styles.progressFill, { width: `${pct * 100}%` }] })
174
253
  }
@@ -184,14 +263,17 @@ function AudioSheet({
184
263
  ] })
185
264
  ] }),
186
265
  /* @__PURE__ */ jsxs(View, { style: styles.transportRow, children: [
187
- /* @__PURE__ */ jsx(
266
+ /* @__PURE__ */ jsxs(
188
267
  Pressable,
189
268
  {
190
269
  accessibilityRole: "button",
191
- accessibilityLabel: labels.skipBack,
270
+ accessibilityLabel: labels.skipBy(labels.skipBack, skipBackBy),
192
271
  onPress: onSkipBack,
193
- style: styles.transportSecondary,
194
- children: /* @__PURE__ */ jsx(Icon, { name: "skip-back", size: 22, color: theme.color.text2 })
272
+ style: styles.skipCapsule,
273
+ children: [
274
+ /* @__PURE__ */ jsx(Icon, { name: "rotate-ccw", size: 18, color: theme.color.text2 }),
275
+ /* @__PURE__ */ jsx(Text, { style: styles.skipText, children: skipBackBy })
276
+ ]
195
277
  }
196
278
  ),
197
279
  /* @__PURE__ */ jsx(
@@ -200,21 +282,124 @@ function AudioSheet({
200
282
  accessibilityRole: "button",
201
283
  accessibilityLabel: playing ? labels.pause : labels.play,
202
284
  onPress: onTogglePlay,
203
- style: styles.transportPrimary,
204
- children: /* @__PURE__ */ jsx(PlayPauseGlyph, { playing, size: 26, color: theme.color.accentInk })
285
+ style: [styles.transportPrimary, { width: primaryEdge, height: primaryEdge }],
286
+ children: loading ? /* @__PURE__ */ jsx(
287
+ ActivityIndicator,
288
+ {
289
+ size: "small",
290
+ color: theme.color.accentInk,
291
+ accessibilityLabel: labels.loading
292
+ }
293
+ ) : /* @__PURE__ */ jsx(PlayPauseGlyph, { playing, size: 26, color: theme.color.accentInk })
205
294
  }
206
295
  ),
207
- /* @__PURE__ */ jsx(
296
+ /* @__PURE__ */ jsxs(
208
297
  Pressable,
209
298
  {
210
299
  accessibilityRole: "button",
211
- accessibilityLabel: labels.skipForward,
300
+ accessibilityLabel: labels.skipBy(labels.skipForward, skipForwardBy),
212
301
  onPress: onSkipForward,
213
- style: styles.transportSecondary,
214
- children: /* @__PURE__ */ jsx(Icon, { name: "skip-forward", size: 22, color: theme.color.text2 })
302
+ style: styles.skipCapsule,
303
+ children: [
304
+ /* @__PURE__ */ jsx(Text, { style: styles.skipText, children: skipForwardBy }),
305
+ /* @__PURE__ */ jsx(View, { style: { transform: [{ scaleX: -1 }] }, children: /* @__PURE__ */ jsx(Icon, { name: "rotate-ccw", size: 18, color: theme.color.text2 }) })
306
+ ]
215
307
  }
216
308
  )
217
- ] })
309
+ ] }),
310
+ playbackRate != null || sleepTimer != null || onSleepPress || onRoutePress ? /* @__PURE__ */ jsxs(View, { style: styles.capsuleRow, children: [
311
+ playbackRate != null ? /* @__PURE__ */ jsx(
312
+ Pressable,
313
+ {
314
+ accessibilityRole: "button",
315
+ accessibilityLabel: `${labels.speed} ${playbackRate}\xD7`,
316
+ onPress: onSpeedPress,
317
+ style: styles.capsule,
318
+ children: /* @__PURE__ */ jsxs(Text, { style: styles.capsuleText, children: [
319
+ playbackRate,
320
+ "\xD7"
321
+ ] })
322
+ }
323
+ ) : null,
324
+ sleepTimer != null || onSleepPress ? /* @__PURE__ */ jsxs(
325
+ Pressable,
326
+ {
327
+ accessibilityRole: "button",
328
+ accessibilityLabel: sleepTimer ? `${labels.sleep} ${sleepTimer}` : labels.sleep,
329
+ onPress: onSleepPress,
330
+ style: styles.capsule,
331
+ children: [
332
+ /* @__PURE__ */ jsx(Icon, { name: "moon", size: 16, color: theme.color.text2 }),
333
+ sleepTimer ? /* @__PURE__ */ jsx(Text, { style: styles.capsuleText, children: sleepTimer }) : null
334
+ ]
335
+ }
336
+ ) : null,
337
+ onRoutePress ? /* @__PURE__ */ jsx(
338
+ Pressable,
339
+ {
340
+ accessibilityRole: "button",
341
+ accessibilityLabel: labels.route,
342
+ onPress: onRoutePress,
343
+ style: styles.capsule,
344
+ children: /* @__PURE__ */ jsx(Icon, { name: "volume", size: 16, color: theme.color.text2 })
345
+ }
346
+ ) : null
347
+ ] }) : null,
348
+ transcript ? /* @__PURE__ */ jsx(
349
+ TranscriptSlot,
350
+ {
351
+ transcript,
352
+ currentTime: position,
353
+ onSeek: (t) => onSeek?.(t)
354
+ }
355
+ ) : null,
356
+ chapters && chapters.length > 0 ? /* @__PURE__ */ jsxs(View, { style: styles.list, role: "group", accessibilityLabel: labels.chapters, children: [
357
+ /* @__PURE__ */ jsx(Text, { style: styles.listHead, children: labels.chapters }),
358
+ chapters.map((c, i) => {
359
+ const next = chapters[i + 1];
360
+ const current = position >= c.start && (!next || position < next.start);
361
+ return /* @__PURE__ */ jsxs(
362
+ Pressable,
363
+ {
364
+ accessibilityRole: "button",
365
+ "aria-current": current ? "true" : void 0,
366
+ accessibilityLabel: `${c.title}, ${formatTime(c.start)}`,
367
+ onPress: () => onChapterPress?.(c.start),
368
+ style: [styles.row, current && styles.rowCurrent],
369
+ children: [
370
+ /* @__PURE__ */ jsx(
371
+ Text,
372
+ {
373
+ style: [styles.rowTitle, current && styles.rowTitleCurrent],
374
+ numberOfLines: 1,
375
+ children: c.title
376
+ }
377
+ ),
378
+ /* @__PURE__ */ jsx(Text, { style: styles.time, children: formatTime(c.start) })
379
+ ]
380
+ },
381
+ `${c.start}-${c.title}`
382
+ );
383
+ })
384
+ ] }) : null,
385
+ queue && queue.length > 0 ? /* @__PURE__ */ jsxs(View, { style: styles.list, role: "group", accessibilityLabel: labels.queue, children: [
386
+ /* @__PURE__ */ jsx(Text, { style: styles.listHead, children: labels.queue }),
387
+ queue.map((q, i) => /* @__PURE__ */ jsxs(
388
+ Pressable,
389
+ {
390
+ accessibilityRole: "button",
391
+ accessibilityLabel: q.meta ? `${q.title}, ${q.meta}` : q.title,
392
+ onPress: () => onQueuePress?.(i),
393
+ style: styles.row,
394
+ children: [
395
+ /* @__PURE__ */ jsx(Text, { style: styles.rowTitle, numberOfLines: 1, children: q.title }),
396
+ q.meta ? /* @__PURE__ */ jsx(Text, { style: styles.time, children: q.meta }) : null
397
+ ]
398
+ },
399
+ `${i}-${q.title}`
400
+ ))
401
+ ] }) : null,
402
+ side === "top" ? grabber : null
218
403
  ] });
219
404
  }
220
405
  function AudioPlayerCollapsible({
@@ -255,6 +440,15 @@ function AudioPlayerCollapsible({
255
440
  expand.setValue(to);
256
441
  }
257
442
  }, [isExpanded, resolvedMotion, fade, expand, theme.duration.slow, theme.easing.spring]);
443
+ React.useEffect(() => {
444
+ if (Platform.OS !== "android" || !isExpanded) return void 0;
445
+ const sub = BackHandler.addEventListener("hardwareBackPress", () => {
446
+ if (expanded == null) setOwnExpanded(false);
447
+ onExpandedChange?.(false);
448
+ return true;
449
+ });
450
+ return () => sub.remove();
451
+ }, [isExpanded, expanded, onExpandedChange]);
258
452
  const setExpanded = (next) => {
259
453
  if (expanded == null) setOwnExpanded(next);
260
454
  onExpandedChange?.(next);
@@ -264,7 +458,7 @@ function AudioPlayerCollapsible({
264
458
  Animated.View,
265
459
  {
266
460
  style: { opacity: fade.interpolate({ inputRange: [0, 1], outputRange: [1, 0] }) },
267
- children: /* @__PURE__ */ jsx(AudioMiniBar, { ...rest, onPress: () => setExpanded(true) })
461
+ children: /* @__PURE__ */ jsx(AudioMiniBar, { ...rest, motion, onPress: () => setExpanded(true) })
268
462
  }
269
463
  ),
270
464
  /* @__PURE__ */ jsx(
@@ -276,6 +470,7 @@ function AudioPlayerCollapsible({
276
470
  height: expand.interpolate({ inputRange: [0, 1], outputRange: [0, sheetHeight] }),
277
471
  opacity: fade
278
472
  },
473
+ rest.side === "top" ? styles.sheetTop : null,
279
474
  { pointerEvents: isExpanded ? "auto" : "none" }
280
475
  ],
281
476
  children: /* @__PURE__ */ jsx(AudioSheet, { ...rest, onCollapse: () => setExpanded(false) })
@@ -290,9 +485,10 @@ var sheet = createStyleSheet((theme) => ({
290
485
  position: "relative",
291
486
  flexDirection: "row",
292
487
  alignItems: "center",
293
- gap: theme.space[11],
294
- paddingVertical: theme.space[9],
295
- paddingHorizontal: theme.space[11],
488
+ gap: theme.space[12],
489
+ // 56 row, px 12, gap 12 (the mini bar's own rhythm — not the dock's).
490
+ minHeight: theme.space[56],
491
+ paddingHorizontal: theme.space[12],
296
492
  borderRadius: theme.radius.lg,
297
493
  borderWidth: theme.borderWidth.base,
298
494
  borderColor: theme.color.border,
@@ -302,8 +498,8 @@ var sheet = createStyleSheet((theme) => ({
302
498
  },
303
499
  miniBody: { flexDirection: "row", alignItems: "center", gap: theme.space.s3, flex: 1 },
304
500
  miniArt: {
305
- width: theme.space[34],
306
- height: theme.space[34],
501
+ width: theme.space[36],
502
+ height: theme.space[36],
307
503
  borderRadius: theme.radius.sm,
308
504
  backgroundColor: theme.color.surface3
309
505
  },
@@ -316,8 +512,8 @@ var sheet = createStyleSheet((theme) => ({
316
512
  },
317
513
  miniMeta: {
318
514
  fontFamily: theme.font.sans,
319
- fontSize: theme.type.caption2.fontSize,
320
- color: theme.color.text3
515
+ fontSize: theme.type.caption1.fontSize,
516
+ color: theme.color.text2
321
517
  },
322
518
  miniTransport: {
323
519
  // Square icon button on the control-size ramp (icon-button tier = 36).
@@ -342,8 +538,8 @@ var sheet = createStyleSheet((theme) => ({
342
538
  right: 0,
343
539
  bottom: 0,
344
540
  overflow: "hidden",
345
- borderTopLeftRadius: theme.radius.xl,
346
- borderTopRightRadius: theme.radius.xl,
541
+ borderTopStartRadius: theme.radius.lg,
542
+ borderTopEndRadius: theme.radius.lg,
347
543
  backgroundColor: theme.color.surface,
348
544
  // The sheet sits directly on the content with no scrim of its own, so its
349
545
  // top edge is the entire boundary — and `shadow.lg` zeroes out under high
@@ -354,6 +550,18 @@ var sheet = createStyleSheet((theme) => ({
354
550
  borderTopColor: theme.edge.neutral,
355
551
  ...theme.shadow.lg
356
552
  },
553
+ // Anchored to the top edge: the rounded corners and the rule flip to the bottom.
554
+ sheetTop: {
555
+ top: 0,
556
+ bottom: void 0,
557
+ borderTopStartRadius: 0,
558
+ borderTopEndRadius: 0,
559
+ borderTopWidth: 0,
560
+ borderBottomStartRadius: theme.radius.lg,
561
+ borderBottomEndRadius: theme.radius.lg,
562
+ borderBottomWidth: theme.borderWidth.base,
563
+ borderBottomColor: theme.edge.neutral
564
+ },
357
565
  sheetBody: {
358
566
  paddingTop: theme.space[14],
359
567
  paddingHorizontal: theme.space[20],
@@ -369,19 +577,21 @@ var sheet = createStyleSheet((theme) => ({
369
577
  backgroundColor: theme.color.surface3
370
578
  },
371
579
  artwork: {
372
- height: theme.space[152],
373
- borderRadius: theme.radius.lg,
580
+ // 1:1 art, 264 at most, centred; corner 16.
581
+ width: "100%",
582
+ maxWidth: 264,
583
+ aspectRatio: 1,
584
+ alignSelf: "center",
585
+ borderRadius: theme.radius[16],
374
586
  backgroundColor: theme.color.surface3,
375
587
  alignItems: "center",
376
588
  justifyContent: "center"
377
589
  },
378
590
  artworkLabel: {
591
+ ...theme.type.overline,
379
592
  fontFamily: theme.font.mono,
380
- fontSize: theme.type.caption2.fontSize,
381
593
  // Uppercase wants the caps tracking step, which is a ratio — multiply it by
382
594
  // the size rather than restating the product as a bare 1.2.
383
- letterSpacing: theme.type.caption2.fontSize * theme.tracking.caps,
384
- textTransform: "uppercase",
385
595
  // On the `surface3` artwork placeholder, `text3` is 4.16:1 (WCAG fail);
386
596
  // primary `text` clears 4.5:1.
387
597
  color: theme.color.text
@@ -395,8 +605,8 @@ var sheet = createStyleSheet((theme) => ({
395
605
  },
396
606
  sheetMeta: {
397
607
  fontFamily: theme.font.sans,
398
- fontSize: theme.type.footnote.fontSize,
399
- color: theme.color.text3
608
+ fontSize: theme.type.caption1.fontSize,
609
+ color: theme.color.text2
400
610
  },
401
611
  progressWrap: { gap: theme.space[6] },
402
612
  progressHit: { justifyContent: "center" },
@@ -413,15 +623,71 @@ var sheet = createStyleSheet((theme) => ({
413
623
  timeRow: { flexDirection: "row", justifyContent: "space-between" },
414
624
  time: {
415
625
  fontFamily: theme.font.mono,
416
- fontSize: theme.fontSize[10],
417
- color: theme.color.text3
626
+ fontSize: theme.fontSize[12],
627
+ color: theme.color.text2
418
628
  },
419
629
  transportRow: {
420
630
  flexDirection: "row",
421
631
  alignItems: "center",
422
632
  justifyContent: "center",
423
- gap: theme.space[22]
633
+ gap: theme.space[24]
634
+ },
635
+ skipCapsule: {
636
+ minWidth: theme.tapMin,
637
+ height: theme.ctl.lg,
638
+ paddingHorizontal: theme.space[12],
639
+ borderRadius: theme.radius.full,
640
+ flexDirection: "row",
641
+ alignItems: "center",
642
+ justifyContent: "center",
643
+ gap: theme.space[4]
644
+ },
645
+ skipText: {
646
+ fontFamily: theme.font.mono,
647
+ fontSize: theme.fontSize[12],
648
+ color: theme.color.text2
649
+ },
650
+ capsuleRow: { flexDirection: "row", justifyContent: "center", gap: theme.space[8] },
651
+ capsule: {
652
+ minWidth: theme.tapMin,
653
+ height: theme.ctl.lg,
654
+ paddingHorizontal: theme.space[14],
655
+ borderRadius: theme.radius.full,
656
+ backgroundColor: theme.color.surface3,
657
+ flexDirection: "row",
658
+ alignItems: "center",
659
+ justifyContent: "center",
660
+ gap: theme.space[6]
661
+ },
662
+ capsuleText: {
663
+ fontFamily: theme.font.mono,
664
+ fontSize: theme.fontSize[12],
665
+ color: theme.color.text
666
+ },
667
+ list: { gap: theme.space[2] },
668
+ listHead: {
669
+ ...theme.type.overline,
670
+ fontFamily: theme.font.mono,
671
+ color: theme.color.text3,
672
+ paddingVertical: theme.space[6]
673
+ },
674
+ row: {
675
+ minHeight: theme.tapMin,
676
+ paddingHorizontal: theme.space[12],
677
+ borderRadius: theme.radius.md,
678
+ flexDirection: "row",
679
+ alignItems: "center",
680
+ justifyContent: "space-between",
681
+ gap: theme.space[12]
682
+ },
683
+ rowCurrent: { backgroundColor: theme.state.selected },
684
+ rowTitle: {
685
+ flex: 1,
686
+ fontFamily: theme.font.sans,
687
+ fontSize: theme.type.footnote.fontSize,
688
+ color: theme.color.text
424
689
  },
690
+ rowTitleCurrent: { fontWeight: theme.fontWeight.semibold },
425
691
  transportSecondary: {
426
692
  width: theme.tapMin,
427
693
  height: theme.tapMin,
@@ -429,8 +695,8 @@ var sheet = createStyleSheet((theme) => ({
429
695
  justifyContent: "center"
430
696
  },
431
697
  transportPrimary: {
432
- width: theme.space[58],
433
- height: theme.space[58],
698
+ width: theme.space[56],
699
+ height: theme.space[56],
434
700
  borderRadius: theme.radius.full,
435
701
  backgroundColor: theme.color.accent,
436
702
  alignItems: "center",