@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
@@ -0,0 +1,196 @@
1
+ import { Skeleton } from './chunk-YJ5PXOX3.js';
2
+ import { isAndroidIdiom } from './chunk-TH4PW2WU.js';
3
+ import { useLabels } from './chunk-APCWFOZW.js';
4
+ import { Icon } from './chunk-PCEFCOLN.js';
5
+ import { motionTiming } from './chunk-J64KGCGX.js';
6
+ import * as React from 'react';
7
+ import { StyleSheet, Animated, View, Pressable, Text, Image as Image$1 } from 'react-native';
8
+ import { createStyleSheet, useLoamTheme, useStyles } from '@btndprojects/loam-theme-native';
9
+ import { jsx, jsxs } from 'react/jsx-runtime';
10
+
11
+ // src/lib/blurhash.ts
12
+ var DIGITS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#$%*+,-.:;=?@[]^_{|}~";
13
+ function decode83(str) {
14
+ let value = 0;
15
+ for (const c of str) {
16
+ const digit = DIGITS.indexOf(c);
17
+ if (digit < 0) throw new Error("blurhash: invalid character");
18
+ value = value * 83 + digit;
19
+ }
20
+ return value;
21
+ }
22
+ function blurhashAverage(hash) {
23
+ if (hash.length < 6) return void 0;
24
+ try {
25
+ const v = decode83(hash.slice(2, 6));
26
+ return `rgb(${v >> 16} ${v >> 8 & 255} ${v & 255})`;
27
+ } catch {
28
+ return void 0;
29
+ }
30
+ }
31
+ var DEFAULT_LABELS = { error: "Couldn\u2019t load", retry: "Retry" };
32
+ var SMALL_W = 96;
33
+ function Image({
34
+ src,
35
+ fallbackSrc,
36
+ alt,
37
+ ratio,
38
+ fit = "cover",
39
+ placeholder,
40
+ inactive = false,
41
+ onError,
42
+ onLoad,
43
+ platform,
44
+ labels: labelsProp,
45
+ style,
46
+ testID
47
+ }) {
48
+ const labels = useLabels("image", DEFAULT_LABELS, labelsProp);
49
+ const theme = useLoamTheme("image");
50
+ const { styles } = useStyles(sheet);
51
+ const android = isAndroidIdiom(theme, platform);
52
+ const sources = React.useMemo(
53
+ () => [src, ...fallbackSrc ?? []].filter((s) => !!s),
54
+ [src, fallbackSrc]
55
+ );
56
+ const [index, setIndex] = React.useState(0);
57
+ const [attempt, setAttempt] = React.useState(0);
58
+ const [status, setStatus] = React.useState(sources.length ? "loading" : "missing");
59
+ const [size, setSize] = React.useState();
60
+ const width = size?.width;
61
+ const [showAlt, setShowAlt] = React.useState(false);
62
+ const fade = React.useRef(new Animated.Value(0)).current;
63
+ const key = sources.join("\n");
64
+ React.useEffect(() => {
65
+ setIndex(0);
66
+ setStatus(sources.length ? "loading" : "missing");
67
+ fade.setValue(0);
68
+ }, [key]);
69
+ const retry = () => {
70
+ setIndex(0);
71
+ setAttempt((a) => a + 1);
72
+ setStatus("loading");
73
+ setShowAlt(false);
74
+ fade.setValue(0);
75
+ };
76
+ const handleError = () => {
77
+ if (index + 1 < sources.length) {
78
+ setIndex(index + 1);
79
+ return;
80
+ }
81
+ setStatus("error");
82
+ onError?.();
83
+ };
84
+ const handleLoad = () => {
85
+ setStatus("loaded");
86
+ onLoad?.();
87
+ Animated.timing(fade, {
88
+ toValue: 1,
89
+ ...motionTiming(theme.reduceMotion ? "none" : "full"),
90
+ useNativeDriver: true
91
+ }).start();
92
+ };
93
+ const small = width !== void 0 && width < SMALL_W;
94
+ const current = sources[index];
95
+ let placeholderNode = null;
96
+ let placeholderColor;
97
+ if (placeholder === "skeleton") {
98
+ placeholderNode = /* @__PURE__ */ jsx(View, { style: StyleSheet.absoluteFill, children: size ? /* @__PURE__ */ jsx(Skeleton, { variant: "rect", width: size.width, height: size.height, style: { borderRadius: 0 } }) : null });
99
+ } else if (placeholder && typeof placeholder === "object" && "color" in placeholder) {
100
+ placeholderColor = placeholder.color;
101
+ } else if (placeholder && typeof placeholder === "object" && "blurhash" in placeholder) {
102
+ placeholderColor = blurhashAverage(placeholder.blurhash);
103
+ } else if (placeholder != null) {
104
+ placeholderNode = placeholder;
105
+ }
106
+ const boxStyle = [
107
+ styles.box,
108
+ ratio ? { aspectRatio: ratio } : null,
109
+ status === "loading" && placeholderColor ? { backgroundColor: placeholderColor } : null,
110
+ style
111
+ ];
112
+ const onLayout = (e) => setSize({ width: e.nativeEvent.layout.width, height: e.nativeEvent.layout.height });
113
+ if (status === "error") {
114
+ return /* @__PURE__ */ jsx(
115
+ Pressable,
116
+ {
117
+ testID,
118
+ accessibilityRole: "button",
119
+ accessibilityLabel: [labels.error, alt].filter(Boolean).join(", "),
120
+ accessibilityHint: labels.retry,
121
+ onPress: retry,
122
+ onLongPress: () => setShowAlt(true),
123
+ android_ripple: android ? { color: theme.state.pressed, foreground: true } : void 0,
124
+ onLayout,
125
+ style: ({ pressed }) => [
126
+ boxStyle,
127
+ styles.center,
128
+ !android && pressed ? { backgroundColor: theme.state.pressed } : null
129
+ ],
130
+ children: small && showAlt && alt ? /* @__PURE__ */ jsx(Text, { numberOfLines: 3, style: styles.errorAlt, children: alt }) : small ? /* @__PURE__ */ jsx(Icon, { name: "image", size: 16, color: theme.color.text3 }) : /* @__PURE__ */ jsxs(View, { style: styles.errorBody, children: [
131
+ /* @__PURE__ */ jsx(Icon, { name: "image", size: 24, color: theme.color.text3 }),
132
+ /* @__PURE__ */ jsx(Text, { style: styles.errorTitle, children: labels.error }),
133
+ alt ? /* @__PURE__ */ jsx(Text, { numberOfLines: 2, style: styles.errorAlt, children: alt }) : null
134
+ ] })
135
+ }
136
+ );
137
+ }
138
+ return /* @__PURE__ */ jsxs(View, { testID, onLayout, style: boxStyle, children: [
139
+ status === "loading" ? placeholderNode : null,
140
+ status === "missing" ? /* @__PURE__ */ jsx(View, { style: [StyleSheet.absoluteFill, styles.center], accessibilityElementsHidden: true, children: /* @__PURE__ */ jsx(Icon, { name: "image", size: small ? 16 : 24, color: theme.color.text3 }) }) : null,
141
+ current ? /* @__PURE__ */ jsxs(Animated.View, { style: [StyleSheet.absoluteFill, { opacity: fade }], children: [
142
+ /* @__PURE__ */ jsx(
143
+ Image$1,
144
+ {
145
+ source: { uri: current },
146
+ resizeMode: fit,
147
+ accessible: !!alt,
148
+ accessibilityRole: alt ? "image" : void 0,
149
+ accessibilityLabel: alt || void 0,
150
+ onLoad: handleLoad,
151
+ onError: handleError,
152
+ style: StyleSheet.absoluteFill
153
+ },
154
+ `${current}#${attempt}`
155
+ ),
156
+ inactive ? /* @__PURE__ */ jsx(View, { testID: "image-inactive", style: styles.inactive }) : null
157
+ ] }) : null
158
+ ] });
159
+ }
160
+ var sheet = createStyleSheet((theme) => ({
161
+ box: {
162
+ overflow: "hidden",
163
+ backgroundColor: theme.color.surface3
164
+ },
165
+ center: {
166
+ alignItems: "center",
167
+ justifyContent: "center"
168
+ },
169
+ errorBody: {
170
+ alignItems: "center",
171
+ gap: theme.space[4],
172
+ paddingHorizontal: theme.space[12]
173
+ },
174
+ errorTitle: {
175
+ fontFamily: theme.font.sans,
176
+ fontSize: theme.fontSize[12],
177
+ fontWeight: theme.fontWeight.semibold,
178
+ color: theme.color.text2,
179
+ textAlign: "center"
180
+ },
181
+ errorAlt: {
182
+ fontFamily: theme.font.sans,
183
+ fontSize: theme.fontSize[12],
184
+ color: theme.color.text3,
185
+ textAlign: "center"
186
+ },
187
+ // RN has no CSS filter on every platform: a neutral overlay blended in
188
+ // `saturation` mode drops the picture's chroma, the web's greyscale (A07).
189
+ inactive: {
190
+ ...StyleSheet.absoluteFillObject,
191
+ backgroundColor: theme.color.surface2,
192
+ mixBlendMode: "saturation"
193
+ }
194
+ }));
195
+
196
+ export { Image };
@@ -1,8 +1,11 @@
1
1
  import { resolveStepState } from './chunk-YLLCXTMC.js';
