@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,9 +1,11 @@
1
- import { PhaseAnnouncement, NoteBlock } from './chunk-LKFC4CS7.js';
2
- import { Card, CardHeader, CardTitle, CardContent, CardFooter } from './chunk-YXOAPXMU.js';
3
- import { useAnalyzerCopy, decorativeProps, camInk } from './chunk-HJLPZA4X.js';
4
- import { Button } from './chunk-E2E3I5W2.js';
1
+ import { PhaseAnnouncement, NoteBlock } from './chunk-SZLI34TA.js';
2
+ import { IconTile } from './chunk-XBXUBBJZ.js';
3
+ import { CardHeader, CardTitle, CardContent, CardFooter, Card } from './chunk-PWFRDRGS.js';
4
+ import { useAnalyzerCopy, decorativeProps, camInk } from './chunk-OCHPK5YV.js';
5
+ import { Button } from './chunk-5DTKORLI.js';
6
+ import { isAndroidIdiom } from './chunk-TH4PW2WU.js';
5
7
  import { useLabels } from './chunk-APCWFOZW.js';
6
- import { Icon } from './chunk-UXGIW7OK.js';
8
+ import { Icon } from './chunk-PCEFCOLN.js';
7
9
  import { useResolvedMotion, motionTiming, springConfig } from './chunk-J64KGCGX.js';
8
10
  import * as React from 'react';
9
11
  import { Animated, View, Text, Platform, findNodeHandle, AccessibilityInfo } from 'react-native';
@@ -25,7 +27,19 @@ var STATE_ICON = {
25
27
  denied: "lock",
26
28
  unavailable: "monitor"
27
29
  };
