@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,15 +1,18 @@
1
- import { Timeline } from './chunk-NBEF4EPJ.js';
2
- import { List, ListRow } from './chunk-C4GTDLRC.js';
3
- import { EmptyState } from './chunk-KFJGFLMW.js';
4
- import { Amount } from './chunk-QHAITQIF.js';
5
- import { Sheet } from './chunk-QYPE5JX3.js';
6
- import { methodIcon } from './chunk-ROCUG24E.js';
7
- import { usePayLabels } from './chunk-GEIGMWNF.js';
8
- import { Badge } from './chunk-TN2ZNJUI.js';
9
- import { Alert } from './chunk-QDZGFXQD.js';
10
- import { Button } from './chunk-E2E3I5W2.js';
1
+ import { Timeline } from './chunk-T77WJA74.js';
2
+ import { StageTimeline } from './chunk-NNJLVA7M.js';
3
+ import { List, ListRow } from './chunk-JA6TK7H2.js';
4
+ import { Amount } from './chunk-GVQQG435.js';
5
+ import { methodIcon } from './chunk-TDWWVJA4.js';
6
+ import { usePayLabels } from './chunk-QNZII37O.js';
7
+ import { MetricDelta } from './chunk-N7AX4OA4.js';
8
+ import { EmptyState } from './chunk-QJMMM4RC.js';
9
+ import { Alert } from './chunk-Z7I4ZSO6.js';
10
+ import { Sheet } from './chunk-B7JZ3N5G.js';
11
+ import { Button } from './chunk-5DTKORLI.js';
12
+ import { Badge } from './chunk-LGNTP5XA.js';
13
+ import { Skeleton } from './chunk-YJ5PXOX3.js';
11
14
  import { useLabels, useLoamLocale } from './chunk-APCWFOZW.js';
12
- import { Icon } from './chunk-UXGIW7OK.js';
15
+ import { Icon } from './chunk-PCEFCOLN.js';
13
16
  import { useResolvedMotion, springConfig } from './chunk-J64KGCGX.js';
14
17
  import * as React from 'react';
15
18
  import { Platform, findNodeHandle, AccessibilityInfo, View, Text, Pressable, Animated } from 'react-native';
@@ -91,7 +94,15 @@ function ReceivablesCardList({
91
94
  cancelLabel: cancelLabelProp,
92
95
  locale: localeProp,
93
96
  labels: labelsProp,
94
- style
97
+ style,
98
+ platform,
99
+ density,
100
+ selected,
101
+ onSelectedChange,
102
+ disabled = false,
103
+ tone = "status",
104
+ loading = false,
105
+ error
95
106
  }) {
96
107
  const labels = useLabels("receivables", DEFAULT_LABELS, labelsProp);
97
108
  const pay = usePayLabels(labelsProp);
@@ -126,6 +137,20 @@ function ReceivablesCardList({
126
137
  if (handle) AccessibilityInfo.setAccessibilityFocus(handle);
127
138
  }
128
139
  }, [confirming]);