2
- import { NumberRoll } from './chunk-T5LTPKX6.js';
2
+ import { Badge } from './chunk-LGNTP5XA.js';
3
+ import { NumberRoll } from './chunk-IMMALLRU.js';
4
+ import { softToneSkin } from './chunk-PJLTKDVY.js';
3
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, View, Text } from 'react-native';
8
+ import { Animated, Easing, View, Text, Pressable } from 'react-native';
6
9
  import { createStyleSheet, useLoamTheme, useStyles } from '@btndprojects/loam-theme-native';
7
10
  import { jsxs, jsx } from 'react/jsx-runtime';
8
11
 
@@ -11,8 +14,13 @@ var INDETERMINATE_CYCLES = 2;
11
14
  var INDETERMINATE_REST = 0.5;
12
15
  var DEFAULT_LABELS = {
13
16
  lateLabel: "Still working\u2026",
14
- percent: (percent) => `${percent}%`
17
+ percent: (percent) => `${percent}%`,
18
+ cancel: (label) => label ? `Cancel ${label}` : "Cancel",
19
+ cancelled: "Cancelled",
20
+ valueWithRemaining: (percent, remaining) => `${percent}, ${remaining}`
15
21
  };
22
+ var COMPLETE_HOLD_MS = 300;
23
+ var COMPLETE_FADE_MS = 150;
16
24
  function clamp(n, lo, hi) {
17
25
  return Math.max(lo, Math.min(hi, n));
18
26
  }