30
+ function Wrap({
31
+ layout,
32
+ style,
33
+ children
34
+ }) {
35
+ if (layout === "card")
36
+ return /* @__PURE__ */ jsx(Card, { variant: "elevated", style, children });
37
+ return /* @__PURE__ */ jsx(View, { style, children });
38
+ }
28
39
  function ScreenShell({
40
+ size = "lg",
41
+ variant = "primary",
42
+ loading = false,
29
43
  state,
30
44
  icon,
31
45
  onPrimary,
@@ -34,11 +48,16 @@ function ScreenShell({
34
48
  announce = true,
35
49
  autoFocus = false,
36
50
  body,
51
+ layout = "screen",
37
52
  copy: copyProp
38
53
  }) {
39
54
  const words = useAnalyzerCopy(copyProp);
40
55
  const theme = useLoamTheme("camera-permission");
41
- const { styles } = useStyles(permissionSheet, { inert });
56
+ const { styles } = useStyles(permissionSheet, {
57
+ inert,
58
+ layout,
59
+ lead: layout === "screen" && isAndroidIdiom(theme)
60
+ });
42
61
  const screen = permissionScreen(state, words);
43
62
  const copy = body ?? screen.body;
44
63
  const heading = React.useRef(null);
@@ -74,15 +93,15 @@ function ScreenShell({
74
93
  transform: level === "full" ? [{ translateY: rise.interpolate({ inputRange: [0, 1], outputRange: [12, 0] }) }] : []
75
94
  }
76
95
  ],
77
- children: /* @__PURE__ */ jsxs(Card, { variant: "elevated", style: styles.card, children: [
96
+ children: /* @__PURE__ */ jsxs(Wrap, { layout, style: styles.card, children: [
78
97
  /* @__PURE__ */ jsx(PhaseAnnouncement, { message: announce ? `${screen.heading}. ${copy}` : null }),
79
98
  /* @__PURE__ */ jsxs(CardHeader, { children: [
80
- /* @__PURE__ */ jsx(View, { accessible: false, style: styles.glyph, ...decorativeProps(), children: /* @__PURE__ */ jsx(
81
- Icon,
99
+ /* @__PURE__ */ jsx(View, { accessible: false, ...decorativeProps(), children: /* @__PURE__ */ jsx(
100
+ IconTile,
82
101
  {
83
- name: icon ?? STATE_ICON[state],
84
- size: theme.icon.lg,
85
- color: theme.color.infoOnSoft
102
+ icon: icon ?? STATE_ICON[state],
103
+ tone: state === "denied" || state === "unavailable" ? "warn" : "accent",
104
+ size
86
105
  }
87
106
  ) }),
88
107
  /* @__PURE__ */ jsx(CardTitle, { children: /* @__PURE__ */ jsx(Text, { ref: heading, accessibilityRole: "header", style: styles.heading, children: screen.heading }) }),
@@ -94,31 +113,51 @@ function ScreenShell({
94
113
  Button,
95
114
  {
96
115
  variant: "outline",
97
- size: "lg",
116
+ size,
98
117
  fullWidth: true,
99
118
  disabled: inert,
100
119
  onPress: onSecondary,
101
120
  children: screen.secondary
102
121
  }
103
122
  ) }) : null,
104
- /* @__PURE__ */ jsx(View, { style: styles.actionSlot, children: /* @__PURE__ */ jsx(Button, { variant: "primary", size: "lg", fullWidth: true, disabled: inert, onPress: onPrimary, children: screen.primary }) })
123
+ /* @__PURE__ */ jsx(View, { style: styles.actionSlot, children: /* @__PURE__ */ jsx(
124
+ Button,
125
+ {
126
+ variant,
127
+ size,
128
+ loading,
129
+ fullWidth: true,
130
+ disabled: inert,
131
+ onPress: onPrimary,
132
+ children: screen.primary
133
+ }
134
+ ) })
105
135
  ] }) })
106
136
  ] })
107
137
  }
108
138
  );
109
139
  }
110
140
  function CameraPermissionPrimer({
141
+ size,
142
+ variant,
143
+ loading,
144
+ icon,
111
145
  privacyStatement,
112
146
  prompting = false,
113
147
  onContinue,
114
148
  onUpload,
115
149
  autoFocus,
116
150
  announce,
151
+ layout,
117
152
  copy
118
153
  }) {
119
154
  return /* @__PURE__ */ jsx(
120
155
  ScreenShell,
121
156
  {
157
+ size,
158
+ variant,
159
+ loading,
160
+ icon,
122
161
  state: prompting ? "prompting" : "undetermined",
123
162
  inert: prompting,
124
163
  body: privacyStatement,
@@ -126,47 +165,72 @@ function CameraPermissionPrimer({
126
165
  onSecondary: onUpload,
127
166
  autoFocus,
128
167
  announce,
168
+ layout,
129
169
  copy
130
170
  }
131
171
  );
132
172
  }
133
173
  function CameraDenied({
174
+ size,
175
+ variant,
176
+ loading,
177
+ icon,
134
178
  onOpenSettings,
135
179
  onUpload,
136
180
  autoFocus,
137
181
  announce,
182
+ layout,
138
183
  copy
139
184
  }) {
140
185
  return /* @__PURE__ */ jsx(
141
186
  ScreenShell,
142
187
  {
188
+ size,
189
+ variant,
190
+ loading,
143
191
  state: "denied",
192
+ icon,
144
193
  onPrimary: onOpenSettings,
145
194
  onSecondary: onUpload,
146
195
  autoFocus,
147
196
  announce,
197
+ layout,
148
198
  copy
149
199
  }
150
200
  );
151
201
  }
152
202
  function CameraUnavailable({
203
+ size,
204
+ variant,
205
+ loading,
206
+ icon,
153
207
  onUpload,
154
208
  autoFocus,
155
209
  announce,
210
+ layout,
156
211
  copy
157
212
  }) {
158
213
  return /* @__PURE__ */ jsx(
159
214
  ScreenShell,
160
215
  {
216
+ size,
217
+ variant,
218
+ loading,
219
+ icon,
161
220
  state: "unavailable",
162
221
  onPrimary: onUpload,
163
222
  autoFocus,
164
223
  announce,
224
+ layout,
165
225
  copy
166
226
  }
167
227
  );
168
228
  }
169
229
  function CameraPermissionScreen({
230
+ size,
231
+ variant,
232
+ loading,
233
+ icon,
170
234
  state,
171
235
  onRequestPermission,
172
236
  onOpenSettings,
@@ -174,6 +238,7 @@ function CameraPermissionScreen({
174
238
  privacyStatement,
175
239
  autoFocus,
176
240
  announce,
241
+ layout,
177
242
  copy
178
243
  }) {
179
244
  const theme = useLoamTheme("camera-permission");
@@ -205,10 +270,15 @@ function CameraPermissionScreen({
205
270
  return /* @__PURE__ */ jsx(
206
271
  CameraDenied,
207
272
  {
273
+ size,
274
+ variant,
275
+ loading,
276
+ icon,
208
277
  onOpenSettings,
209
278
  onUpload,
210
279
  autoFocus,
211
280
  announce,
281
+ layout,
212
282
  copy
213
283
  }
214
284
  );
@@ -217,9 +287,14 @@ function CameraPermissionScreen({
217
287
  return /* @__PURE__ */ jsx(
218
288
  CameraUnavailable,
219
289
  {
290
+ size,
291
+ variant,
292
+ loading,
293
+ icon,
220
294
  onUpload,
221
295
  autoFocus,
222
296
  announce,
297
+ layout,
223
298
  copy
224
299
  }
225
300
  );
@@ -227,18 +302,27 @@ function CameraPermissionScreen({
227
302
  return /* @__PURE__ */ jsx(
228
303
  CameraPermissionPrimer,
229
304
  {
305
+ size,
306
+ variant,
307
+ loading,
308
+ icon,
230
309
  prompting: state2 === "prompting",
231
310
  privacyStatement,
232
311
  onContinue: onRequestPermission,
233
312
  onUpload,
234
313
  autoFocus,
235
314
  announce,
315
+ layout,
236
316
  copy
237
317
  }
238
318
  );
239
319
  }
240
320
  }
241
321
  function CaptureDone({
322
+ size = "lg",
323
+ variant = "primary",
324
+ loading = false,
325
+ icon = "check",
242
326
  label: labelProp,
243
327
  actionLabel,
244
328
  labels,
@@ -253,9 +337,17 @@ function CaptureDone({
253
337
  const { styles } = useStyles(permissionSheet);
254
338
  return /* @__PURE__ */ jsxs(View, { testID: "loam-capture-done", style: styles.done, children: [
255
339
  /* @__PURE__ */ jsx(PhaseAnnouncement, { message: announce ? label : null }),
256
- /* @__PURE__ */ jsx(View, { accessible: false, style: styles.doneMark, ...decorativeProps(), children: /* @__PURE__ */ jsx(Icon, { name: "check", size: theme.icon.lg, color: theme.color.goodInk }) }),
340
+ /* @__PURE__ */ jsx(
341
+ View,
342
+ {
343
+ accessible: false,
344
+ style: [styles.doneMark, { width: theme.ctl[size], height: theme.ctl[size] }],
345
+ ...decorativeProps(),
346
+ children: /* @__PURE__ */ jsx(Icon, { name: icon, size: theme.icon.lg, color: theme.color.goodInk })
347
+ }
348
+ ),
257
349
  /* @__PURE__ */ jsx(Text, { style: [styles.doneLabel, { color: camInk(theme) }], children: label }),
258
- /* @__PURE__ */ jsx(Button, { variant: "primary", size: "lg", fullWidth: true, onPress: onTakeAnother, children: actionLabel ?? t.takeAnother })
350
+ /* @__PURE__ */ jsx(Button, { variant, size, loading, fullWidth: true, onPress: onTakeAnother, children: actionLabel ?? t.takeAnother })
259
351
  ] });
260
352
  }
261
353
  var permissionSheet = createStyleSheet((theme) => ({
@@ -264,27 +356,31 @@ var permissionSheet = createStyleSheet((theme) => ({
264
356
  alignItems: "center",
265
357
  variants: {
266
358
  // The OS owns the dialog that is up. We draw nothing over it, and we do
267
- // not leave live controls under it either.
359
+ // not leave live controls under it either — and we do not dim the copy:
360
+ // the three clauses are the point of the screen. Both buttons are
361
+ // `disabled`, and the shell takes no touch.
268
362
  inert: {
269
- true: { opacity: theme.state.disabledOpacity, pointerEvents: "none" },
363
+ true: { pointerEvents: "none" },
270
364
  false: { pointerEvents: "auto" }
271
- }
365
+ },
366
+ // The full-screen layout: the system ground, centred (iOS) or leading
367
+ // (Android) content.
368
+ layout: {
369
+ screen: {
370
+ flexGrow: 1,
371
+ justifyContent: "center",
372
+ padding: theme.space[24],
373
+ backgroundColor: theme.color.bg
374
+ },
375
+ card: {}
376
+ },
377
+ lead: { true: { alignItems: "flex-start" }, false: {} }
272
378
  }
273
379
  },
274
380
  card: {
275
381
  width: "100%",
276
382
  maxWidth: theme.panel.lg
277
383
  },
278
- glyph: {
279
- width: theme.ctl.lg,
280
- height: theme.ctl.lg,
281
- alignItems: "center",
282
- justifyContent: "center",
283
- borderRadius: theme.radius.full,
284
- backgroundColor: theme.color.infoSoft,
285
- borderWidth: theme.borderWidth.base,
286
- borderColor: theme.edge.info
287
- },
288
384
  heading: {
289
385
  fontFamily: theme.font.sans,
290
386
  fontSize: theme.type.title3.fontSize,
@@ -320,7 +416,7 @@ var permissionSheet = createStyleSheet((theme) => ({
320
416
  alignItems: "center",
321
417
  gap: theme.space[12],
322
418
  padding: theme.space[16],
323
- borderRadius: theme.radius.xl,
419
+ borderRadius: theme.radius.lg,
324
420
  backgroundColor: theme.black.a12,
325
421
  borderWidth: theme.borderWidth.base,
326
422
  borderColor: theme.white.a5
@@ -0,0 +1,350 @@
1
+ import { LevelMeter } from './chunk-EOLZWRV6.js';
2
+ import { StatusDot } from './chunk-OANH27AK.js';
3
+ import { Thinking } from './chunk-LUZFCCSD.js';
4
+ import { Button } from './chunk-5DTKORLI.js';
5
+ import { Text } from './chunk-L4D5LHCH.js';
6
+ import { Badge } from './chunk-LGNTP5XA.js';
7
+ import { announce } from './chunk-W23G6JLF.js';
8
+ import { useLabels } from './chunk-APCWFOZW.js';
9
+ import { Icon } from './chunk-PCEFCOLN.js';
10
+ import { useResolvedMotion } from './chunk-J64KGCGX.js';
11
+ import * as React from 'react';
12
+ import { View, Animated, Easing } from 'react-native';
13
+ import { createStyleSheet, useLoamTheme, useStyles } from '@btndprojects/loam-theme-native';
14
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
15
+
16
+ var DEFAULT_LABELS = {
17
+ recording: "Recording",
18
+ listening: "Listening\u2026",
19
+ paused: "Paused",
20
+ saving: "Saving\u2026",
21
+ savingReason: "Saving the recording",
22
+ failed: (kind) => kind === "recording" ? "Recording stopped" : "Listening stopped",
23
+ stop: "Stop",
24
+ done: "Done",
25
+ pause: "Pause",
26
+ resume: "Resume",
27
+ retry: "Retry",
28
+ dismiss: "Dismiss",
29
+ started: (kind) => kind === "recording" ? "Recording started" : "Listening",
30
+ announcePaused: "Paused",
31
+ saved: "Saved"
32
+ };
33
+ function formatRecordingTime(ms) {
34
+ const total = Math.max(0, Math.floor(ms / 1e3));
35
+ const h = Math.floor(total / 3600);
36
+ const m = Math.floor(total % 3600 / 60);
37
+ const sec = String(total % 60).padStart(2, "0");
38
+ return h > 0 ? `${h}:${String(m).padStart(2, "0")}:${sec}` : `${m}:${sec}`;
39
+ }
40
+ function useElapsed(startedAt, running) {
41
+ const start = startedAt === void 0 ? void 0 : +startedAt;
42
+ const pausedFor = React.useRef(0);
43
+ const pausedAt = React.useRef(null);
44
+ const [now, setNow] = React.useState(() => Date.now());
45
+ React.useEffect(() => {
46
+ pausedFor.current = 0;
47
+ pausedAt.current = null;
48
+ }, [start]);
49
+ React.useEffect(() => {
50
+ if (!running) {
51
+ pausedAt.current ??= Date.now();
52
+ return void 0;
53
+ }
54
+ if (pausedAt.current !== null) {
55
+ pausedFor.current += Date.now() - pausedAt.current;
56
+ pausedAt.current = null;
57
+ }
58
+ setNow(Date.now());
59
+ const id = setInterval(() => setNow(Date.now()), 1e3);
60
+ return () => clearInterval(id);
61
+ }, [running]);
62
+ if (start === void 0) return 0;
63
+ const end = pausedAt.current ?? now;
64
+ return end - start - pausedFor.current;
65
+ }
66
+ function RecordingDot({ still }) {
67
+ const { styles: s } = useStyles(sheet);
68
+ const theme = useLoamTheme();
69
+ const p = React.useRef(new Animated.Value(1)).current;
70
+ React.useEffect(() => {
71
+ if (still) {
72
+ p.setValue(1);
73
+ return void 0;
74
+ }
75
+ const loop = Animated.loop(
76
+ Animated.sequence([
77
+ Animated.timing(p, {
78
+ toValue: 0.4,
79
+ duration: theme.duration[700],
80
+ easing: Easing.inOut(Easing.ease),
81
+ useNativeDriver: true
82
+ }),
83
+ Animated.timing(p, {
84
+ toValue: 1,
85
+ duration: theme.duration[700],
86
+ easing: Easing.inOut(Easing.ease),
87
+ useNativeDriver: true
88
+ })
89
+ ])
90
+ );
91
+ loop.start();
92
+ return () => loop.stop();
93
+ }, [still, p, theme]);
94
+ return /* @__PURE__ */ jsx(View, { testID: "recording-dot", style: s.dotRing, children: /* @__PURE__ */ jsx(Animated.View, { style: [s.dot, { opacity: p }] }) });
95
+ }
96
+ function RecordingIndicator({
97
+ kind = "recording",
98
+ status = "active",
99
+ startedAt,
100
+ source,
101
+ level,
102
+ muted,
103
+ onStop,
104
+ onPause,
105
+ onResume,
106
+ onRetry,
107
+ onDismiss,
108
+ error,
109
+ presentation = "bar",
110
+ spot = "bottom-center",
111
+ compact = false,
112
+ count,
113
+ density = "comfortable",
114
+ orientation = "horizontal",
115
+ motion,
116
+ labels: labelsProp,
117
+ style,
118
+ testID
119
+ }) {
120
+ const theme = useLoamTheme();
121
+ const { styles: s } = useStyles(sheet);
122
+ const labels = useLabels("recordingIndicator", DEFAULT_LABELS, labelsProp);
123
+ const resolved = useResolvedMotion(motion);
124
+ const pill = presentation === "pill";
125
+ const recording = kind === "recording";
126
+ const elapsed = useElapsed(startedAt, status === "active");
127
+ const previous = React.useRef(null);
128
+ React.useEffect(() => {
129
+ const prev = previous.current;
130
+ previous.current = status;
131
+ if (status === "active" && (prev === null || prev === "paused")) announce(labels.started(kind));
132
+ else if (status === "paused" && prev !== "paused") announce(labels.announcePaused);
133
+ }, [status, kind, labels]);
134
+ const statusRef = React.useRef(status);
135
+ statusRef.current = status;
136
+ React.useEffect(
137
+ () => () => {
138
+ if (statusRef.current === "finishing") announce(labels.saved);
139
+ },
140
+ [labels.saved]
141
+ );
142
+ const failed = status === "failed";
143
+ const live = status === "active";
144
+ const label = failed ? labels.failed(kind) : status === "finishing" ? labels.saving : status === "paused" ? labels.paused : recording ? labels.recording : labels.listening;
145
+ const dot = status === "finishing" ? /* @__PURE__ */ jsx(Thinking, { size: "sm", tone: "neutral", label: "", announce: false, motion }) : failed ? /* @__PURE__ */ jsx(Icon, { name: "alert-triangle", size: 16, color: theme.color.dangerOnSoft }) : status === "paused" ? /* @__PURE__ */ jsx(StatusDot, { state: "paused", size: "sm" }) : recording ? /* @__PURE__ */ jsx(RecordingDot, { still: resolved !== "full" }) : /* @__PURE__ */ jsx(View, { testID: "listening-dot", style: s.listenRing, children: /* @__PURE__ */ jsx(View, { style: s.listenDot }) });
146
+ const showLabel = !(pill && compact);
147
+ const showTime = recording && !failed && showLabel && !(pill && status === "finishing");
148
+ const showSource = !pill && !compact && !failed && status !== "finishing" && !!source;
149
+ const meterSlot = level !== void 0 && (!pill || live);
150
+ const ink = failed ? theme.color.dangerOnSoft : theme.color.text;
151
+ const vertical = spot.startsWith("top") ? s.top : s.bottom;
152
+ const horizontal = spot.endsWith("start") ? s.start : spot.endsWith("end") ? s.end : s.center;
153
+ return /* @__PURE__ */ jsxs(
154
+ View,
155
+ {
156
+ testID,
157
+ accessibilityRole: "summary",
158
+ accessibilityLabel: [
159
+ label,
160
+ showTime ? formatRecordingTime(elapsed) : "",
161
+ failed ? error ?? "" : source ?? ""
162
+ ].filter(Boolean).join(", "),
163
+ style: [
164
+ s.root,
165
+ failed && s.failed,
166
+ pill ? [s.pill, vertical, horizontal] : s.bar,
167
+ density === "compact" ? { minHeight: theme.space[36], paddingVertical: theme.space[2] } : null,
168
+ orientation === "vertical" ? { flexDirection: "column", alignItems: "flex-start", borderRadius: theme.radius[12] } : null,
169
+ style
170
+ ],
171
+ children: [
172
+ /* @__PURE__ */ jsx(View, { style: s.slot, children: dot }),
173
+ /* @__PURE__ */ jsxs(View, { style: s.text, children: [
174
+ /* @__PURE__ */ jsxs(View, { style: s.line, children: [
175
+ showLabel ? /* @__PURE__ */ jsx(Text, { variant: "subheadline", numberOfLines: 1, style: [s.label, { color: ink }], children: label }) : null,
176
+ showTime ? /* @__PURE__ */ jsx(
177
+ Text,
178
+ {
179
+ variant: "footnote",
180
+ style: [s.count, { color: live ? theme.color.text : theme.color.text2 }],
181
+ children: formatRecordingTime(elapsed)
182
+ }
183
+ ) : null,
184
+ count !== void 0 && count > 0 ? /* @__PURE__ */ jsx(Badge, { size: "sm", variant: "neutral", children: String(count) }) : null
185
+ ] }),
186
+ failed && error ? /* @__PURE__ */ jsx(Text, { variant: "caption1", numberOfLines: 1, style: { color: ink }, children: error }) : showSource ? /* @__PURE__ */ jsx(Text, { variant: "caption1", tone: "secondary", numberOfLines: 1, children: source }) : null
187
+ ] }),
188
+ meterSlot ? /* @__PURE__ */ jsx(
189
+ View,
190
+ {
191
+ testID: "recording-meter",
192
+ style: [
193
+ s.meter,
194
+ pill ? compact ? s.meterCompact : s.meterPill : null,
195
+ !live && s.hidden
196
+ ],
197
+ children: /* @__PURE__ */ jsx(
198
+ LevelMeter,
199
+ {
200
+ level,
201
+ size: 24,
202
+ bars: pill ? compact ? 8 : 12 : 24,
203
+ muted,
204
+ showStatus: false,
205
+ motion
206
+ }
207
+ )
208
+ }
209
+ ) : /* @__PURE__ */ jsx(View, { style: s.spacer }),
210
+ recording && onPause && onResume && live && !compact ? /* @__PURE__ */ jsx(
211
+ Button,
212
+ {
213
+ variant: "ghost",
214
+ size: "md",
215
+ accessibilityLabel: labels.pause,
216
+ leadingIcon: "pause",
217
+ onPress: onPause
218
+ }
219
+ ) : null,
220
+ recording && onPause && onResume && status === "paused" ? pill ? /* @__PURE__ */ jsx(
221
+ Button,
222
+ {
223
+ variant: "outline",
224
+ size: "md",
225
+ accessibilityLabel: labels.resume,
226
+ leadingIcon: "play",
227
+ onPress: onResume
228
+ }
229
+ ) : /* @__PURE__ */ jsx(Button, { variant: "outline", size: "md", onPress: onResume, children: labels.resume }) : null,
230
+ failed ? /* @__PURE__ */ jsxs(Fragment, { children: [
231
+ onRetry ? /* @__PURE__ */ jsx(Button, { variant: "outline", size: "md", onPress: onRetry, children: labels.retry }) : null,
232
+ onDismiss ? /* @__PURE__ */ jsx(
233
+ Button,
234
+ {
235
+ variant: "ghost",
236
+ size: "md",
237
+ accessibilityLabel: labels.dismiss,
238
+ leadingIcon: "x",
239
+ onPress: onDismiss
240
+ }
241
+ ) : null
242
+ ] }) : onStop ? (
243
+ // Icon-only 36 on phones, so the meter keeps its width.
244
+ /* @__PURE__ */ jsx(
245
+ Button,
246
+ {
247
+ variant: recording ? "danger" : "primary",
248
+ size: "md",
249
+ accessibilityLabel: recording ? labels.stop : labels.done,
250
+ softDisabled: status === "finishing",
251
+ disabledReason: status === "finishing" ? labels.savingReason : void 0,
252
+ onPress: onStop,
253
+ children: recording ? /* @__PURE__ */ jsx(View, { style: [s.stopGlyph, { backgroundColor: theme.color.dangerInk }] }) : /* @__PURE__ */ jsx(Icon, { name: "check", size: 16, color: theme.color.accentInk })
254
+ }
255
+ )
256
+ ) : null
257
+ ]
258
+ }
259
+ );
260
+ }
261
+ var sheet = createStyleSheet((theme) => ({
262
+ root: {
263
+ flexDirection: "row",
264
+ alignItems: "center",
265
+ gap: theme.space.s1,
266
+ minHeight: theme.space[44],
267
+ // Final 13: the 36 slots sit in p 3 + the 1 px edge, so the bar lands on 44 (not 46).
268
+ paddingVertical: theme.space[3],
269
+ paddingStart: theme.space[3],
270
+ paddingEnd: theme.space[3],
271
+ backgroundColor: theme.color.surface,
272
+ borderWidth: theme.borderWidth.base,
273
+ borderColor: theme.color.border
274
+ },
275
+ bar: { borderRadius: theme.radius[12], marginHorizontal: theme.space.s4 },
276
+ pill: {
277
+ position: "absolute",
278
+ borderRadius: theme.radius.full,
279
+ paddingEnd: theme.space[3],
280
+ ...theme.shadow.lg
281
+ },
282
+ top: { top: theme.space.s4 },
283
+ bottom: { bottom: theme.space.s4 },
284
+ start: { start: theme.space.s4 },
285
+ end: { end: theme.space.s4 },
286
+ center: { alignSelf: "center" },
287
+ slot: {
288
+ width: theme.space[36],
289
+ height: theme.space[36],
290
+ alignItems: "center",
291
+ justifyContent: "center"
292
+ },
293
+ dotRing: {
294
+ width: theme.space[14],
295
+ height: theme.space[14],
296
+ borderRadius: theme.radius.full,
297
+ borderWidth: theme.borderWidth.base,
298
+ borderColor: theme.edge.danger,
299
+ backgroundColor: theme.color.dangerSoft,
300
+ alignItems: "center",
301
+ justifyContent: "center"
302
+ },
303
+ dot: {
304
+ width: theme.space[8],
305
+ height: theme.space[8],
306
+ borderRadius: theme.radius.full,
307
+ backgroundColor: theme.color.danger
308
+ },
309
+ listenRing: {
310
+ width: theme.space[14],
311
+ height: theme.space[14],
312
+ borderRadius: theme.radius.full,
313
+ borderWidth: theme.borderWidth.base,
314
+ borderColor: theme.edge.info,
315
+ backgroundColor: theme.color.infoSoft,
316
+ alignItems: "center",
317
+ justifyContent: "center"
318
+ },
319
+ listenDot: {
320
+ width: theme.space[8],
321
+ height: theme.space[8],
322
+ borderRadius: theme.radius.full,
323
+ backgroundColor: theme.status.working
324
+ },
325
+ failed: { backgroundColor: theme.color.dangerSoft, borderColor: theme.edge.danger },
326
+ meter: {
327
+ flex: 1,
328
+ minWidth: theme.space[24],
329
+ height: theme.space[24],
330
+ marginHorizontal: theme.space.s2,
331
+ overflow: "hidden",
332
+ flexDirection: "row",
333
+ justifyContent: "flex-end"
334
+ },
335
+ meterPill: { flex: 0, width: theme.space[48], marginHorizontal: theme.space[6] },
336
+ meterCompact: { flex: 0, width: theme.space[32], marginHorizontal: theme.space[6] },
337
+ hidden: { opacity: 0 },
338
+ spacer: { flex: 1 },
339
+ stopGlyph: { width: theme.space[10], height: theme.space[10], borderRadius: theme.radius[2] },
340
+ text: { flexShrink: 1, minWidth: 0 },
341
+ line: { flexDirection: "row", alignItems: "baseline", gap: theme.space.s2 },
342
+ label: { fontWeight: theme.fontWeight.semibold, color: theme.color.text },
343
+ count: {
344
+ fontFamily: theme.font.mono,
345
+ fontWeight: theme.fontWeight.medium,
346
+ fontVariant: ["tabular-nums"]
347
+ }
348
+ }));
349
+
350
+ export { RecordingIndicator, formatRecordingTime, useElapsed };