140
+ if (error) return /* @__PURE__ */ jsx(Alert, { tone: "danger", title: error });
141
+ if (loading) {
142
+ return /* @__PURE__ */ jsx(
143
+ View,
144
+ {
145
+ role: "group",
146
+ "aria-busy": true,
147
+ accessibilityState: { busy: true },
148
+ accessibilityLabel: labels.actions,
149
+ style: [styles.loadingRows, style],
150
+ children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx(Skeleton, { variant: "rect", height: theme.ctl.lg, radius: "md" }, i))
151
+ }
152
+ );
153
+ }
129
154
  if (rows.length === 0) {
130
155
  return /* @__PURE__ */ jsx(
131
156
  EmptyState,
@@ -151,6 +176,15 @@ function ReceivablesCardList({
151
176
  ListRow,
152
177
  {
153
178
  onPress: onOpenRow ? () => onOpenRow(r.no) : void 0,
179
+ ...density ? { density } : {},
180
+ disabled,
181
+ ...selected ? {
182
+ selectable: true,
183
+ selected: selected.includes(r.no),
184
+ onSelectedChange: (on) => onSelectedChange?.(
185
+ on ? [...selected, r.no] : selected.filter((n) => n !== r.no)
186
+ )
187
+ } : null,
154
188
  accessibilityLabel: onOpenRow ? labels.openRowDetail(
155
189
  openLabel,
156
190
  r.no,
@@ -174,7 +208,7 @@ function ReceivablesCardList({
174
208
  ] }),
175
209
  subtitle: /* @__PURE__ */ jsxs(View, { style: styles.subRow, children: [
176
210
  /* @__PURE__ */ jsx(Text, { style: styles.no, children: r.no }),
177
- /* @__PURE__ */ jsx(Badge, { variant: s.tone, size: "sm", children: s.label }),
211
+ /* @__PURE__ */ jsx(Badge, { variant: tone === "status" ? s.tone : tone, size: "sm", children: s.label }),
178
212
  /* @__PURE__ */ jsx(Text, { style: styles.due, children: dueWords(r.dueIn, labels) }),
179
213
  /* @__PURE__ */ jsxs(View, { style: styles.methodRow, children: [
180
214
  /* @__PURE__ */ jsx(
@@ -195,8 +229,9 @@ function ReceivablesCardList({
195
229
  {
196
230
  accessibilityRole: "button",
197
231
  accessibilityLabel: labels.actionsFor(actionsLabel, r.no),
232
+ disabled,
198
233
  onPress: () => setMenuFor(r.no),
199
- style: styles.menuTrigger,
234
+ style: [styles.menuTrigger, disabled ? styles.menuDisabled : null],
200
235
  children: /* @__PURE__ */ jsx(Icon, { name: "more-horizontal", size: theme.icon.md, color: theme.color.text2 })
201
236
  }
202
237
  ) : null
@@ -235,39 +270,39 @@ function ReceivablesCardList({
235
270
  // fighting over the same node, and react-native-web resolves it
236
271
  // by dropping the button — which leaves the row unpressable to
237
272
  // assistive tech and to a keyboard.
238
- /* @__PURE__ */ jsx(View, { role: "listitem", children: /* @__PURE__ */ jsxs(
239
- Pressable,
273
+ // Refinement 12 (F39): each action is a ListRow on the
274
+ // one-line tier (iOS 44, Android 56) with a chevron.
275
+ /* @__PURE__ */ jsx(View, { role: "listitem", children: /* @__PURE__ */ jsx(
276
+ ListRow,
240
277
  {
241
- accessibilityRole: "button",
278
+ platform,
242
279
  accessibilityLabel: a.label,
243
280
  accessibilityHint: a.danger ? labels.asksConfirm : void 0,
244
281
  onPress: () => a.danger ? setConfirming(a) : run(a.id),
245
- style: ({ pressed }) => [
246
- styles.actionRow,
247
- pressed ? styles.actionRowPressed : null
248
- ],
249
- children: [
250
- a.icon ? /* @__PURE__ */ jsx(
251
- Icon,
252
- {
253
- name: a.icon,
254
- size: theme.icon.md,
255
- color: a.danger ? theme.color.danger : theme.color.text2
256
- }
257
- ) : null,
258
- /* @__PURE__ */ jsx(Text, { style: [styles.actionLabel, a.danger ? styles.actionLabelDanger : null], children: a.label }),
259
- a.danger ? (
260
- // Destructive is said in shape too, not in red alone.
261
- /* @__PURE__ */ jsx(View, { style: styles.pushEnd, children: /* @__PURE__ */ jsx(
262
- Icon,
263
- {
264
- name: "alert-triangle",
265
- size: theme.icon.sm,
266
- color: theme.color.danger
267
- }
268
- ) })
269
- ) : null
270
- ]
282
+ leading: a.icon ? /* @__PURE__ */ jsx(
283
+ Icon,
284
+ {
285
+ name: a.icon,
286
+ size: theme.icon.md,
287
+ color: a.danger ? theme.color.danger : theme.color.text2
288
+ }
289
+ ) : void 0,
290
+ title: /* @__PURE__ */ jsx(
291
+ Text,
292
+ {
293
+ style: [styles.actionLabel, a.danger ? styles.actionLabelDanger : null],
294
+ children: a.label
295
+ }
296
+ ),
297
+ trailing: a.danger ? /* @__PURE__ */ jsx(
298
+ Icon,
299
+ {
300
+ name: "alert-triangle",
301
+ size: theme.icon.sm,
302
+ color: theme.color.danger
303
+ }
304
+ ) : void 0,
305
+ chevron: !a.danger
271
306
  }
272
307
  ) }, a.id)
273
308
  )) })
@@ -294,8 +329,10 @@ var sheet = createStyleSheet((theme) => ({
294
329
  alignItems: "center",
295
330
  gap: theme.space.s2
296
331
  },
332
+ // Refinement 12: the one reference style — mono 12 / 500, tabular, text-2.
297
333
  no: {
298
334
  fontFamily: theme.font.mono,
335
+ fontWeight: theme.fontWeight.medium,
299
336
  fontVariant: ["tabular-nums"],
300
337
  fontSize: theme.type.caption1.fontSize,
301
338
  lineHeight: theme.type.caption1.lineHeight,
@@ -321,16 +358,9 @@ var sheet = createStyleSheet((theme) => ({
321
358
  alignItems: "center",
322
359
  justifyContent: "center"
323
360
  },
324
- actionList: { gap: theme.space.s1 },
325
- actionRow: {
326
- flexDirection: "row",
327
- alignItems: "center",
328
- gap: theme.space.s3,
329
- minHeight: theme.tapMin,
330
- paddingHorizontal: theme.space.s3,
331
- borderRadius: theme.radius.md
332
- },
333
- actionRowPressed: { backgroundColor: theme.state.pressed },
361
+ menuDisabled: { opacity: theme.state.disabledOpacity },
362
+ loadingRows: { alignSelf: "stretch", gap: theme.space.s2 },
363
+ actionList: {},
334
364
  actionLabel: {
335
365
  fontFamily: theme.font.sans,
336
366
  fontSize: theme.type.body.fontSize,
@@ -402,7 +432,18 @@ function AgingBucketCard({
402
432
  labels: labelsProp,
403
433
  style,
404
434
  motion = "full",
405
- delay = 0
435
+ delay = 0,
436
+ roll = false,
437
+ loading = false,
438
+ delta,
439
+ deltaDirection,
440
+ invert = false,
441
+ size = "md",
442
+ variant = "soft",
443
+ elevation = "flat",
444
+ padding = "none",
445
+ align = "start",
446
+ error
406
447
  }) {
407
448
  const labels = useLabels("receivables", DEFAULT_LABELS, labelsProp);
408
449
  const pay = usePayLabels(labelsProp);
@@ -410,7 +451,9 @@ function AgingBucketCard({
410
451
  const locale = localeProp ?? providerLocale;
411
452
  const theme = useLoamTheme("receivables");
412
453
  const { styles } = useStyles(sheet2);
413
- const paint = tilePaint(theme, tone);
454
+ const paint = tilePaint(theme, error ? "danger" : tone);
455
+ const PAD = { none: 0, sm: theme.space.s2, md: theme.space.s4, lg: theme.space.s6 };
456
+ const ALIGN = { start: "flex-start", center: "center", end: "flex-end" };
414
457
  const pct = Math.round(Math.min(1, Math.max(0, fill)) * 100);
415
458
  const level = useResolvedMotion(motion, "receivables");
416
459
  const grow = React.useRef(new Animated.Value(level === "full" ? 0 : pct)).current;
@@ -427,71 +470,93 @@ function AgingBucketCard({
427
470
  return () => run.stop();
428
471
  }, [pct, level]);
429
472
  const countText = countLabel ? `${count} ${countLabel}` : labels.invoiceCount(count);
430
- const body = /* @__PURE__ */ jsxs(Fragment, { children: [
431
- /* @__PURE__ */ jsx(Text, { style: [styles.bucketName, { color: paint.ink }], children: agingLabel({ bucket }, pay) }),
432
- /* @__PURE__ */ jsx(
433
- Amount,
434
- {
435
- minor,
436
- currency,
437
- size: "lg",
438
- weight: "bold",
439
- locale,
440
- style: { color: paint.ink }
441
- }
442
- ),
443
- /* @__PURE__ */ jsx(
444
- View,
445
- {
446
- "aria-hidden": true,
447
- accessibilityElementsHidden: true,
448
- importantForAccessibility: "no-hide-descendants",
449
- style: styles.rail,
450
- children: /* @__PURE__ */ jsx(
451
- Animated.View,
473
+ const name = agingLabel({ bucket }, pay);
474
+ const row = /* @__PURE__ */ jsx(
475
+ ListRow,
476
+ {
477
+ chevron: Boolean(onSelect),
478
+ onPress: onSelect,
479
+ accessibilityLabel: onSelect ? labels.bucketSummary(name, money(minor, currency, { locale }), countText) : void 0,
480
+ title: /* @__PURE__ */ jsxs(View, { style: [styles.titleRow, { justifyContent: ALIGN[align] }], children: [
481
+ /* @__PURE__ */ jsx(Text, { style: [styles.bucketName, { color: paint.ink }], children: name }),
482
+ /* @__PURE__ */ jsx(Text, { style: [styles.count, { color: paint.ink }], children: countText })
483
+ ] }),
484
+ trailing: (
485
+ // The tile's own on-soft ink, which is the one measured to clear AA
486
+ // against this tint. `color.text` would be a second, unmeasured ink on a
487
+ // tinted ground.
488
+ /* @__PURE__ */ jsx(
489
+ Amount,
490
+ {
491
+ minor,
492
+ currency,
493
+ size,
494
+ weight: "bold",
495
+ locale,
496
+ style: { color: paint.ink },
497
+ loading,
498
+ roll,
499
+ motion
500
+ }
501
+ )
502
+ )
503
+ }
504
+ );
505
+ return /* @__PURE__ */ jsxs(
506
+ View,
507
+ {
508
+ "aria-busy": loading || void 0,
509
+ accessibilityState: loading ? { busy: true } : void 0,
510
+ style: [
511
+ styles.tile,
512
+ {
513
+ borderColor: paint.edge,
514
+ backgroundColor: variant === "outline" ? "transparent" : paint.fill
515
+ },
516
+ padding !== "none" ? { padding: PAD[padding] } : null,
517
+ elevation === "raised" ? theme.shadow.md : null,
518
+ style
519
+ ],
520
+ children: [
521
+ row,
522
+ delta !== void 0 && delta !== "" && !loading ? /* @__PURE__ */ jsx(View, { style: [styles.delta, { alignSelf: ALIGN[align] }], children: /* @__PURE__ */ jsx(MetricDelta, { delta, deltaDirection, invert, size: "sm" }) }) : null,
523
+ error ? /* @__PURE__ */ jsx(
524
+ Text,
452
525
  {
453
- style: [
454
- styles.railFill,
526
+ role: "alert",
527
+ accessibilityRole: "alert",
528
+ style: [styles.count, styles.errorText, { color: paint.ink }],
529
+ children: error
530
+ }
531
+ ) : null,
532
+ /* @__PURE__ */ jsx(
533
+ View,
534
+ {
535
+ "aria-hidden": true,
536
+ accessibilityElementsHidden: true,
537
+ importantForAccessibility: "no-hide-descendants",
538
+ style: styles.rail,
539
+ children: /* @__PURE__ */ jsx(
540
+ Animated.View,
455
541
  {
456
- width: grow.interpolate({
457
- inputRange: [0, 100],
458
- outputRange: ["0%", "100%"],
459
- extrapolate: "clamp"
460
- }),
461
- backgroundColor: paint.bar
542
+ style: [
543
+ styles.railFill,
544
+ {
545
+ width: grow.interpolate({
546
+ inputRange: [0, 100],
547
+ outputRange: ["0%", "100%"],
548
+ extrapolate: "clamp"
549
+ }),
550
+ backgroundColor: paint.bar
551
+ }
552
+ ]
462
553
  }
463
- ]
554
+ )
464
555
  }
465
556
  )
466
- }
467
- ),
468
- /* @__PURE__ */ jsx(Text, { style: [styles.count, { color: paint.ink }], children: countText })
469
- ] });
470
- const tile = [
471
- styles.tile,
472
- { borderColor: paint.edge, backgroundColor: paint.fill },
473
- style
474
- ];
475
- if (onSelect) {
476
- return /* @__PURE__ */ jsx(
477
- Pressable,
478
- {
479
- accessibilityRole: "button",
480
- accessibilityLabel: labels.bucketSummary(
481
- agingLabel({ bucket }, pay),
482
- money(minor, currency, { locale }),
483
- countText
484
- ),
485
- onPress: onSelect,
486
- style: tile,
487
- children: ({ pressed }) => /* @__PURE__ */ jsxs(Fragment, { children: [
488
- body,
489
- pressed ? /* @__PURE__ */ jsx(View, { style: styles.tilePressed, pointerEvents: "none" }) : null
490
- ] })
491
- }
492
- );
493
- }
494
- return /* @__PURE__ */ jsx(View, { style: tile, children: body });
557
+ ]
558
+ }
559
+ );
495
560
  }
496
561
  function AgingSummary({
497
562
  buckets,
@@ -501,62 +566,97 @@ function AgingSummary({
501
566
  label,
502
567
  labels: labelsProp,
503
568
  style,
504
- motion = "full"
569
+ motion = "full",
570
+ roll = false,
571
+ loading = false,
572
+ size = "md",
573
+ delta,
574
+ align = "start",
575
+ error
505
576
  }) {
506
577
  const labels = useLabels("receivables", DEFAULT_LABELS, labelsProp);
578
+ const theme = useLoamTheme("receivables");
507
579
  const { styles } = useStyles(sheet2);
508
580
  const peak = buckets.reduce((m, b) => Math.max(m, Math.abs(b.minor)), 0);
509
- return /* @__PURE__ */ jsx(View, { role: "group", accessibilityLabel: label ?? labels.agingLabel, style: [styles.strip, style], children: buckets.map((b, i) => /* @__PURE__ */ jsx(
510
- AgingBucketCard,
581
+ return /* @__PURE__ */ jsxs(
582
+ View,
511
583
  {
512
- bucket: b.bucket.bucket,
513
- minor: b.minor,
514
- currency,
515
- count: b.count,
516
- tone: b.bucket.tone,
517
- fill: peak === 0 ? 0 : Math.abs(b.minor) / peak,
518
- locale,
519
- motion,
520
- labels: labelsProp,
521
- delay: Math.min(i, 8) * 30,
522
- onSelect: onSelectBucket ? () => onSelectBucket(b.bucket.bucket) : void 0
523
- },
524
- b.bucket.bucket
525
- )) });
584
+ role: "group",
585
+ accessibilityLabel: label ?? labels.agingLabel,
586
+ accessibilityState: loading ? { busy: true } : void 0,
587
+ "aria-busy": loading || void 0,
588
+ style: [styles.strip, style],
589
+ children: [
590
+ loading ? buckets.map((b) => (
591
+ // Tile footprint: the one-line row tier, the rail and the tile padding.
592
+ /* @__PURE__ */ jsx(
593
+ Skeleton,
594
+ {
595
+ variant: "rect",
596
+ height: theme.ctl.lg + theme.space[4] + theme.space.s3 + theme.space.s1,
597
+ radius: "md"
598
+ },
599
+ b.bucket.bucket
600
+ )
601
+ )) : buckets.map((b, i) => /* @__PURE__ */ jsx(
602
+ AgingBucketCard,
603
+ {
604
+ bucket: b.bucket.bucket,
605
+ minor: b.minor,
606
+ currency,
607
+ count: b.count,
608
+ tone: b.bucket.tone,
609
+ fill: peak === 0 ? 0 : Math.abs(b.minor) / peak,
610
+ locale,
611
+ motion,
612
+ roll,
613
+ size,
614
+ align,
615
+ ...delta?.[b.bucket.bucket] !== void 0 ? { delta: delta[b.bucket.bucket] } : {},
616
+ labels: labelsProp,
617
+ delay: Math.min(i, 8) * 30,
618
+ onSelect: onSelectBucket ? () => onSelectBucket(b.bucket.bucket) : void 0
619
+ },
620
+ b.bucket.bucket
621
+ )),
622
+ error ? /* @__PURE__ */ jsx(
623
+ Text,
624
+ {
625
+ role: "alert",
626
+ accessibilityRole: "alert",
627
+ style: [styles.count, { color: theme.color.dangerOnSoft }],
628
+ children: error
629
+ }
630
+ ) : null
631
+ ]
632
+ }
633
+ );
526
634
  }
527
635
  var sheet2 = createStyleSheet((theme) => ({
528
636
  strip: { alignSelf: "stretch", gap: theme.space.s3 },
529
637
  tile: {
530
- gap: theme.space.s2,
531
- padding: theme.space.s3,
638
+ overflow: "hidden",
639
+ paddingBottom: theme.space.s3,
640
+ gap: theme.space.s1,
532
641
  borderRadius: theme.radius.md,
533
642
  borderWidth: theme.borderWidth.base
534
643
  },
535
- tilePressed: {
536
- position: "absolute",
537
- top: 0,
538
- bottom: 0,
539
- left: 0,
540
- right: 0,
541
- borderRadius: theme.radius.md,
542
- backgroundColor: theme.state.pressed
543
- },
644
+ delta: { alignSelf: "flex-start", paddingHorizontal: theme.space.s4 },
645
+ titleRow: { flexDirection: "row", alignItems: "baseline", gap: theme.space.s2 },
544
646
  bucketName: {
545
- fontFamily: theme.font.sans,
546
- fontWeight: theme.fontWeight.bold,
547
- fontSize: theme.type.caption2.fontSize,
548
- lineHeight: theme.type.caption2.lineHeight,
549
- letterSpacing: theme.tracking.caps,
550
- textTransform: "uppercase"
647
+ ...theme.type.overline,
648
+ fontFamily: theme.font.sans
551
649
  },
552
650
  // `Progress`'s own `sm` track height — see the module note.
553
651
  rail: {
554
652
  height: theme.space[4],
653
+ marginHorizontal: theme.space.s4,
555
654
  overflow: "hidden",
556
655
  borderRadius: theme.radius.full,
557
656
  backgroundColor: theme.color.surface3
558
657
  },
559
658
  railFill: { height: "100%", borderRadius: theme.radius.full },
659
+ errorText: { paddingHorizontal: theme.space.s4 },
560
660
  count: {
561
661
  fontFamily: theme.font.sans,
562
662
  fontVariant: ["tabular-nums"],
@@ -579,6 +679,13 @@ var RUNG_ICON = {
579
679
  danger: "alert-triangle",
580
680
  neutral: "lock"
581
681
  };
682
+ var RUNG_BADGE = {
683
+ info: "info",
684
+ good: "good",
685
+ warn: "warn",
686
+ danger: "danger",
687
+ "text-3": "neutral"
688
+ };
582
689
  function rungPaint(theme, tone) {
583
690
  switch (tone) {
584
691
  case "info":
@@ -619,6 +726,21 @@ function rungPaint(theme, tone) {
619
726
  };
620
727
  }
621
728
  }
729
+ function LoadingRows({ label }) {
730
+ const theme = useLoamTheme("receivables");
731
+ const { styles } = useStyles(sheet3);
732
+ return /* @__PURE__ */ jsx(
733
+ View,
734
+ {
735
+ role: "group",
736
+ "aria-busy": true,
737
+ accessibilityLabel: label,
738
+ accessibilityState: { busy: true },
739
+ style: styles.loadingRows,
740
+ children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx(Skeleton, { variant: "rect", height: theme.ctl.lg, radius: "md" }, i))
741
+ }
742
+ );
743
+ }
622
744
  function DunningRung({
623
745
  day,
624
746
  attempt,
@@ -627,40 +749,90 @@ function DunningRung({
627
749
  current = false,
628
750
  dayLabel,
629
751
  labels: labelsProp,
630
- style
752
+ style,
753
+ density = "comfortable",
754
+ selected = false,
755
+ disabled = false,
756
+ onPress,
757
+ loading = false,
758
+ error,
759
+ orientation = "vertical"
631
760
  }) {
632
761
  const labels = useLabels("receivables", DEFAULT_LABELS, labelsProp);
633
762
  const theme = useLoamTheme("receivables");
634
763
  const { styles } = useStyles(sheet3);
635
- const paint = rungPaint(theme, tone);
764
+ const paint = rungPaint(theme, error ? "danger" : tone);
636
765
  const currentAttr = current ? { "aria-current": "step" } : {};
637
- return /* @__PURE__ */ jsxs(
766
+ const rungStyle = [
767
+ styles.rung,
768
+ density === "compact" ? styles.rungCompact : null,
769
+ orientation === "horizontal" ? styles.rungStacked : null,
770
+ current || selected ? styles.rungCurrent : null,
771
+ disabled ? styles.rungDisabled : null,
772
+ style
773
+ ];
774
+ const a11yState = { disabled, busy: loading, selected };
775
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
776
+ /* @__PURE__ */ jsx(Badge, { variant: RUNG_BADGE[tone], size: "sm", style: styles.dayBadge, children: dayLabel ? `${dayLabel} ${day}` : labels.dayN(day) }),
777
+ /* @__PURE__ */ jsx(
778
+ View,
779
+ {
780
+ "aria-hidden": true,
781
+ accessibilityElementsHidden: true,
782
+ importantForAccessibility: "no-hide-descendants",
783
+ style: [styles.dot, { backgroundColor: paint.dot }]
784
+ }
785
+ ),
786
+ loading ? /* @__PURE__ */ jsxs(View, { style: styles.rungBody, children: [
787
+ /* @__PURE__ */ jsx(Skeleton, { variant: "rect", height: theme.space.s3, radius: "sm" }),
788
+ /* @__PURE__ */ jsx(Skeleton, { variant: "rect", height: theme.space.s3, radius: "sm" })
789
+ ] }) : /* @__PURE__ */ jsxs(View, { style: styles.rungBody, children: [
790
+ /* @__PURE__ */ jsx(Text, { style: [styles.attempt, error ? { color: paint.ink } : null], children: attempt }),
791
+ /* @__PURE__ */ jsx(Text, { style: styles.surface, children: surface }),
792
+ error ? /* @__PURE__ */ jsx(
793
+ Text,
794
+ {
795
+ role: "alert",
796
+ accessibilityRole: "alert",
797
+ style: [styles.surface, { color: paint.ink }],
798
+ children: error
799
+ }
800
+ ) : null
801
+ ] }),
802
+ current && !loading ? (
803
+ // The third marker. Never colour alone.
804
+ /* @__PURE__ */ jsx(Text, { style: styles.now, children: labels.now })
805
+ ) : null
806
+ ] });
807
+ return onPress ? /* @__PURE__ */ jsx(
638
808
  View,
639
809
  {
640
810
  role: "listitem",
641
811
  ...currentAttr,
812
+ "aria-busy": loading || void 0,
642
813
  testID: `dunning-rung-${day}${current ? "-current" : ""}`,
643
- style: [styles.rung, current ? styles.rungCurrent : null, style],
644
- children: [
645
- /* @__PURE__ */ jsx(View, { style: [styles.dayBadge, { borderColor: paint.edge, backgroundColor: paint.fill }], children: /* @__PURE__ */ jsx(Text, { style: [styles.dayLabel, { color: paint.ink }], children: dayLabel ? `${dayLabel} ${day}` : labels.dayN(day) }) }),
646
- /* @__PURE__ */ jsx(
647
- View,
648
- {
649
- "aria-hidden": true,
650
- accessibilityElementsHidden: true,
651
- importantForAccessibility: "no-hide-descendants",
652
- style: [styles.dot, { backgroundColor: paint.dot }]
653
- }
654
- ),
655
- /* @__PURE__ */ jsxs(View, { style: styles.rungBody, children: [
656
- /* @__PURE__ */ jsx(Text, { style: styles.attempt, children: attempt }),
657
- /* @__PURE__ */ jsx(Text, { style: styles.surface, children: surface })
658
- ] }),
659
- current ? (
660
- // The third marker. Never colour alone.
661
- /* @__PURE__ */ jsx(Text, { style: styles.now, children: labels.now })
662
- ) : null
663
- ]
814
+ children: /* @__PURE__ */ jsx(
815
+ Pressable,
816
+ {
817
+ accessibilityRole: "button",
818
+ accessibilityState: a11yState,
819
+ disabled: disabled || loading,
820
+ onPress,
821
+ style: rungStyle,
822
+ children: content
823
+ }
824
+ )
825
+ }
826
+ ) : /* @__PURE__ */ jsx(
827
+ View,
828
+ {
829
+ role: "listitem",
830
+ ...currentAttr,
831
+ accessibilityState: a11yState,
832
+ "aria-busy": loading || void 0,
833
+ testID: `dunning-rung-${day}${current ? "-current" : ""}`,
834
+ style: rungStyle,
835
+ children: content
664
836
  }
665
837
  );
666
838
  }
@@ -672,7 +844,10 @@ function DunningTimeline({
672
844
  density = "comfortable",
673
845
  label,
674
846
  labels: labelsProp,
675
- style
847
+ style,
848
+ loading = false,
849
+ error,
850
+ orientation = "vertical"
676
851
  }) {
677
852
  const labels = useLabels("receivables", DEFAULT_LABELS, labelsProp);
678
853
  const pay = usePayLabels(labelsProp);
@@ -697,6 +872,22 @@ function DunningTimeline({
697
872
  testID: `dunning-rung-${s.day}${current ? "-current" : ""}`
698
873
  };
699
874
  });
875
+ if (error) return /* @__PURE__ */ jsx(Alert, { tone: "danger", title: error });
876
+ if (loading) return /* @__PURE__ */ jsx(LoadingRows, { label: label ?? labels.retrySchedule });
877
+ if (orientation === "horizontal") {
878
+ return /* @__PURE__ */ jsx(View, { role: "group", accessibilityLabel: label ?? labels.retrySchedule, style, children: /* @__PURE__ */ jsx(
879
+ StageTimeline,
880
+ {
881
+ orientation: "horizontal",
882
+ stages: items.map((it) => ({
883
+ id: it.id,
884
+ label: it.title,
885
+ detail: it.time,
886
+ state: it.current ? "working" : "pending"
887
+ }))
888
+ }
889
+ ) });
890
+ }
700
891
  return /* @__PURE__ */ jsx(Timeline, { items, density, label: label ?? labels.retrySchedule, style });
701
892
  }
702
893
  function reminderTitle(day, labels = DEFAULT_LABELS) {
@@ -708,8 +899,11 @@ function ReminderTimeline({
708
899
  currentDay,
709
900
  titles = {},
710
901
  density = "comfortable",
902
+ orientation = "vertical",
711
903
  label,
712
- labels: labelsProp
904
+ labels: labelsProp,
905
+ loading = false,
906
+ error
713
907
  }) {
714
908
  const labels = useLabels("receivables", DEFAULT_LABELS, labelsProp);
715
909
  const items = days.map((d) => {
@@ -726,6 +920,22 @@ function ReminderTimeline({
726
920
  icon: sent ? "check" : isCurrent ? "mail" : "clock"
727
921
  };
728
922
  });
923
+ if (error) return /* @__PURE__ */ jsx(Alert, { tone: "danger", title: error });
924
+ if (loading) return /* @__PURE__ */ jsx(LoadingRows, { label: label ?? labels.reminderSchedule });
925
+ if (orientation === "horizontal") {
926
+ return /* @__PURE__ */ jsx(View, { role: "group", accessibilityLabel: label ?? labels.reminderSchedule, children: /* @__PURE__ */ jsx(
927
+ StageTimeline,
928
+ {
929
+ orientation: "horizontal",
930
+ stages: items.map((it) => ({
931
+ id: it.id,
932
+ label: it.title,
933
+ detail: it.time,
934
+ state: it.state ?? "pending"
935
+ }))
936
+ }
937
+ ) });
938
+ }
729
939
  return /* @__PURE__ */ jsx(Timeline, { items, density, label: label ?? labels.reminderSchedule });
730
940
  }
731
941
  function overdueTone(daysLate) {
@@ -746,22 +956,47 @@ function OverdueNotice({
746
956
  action,
747
957
  dismissible,
748
958
  onDismiss,
959
+ loading = false,
960
+ error,
749
961
  locale: localeProp,
962
+ roll = false,
750
963
  labels: labelsProp,
751
- style
964
+ style,
965
+ variant,
966
+ size,
967
+ icon,
968
+ motion
752
969
  }) {
753
970
  const labels = useLabels("receivables", DEFAULT_LABELS, labelsProp);
754
971
  const providerLocale = useLoamLocale();
755
972
  const locale = localeProp ?? providerLocale;
756
973
  const { styles } = useStyles(sheet3);
974
+ const theme = useLoamTheme("receivables");
757
975
  const resolved = tone ?? overdueTone(daysLate);
758
976
  const late = daysLate > 0;
759
- return /* @__PURE__ */ jsxs(View, { style: [styles.overdue, style], children: [
760
- /* @__PURE__ */ jsx(Amount, { minor, currency, size: "hero", weight: "bold", locale }),
977
+ if (error)
978
+ return /* @__PURE__ */ jsx(Alert, { tone: "danger", title: error, variant, size, motion });
979
+ return /* @__PURE__ */ jsxs(View, { "aria-busy": loading || void 0, style: [styles.overdue, style], children: [
761
980
  /* @__PURE__ */ jsx(
981
+ Amount,
982
+ {
983
+ minor,
984
+ currency,
985
+ size: "hero",
986
+ weight: "bold",
987
+ locale,
988
+ loading,
989
+ roll
990
+ }
991
+ ),
992
+ loading ? /* @__PURE__ */ jsx(Skeleton, { variant: "rect", height: theme.ctl.lg, radius: "md" }) : /* @__PURE__ */ jsx(
762
993
  Alert,
763
994
  {
764
995
  tone: resolved,
996
+ variant,
997
+ size,
998
+ icon,
999
+ motion,
765
1000
  dismissible,
766
1001
  onDismiss,
767
1002
  action,
@@ -779,30 +1014,13 @@ var sheet3 = createStyleSheet((theme) => ({
779
1014
  padding: theme.space.s3,
780
1015
  borderRadius: theme.radius.md
781
1016
  },
782
- rungCurrent: {
783
- // The soft tint always carries its tone edge.
784
- borderWidth: theme.borderWidth.base,
785
- borderColor: theme.edge.accent,
786
- backgroundColor: theme.color.accentSoft
787
- },
788
- dayBadge: {
789
- alignItems: "center",
790
- justifyContent: "center",
791
- minWidth: theme.space[56],
792
- paddingHorizontal: theme.space.s2,
793
- paddingVertical: theme.space[2],
794
- borderRadius: theme.radius.full,
795
- borderWidth: theme.borderWidth.base
796
- },
797
- dayLabel: {
798
- fontFamily: theme.font.sans,
799
- fontWeight: theme.fontWeight.bold,
800
- fontVariant: ["tabular-nums"],
801
- fontSize: theme.fontSize[11],
802
- lineHeight: theme.type.caption2.lineHeight,
803
- letterSpacing: theme.tracking.wide,
804
- textTransform: "uppercase"
805
- },
1017
+ // Refinement 12: the selected-row fill, not accent-soft (no edge, ink unchanged).
1018
+ rungCurrent: { backgroundColor: theme.state.selected },
1019
+ rungCompact: { padding: theme.space.s2 },
1020
+ rungStacked: { flexDirection: "column" },
1021
+ rungDisabled: { opacity: theme.state.disabledOpacity },
1022
+ loadingRows: { alignSelf: "stretch", gap: theme.space.s2 },
1023
+ dayBadge: { minWidth: theme.space[56] },
806
1024
  dot: {
807
1025
  width: theme.space.s2,
808
1026
  height: theme.space.s2,
@@ -824,12 +1042,8 @@ var sheet3 = createStyleSheet((theme) => ({
824
1042
  color: theme.color.text2
825
1043
  },
826
1044
  now: {
1045
+ ...theme.type.overline,
827
1046
  fontFamily: theme.font.sans,
828
- fontWeight: theme.fontWeight.bold,
829
- fontSize: theme.fontSize[11],
830
- lineHeight: theme.type.caption2.lineHeight,
831
- letterSpacing: theme.tracking.wide,
832
- textTransform: "uppercase",
833
1047
  color: theme.color.accentStrong
834
1048
  },
835
1049
  overdue: { alignSelf: "stretch", gap: theme.space.s2 }