@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,7 +1,9 @@
1
+ import { Button } from './chunk-5DTKORLI.js';
2
+ import { isAndroidIdiom } from './chunk-TH4PW2WU.js';
1
3
  import { useLabels } from './chunk-APCWFOZW.js';
2
- import { Icon } from './chunk-UXGIW7OK.js';
4
+ import { Icon } from './chunk-PCEFCOLN.js';
3
5
  import * as React from 'react';
4
- import { View, Pressable, Text, TextInput, ScrollView } from 'react-native';
6
+ import { View, Pressable, Text, TextInput, ScrollView, ActivityIndicator } from 'react-native';
5
7
  import { createStyleSheet, useLoamTheme, useStyles } from '@btndprojects/loam-theme-native';
6
8
  import { jsxs, jsx } from 'react/jsx-runtime';
7
9
 
@@ -52,6 +54,8 @@ var BOTTOM_THRESHOLD = 8;
52
54
  var DEFAULT_LABELS = {
53
55
  levels: { error: "Error", warn: "Warning", info: "Info", debug: "Debug" },
54
56
  levelsShort: { error: "ERR", warn: "WARN", info: "INFO", debug: "DBG" },
57
+ levelCodes: { error: "ERR", warn: "WRN", info: "INF", debug: "DBG" },
58
+ hiddenLines: (hidden) => `${hidden.toLocaleString()} earlier ${hidden === 1 ? "line" : "lines"} hidden`,
55
59
  levelPrefix: (level) => `${level}: `,
56
60
  announcement: (level, text) => `${level}: ${text}`,
57
61
  filterByLevel: "Filter by level",
@@ -83,7 +87,9 @@ var DEFAULT_LABELS = {
83
87
  noLevelMatch: "No lines match the selected levels.",
84
88
  showAllLevels: "Show all levels",
85
89
  empty: "No log lines.",
86
- jumpToLatest: "Jump to latest"
90
+ jumpToLatest: "Jump to latest",
91
+ error: "The log stream failed.",
92
+ loading: "Loading log"
87
93
  };
88
94
  function renderText(text, query, markStyle) {
89
95
  if (!query) return text;
@@ -129,12 +135,23 @@ function LogViewer({
129
135
  label: labelOverride,
130
136
  liveRegion = "none",
131
137
  testID,
132
- motion: _motion = "full"
138
+ size = "md",
139
+ readOnly = false,
140
+ disabled = false,
141
+ loading = false,
142
+ error,
143
+ motion: _motion = "full",
144
+ chipStyle = "level",
145
+ levelBadge = "glyph",
146
+ toolbarDensity = "comfortable",
147
+ searchSize = "lg",
148
+ hiddenLines = 0
133
149
  }) {
134
150
  const labels = useLabels("logViewer", DEFAULT_LABELS, labelsProp);
135
151
  const label = labelOverride ?? labels.region;
136
152
  const theme = useLoamTheme("log-viewer");
137
153
  const { styles } = useStyles(sheet);
154
+ const android = isAndroidIdiom(theme);
138
155
  const scrollRef = React.useRef(null);
139
156
  const filterControlled = levelFilter !== void 0;
140
157
  const [internalFilter, setInternalFilter] = React.useState([...LOG_LEVELS]);
@@ -143,17 +160,27 @@ function LogViewer({
143
160
  const [internalSearch, setInternalSearch] = React.useState("");
144
161
  const activeSearch = searchControlled ? search : internalSearch;
145
162
  const [paused, setPaused] = React.useState(false);
163
+ const locked = disabled || readOnly;
164
+ const errorText = error === true ? labels.error : error || void 0;
165
+ const lineFont = size === "sm" ? theme.fontSize[12] : size === "lg" ? theme.fontSize[14] : theme.type.footnote.fontSize;
166
+ const lineType = {
167
+ fontSize: lineFont,
168
+ lineHeight: Math.round(theme.code.lineH * lineFont / theme.type.footnote.fontSize)
169
+ };
146
170
  const toggleLevel = (level) => {
171
+ if (locked) return;
147
172
  const next = activeFilter.includes(level) ? activeFilter.filter((l) => l !== level) : [...activeFilter, level];
148
173
  onLevelFilterChange?.(next);
149
174
  if (!filterControlled) setInternalFilter(next);
150
175
  };
151
176
  const showAllLevels = () => {
177
+ if (locked) return;
152
178
  const all = [...LOG_LEVELS];
153
179
  onLevelFilterChange?.(all);
154
180
  if (!filterControlled) setInternalFilter(all);
155
181
  };
156
182
  const setSearch = (value) => {
183
+ if (locked) return;
157
184
  onSearchChange?.(value);
158
185
  if (!searchControlled) setInternalSearch(value);
159
186
  };
@@ -177,12 +204,19 @@ function LogViewer({
177
204
  };
178
205
  const markStyle = { backgroundColor: theme.color.accentSoft, color: theme.color.accentOnSoft };
179
206
  const showJump = follow && paused;
180
- const tapSlop = Math.max(0, (theme.tapMin - theme.ctl.md) / 2);
207
+ const tapSlop = Math.max(0, (theme.tapMin - theme.ctl.sm) / 2);
181
208
  const renderLines = () => /* @__PURE__ */ jsx(View, { style: wrap ? styles.linesStretch : void 0, children: visible.map((line) => {
182
209
  const meta = line.level ? levelMeta(theme, labels, line.level) : null;
183
210
  return /* @__PURE__ */ jsxs(View, { style: styles.line, children: [
184
211
  showTimestamps ? /* @__PURE__ */ jsx(Text, { style: styles.time, children: formatLogTime(line.time) }) : null,
185
- meta ? /* @__PURE__ */ jsxs(
212
+ meta && levelBadge === "code" ? /* @__PURE__ */ jsx(
213
+ Text,
214
+ {
215
+ style: [styles.badgeLabel, styles.badgeCode, { color: meta.fg }],
216
+ accessibilityLabel: meta.label,
217
+ children: labels.levelCodes[line.level]
218
+ }
219
+ ) : meta ? /* @__PURE__ */ jsxs(
186
220
  View,
187
221
  {
188
222
  style: [styles.badge, { backgroundColor: meta.bg, borderColor: meta.edge }],
@@ -193,56 +227,89 @@ function LogViewer({
193
227
  ]
194
228
  }
195
229
  ) : null,
196
- /* @__PURE__ */ jsx(Text, { style: [styles.lineText, wrap ? styles.lineTextWrap : null], children: renderText(line.text, activeSearch, markStyle) })
230
+ /* @__PURE__ */ jsx(Text, { style: [styles.lineText, lineType, wrap ? styles.lineTextWrap : null], children: renderText(line.text, activeSearch, markStyle) })
197
231
  ] }, line.id);
198
232
  }) });
199
233
  return /* @__PURE__ */ jsxs(View, { style: styles.root, children: [
200
- /* @__PURE__ */ jsxs(View, { style: styles.toolbar, children: [
201
- /* @__PURE__ */ jsx(View, { style: styles.filterGroup, role: "group", accessibilityLabel: labels.filterByLevel, children: LOG_LEVELS.map((level) => {
202
- const meta = levelMeta(theme, labels, level);
203
- const on = activeFilter.includes(level);
204
- return /* @__PURE__ */ jsxs(
205
- Pressable,
206
- {
207
- accessibilityRole: "button",
208
- accessibilityLabel: meta.label,
209
- accessibilityState: { selected: on },
210
- onPress: () => toggleLevel(level),
211
- hitSlop: { top: tapSlop, bottom: tapSlop },
212
- style: ({ pressed }) => [
213
- styles.chip,
214
- on ? { backgroundColor: meta.bg, borderColor: meta.edge } : { backgroundColor: theme.color.surface2, borderColor: theme.color.border },
215
- pressed && { backgroundColor: theme.state.pressed }
216
- ],
217
- children: [
218
- /* @__PURE__ */ jsx(
219
- Icon,
220
- {
221
- name: meta.icon,
222
- size: theme.icon.sm,
223
- color: on ? meta.fg : theme.color.text
224
- }
225
- ),
226
- /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, { color: on ? meta.fg : theme.color.text }], children: meta.label })
227
- ]
228
- },
229
- level
230
- );
231
- }) }),
232
- /* @__PURE__ */ jsxs(View, { style: styles.searchWrap, children: [
233
- /* @__PURE__ */ jsx(Icon, { name: "search", size: theme.icon.sm, color: theme.color.text3 }),
234
- /* @__PURE__ */ jsx(
235
- TextInput,
236
- {
237
- value: activeSearch,
238
- onChangeText: setSearch,
239
- accessibilityLabel: labels.search,
240
- placeholder: labels.searchPlaceholder,
241
- placeholderTextColor: theme.color.text3,
242
- style: styles.searchInput
243
- }
244
- )
245
- ] })
234
+ /* @__PURE__ */ jsxs(View, { style: [styles.toolbar, disabled ? styles.disabled : null], children: [
235
+ /* @__PURE__ */ jsx(View, { style: styles.filterGroup, role: "group", accessibilityLabel: labels.filterByLevel, children: LOG_LEVELS.filter((l) => !(toolbarDensity === "compact" && l === "debug")).map(
236
+ (level) => {
237
+ const meta = levelMeta(theme, labels, level);
238
+ const on = activeFilter.includes(level);
239
+ return /* @__PURE__ */ jsxs(
240
+ Pressable,
241
+ {
242
+ accessibilityRole: "button",
243
+ accessibilityLabel: meta.label,
244
+ accessibilityState: { selected: on, disabled: locked },
245
+ disabled,
246
+ onPress: () => toggleLevel(level),
247
+ hitSlop: { top: tapSlop, bottom: tapSlop },
248
+ style: ({ pressed }) => [
249
+ styles.chip,
250
+ // Android: the level filters are the Chip sm pill.
251
+ android ? { borderRadius: theme.radius.full } : null,
252
+ on && chipStyle === "neutral" ? { backgroundColor: theme.color.surface3, borderColor: theme.edge.neutral } : on ? { backgroundColor: meta.bg, borderColor: meta.edge } : {
253
+ backgroundColor: theme.color.surface2,
254
+ borderColor: theme.color.border
255
+ },
256
+ pressed && { backgroundColor: theme.state.pressed }
257
+ ],
258
+ children: [
259
+ chipStyle === "neutral" ? on ? /* @__PURE__ */ jsx(Icon, { name: "check", size: theme.icon.sm, color: theme.color.text }) : null : /* @__PURE__ */ jsx(
260
+ Icon,
261
+ {
262
+ name: meta.icon,
263
+ size: theme.icon.sm,
264
+ color: on ? meta.fg : theme.color.text
265
+ }
266
+ ),
267
+ /* @__PURE__ */ jsx(
268
+ Text,
269
+ {
270
+ style: [
271
+ styles.chipLabel,
272
+ android ? styles.chipLabelAndroid : null,
273
+ { color: on && chipStyle === "level" ? meta.fg : theme.color.text }
274
+ ],
275
+ children: meta.label
276
+ }
277
+ )
278
+ ]
279
+ },
280
+ level
281
+ );
282
+ }
283
+ ) }),
284
+ /* @__PURE__ */ jsxs(
285
+ View,
286
+ {
287
+ style: [
288
+ styles.searchWrap,
289
+ {
290
+ height: theme.ctl[searchSize],
291
+ paddingHorizontal: theme.ctl.px[searchSize],
292
+ borderRadius: theme.ctl.r[searchSize]
293
+ }
294
+ ],
295
+ children: [
296
+ /* @__PURE__ */ jsx(Icon, { name: "search", size: theme.icon.sm, color: theme.color.text3 }),
297
+ /* @__PURE__ */ jsx(
298
+ TextInput,
299
+ {
300
+ value: activeSearch,
301
+ onChangeText: setSearch,
302
+ accessibilityLabel: labels.search,
303
+ editable: !locked,
304
+ "aria-disabled": disabled || void 0,
305
+ placeholder: labels.searchPlaceholder,
306
+ placeholderTextColor: theme.color.text3,
307
+ style: [styles.searchInput, { fontSize: theme.fontSize[android ? 16 : 17] }]
308
+ }
309
+ )
310
+ ]
311
+ }
312
+ )
246
313
  ] }),
247
314
  /* @__PURE__ */ jsxs(View, { style: styles.surfaceWrap, children: [
248
315
  /* @__PURE__ */ jsxs(
@@ -254,12 +321,19 @@ function LogViewer({
254
321
  focusable: true,
255
322
  accessibilityLabel: label,
256
323
  accessibilityLiveRegion: liveRegion,
324
+ "aria-busy": loading || void 0,
325
+ "aria-invalid": errorText ? true : void 0,
257
326
  onScroll,
258
327
  onContentSizeChange,
259
328
  scrollEventThrottle: 16,
260
- style: [styles.surface, { maxHeight }],
329
+ style: [
330
+ styles.surface,
331
+ { maxHeight },
332
+ errorText ? { borderColor: theme.color.danger } : null
333
+ ],
261
334
  contentContainerStyle: styles.surfaceContent,
262
335
  children: [
336
+ hiddenLines > 0 ? /* @__PURE__ */ jsx(View, { style: styles.notice, accessibilityRole: "text", children: /* @__PURE__ */ jsx(Text, { style: styles.noticeText, children: labels.hiddenLines(hiddenLines) }) }) : null,
263
337
  hiddenCount > 0 ? /* @__PURE__ */ jsx(View, { style: styles.notice, accessibilityRole: "text", children: /* @__PURE__ */ jsx(Text, { style: styles.noticeText, children: labels.truncated(hiddenCount, maxLines) }) }) : null,
264
338
  visible.length === 0 ? lines.length > 0 ? (
265
339
  // Lines exist but the level filter hides every one: say so and
@@ -267,13 +341,13 @@ function LogViewer({
267
341
  /* @__PURE__ */ jsxs(View, { style: styles.emptyRow, children: [
268
342
  /* @__PURE__ */ jsx(Text, { style: styles.empty, children: labels.noLevelMatch }),
269
343
  /* @__PURE__ */ jsx(
270
- Pressable,
344
+ Button,
271
345
  {
272
- accessibilityRole: "button",
346
+ variant: "ghost",
347
+ size: "sm",
273
348
  accessibilityLabel: labels.showAllLevels,
274
349
  onPress: showAllLevels,
275
- hitSlop: { top: tapSlop, bottom: tapSlop },
276
- children: /* @__PURE__ */ jsx(Text, { style: styles.emptyAction, children: labels.showAllLevels })
350
+ children: labels.showAllLevels
277
351
  }
278
352
  )
279
353
  ] })
@@ -281,25 +355,40 @@ function LogViewer({
281
355
  // No-wrap: a horizontal ScrollView lets wide lines scroll sideways
282
356
  // rather than soft-wrapping. Vertical follow stays on the outer view.
283
357
  /* @__PURE__ */ jsx(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: true, focusable: true, children: renderLines() })
284
- )
358
+ ),
359
+ loading ? /* @__PURE__ */ jsx(View, { style: styles.loadingRow, testID: "log-viewer-loading", children: /* @__PURE__ */ jsx(
360
+ ActivityIndicator,
361
+ {
362
+ size: "small",
363
+ color: theme.color.text3,
364
+ accessibilityLabel: labels.loading
365
+ }
366
+ ) }) : null
285
367
  ]
286
368
  }
287
369
  ),
288
- showJump ? /* @__PURE__ */ jsxs(
370
+ showJump ? /* @__PURE__ */ jsx(View, { pointerEvents: "box-none", style: styles.jumpAnchor, children: /* @__PURE__ */ jsxs(
289
371
  Pressable,
290
372
  {
291
373
  accessibilityRole: "button",
292
374
  accessibilityLabel: labels.jumpToLatest,
293
375
  onPress: jumpToLatest,
294
- hitSlop: { top: tapSlop, bottom: tapSlop },
295
- style: ({ pressed }) => [styles.jump, pressed && { opacity: theme.state.pressedOpacity }],
376
+ hitSlop: tapSlop,
377
+ style: ({ pressed }) => [
378
+ styles.jump,
379
+ pressed && { opacity: theme.state.pressedOpacity }
380
+ ],
296
381
  children: [
297
- /* @__PURE__ */ jsx(Icon, { name: "arrow-down", size: theme.icon.sm, color: theme.color.accentInk }),
382
+ /* @__PURE__ */ jsx(Icon, { name: "arrow-down", size: theme.icon.sm, color: theme.color.surface }),
298
383
  /* @__PURE__ */ jsx(Text, { style: styles.jumpLabel, children: labels.jumpToLatest })
299
384
  ]
300
385
  }
301
- ) : null
302
- ] })
386
+ ) }) : null
387
+ ] }),
388
+ errorText ? /* @__PURE__ */ jsxs(View, { style: styles.errorRow, role: "alert", children: [
389
+ /* @__PURE__ */ jsx(Icon, { name: "alert-circle", size: theme.icon.sm, color: theme.color.danger }),
390
+ /* @__PURE__ */ jsx(Text, { style: styles.errorText, children: errorText })
391
+ ] }) : null
303
392
  ] });
304
393
  }
305
394
  var sheet = createStyleSheet((theme) => ({
@@ -315,8 +404,8 @@ var sheet = createStyleSheet((theme) => ({
315
404
  flexDirection: "row",
316
405
  alignItems: "center",
317
406
  gap: theme.space.s1,
318
- height: theme.ctl.md,
319
- paddingHorizontal: theme.space.s2,
407
+ height: theme.ctl.sm,
408
+ paddingHorizontal: theme.ctl.px.sm,
320
409
  borderRadius: theme.radius.sm,
321
410
  borderWidth: theme.borderWidth.base
322
411
  },
@@ -325,26 +414,40 @@ var sheet = createStyleSheet((theme) => ({
325
414
  fontSize: theme.type.footnote.fontSize,
326
415
  fontWeight: theme.fontWeight.semibold
327
416
  },
417
+ chipLabelAndroid: { fontSize: theme.fontSize[14], fontWeight: theme.fontWeight.medium },
328
418
  searchWrap: {
329
419
  flexDirection: "row",
330
420
  alignItems: "center",
331
421
  gap: theme.space.s2,
332
422
  flexGrow: 1,
333
423
  flexBasis: theme.space[140],
334
- height: theme.ctl.md,
335
- paddingHorizontal: theme.space.s2,
336
- borderRadius: theme.radius.sm,
424
+ // Search is Input lg 44 on both phones.
425
+ height: theme.ctl.lg,
426
+ paddingHorizontal: theme.ctl.px.lg,
427
+ borderRadius: theme.ctl.r.lg,
337
428
  borderWidth: theme.borderWidth.base,
338
429
  borderColor: theme.color.border,
339
430
  backgroundColor: theme.color.surface2
340
431
  },
341
432
  searchInput: {
342
433
  flex: 1,
343
- fontFamily: theme.font.mono,
344
- fontSize: theme.type.footnote.fontSize,
434
+ fontFamily: theme.font.sans,
345
435
  color: theme.color.text,
346
436
  paddingVertical: 0
347
437
  },
438
+ disabled: { opacity: theme.state.disabledOpacity },
439
+ loadingRow: {
440
+ alignItems: "flex-start",
441
+ paddingHorizontal: theme.space.s3,
442
+ paddingVertical: theme.space.s1
443
+ },
444
+ errorRow: { flexDirection: "row", alignItems: "center", gap: theme.space.s1 },
445
+ errorText: {
446
+ flex: 1,
447
+ fontFamily: theme.font.sans,
448
+ fontSize: theme.type.footnote.fontSize,
449
+ color: theme.color.danger
450
+ },
348
451
  surfaceWrap: { position: "relative" },
349
452
  surface: {
350
453
  borderRadius: theme.radius.lg,
@@ -374,14 +477,6 @@ var sheet = createStyleSheet((theme) => ({
374
477
  paddingVertical: theme.space.s2
375
478
  },
376
479
  emptyRow: { flexDirection: "row", flexWrap: "wrap", alignItems: "center" },
377
- emptyAction: {
378
- fontFamily: theme.font.mono,
379
- fontSize: theme.type.footnote.fontSize,
380
- fontWeight: theme.fontWeight.bold,
381
- color: theme.code.fg,
382
- textDecorationLine: "underline",
383
- paddingHorizontal: theme.space.s3
384
- },
385
480
  line: {
386
481
  flexDirection: "row",
387
482
  alignItems: "flex-start",
@@ -408,6 +503,7 @@ var sheet = createStyleSheet((theme) => ({
408
503
  fontSize: theme.type.caption1.fontSize,
409
504
  fontWeight: theme.fontWeight.bold
410
505
  },
506
+ badgeCode: { marginTop: theme.space[1] },
411
507
  lineText: {
412
508
  fontFamily: theme.font.mono,
413
509
  fontSize: theme.type.footnote.fontSize,
@@ -415,24 +511,30 @@ var sheet = createStyleSheet((theme) => ({
415
511
  color: theme.code.fg
416
512
  },
417
513
  lineTextWrap: { flex: 1, flexShrink: 1 },
418
- jump: {
514
+ jumpAnchor: {
419
515
  position: "absolute",
420
516
  bottom: theme.space.s3,
421
- end: theme.space.s3,
517
+ left: 0,
518
+ right: 0,
519
+ alignItems: "center"
520
+ },
521
+ // The Timeline jump pill: chip sm 30, 13 / 600, px 12, inverse ink, sh-md.
522
+ jump: {
422
523
  flexDirection: "row",
423
524
  alignItems: "center",
424
525
  gap: theme.space.s1,
425
- height: theme.ctl.md,
526
+ height: theme.ctl.sm,
426
527
  paddingHorizontal: theme.space.s3,
427
528
  borderRadius: theme.radius.full,
428
- backgroundColor: theme.color.accent,
529
+ backgroundColor: theme.color.text,
429
530
  ...theme.shadow.md
430
531
  },
431
532
  jumpLabel: {
432
533
  fontFamily: theme.font.sans,
433
- fontSize: theme.type.footnote.fontSize,
434
- fontWeight: theme.fontWeight.bold,
435
- color: theme.color.accentInk
534
+ fontSize: theme.fontSize[13],
535
+ fontWeight: theme.fontWeight.semibold,
536
+ letterSpacing: theme.type.footnote.letterSpacing,
537
+ color: theme.color.surface
436
538
  }
437
539
  }));
438
540
 
@@ -1,9 +1,9 @@
1
- import { useTourHost, useTourInsets, useAnchorRect, Beacon } from './chunk-H7DWSL4O.js';
1
+ import { useTourHost, useTourInsets, useAnchorRect, Beacon } from './chunk-36DA3IPO.js';
2
2
  import { useLabels } from './chunk-APCWFOZW.js';
3
- import { Icon } from './chunk-UXGIW7OK.js';
3
+ import { Icon } from './chunk-PCEFCOLN.js';
4
4
  import { springConfig } from './chunk-J64KGCGX.js';
5
5
  import * as React from 'react';
6
- import { View, Pressable, Animated, Easing, Text, Platform, findNodeHandle, AccessibilityInfo, LayoutAnimation } from 'react-native';
6
+ import { View, Pressable, Animated, Easing, Text, BackHandler, Platform, findNodeHandle, AccessibilityInfo, LayoutAnimation } from 'react-native';
7
7
  import { createStyleSheet, useStyles, useLoamTheme } from '@btndprojects/loam-theme-native';
8
8
  import { resolveAnchoredPosition, centreInContainer } from '@btndprojects/loam-engage';
9
9
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -112,14 +112,19 @@ function Coachmark({
112
112
  arrow = true,
113
113
  width,
114
114
  motion = "full",
115
- labels: labelsProp
115
+ labels: labelsProp,
116
+ titleStyle,
117
+ bodyStyle,
118
+ dockOffset,
119
+ presentation = "anchored"
116
120
  }) {
117
121
  const labels = useLabels("coachmark", DEFAULT_LABELS, labelsProp);
118
122
  const theme = useLoamTheme("coachmark");
119
123
  const { styles } = useStyles(sheet);
120
124
  const host = useTourHost();
121
125
  const insets = useTourInsets();
122
- const mode = variant ?? (target != null ? "docked" : "centered");
126
+ const asSheet = presentation === "sheet";
127
+ const mode = asSheet ? "docked" : variant ?? (target != null ? "docked" : "centered");
123
128
  const rect = useAnchorRect(mode === "anchored" ? target ?? null : null);
124
129
  const [size, setSize] = React.useState(null);
125
130
  const fade = React.useRef(new Animated.Value(0)).current;
@@ -128,6 +133,14 @@ function Coachmark({
128
133
  const visible = mode !== "anchored" || size !== null;
129
134
  const cardRef = React.useRef(null);
130
135
  const titleRef = React.useRef(null);
136
+ React.useEffect(() => {
137
+ if (!onClose) return;
138
+ const sub = BackHandler.addEventListener("hardwareBackPress", () => {
139
+ onClose();
140
+ return true;
141
+ });
142
+ return () => sub.remove();
143
+ }, [onClose]);
131
144
  const titleId = React.useId();
132
145
  React.useEffect(() => {
133
146
  if (Platform.OS !== "web" || typeof document === "undefined") return;
@@ -232,13 +245,17 @@ function Coachmark({
232
245
  } else if (mode === "docked") {
233
246
  position = {
234
247
  position: "absolute",
235
- left: theme.space[10] + insets.left,
236
- right: theme.space[10] + insets.right,
248
+ left: asSheet ? insets.left : theme.space[10] + insets.left,
249
+ right: asSheet ? insets.right : theme.space[10] + insets.right,
237
250
  // Safe-area insets are the host app's to supply — `react-native-safe-area-context`
238
251
  // reports them and a token cannot — but they no longer have to be applied by hand:
239
252
  // `TourHost` takes an `insets` prop and this reads it. Zero when none is given, so
240
253
  // the arithmetic is unconditional and correct on a device with no home indicator.
241
- bottom: theme.space[14] + insets.bottom
254
+ bottom: (asSheet ? 0 : dockOffset ?? theme.space[14]) + insets.bottom,
255
+ ...asSheet ? {
256
+ borderBottomLeftRadius: 0,
257
+ borderBottomRightRadius: 0
258
+ } : null
242
259
  };
243
260
  }
244
261
  const facing = mode === "anchored" && placed ? placed.side : mode === "docked" ? "top" : null;
@@ -309,23 +326,14 @@ function Coachmark({
309
326
  style: ({ pressed }) => [
310
327
  styles.iconButton,
311
328
  !kicker && !counter && !headerActions ? styles.pushEnd : null,
312
- pressed ? { opacity: theme.state.pressedOpacity } : null
329
+ pressed ? { backgroundColor: theme.state.pressed } : null
313
330
  ],
314
331
  children: /* @__PURE__ */ jsx(Icon, { name: "x", size: theme.icon.sm, color: theme.color.text3 })
315
332
  }
316
333
  ) : null
317
334
  ] }) : null,
318
- title ? /* @__PURE__ */ jsx(
319
- Text,
320
- {
321
- ref: titleRef,
322
- nativeID: titleId,
323
- accessibilityRole: "header",
324
- style: styles.title,
325
- children: title
326
- }
327
- ) : null,
328
- body ? /* @__PURE__ */ jsx(Text, { style: styles.body, children: body }) : null,
335
+ title ? /* @__PURE__ */ jsx(Text, { ref: titleRef, nativeID: titleId, accessibilityRole: "header", style: [styles.title, titleStyle], children: title }) : null,
336
+ body ? /* @__PURE__ */ jsx(Text, { style: [styles.body, bodyStyle], children: body }) : null,
329
337
  media,
330
338
  children,
331
339
  hint ? /* @__PURE__ */ jsx(CoachmarkHint, { motion, children: hint }) : null,
@@ -351,6 +359,8 @@ function Hotspot({
351
359
  onOpenChange,
352
360
  onSpent,
353
361
  motion = "full",
362
+ size = "lg",
363
+ presentation = "anchored",
354
364
  labels
355
365
  }) {
356
366
  const theme = useLoamTheme("coachmark");
@@ -387,6 +397,8 @@ function Hotspot({
387
397
  title,
388
398
  body,
389
399
  motion,
400
+ width: theme.panel[size],
401
+ presentation,
390
402
  onClose: () => setOpen(false),
391
403
  actions: action,
392
404
  labels
@@ -402,7 +414,8 @@ var sheet = createStyleSheet((theme) => ({
402
414
  borderColor: theme.color.border,
403
415
  padding: theme.space[16],
404
416
  gap: theme.space[10],
405
- ...theme.shadow.lg
417
+ // Non-modal, so the popover elevation rather than the dialog's.
418
+ ...theme.shadow.md
406
419
  },
407
420
  arrow: {
408
421
  position: "absolute",
@@ -413,14 +426,12 @@ var sheet = createStyleSheet((theme) => ({
413
426
  borderColor: theme.color.border,
414
427
  transform: [{ rotate: "45deg" }]
415
428
  },
416
- header: { flexDirection: "row", alignItems: "center", gap: theme.space[9] },
429
+ header: { flexDirection: "row", alignItems: "center", gap: theme.space[8] },
417
430
  headerActions: { flexDirection: "row", alignItems: "center", gap: theme.space[2] },
418
- pushEnd: { marginLeft: "auto" },
431
+ pushEnd: { marginStart: "auto" },
419
432
  kicker: {
420
- fontFamily: theme.font.mono,
421
- fontSize: theme.type.caption2.fontSize,
422
- letterSpacing: theme.tracking.caps,
423
- textTransform: "uppercase",
433
+ ...theme.type.overline,
434
+ fontFamily: theme.font.sans,
424
435
  color: theme.color.accentStrong
425
436
  },
426
437
  counter: {
@@ -429,12 +440,13 @@ var sheet = createStyleSheet((theme) => ({
429
440
  color: theme.color.text3,
430
441
  fontVariant: ["tabular-nums"]
431
442
  },
443
+ // A ghost icon Button sm: its square, its corner, its pressed layer.
432
444
  iconButton: {
433
445
  width: theme.ctl.sm,
434
446
  height: theme.ctl.sm,
435
447
  alignItems: "center",
436
448
  justifyContent: "center",
437
- borderRadius: theme.radius.full
449
+ borderRadius: theme.ctl.r.sm
438
450
  },
439
451
  title: {
440
452
  fontFamily: theme.font.display,
@@ -454,9 +466,12 @@ var sheet = createStyleSheet((theme) => ({
454
466
  alignSelf: "flex-start",
455
467
  flexDirection: "row",
456
468
  alignItems: "center",
469
+ // iOS / Android: the tonal Chip sm 30 (Refinement 36, Final 09 iOS row),
470
+ // ps 10 pe 12. The web hint is the 24 surface-2 chip.
457
471
  gap: theme.space[7],
458
- paddingVertical: theme.space[5],
459
- paddingHorizontal: theme.space[11],
472
+ height: theme.ctl.sm,
473
+ paddingStart: theme.space[10],
474
+ paddingEnd: theme.space[12],
460
475
  borderRadius: theme.radius.full,
461
476
  backgroundColor: theme.color.accentSoft,
462
477
  borderWidth: theme.borderWidth.thin,
@@ -468,11 +483,11 @@ var sheet = createStyleSheet((theme) => ({
468
483
  borderRadius: theme.radius.full,
469
484
  backgroundColor: theme.color.accentOnSoft
470
485
  },
486
+ // Chip sm label: 13 / 500, sentence case.
471
487
  hintText: {
472
- fontFamily: theme.font.mono,
473
- fontSize: theme.type.caption2.fontSize,
474
- letterSpacing: theme.tracking.caps,
475
- textTransform: "uppercase",
488
+ fontFamily: theme.font.sans,
489
+ fontSize: theme.fontSize[13],
490
+ fontWeight: theme.fontWeight.medium,
476
491
  color: theme.color.accentOnSoft
477
492
  },
478
493
  footer: {
@@ -1,7 +1,11 @@
1
1
  import '../chunk-J4KLDGI4.js';
2
- export { Coachmark, CoachmarkArrow, CoachmarkDots, CoachmarkHint, Hotspot } from '../chunk-YAAHPATV.js';
3
- import '../chunk-H7DWSL4O.js';
2
+ export { Coachmark, CoachmarkArrow, CoachmarkDots, CoachmarkHint, Hotspot } from '../chunk-ZYQ23DPT.js';
3
+ import '../chunk-36DA3IPO.js';
4
+ import '../chunk-Z7I4ZSO6.js';
5
+ import '../chunk-KXLDK6HB.js';
6
+ import '../chunk-43K3BLXV.js';
4
7
  import '../chunk-APCWFOZW.js';
5
- import '../chunk-UXGIW7OK.js';
8
+ import '../chunk-2YKVID2V.js';
9
+ import '../chunk-PCEFCOLN.js';
6
10
  import '../chunk-J64KGCGX.js';
7
11
  import '../chunk-I2KLQ2HA.js';
@@ -1,6 +1,7 @@
1
1
  import '../chunk-ZK2H4O5P.js';
2
- export { CodeBlock } from '../chunk-RXSCIO6W.js';
3
- import '../chunk-C6APNDVA.js';
2
+ export { CodeBlock } from '../chunk-O76QXRBV.js';
3
+ import '../chunk-TYOSA7JG.js';
4
+ import '../chunk-TH4PW2WU.js';
4
5
  import '../chunk-APCWFOZW.js';
5
- import '../chunk-UXGIW7OK.js';
6
+ import '../chunk-PCEFCOLN.js';
6
7
  import '../chunk-I2KLQ2HA.js';