@@ -25,8 +33,12 @@ function useFillColor(tone) {
25
33
  return theme.color.warn;
26
34
  case "danger":
27
35
  return theme.color.danger;
36
+ // A paused job holds its bar at text-3 (G5 A31).
37
+ case "neutral":
38
+ return theme.color.text3;
39
+ // R13: the fill is accent-strong, the one accent that clears 3:1 on surface-3.
28
40
  default:
29
- return theme.color.accent;
41
+ return theme.color.accentStrong;
30
42
  }
31
43
  }
32
44
  function Progress({
@@ -41,17 +53,60 @@ function Progress({
41
53
  motion = "full",
42
54
  animateValue = false,
43
55
  accessibilityLabel,
56
+ remaining,
57
+ onCancel,
58
+ cancelLabel,
59
+ cancelled = false,
60
+ variant = "solid",
61
+ monotonic = false,
62
+ resetKey,
63
+ hideOnComplete = false,
64
+ onHidden,
44
65
  labels: labelsProp
45
66
  }) {
46
67
  const theme = useLoamTheme("progress");
47
68
  const labels = useLabels("progress", DEFAULT_LABELS, labelsProp);
48
69
  const { styles } = useStyles(sheet, { size });
49
- const fillColor = useFillColor(tone);
70
+ const fillColor = useFillColor(cancelled ? "neutral" : tone);
50
71
  const indeterminate = value === void 0;
51
- const fraction = indeterminate || max <= 0 ? 0 : clamp(value / max, 0, 1);
72
+ const high = React.useRef({
73
+ key: resetKey,
74
+ value: 0
75
+ });
76
+ if (high.current.key !== resetKey) high.current = { key: resetKey, value: 0 };
77
+ if (value !== void 0 && value > high.current.value) high.current.value = value;
78
+ const shown = value === void 0 ? void 0 : monotonic ? high.current.value : value;
79
+ const fraction = shown === void 0 || max <= 0 ? 0 : clamp(shown / max, 0, 1);
80
+ const done = hideOnComplete && shown !== void 0 && shown >= max;
81
+ const hiddenCb = React.useRef(onHidden);
82
+ hiddenCb.current = onHidden;
83
+ const fade = React.useRef(new Animated.Value(1)).current;
84
+ React.useEffect(() => {
85
+ if (!done) {
86
+ fade.setValue(1);
87
+ return void 0;
88
+ }
89
+ let fading;
90
+ const hold = setTimeout(() => {
91
+ fading = Animated.timing(fade, {
92
+ toValue: 0,
93
+ duration: COMPLETE_FADE_MS,
94
+ useNativeDriver: false
95
+ });
96
+ fading.start(({ finished }) => {
97
+ if (finished) hiddenCb.current?.();
98
+ });
99
+ }, COMPLETE_HOLD_MS);
100
+ return () => {
101
+ clearTimeout(hold);
102
+ fading?.stop();
103
+ };
104
+ }, [done, resetKey, fade]);
52
105
  const now = Math.round(fraction * 100);
53
106
  const animateSweep = motion === "full" && !theme.reduceMotion;
54
- const showHeader = late || label !== void 0;
107
+ const caption = cancelled ? labels.cancelled : label;
108
+ const showHeader = late || caption !== void 0 || remaining !== void 0 && !cancelled || onCancel !== void 0 && !cancelled;
109
+ const hitSlop = Math.max(0, Math.round((theme.tapMin - theme.space[26]) / 2));
55
110
  const progress = React.useRef(new Animated.Value(fraction)).current;
56
111
  React.useEffect(() => {
57
112
  if (indeterminate) return;
@@ -88,8 +143,44 @@ function Progress({
88
143
  inputRange: [0, 1],
89
144
  outputRange: ["-40%", "100%"]
90
145
  });
91
- return /* @__PURE__ */ jsxs(View, { style: styles.outer, children: [
92
- showHeader ? /* @__PURE__ */ jsx(View, { style: styles.header, children: /* @__PURE__ */ jsx(View, { accessibilityRole: "text", role: "status", children: late ? /* @__PURE__ */ jsx(View, { style: styles.latePill, children: /* @__PURE__ */ jsx(Text, { style: styles.lateText, children: lateLabel ?? labels.lateLabel }) }) : label !== void 0 ? /* @__PURE__ */ jsx(Text, { style: styles.label, children: label }) : null }) }) : null,
146
+ return /* @__PURE__ */ jsxs(Animated.View, { style: [styles.outer, hideOnComplete ? { opacity: fade } : null], children: [
147
+ showHeader ? /* @__PURE__ */ jsxs(View, { style: styles.header, children: [
148
+ /* @__PURE__ */ jsxs(View, { accessibilityRole: "text", role: "status", style: styles.captionSlot, children: [
149
+ caption !== void 0 ? /* @__PURE__ */ jsx(
150
+ Text,
151
+ {
152
+ style: [
153
+ styles.label,
154
+ tone === "danger" && !cancelled ? { color: theme.color.dangerOnSoft } : null
155
+ ],
156
+ numberOfLines: 1,
157
+ children: caption
158
+ }
159
+ ) : null,
160
+ late && !cancelled ? /* @__PURE__ */ jsx(
161
+ Badge,
162
+ {
163
+ size: "sm",
164
+ variant: "neutral",
165
+ dot: true,
166
+ dotStyle: { backgroundColor: theme.status.working },
167
+ children: lateLabel ?? labels.lateLabel
168
+ }
169
+ ) : null
170
+ ] }),
171
+ remaining !== void 0 && !cancelled ? /* @__PURE__ */ jsx(Text, { style: styles.remaining, children: remaining }) : null,
172
+ onCancel && !cancelled ? /* @__PURE__ */ jsx(
173
+ Pressable,
174
+ {
175
+ accessibilityRole: "button",
176
+ accessibilityLabel: cancelLabel ?? labels.cancel(label),
177
+ onPress: onCancel,
178
+ hitSlop,
179
+ style: ({ pressed }) => [styles.cancel, pressed && styles.cancelPressed],
180
+ children: /* @__PURE__ */ jsx(Icon, { name: "x", size: theme.space[14], color: theme.color.text2 })
181
+ }
182
+ ) : null
183
+ ] }) : null,
93
184
  /* @__PURE__ */ jsxs(View, { style: styles.wrap, children: [
94
185
  /* @__PURE__ */ jsx(
95
186
  View,
@@ -101,9 +192,19 @@ function Progress({
101
192
  "aria-valuemin": 0,
102
193
  "aria-valuemax": 100,
103
194
  "aria-valuenow": indeterminate ? void 0 : now,
104
- "aria-valuetext": indeterminate ? void 0 : labels.percent(now),
105
- style: styles.track,
106
- children: indeterminate ? /* @__PURE__ */ jsx(
195
+ "aria-valuetext": indeterminate ? void 0 : remaining && !cancelled ? labels.valueWithRemaining(labels.percent(now), remaining) : labels.percent(now),
196
+ style: [
197
+ styles.track,
198
+ variant === "tonal" ? {
199
+ backgroundColor: tone === "neutral" || cancelled ? theme.color.surface2 : softToneSkin(theme, tone).fill
200
+ } : null,
201
+ variant === "outline" ? {
202
+ backgroundColor: "transparent",
203
+ borderWidth: theme.borderWidth.thin,
204
+ borderColor: theme.color.borderStrong
205
+ } : null
206
+ ],
207
+ children: indeterminate && !cancelled ? /* @__PURE__ */ jsx(
107
208
  Animated.View,
108
209
  {
109
210
  style: [
@@ -114,14 +215,14 @@ function Progress({
114
215
  ) : /* @__PURE__ */ jsx(Animated.View, { style: [styles.fill, { backgroundColor: fillColor, left: 0, width }] })
115
216
  }
116
217
  ),
117
- showValue && !indeterminate ? animateValue ? /* @__PURE__ */ jsx(
218
+ showValue && !indeterminate && !cancelled ? animateValue ? /* @__PURE__ */ jsx(
118
219
  NumberRoll,
119
220
  {
120
221
  value: now,
121
222
  formatValue: labels.percent,
122
223
  textStyle: {
123
224
  fontFamily: theme.font.mono,
124
- fontSize: theme.fontSize[14],
225
+ fontSize: theme.fontSize[13],
125
226
  color: theme.color.text2
126
227
  },
127
228
  motion,
@@ -139,29 +240,37 @@ var sheet = createStyleSheet((theme) => ({
139
240
  gap: theme.space.s2,
140
241
  alignSelf: "stretch"
141
242
  },
142
- header: { flexDirection: "row", alignItems: "center" },
143
- // Warn-toned "still working" chip: soft tint + tone edge (which becomes the
144
- // full tone and carries the meaning when the tint collapses under high
145
- // contrast), with the AA-safe on-soft ink.
146
- latePill: {
147
- alignSelf: "flex-start",
243
+ // A70: the label row is 26 high whether or not the Cancel is there.
244
+ header: {
148
245
  flexDirection: "row",
149
246
  alignItems: "center",
150
- backgroundColor: theme.color.warnSoft,
151
- borderColor: theme.edge.warn,
152
- borderWidth: theme.borderWidth.base,
153
- borderRadius: theme.radius.full,
154
- paddingHorizontal: theme.space.s2,
155
- paddingVertical: theme.space[2]
247
+ gap: theme.space.s2,
248
+ minHeight: theme.space[26]
156
249
  },
157
- lateText: {
250
+ captionSlot: {
251
+ flex: 1,
252
+ minWidth: 0,
253
+ flexDirection: "row",
254
+ alignItems: "center",
255
+ gap: theme.space.s2
256
+ },
257
+ remaining: {
158
258
  fontFamily: theme.font.sans,
159
- color: theme.color.warnOnSoft,
160
- fontSize: theme.type.caption1.fontSize,
161
- lineHeight: theme.type.caption1.lineHeight,
162
- letterSpacing: theme.type.caption1.letterSpacing
259
+ color: theme.color.text2,
260
+ fontSize: theme.type.footnote.fontSize,
261
+ lineHeight: theme.type.footnote.lineHeight,
262
+ fontVariant: ["tabular-nums"]
163
263
  },
264
+ cancel: {
265
+ width: theme.space[26],
266
+ height: theme.space[26],
267
+ borderRadius: theme.radius.sm,
268
+ alignItems: "center",
269
+ justifyContent: "center"
270
+ },
271
+ cancelPressed: { backgroundColor: theme.state.pressed },
164
272
  label: {
273
+ flexShrink: 1,
165
274
  fontFamily: theme.font.sans,
166
275
  color: theme.color.text2,
167
276
  fontSize: theme.type.footnote.fontSize,
@@ -196,7 +305,7 @@ var sheet = createStyleSheet((theme) => ({
196
305
  minWidth: theme.space[40],
197
306
  textAlign: "right",
198
307
  fontFamily: theme.font.mono,
199
- fontSize: theme.fontSize[14],
308
+ fontSize: theme.fontSize[13],
200
309
  color: theme.color.text2
201
310
  },
202
311
  // Same reserved width as the static read-out, right-aligned, for the roll.
@@ -239,7 +348,10 @@ function StepProgress({
239
348
  accessibilityLabel,
240
349
  labels: labelsProp,
241
350
  style,
242
- testID
351
+ testID,
352
+ tone,
353
+ motion = "none",
354
+ variant = "solid"
243
355
  }) {
244
356
  const theme = useLoamTheme("progress");
245
357
  const labels = useLabels("stepProgress", STEP_DEFAULT_LABELS, labelsProp);
@@ -273,22 +385,54 @@ function StepProgress({
273
385
  accessibilityElementsHidden: true,
274
386
  importantForAccessibility: "no-hide-descendants",
275
387
  style: styles.segRow,
276
- children: Array.from({ length: count }, (_, i) => /* @__PURE__ */ jsx(
277
- View,
278
- {
279
- style: [
280
- styles.seg,
281
- { backgroundColor: stepFill(theme, resolveStepState(i, curIndex, states)) }
282
- ]
283
- },
284
- i
285
- ))
388
+ children: Array.from({ length: count }, (_, i) => {
389
+ const st = resolveStepState(i, curIndex, states);
390
+ const toned = tone && (st === "done" || st === "working");
391
+ const bg = toned ? tone === "neutral" ? theme.color.text3 : softToneSkin(theme, tone).edge : stepFill(theme, st);
392
+ return /* @__PURE__ */ jsx(
393
+ StepSeg,
394
+ {
395
+ style: [
396
+ styles.seg,
397
+ {
398
+ backgroundColor: variant === "tonal" && st === "pending" ? theme.color.surface2 : bg
399
+ },
400
+ variant === "outline" ? { borderWidth: theme.borderWidth.thin, borderColor: theme.color.borderStrong } : null
401
+ ],
402
+ animate: motion === "full" && !theme.reduceMotion && i === curIndex,
403
+ trigger: cur
404
+ },
405
+ i
406
+ );
407
+ })
286
408
  }
287
409
  )
288
410
  ]
289
411
  }
290
412
  );
291
413
  }
414
+ function StepSeg({
415
+ style,
416
+ animate,
417
+ trigger
418
+ }) {
419
+ const theme = useLoamTheme("progress");
420
+ const opacity = React.useRef(new Animated.Value(1)).current;
421
+ React.useEffect(() => {
422
+ if (!animate) {
423
+ opacity.setValue(1);
424
+ return;
425
+ }
426
+ opacity.setValue(theme.opacity[38]);
427
+ Animated.timing(opacity, {
428
+ toValue: 1,
429
+ duration: theme.duration.base,
430
+ easing: Easing.bezier(...theme.easing.base),
431
+ useNativeDriver: true
432
+ }).start();
433
+ }, [animate, trigger, opacity, theme.duration.base, theme.easing.base, theme.opacity]);
434
+ return /* @__PURE__ */ jsx(Animated.View, { style: [style, { opacity }] });
435
+ }
292
436
  var stepSheet = createStyleSheet((theme) => ({
293
437
  outer: { flexDirection: "column", gap: theme.space.s2, alignSelf: "stretch" },
294
438
  header: {
@@ -0,0 +1,109 @@
1
+ import { isAndroidIdiom } from './chunk-TH4PW2WU.js';
2
+ import 'react';
3
+ import { Text as Text$1 } from 'react-native';
4
+ import { useLoamTheme } from '@btndprojects/loam-theme-native';
5
+ import { ANDROID_ROLE_MAP, typeRamp } from '@btndprojects/loam-tokens';
6
+ import { jsx } from 'react/jsx-runtime';
7
+
8
+ var IOS_FOR_MATERIAL = {
9
+ headlineLarge: "largeTitle",
10
+ headlineMedium: "title1",
11
+ headlineSmall: "title2",
12
+ titleLarge: "title3",
13
+ titleMedium: "headline",
14
+ titleSmall: "subheadline",
15
+ bodyLarge: "body",
16
+ bodyMedium: "callout",
17
+ bodySmall: "footnote",
18
+ labelLarge: "subheadline",
19
+ labelMedium: "caption1",
20
+ labelSmall: "caption2"
21
+ };
22
+ var IOS_ROLES = new Set(Object.keys(ANDROID_ROLE_MAP));
23
+ function themeTypeScale(theme) {
24
+ const base = theme.platform === "Android" ? 16 : 17;
25
+ return theme.type.body.fontSize / base;
26
+ }
27
+ function resolveTextRole(theme, role, android) {
28
+ const scale = themeTypeScale(theme);
29
+ const ramp = typeRamp(android ? "Android" : "iOS", scale);
30
+ const find = (key) => ramp.roles.find((r) => r.key === key);
31
+ const style = (key) => {
32
+ const r = find(key);
33
+ return {
34
+ fontSize: r.size,
35
+ lineHeight: r.lineHeight,
36
+ fontWeight: String(r.weight),
37
+ letterSpacing: +(r.tracking * scale).toFixed(2)
38
+ };
39
+ };
40
+ if (role === "surfaceTitle") {
41
+ return android ? style("titleLarge") : {
42
+ ...style("title3"),
43
+ fontWeight: String(theme.fontWeight.semibold),
44
+ letterSpacing: +(0.38 * scale).toFixed(2)
45
+ };
46
+ }
47
+ if (role === "dialogTitle") {
48
+ return android ? style("headlineSmall") : {
49
+ ...style("title3"),
50
+ fontWeight: String(theme.fontWeight.semibold),
51
+ letterSpacing: +(0.38 * scale).toFixed(2)
52
+ };
53
+ }
54
+ if (role === "overline") {
55
+ return {
56
+ ...style(android ? "labelMedium" : "caption1"),
57
+ fontWeight: String(theme.fontWeight.bold),
58
+ textTransform: "uppercase"
59
+ };
60
+ }
61
+ if (IOS_ROLES.has(role)) {
62
+ const ios = role;
63
+ return style(android ? ANDROID_ROLE_MAP[ios] : ios);
64
+ }
65
+ const material = role;
66
+ return style(android ? material : IOS_FOR_MATERIAL[material]);
67
+ }
68
+ function Text({
69
+ variant = "body",
70
+ tone = "default",
71
+ align,
72
+ orientation = "horizontal",
73
+ platform,
74
+ style,
75
+ allowFontScaling = true,
76
+ children,
77
+ ...rest
78
+ }) {
79
+ const theme = useLoamTheme("text");
80
+ const android = isAndroidIdiom(theme, platform);
81
+ const color = {
82
+ default: theme.color.text,
83
+ secondary: theme.color.text2,
84
+ tertiary: theme.color.text3,
85
+ accent: theme.color.accentStrong,
86
+ danger: theme.color.dangerOnSoft
87
+ }[tone];
88
+ const stacked = orientation === "vertical" && typeof children === "string";
89
+ return /* @__PURE__ */ jsx(
90
+ Text$1,
91
+ {
92
+ accessibilityLabel: stacked ? children : void 0,
93
+ allowFontScaling,
94
+ style: [
95
+ { fontFamily: theme.font.sans, color },
96
+ resolveTextRole(theme, variant, android),
97
+ align ? {
98
+ textAlign: align === "center" ? "center" : align === "start" !== Boolean(theme.rtl) ? "left" : "right"
99
+ } : null,
100
+ stacked ? { textAlign: "center" } : null,
101
+ style
102
+ ],
103
+ ...rest,
104
+ children: stacked ? Array.from(children).join("\n") : children
105
+ }
106
+ );
107
+ }
108
+
109
+ export { Text, resolveTextRole };