@btndprojects/loam-ui-native 0.1.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 (412) hide show
  1. package/dist/accordion/index.js +7 -3
  2. package/dist/adaptive/index.js +16 -2
  3. package/dist/address-block/index.js +23 -0
  4. package/dist/alert/index.js +8 -2
  5. package/dist/analyzer/index.js +17 -6
  6. package/dist/announcement/index.js +18 -5
  7. package/dist/appearance-picker/index.js +15 -0
  8. package/dist/audio-player/index.js +29 -3
  9. package/dist/avatar/index.js +5 -2
  10. package/dist/avatar-group/index.js +9 -3
  11. package/dist/badge/index.js +10 -4
  12. package/dist/banner/index.js +6 -2
  13. package/dist/board/index.js +18 -6
  14. package/dist/button/index.js +9 -3
  15. package/dist/camera-permission/index.js +23 -12
  16. package/dist/capture-result/index.js +30 -17
  17. package/dist/card/index.js +10 -3
  18. package/dist/card-form/index.js +19 -9
  19. package/dist/carousel/index.js +6 -2
  20. package/dist/chart/index.js +18 -5
  21. package/dist/charts/index.js +21 -6
  22. package/dist/chat/index.js +41 -0
  23. package/dist/checkbox/index.js +9 -5
  24. package/dist/checklist/index.js +20 -8
  25. package/dist/checkout/index.js +30 -12
  26. package/dist/chip/index.js +11 -5
  27. package/dist/chunk-2BZD3NAP.js +1110 -0
  28. package/dist/chunk-2YKVID2V.js +35 -0
  29. package/dist/{chunk-JUAMLEHX.js → chunk-36DA3IPO.js} +137 -37
  30. package/dist/chunk-3A56MIAN.js +599 -0
  31. package/dist/chunk-3SCKCWF5.js +298 -0
  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-4CZMQDQL.js +192 -0
  36. package/dist/chunk-5DTKORLI.js +255 -0
  37. package/dist/{chunk-LOE5YNN3.js → chunk-5J4WFXFA.js} +68 -24
  38. package/dist/chunk-5KJ7TEQ6.js +305 -0
  39. package/dist/chunk-5NU33TXK.js +529 -0
  40. package/dist/chunk-5Z5ZYMOJ.js +1 -0
  41. package/dist/chunk-6KSUS7DF.js +690 -0
  42. package/dist/chunk-6RV6UW2J.js +349 -0
  43. package/dist/chunk-6RZM7RP2.js +520 -0
  44. package/dist/{chunk-4BXMXBJO.js → chunk-75BDCC7K.js} +24 -11
  45. package/dist/{chunk-PZXZJBMP.js → chunk-7CGJBQUA.js} +357 -32
  46. package/dist/{chunk-CJ5EOYZE.js → chunk-7IVF6JLJ.js} +24 -7
  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-7NGMUVNU.js +245 -0
  51. package/dist/chunk-7PBSIXT7.js +355 -0
  52. package/dist/chunk-7QOYGENL.js +443 -0
  53. package/dist/{chunk-H6NIOQHK.js → chunk-A7SWYDE5.js} +66 -15
  54. package/dist/chunk-ADHPJALR.js +3051 -0
  55. package/dist/chunk-ALJYZLNQ.js +509 -0
  56. package/dist/chunk-APCWFOZW.js +28 -0
  57. package/dist/chunk-AQ5FIG74.js +419 -0
  58. package/dist/chunk-AWKQIE5I.js +139 -0
  59. package/dist/chunk-B2MMZZQB.js +426 -0
  60. package/dist/{chunk-ZVFE5QGU.js → chunk-B7JZ3N5G.js} +174 -97
  61. package/dist/chunk-BL37SW6G.js +1314 -0
  62. package/dist/chunk-BTRMA7GC.js +21 -0
  63. package/dist/chunk-C7IUWIUZ.js +643 -0
  64. package/dist/chunk-CA3DUVYD.js +10 -0
  65. package/dist/{chunk-S7F6XLTK.js → chunk-CBCJSO2B.js} +213 -54
  66. package/dist/chunk-CHPX4MFI.js +239 -0
  67. package/dist/chunk-CLGAMIOT.js +648 -0
  68. package/dist/chunk-CUE7VML6.js +1141 -0
  69. package/dist/chunk-CVU6S2E5.js +1587 -0
  70. package/dist/{chunk-AZRX6SAC.js → chunk-CXPQMA6Z.js} +112 -37
  71. package/dist/chunk-D2LN4I7I.js +581 -0
  72. package/dist/{chunk-UWFLYMAR.js → chunk-D34LNBO5.js} +635 -238
  73. package/dist/chunk-D4BCQICM.js +765 -0
  74. package/dist/chunk-EABKIIA4.js +1 -0
  75. package/dist/chunk-EICSYRAG.js +341 -0
  76. package/dist/chunk-EMWAJMAS.js +83 -0
  77. package/dist/chunk-EOLZWRV6.js +149 -0
  78. package/dist/chunk-EOQVTGB6.js +350 -0
  79. package/dist/{chunk-BEDBFJND.js → chunk-ESGUHNB2.js} +119 -43
  80. package/dist/{chunk-Q72LJOVE.js → chunk-F2KNBPKY.js} +74 -18
  81. package/dist/{chunk-O7AE6DAF.js → chunk-G7H3NX3G.js} +57 -24
  82. package/dist/chunk-GM7YIPB7.js +1052 -0
  83. package/dist/chunk-GVQQG435.js +581 -0
  84. package/dist/chunk-HE43OMEL.js +1056 -0
  85. package/dist/chunk-HHOMFQ7R.js +2535 -0
  86. package/dist/chunk-HJFFOOJ4.js +1 -0
  87. package/dist/chunk-HNAKS4Z3.js +207 -0
  88. package/dist/chunk-HP6ST2OW.js +352 -0
  89. package/dist/chunk-HW3OWDTU.js +1 -0
  90. package/dist/{chunk-3ENTMPQY.js → chunk-HZDB44K4.js} +102 -52
  91. package/dist/chunk-I2KLQ2HA.js +19 -0
  92. package/dist/chunk-I6CUP2LW.js +1155 -0
  93. package/dist/chunk-ICV4Y2WY.js +27 -0
  94. package/dist/chunk-IHSIENOE.js +3950 -0
  95. package/dist/{chunk-CUMUNPXY.js → chunk-IMMALLRU.js} +68 -32
  96. package/dist/chunk-J64KGCGX.js +55 -0
  97. package/dist/{chunk-IVNRBPGC.js → chunk-JA6TK7H2.js} +255 -84
  98. package/dist/{chunk-OOPPQH27.js → chunk-JAVZ5JPV.js} +83 -29
  99. package/dist/chunk-JCMTP3E4.js +1251 -0
  100. package/dist/{chunk-U7TFM2JA.js → chunk-JCXFFK64.js} +75 -18
  101. package/dist/chunk-JWCVBFDU.js +236 -0
  102. package/dist/chunk-JXRTD5RI.js +414 -0
  103. package/dist/chunk-JYIUZUIQ.js +1567 -0
  104. package/dist/chunk-K3TK3GIV.js +219 -0
  105. package/dist/chunk-KEVZIHM2.js +1511 -0
  106. package/dist/chunk-KHZDNQQD.js +171 -0
  107. package/dist/chunk-KL4GDV4V.js +131 -0
  108. package/dist/chunk-KNILMM4H.js +225 -0
  109. package/dist/chunk-KRBUZV45.js +25 -0
  110. package/dist/{chunk-ITTYJZWX.js → chunk-KXLDK6HB.js} +161 -45
  111. package/dist/chunk-KZ3X7TSL.js +196 -0
  112. package/dist/chunk-L2WMOA2V.js +474 -0
  113. package/dist/chunk-L4D5LHCH.js +109 -0
  114. package/dist/chunk-LAUJPLDB.js +853 -0
  115. package/dist/{chunk-SBMNWWBV.js → chunk-LGNTP5XA.js} +89 -17
  116. package/dist/chunk-LUZFCCSD.js +271 -0
  117. package/dist/{chunk-HPPW424V.js → chunk-LXJCP4PL.js} +129 -37
  118. package/dist/chunk-MCOZJWPU.js +731 -0
  119. package/dist/chunk-MG4SKWLL.js +2587 -0
  120. package/dist/chunk-MPEPTSER.js +414 -0
  121. package/dist/chunk-MWPJ4YGP.js +1 -0
  122. package/dist/{chunk-TKQYWZ5V.js → chunk-N7AX4OA4.js} +108 -41
  123. package/dist/chunk-NHSLM6SE.js +523 -0
  124. package/dist/chunk-NNCOFLNE.js +24 -0
  125. package/dist/{chunk-J7Q7VCVC.js → chunk-NNJLVA7M.js} +54 -15
  126. package/dist/chunk-NZG75DGA.js +282 -0
  127. package/dist/chunk-O76QXRBV.js +431 -0
  128. package/dist/chunk-OANH27AK.js +223 -0
  129. package/dist/chunk-OCHPK5YV.js +609 -0
  130. package/dist/chunk-OMHVEVX4.js +436 -0
  131. package/dist/{chunk-YF4NSSMT.js → chunk-ONKQUJWD.js} +220 -65
  132. package/dist/chunk-OVTK7A6T.js +615 -0
  133. package/dist/chunk-PCEFCOLN.js +120 -0
  134. package/dist/chunk-PFLNFIVB.js +186 -0
  135. package/dist/chunk-PHSZY37H.js +300 -0
  136. package/dist/chunk-PJLTKDVY.js +18 -0
  137. package/dist/{chunk-4YIP3CWS.js → chunk-PK7BN3MI.js} +89 -19
  138. package/dist/{chunk-KMI5ML5I.js → chunk-PWFRDRGS.js} +155 -29
  139. package/dist/chunk-PYPMD46W.js +707 -0
  140. package/dist/chunk-Q6CCHDI7.js +331 -0
  141. package/dist/chunk-QFA5WS2A.js +750 -0
  142. package/dist/chunk-QJMMM4RC.js +124 -0
  143. package/dist/chunk-QNZII37O.js +10 -0
  144. package/dist/chunk-QYWEVAM6.js +407 -0
  145. package/dist/chunk-R5T4VZ7Z.js +126 -0
  146. package/dist/chunk-R77HFLZD.js +1 -0
  147. package/dist/{chunk-YC6WORFL.js → chunk-RAESDNU5.js} +228 -102
  148. package/dist/chunk-RBYQUXNL.js +1 -0
  149. package/dist/chunk-RCM3DT5E.js +1 -0
  150. package/dist/chunk-RGNY56L7.js +282 -0
  151. package/dist/chunk-RIK6UX2K.js +344 -0
  152. package/dist/{chunk-LAECSR4H.js → chunk-RJA3RXO3.js} +75 -60
  153. package/dist/chunk-RJYRJ3LD.js +1 -0
  154. package/dist/chunk-RMA3NOY4.js +599 -0
  155. package/dist/{chunk-DM5QUKKO.js → chunk-RSWKKAHK.js} +160 -66
  156. package/dist/chunk-RVOIIX3V.js +204 -0
  157. package/dist/chunk-SA2RRBGT.js +1077 -0
  158. package/dist/chunk-SG3J4R45.js +1428 -0
  159. package/dist/chunk-SPUK7JD4.js +238 -0
  160. package/dist/chunk-SWXV2K5N.js +434 -0
  161. package/dist/chunk-SYJEPXP6.js +1303 -0
  162. package/dist/{chunk-N32RGOA5.js → chunk-SZLI34TA.js} +93 -28
  163. package/dist/{chunk-4GBOGOTV.js → chunk-T77WJA74.js} +143 -18
  164. package/dist/chunk-TDWWVJA4.js +630 -0
  165. package/dist/chunk-TFHI5XDR.js +610 -0
  166. package/dist/chunk-TH4PW2WU.js +17 -0
  167. package/dist/chunk-TTQ24HQX.js +12 -0
  168. package/dist/chunk-TUACVJNG.js +12 -0
  169. package/dist/{chunk-CYRBHQQZ.js → chunk-TUL5RUIA.js} +201 -59
  170. package/dist/{chunk-4ZAHCY44.js → chunk-TYOSA7JG.js} +74 -38
  171. package/dist/chunk-TYQTMMEV.js +1 -0
  172. package/dist/chunk-TZO6YDS7.js +346 -0
  173. package/dist/chunk-U3ETF22F.js +328 -0
  174. package/dist/chunk-U6BYHD2N.js +213 -0
  175. package/dist/{chunk-WSW6ZFAQ.js → chunk-UF6EJXPQ.js} +20 -5
  176. package/dist/chunk-UNNQIPGK.js +792 -0
  177. package/dist/chunk-UQEN55EY.js +1 -0
  178. package/dist/chunk-UQVO6AJV.js +171 -0
  179. package/dist/chunk-VFDQAAIW.js +351 -0
  180. package/dist/chunk-VIUE3VQT.js +1 -0
  181. package/dist/chunk-VJLSSSGC.js +438 -0
  182. package/dist/chunk-VLMT6KYT.js +350 -0
  183. package/dist/chunk-VMHGBUGS.js +35 -0
  184. package/dist/{chunk-7O2FMUPT.js → chunk-VQKPBYW6.js} +400 -139
  185. package/dist/{chunk-EJBDRVIH.js → chunk-VSSTWLC5.js} +61 -16
  186. package/dist/chunk-VZYYZRPN.js +1992 -0
  187. package/dist/chunk-W23G6JLF.js +37 -0
  188. package/dist/chunk-WAIJCD2V.js +480 -0
  189. package/dist/chunk-WFMQ3WKM.js +378 -0
  190. package/dist/chunk-WJ2KDRMY.js +66 -0
  191. package/dist/chunk-WKFZJO54.js +437 -0
  192. package/dist/{chunk-SYNOJOQO.js → chunk-WVVD3XOV.js} +189 -93
  193. package/dist/chunk-XAIWMSLB.js +1 -0
  194. package/dist/chunk-XBXUBBJZ.js +98 -0
  195. package/dist/chunk-XCU7MYBJ.js +1 -0
  196. package/dist/chunk-XHE4PGCI.js +717 -0
  197. package/dist/chunk-XRSJ32M3.js +331 -0
  198. package/dist/chunk-XTCVOEAW.js +1 -0
  199. package/dist/chunk-XWGXVQF6.js +58 -0
  200. package/dist/{chunk-35OFI3JG.js → chunk-Y3XKKO5K.js} +258 -123
  201. package/dist/chunk-Y4QNMBLO.js +533 -0
  202. package/dist/chunk-Y5H4CTKO.js +1 -0
  203. package/dist/chunk-YBQIN75A.js +403 -0
  204. package/dist/chunk-YJ5PXOX3.js +158 -0
  205. package/dist/{chunk-AWJOCGFZ.js → chunk-YLRSRUPS.js} +81 -55
  206. package/dist/chunk-YM6MPJ4A.js +1 -0
  207. package/dist/chunk-YV7KZENV.js +200 -0
  208. package/dist/chunk-Z7I4ZSO6.js +316 -0
  209. package/dist/chunk-ZIRMWD2B.js +555 -0
  210. package/dist/chunk-ZPMG3FWU.js +75 -0
  211. package/dist/{chunk-QWCMU5B2.js → chunk-ZTXMK2G7.js} +289 -115
  212. package/dist/chunk-ZVJCWXAL.js +541 -0
  213. package/dist/{chunk-P23EQNRQ.js → chunk-ZYQ23DPT.js} +215 -49
  214. package/dist/coachmark/index.js +10 -3
  215. package/dist/code-block/index.js +6 -3
  216. package/dist/color-field/index.js +15 -5
  217. package/dist/color-picker/index.js +23 -0
  218. package/dist/commerce/index.js +31 -17
  219. package/dist/confirm/index.js +31 -0
  220. package/dist/connection-card/index.js +34 -0
  221. package/dist/connectivity/index.js +6 -2
  222. package/dist/context-menu/index.js +13 -3
  223. package/dist/copy-button/index.js +5 -2
  224. package/dist/data-grid/index.js +35 -17
  225. package/dist/date-range-picker/index.js +22 -9
  226. package/dist/description-list/index.js +6 -1
  227. package/dist/device-frame/index.js +30 -0
  228. package/dist/dialog/index.js +10 -2
  229. package/dist/divider/index.js +2 -0
  230. package/dist/empty-state/index.js +15 -2
  231. package/dist/error-summary/index.js +9 -2
  232. package/dist/fab/index.js +7 -2
  233. package/dist/file-manager/index.js +44 -0
  234. package/dist/file-upload/index.js +16 -7
  235. package/dist/filter-bar/index.js +14 -7
  236. package/dist/flow-run/index.js +23 -13
  237. package/dist/form/index.js +32 -3
  238. package/dist/gallery/index.js +8 -2
  239. package/dist/hold-to-confirm/index.js +6 -2
  240. package/dist/hover-card/index.js +18 -0
  241. package/dist/icon-tile/index.js +10 -0
  242. package/dist/image/index.js +9 -0
  243. package/dist/index.d.ts +30789 -12332
  244. package/dist/index.js +424 -135
  245. package/dist/infinite-list/index.js +6 -2
  246. package/dist/inline-edit/index.js +8 -5
  247. package/dist/input/index.js +7 -4
  248. package/dist/interactions/index.js +5 -1
  249. package/dist/invoice/index.js +22 -9
  250. package/dist/job-row/index.js +22 -0
  251. package/dist/json-inspector/index.js +20 -0
  252. package/dist/kbd/index.js +5 -1
  253. package/dist/keyboard/index.js +9 -2
  254. package/dist/level-meter/index.js +9 -0
  255. package/dist/list-row/index.js +14 -4
  256. package/dist/log-viewer/index.js +11 -2
  257. package/dist/map-view/index.js +16 -3
  258. package/dist/markdown/index.js +12 -6
  259. package/dist/metric/index.js +10 -4
  260. package/dist/metric-strip/index.js +12 -0
  261. package/dist/money/index.js +16 -3
  262. package/dist/nav-drawer/index.js +8 -2
  263. package/dist/nav-header/index.js +15 -0
  264. package/dist/navigation/index.js +32 -2
  265. package/dist/notification-center/index.js +28 -12
  266. package/dist/number-roll/index.js +7 -2
  267. package/dist/onboarding-pager/index.js +22 -0
  268. package/dist/one-handed/index.js +5 -3
  269. package/dist/os-surfaces/index.js +9 -3
  270. package/dist/otp/index.js +9 -5
  271. package/dist/page-header/index.js +3 -1
  272. package/dist/pagination/index.js +8 -0
  273. package/dist/payment-method/index.js +21 -11
  274. package/dist/payment-status/index.js +26 -15
  275. package/dist/permission/index.js +21 -2
  276. package/dist/picker/index.js +22 -6
  277. package/dist/progress/index.js +11 -3
  278. package/dist/provenance/index.js +16 -0
  279. package/dist/pull-to-refresh/index.js +4 -2
  280. package/dist/qr-code/index.js +16 -0
  281. package/dist/query-builder/index.js +30 -0
  282. package/dist/radio-group/index.js +9 -5
  283. package/dist/rating/index.js +10 -2
  284. package/dist/receivables/index.js +35 -17
  285. package/dist/recording-indicator/index.js +21 -0
  286. package/dist/refund/index.js +28 -15
  287. package/dist/repeatable-rows/index.js +19 -0
  288. package/dist/save-status/index.js +7 -3
  289. package/dist/screen/index.js +3 -0
  290. package/dist/scroll-area/index.js +3 -1
  291. package/dist/search-field/index.js +13 -0
  292. package/dist/secret-field/index.js +19 -0
  293. package/dist/section-header/index.js +4 -0
  294. package/dist/segmented-control/index.js +4 -3
  295. package/dist/sheet/index.js +11 -3
  296. package/dist/shortcuts-sheet/index.js +2 -0
  297. package/dist/sign-in-screen/index.js +25 -0
  298. package/dist/skeleton/index.js +5 -1
  299. package/dist/slider/index.js +5 -2
  300. package/dist/sortable/index.js +8 -0
  301. package/dist/spinner/index.js +4 -1
  302. package/dist/split-button/index.js +21 -6
  303. package/dist/spotlight/index.js +9 -1
  304. package/dist/stack/index.js +2 -0
  305. package/dist/stage-timeline/index.js +8 -3
  306. package/dist/status-dot/index.js +8 -2
  307. package/dist/stepper/index.js +11 -4
  308. package/dist/streaming-text/index.js +4 -2
  309. package/dist/survey/index.js +29 -16
  310. package/dist/switch/index.js +9 -3
  311. package/dist/system-state/index.js +15 -4
  312. package/dist/tab-bar/index.js +13 -2
  313. package/dist/tabs/index.js +12 -2
  314. package/dist/tags-input/index.js +13 -0
  315. package/dist/text/index.js +4 -0
  316. package/dist/textarea/index.js +8 -5
  317. package/dist/thinking/index.js +6 -1
  318. package/dist/tile-rail/index.js +10 -0
  319. package/dist/time-field/index.js +20 -0
  320. package/dist/time-range-control/index.js +36 -0
  321. package/dist/timeline/index.js +4 -2
  322. package/dist/toast/index.js +6 -2
  323. package/dist/toolbar/index.js +5 -2
  324. package/dist/tour/index.js +15 -10
  325. package/dist/transcript/index.js +28 -0
  326. package/dist/truncation-notice/index.js +5 -2
  327. package/dist/update-notice/index.js +19 -9
  328. package/dist/video-player/index.js +29 -2
  329. package/dist/viewfinder/index.js +15 -5
  330. package/dist/widget/index.js +14 -4
  331. package/dist/wizard/index.js +10 -4
  332. package/package.json +13 -12
  333. package/dist/chunk-223Q2T2Q.js +0 -229
  334. package/dist/chunk-2A5NIQAK.js +0 -254
  335. package/dist/chunk-2GK6PHGE.js +0 -363
  336. package/dist/chunk-2ZZ7TDJ4.js +0 -324
  337. package/dist/chunk-3ARE4TES.js +0 -195
  338. package/dist/chunk-3NMD74ZU.js +0 -4
  339. package/dist/chunk-3WPW4KUN.js +0 -182
  340. package/dist/chunk-423B7SPN.js +0 -993
  341. package/dist/chunk-47FWHGUN.js +0 -394
  342. package/dist/chunk-4DS5ZWVC.js +0 -83
  343. package/dist/chunk-4SZYY6AN.js +0 -99
  344. package/dist/chunk-4YQOR7JM.js +0 -204
  345. package/dist/chunk-52X2VYTD.js +0 -228
  346. package/dist/chunk-5YNTNN5A.js +0 -177
  347. package/dist/chunk-6HT2LP62.js +0 -504
  348. package/dist/chunk-6N33LFQA.js +0 -35
  349. package/dist/chunk-6X6PQ443.js +0 -432
  350. package/dist/chunk-7CFF4HXS.js +0 -126
  351. package/dist/chunk-AI4DWZCD.js +0 -162
  352. package/dist/chunk-BTTFCMKG.js +0 -166
  353. package/dist/chunk-BV3B2HYZ.js +0 -1635
  354. package/dist/chunk-C2NTXVWM.js +0 -98
  355. package/dist/chunk-CDRZHT42.js +0 -424
  356. package/dist/chunk-DHWADYZX.js +0 -144
  357. package/dist/chunk-F5XNPWS7.js +0 -1024
  358. package/dist/chunk-FMYDDECK.js +0 -1521
  359. package/dist/chunk-GDKZTW34.js +0 -395
  360. package/dist/chunk-GL7B2DOW.js +0 -134
  361. package/dist/chunk-GNNJ4GCC.js +0 -471
  362. package/dist/chunk-HET4LLMX.js +0 -129
  363. package/dist/chunk-HZ6CNMAF.js +0 -870
  364. package/dist/chunk-IIQTAY3J.js +0 -715
  365. package/dist/chunk-JNH2TYIN.js +0 -96
  366. package/dist/chunk-JNY4ZHAR.js +0 -634
  367. package/dist/chunk-JXJB2X6M.js +0 -131
  368. package/dist/chunk-LRJNDEIA.js +0 -302
  369. package/dist/chunk-LSS54GLJ.js +0 -116
  370. package/dist/chunk-LZLHELAG.js +0 -137
  371. package/dist/chunk-MOUJOP55.js +0 -425
  372. package/dist/chunk-NKB7BZYK.js +0 -167
  373. package/dist/chunk-NQYBUO3K.js +0 -1795
  374. package/dist/chunk-O4AEHWII.js +0 -464
  375. package/dist/chunk-OETCUXQP.js +0 -134
  376. package/dist/chunk-OPXFZ4Y5.js +0 -204
  377. package/dist/chunk-PJXUJYS6.js +0 -248
  378. package/dist/chunk-PUPM2YGF.js +0 -376
  379. package/dist/chunk-QCDXZBC5.js +0 -247
  380. package/dist/chunk-QDYDBCFP.js +0 -197
  381. package/dist/chunk-QJJ6MADV.js +0 -274
  382. package/dist/chunk-QKXCPTFS.js +0 -349
  383. package/dist/chunk-RIBDXGUG.js +0 -108
  384. package/dist/chunk-RJQOOHT2.js +0 -214
  385. package/dist/chunk-RNGLIHFA.js +0 -191
  386. package/dist/chunk-RQ3HASCC.js +0 -6
  387. package/dist/chunk-RSOJT5YW.js +0 -124
  388. package/dist/chunk-RUZHTGKB.js +0 -237
  389. package/dist/chunk-RW6ZL2FQ.js +0 -284
  390. package/dist/chunk-TKVFVF5D.js +0 -95
  391. package/dist/chunk-TOXAGRDQ.js +0 -144
  392. package/dist/chunk-TUTI5HOZ.js +0 -112
  393. package/dist/chunk-UC2WGUP3.js +0 -627
  394. package/dist/chunk-UYG5L34B.js +0 -87
  395. package/dist/chunk-VBOXAEPI.js +0 -336
  396. package/dist/chunk-VCDBXW5H.js +0 -188
  397. package/dist/chunk-VEAYTRPX.js +0 -414
  398. package/dist/chunk-VQHPQEUH.js +0 -273
  399. package/dist/chunk-VXDZFJGP.js +0 -874
  400. package/dist/chunk-XNUVB5OL.js +0 -375
  401. package/dist/chunk-XOSCY2CW.js +0 -242
  402. package/dist/chunk-XXXEFXY5.js +0 -99
  403. package/dist/chunk-YDGVJETP.js +0 -60
  404. package/dist/chunk-YG3ZJHGU.js +0 -223
  405. package/dist/chunk-YTFKPRUK.js +0 -845
  406. package/dist/chunk-Z7H7VSFZ.js +0 -323
  407. package/dist/header/index.js +0 -5
  408. package/dist/search-bar/index.js +0 -5
  409. /package/dist/{chunk-3ECPOSKO.js → chunk-3BKLBYPK.js} +0 -0
  410. /package/dist/{chunk-JRLTGLN4.js → chunk-3UG6JUCV.js} +0 -0
  411. /package/dist/{chunk-RTIKSY6A.js → chunk-4QCR3K2J.js} +0 -0
  412. /package/dist/{chunk-VFCUIDRT.js → chunk-5WWRTEPS.js} +0 -0
@@ -1,31 +1,21 @@
1
- import { Icon } from './chunk-TKVFVF5D.js';
1
+ import { useLabels } from './chunk-APCWFOZW.js';
2
+ import { Icon } from './chunk-PCEFCOLN.js';
3
+ import { springConfig, motionTiming, useResolvedMotion } from './chunk-J64KGCGX.js';
2
4
  import * as React from 'react';
3
- import { Animated, Easing, Pressable, Text, View } from 'react-native';
5
+ import { Animated, Pressable, Text, View, LayoutAnimation } from 'react-native';
4
6
  import { createStyleSheet, useStyles, useLoamTheme } from '@btndprojects/loam-theme-native';
5
7
  import { jsx, jsxs } from 'react/jsx-runtime';
6
8
 
7
9
  var SPEC = {
8
- /** Row gap between the icon and the copy column. */
9
- gap: 10,
10
+ /** Row gap between the icon and the copy column (12, Final 03). */
11
+ gap: 12,
10
12
  // loam-allow-raw: ramp key, read via theme.space at the use site
11
- /** Leading pad — 1px deeper than the other three, to optically inset the icon. */
12
- padStart: 13,
13
- /** Inline banner title size. */
14
- titleSize: 13.5,
15
- /** Message, action label and system-banner copy size. */
16
- bodySize: 12.5,
17
13
  /** Message line-height ratio. v2 moved this off `lineHeight.normal` (1.45). */
18
14
  messageLineHeight: 1.4,
19
15
  /** Trailing action row's negative end margin, so the label aligns to the edge. */
20
16
  actionInsetEnd: -8,
21
17
  /** Trailing action row's negative bottom margin, absorbing its own tap padding. */
22
18
  actionInsetBottom: -6,
23
- /**
24
- * Visible height of the action label's box. Deliberately *below* `tapMin`: the
25
- * label is unboxed, so the target is grown with `hitSlop` instead of with a
26
- * 44px slab of empty space (`actionHitSlop` below closes the gap).
27
- */
28
- actionMinHeight: 28,
29
19
  /** Action label horizontal padding. */
30
20
  actionPadX: 8,
31
21
  /**
@@ -43,14 +33,10 @@ var SPEC = {
43
33
  glyph: 18,
44
34
  /** Close-glyph size in the system banner. */
45
35
  systemGlyph: 15,
46
- /** Meta-line (last-updated stamp / service window / countdown) size. */
47
- metaSize: 11.5,
48
36
  /** Refresh affordance: gap between icon and label. */
49
37
  refreshGap: 6,
50
38
  /** Refresh affordance: horizontal padding. */
51
39
  refreshPadX: 10,
52
- /** Refresh affordance: box height (grown to `tapMin` with `hitSlop`). */
53
- refreshMinHeight: 32,
54
40
  /** Refresh affordance: glyph size. */
55
41
  refreshGlyph: 15,
56
42
  /**
@@ -60,6 +46,12 @@ var SPEC = {
60
46
  systemDismissInsetY: -9,
61
47
  systemDismissInsetEnd: -13
62
48
  };
49
+ var DEFAULT_LABELS = {
50
+ dismiss: "Dismiss",
51
+ refresh: "Refresh",
52
+ updated: (when) => `Updated ${when}`,
53
+ windowInZone: (timeWindow, timezone) => `${timeWindow} \xB7 ${timezone}`
54
+ };
63
55
  var TONE_ICON = {
64
56
  info: "info",
65
57
  success: "check-circle",
@@ -73,7 +65,7 @@ var VARIANT_META = {
73
65
  maintenance: { tone: "info", icon: "wrench" }
74
66
  };
75
67
  function useToneColor(tone) {
76
- const theme = useLoamTheme();
68
+ const theme = useLoamTheme("banner");
77
69
  switch (tone) {
78
70
  case "success":
79
71
  return theme.color.goodOnSoft;
@@ -105,42 +97,57 @@ function Banner({
105
97
  onDismiss,
106
98
  updatedLabel,
107
99
  onRefresh,
108
- refreshLabel = "Refresh",
100
+ refreshLabel: refreshLabelProp,
109
101
  timeWindow,
110
102
  timezone,
111
103
  countdown,
112
- motion = "full"
104
+ motion = "full",
105
+ labels: labelsProp
113
106
  }) {
107
+ const labels = useLabels("banner", DEFAULT_LABELS, labelsProp);
108
+ const refreshLabel = refreshLabelProp ?? labels.refresh;
114
109
  const variantMeta = variant === "default" ? void 0 : VARIANT_META[variant];
115
110
  const effectiveTone = tone ?? variantMeta?.tone ?? "info";
116
111
  const { styles } = useStyles(sheet, { tone: effectiveTone, placement });
117
- const theme = useLoamTheme();
112
+ const theme = useLoamTheme("banner");
118
113
  const toneColor = useToneColor(effectiveTone);
119
114
  const borderColor = toneColor + "55";
120
115
  const iconName = icon ?? variantMeta?.icon ?? TONE_ICON[effectiveTone];
121
116
  const actionPos = actionLabel ? resolvePlacement(actionPlacement, actionLabel) : void 0;
122
117
  const dismissible = variant !== "offline" && Boolean(onDismiss);
123
118
  const showRefresh = !actionLabel && Boolean(onRefresh);
124
- const metaLine = variant === "stale" && updatedLabel ? `Updated ${updatedLabel}` : variant === "maintenance" && timeWindow ? timezone ? `${timeWindow} \xB7 ${timezone}` : timeWindow : null;
125
- const actionHitSlop = Math.max(0, Math.round((theme.tapMin - SPEC.actionMinHeight) / 2));
119
+ const metaLine = variant === "stale" && updatedLabel ? labels.updated(updatedLabel) : variant === "maintenance" && timeWindow ? timezone ? labels.windowInZone(timeWindow, timezone) : timeWindow : null;
120
+ const actionHitSlop = Math.max(0, Math.round((theme.tapMin - theme.ctl.sm) / 2));
126
121
  const dismissHitSlop = Math.max(0, Math.round((theme.tapMin - SPEC.glyph) / 2));
127
- const refreshHitSlop = Math.max(0, Math.round((theme.tapMin - SPEC.refreshMinHeight) / 2));
122
+ const refreshHitSlop = Math.max(0, Math.round((theme.tapMin - theme.ctl.sm) / 2));
128
123
  const animate = motion === "full" && !theme.reduceMotion;
129
- const opacity = React.useRef(new Animated.Value(animate ? 0 : 1)).current;
124
+ const opacity = React.useRef(new Animated.Value(motion === "none" ? 1 : 0)).current;
130
125
  React.useEffect(() => {
131
- if (!animate) {
126
+ if (motion === "none") {
132
127
  opacity.setValue(1);
133
128
  return;
134
129
  }
135
- const anim = Animated.timing(opacity, {
130
+ const anim = animate ? Animated.spring(opacity, {
131
+ ...springConfig(theme, "ds"),
136
132
  toValue: 1,
137
- duration: theme.motion.enter.duration,
138
- easing: Easing.bezier(...theme.motion.enter.easing),
139
133
  useNativeDriver: true
140
- });
134
+ }) : Animated.timing(opacity, { ...motionTiming("reduced"), toValue: 1, useNativeDriver: true });
141
135
  anim.start();
142
136
  return () => anim.stop();
143
- }, [animate, opacity, theme.motion.enter.duration, theme.motion.enter.easing]);
137
+ }, []);
138
+ const close = () => {
139
+ if (motion !== "none") {
140
+ LayoutAnimation.configureNext({
141
+ duration: theme.spring.de.duration,
142
+ update: animate ? { type: LayoutAnimation.Types.spring, springDamping: theme.spring.ds.dampingRatio } : { type: LayoutAnimation.Types.easeOut },
143
+ delete: {
144
+ type: LayoutAnimation.Types.easeOut,
145
+ property: LayoutAnimation.Properties.opacity
146
+ }
147
+ });
148
+ }
149
+ onDismiss?.();
150
+ };
144
151
  const action = actionLabel && actionPos ? /* @__PURE__ */ jsx(
145
152
  Pressable,
146
153
  {
@@ -148,7 +155,10 @@ function Banner({
148
155
  accessibilityLabel: actionLabel,
149
156
  onPress: onAction,
150
157
  hitSlop: actionHitSlop,
151
- style: actionPos === "inline" ? styles.actionInline : styles.action,
158
+ style: ({ pressed }) => [
159
+ actionPos === "inline" ? styles.actionInline : styles.action,
160
+ pressed ? styles.pressed : null
161
+ ],
152
162
  children: /* @__PURE__ */ jsx(Text, { style: [styles.actionLabel, { color: toneColor }], children: actionLabel })
153
163
  }
154
164
  ) : null;
@@ -159,58 +169,140 @@ function Banner({
159
169
  accessibilityLabel: refreshLabel,
160
170
  onPress: onRefresh,
161
171
  hitSlop: refreshHitSlop,
162
- style: [styles.refresh, { borderColor: toneColor }],
172
+ style: ({ pressed }) => [
173
+ styles.refresh,
174
+ { borderColor: toneColor },
175
+ pressed ? styles.pressed : null
176
+ ],
163
177
  children: [
164
178
  /* @__PURE__ */ jsx(Icon, { name: "refresh", size: SPEC.refreshGlyph, color: toneColor }),
165
179
  /* @__PURE__ */ jsx(Text, { style: [styles.actionLabel, { color: toneColor }], children: refreshLabel })
166
180
  ]
167
181
  }
168
182
  ) : null;
169
- return /* @__PURE__ */ jsxs(Animated.View, { accessibilityRole: "alert", style: [styles.base, { borderColor, opacity }], children: [
170
- /* @__PURE__ */ jsx(View, { style: styles.iconSlot, children: /* @__PURE__ */ jsx(Icon, { name: iconName, size: SPEC.glyph, color: toneColor }) }),
171
- /* @__PURE__ */ jsxs(View, { style: styles.content, children: [
172
- title ? /* @__PURE__ */ jsx(Text, { style: styles.title, children: title }) : null,
173
- message ? /* @__PURE__ */ jsx(Text, { style: styles.message, children: message }) : typeof children === "string" ? /* @__PURE__ */ jsx(Text, { style: styles.message, children }) : children,
174
- metaLine ? /* @__PURE__ */ jsx(Text, { style: [styles.meta, { color: toneColor }], children: metaLine }) : null,
175
- variant === "maintenance" && countdown ? /* @__PURE__ */ jsx(Text, { style: [styles.metaStrong, { color: toneColor }], children: countdown }) : null,
176
- actionPos === "block" ? /* @__PURE__ */ jsx(View, { style: styles.actionRow, children: action }) : null
177
- ] }),
178
- actionPos === "inline" ? action : null,
179
- refresh ? /* @__PURE__ */ jsx(View, { style: styles.refreshSlot, children: refresh }) : null,
180
- dismissible ? /* @__PURE__ */ jsx(
181
- Pressable,
182
- {
183
- accessibilityRole: "button",
184
- accessibilityLabel: "Dismiss",
185
- onPress: onDismiss,
186
- hitSlop: dismissHitSlop,
187
- style: styles.dismiss,
188
- children: /* @__PURE__ */ jsx(Icon, { name: "x", size: SPEC.glyph, color: toneColor })
189
- }
190
- ) : null
191
- ] });
183
+ return /* @__PURE__ */ jsxs(
184
+ Animated.View,
185
+ {
186
+ accessibilityRole: "alert",
187
+ style: [
188
+ styles.base,
189
+ {
190
+ borderColor,
191
+ opacity,
192
+ transform: animate ? [{ translateY: opacity.interpolate({ inputRange: [0, 1], outputRange: [-8, 0] }) }] : []
193
+ }
194
+ ],
195
+ children: [
196
+ /* @__PURE__ */ jsx(View, { style: styles.iconSlot, children: /* @__PURE__ */ jsx(Icon, { name: iconName, size: SPEC.glyph, color: toneColor }) }),
197
+ /* @__PURE__ */ jsxs(View, { style: styles.content, children: [
198
+ title ? /* @__PURE__ */ jsx(Text, { style: [styles.title, { color: toneColor }], children: title }) : null,
199
+ message ? /* @__PURE__ */ jsx(Text, { style: [styles.message, { color: toneColor }], children: message }) : typeof children === "string" ? /* @__PURE__ */ jsx(Text, { style: [styles.message, { color: toneColor }], children }) : children,
200
+ metaLine ? /* @__PURE__ */ jsx(Text, { style: [styles.meta, { color: toneColor }], children: metaLine }) : null,
201
+ variant === "maintenance" && countdown ? /* @__PURE__ */ jsx(Text, { style: [styles.metaStrong, { color: toneColor }], children: countdown }) : null,
202
+ actionPos === "block" ? /* @__PURE__ */ jsx(View, { style: styles.actionRow, children: action }) : null
203
+ ] }),
204
+ actionPos === "inline" ? action : null,
205
+ refresh ? /* @__PURE__ */ jsx(View, { style: styles.refreshSlot, children: refresh }) : null,
206
+ dismissible ? /* @__PURE__ */ jsx(
207
+ Pressable,
208
+ {
209
+ accessibilityRole: "button",
210
+ accessibilityLabel: labels.dismiss,
211
+ onPress: close,
212
+ hitSlop: dismissHitSlop,
213
+ style: ({ pressed }) => [styles.dismiss, pressed ? styles.pressed : null],
214
+ children: /* @__PURE__ */ jsx(Icon, { name: "x", size: SPEC.glyph, color: toneColor })
215
+ }
216
+ ) : null
217
+ ]
218
+ }
219
+ );
192
220
  }
193
221
  function SystemBanner({
194
222
  message,
195
223
  icon = "star",
196
- onDismiss
224
+ onDismiss,
225
+ tone,
226
+ actionLabel,
227
+ onAction,
228
+ motion = "full",
229
+ variant = "solid",
230
+ size = "md",
231
+ labels: labelsProp
197
232
  }) {
233
+ const labels = useLabels("banner", DEFAULT_LABELS, labelsProp);
198
234
  const { styles } = useStyles(sheet);
199
- const theme = useLoamTheme();
200
- return /* @__PURE__ */ jsxs(View, { accessibilityRole: "alert", style: styles.system, children: [
201
- /* @__PURE__ */ jsx(Icon, { name: icon, size: 18, color: theme.color.accentInk }),
202
- /* @__PURE__ */ jsx(Text, { style: styles.systemMessage, numberOfLines: 1, ellipsizeMode: "tail", children: message }),
203
- onDismiss ? /* @__PURE__ */ jsx(
204
- Pressable,
205
- {
206
- accessibilityRole: "button",
207
- accessibilityLabel: "Dismiss",
208
- onPress: onDismiss,
209
- style: styles.systemDismiss,
210
- children: /* @__PURE__ */ jsx(Icon, { name: "x", size: SPEC.systemGlyph, color: theme.color.accentInk })
211
- }
212
- ) : null
213
- ] });
235
+ const theme = useLoamTheme("banner");
236
+ const toneFill = {
237
+ info: { fill: theme.color.info, ink: theme.color.infoInk },
238
+ success: { fill: theme.color.good, ink: theme.color.goodInk },
239
+ warn: { fill: theme.color.warn, ink: theme.color.warnInk },
240
+ danger: { fill: theme.color.danger, ink: theme.color.dangerInk },
241
+ neutral: { fill: theme.color.text, ink: theme.color.surface }
242
+ };
243
+ const softFill = {
244
+ info: { fill: theme.color.infoSoft, ink: theme.color.infoOnSoft },
245
+ success: { fill: theme.color.goodSoft, ink: theme.color.goodOnSoft },
246
+ warn: { fill: theme.color.warnSoft, ink: theme.color.warnOnSoft },
247
+ danger: { fill: theme.color.dangerSoft, ink: theme.color.dangerOnSoft },
248
+ neutral: { fill: theme.status.pendingSoft, ink: theme.status.pendingOnSoft }
249
+ };
250
+ const fills = variant === "soft" ? softFill : toneFill;
251
+ const fill = tone ? fills[tone] : variant === "soft" ? { fill: theme.color.accentSoft, ink: theme.color.accentOnSoft } : { fill: theme.color.accent, ink: theme.color.accentInk };
252
+ const compact = size === "sm";
253
+ const level = useResolvedMotion(motion, "banner");
254
+ const enter = React.useRef(new Animated.Value(level === "none" ? 1 : 0)).current;
255
+ React.useEffect(() => {
256
+ if (level === "none") return;
257
+ Animated.timing(enter, { ...motionTiming(level), toValue: 1, useNativeDriver: true }).start();
258
+ }, []);
259
+ return /* @__PURE__ */ jsxs(
260
+ Animated.View,
261
+ {
262
+ accessibilityRole: "alert",
263
+ style: [
264
+ styles.system,
265
+ compact && { paddingVertical: theme.space.s2 },
266
+ { backgroundColor: fill.fill, opacity: enter }
267
+ ],
268
+ children: [
269
+ /* @__PURE__ */ jsx(Icon, { name: icon, size: compact ? 16 : 18, color: fill.ink }),
270
+ /* @__PURE__ */ jsx(
271
+ Text,
272
+ {
273
+ style: [
274
+ styles.systemMessage,
275
+ compact && { fontSize: theme.fontSize[13] },
276
+ { color: fill.ink }
277
+ ],
278
+ numberOfLines: 1,
279
+ ellipsizeMode: "tail",
280
+ children: message
281
+ }
282
+ ),
283
+ actionLabel && onAction ? /* @__PURE__ */ jsx(
284
+ Pressable,
285
+ {
286
+ accessibilityRole: "button",
287
+ accessibilityLabel: actionLabel,
288
+ onPress: onAction,
289
+ style: ({ pressed }) => pressed ? styles.pressed : null,
290
+ children: /* @__PURE__ */ jsx(Text, { style: [styles.systemMessage, styles.systemAction, { color: fill.ink }], children: actionLabel })
291
+ }
292
+ ) : null,
293
+ onDismiss ? /* @__PURE__ */ jsx(
294
+ Pressable,
295
+ {
296
+ accessibilityRole: "button",
297
+ accessibilityLabel: labels.dismiss,
298
+ onPress: onDismiss,
299
+ style: ({ pressed }) => [styles.systemDismiss, pressed ? styles.pressed : null],
300
+ children: /* @__PURE__ */ jsx(Icon, { name: "x", size: SPEC.systemGlyph, color: fill.ink })
301
+ }
302
+ ) : null
303
+ ]
304
+ }
305
+ );
214
306
  }
215
307
  var sheet = createStyleSheet((theme) => ({
216
308
  base: {
@@ -219,8 +311,9 @@ var sheet = createStyleSheet((theme) => ({
219
311
  gap: theme.space[SPEC.gap],
220
312
  paddingTop: theme.space.s3,
221
313
  paddingBottom: theme.space.s3,
314
+ // Padding 16 / 12: the start is the full 16, the end stays 12 for the dismiss.
222
315
  paddingEnd: theme.space.s3,
223
- paddingStart: SPEC.padStart,
316
+ paddingStart: theme.space.s4,
224
317
  borderRadius: theme.radius.md,
225
318
  borderWidth: theme.borderWidth.thin,
226
319
  variants: {
@@ -261,15 +354,14 @@ var sheet = createStyleSheet((theme) => ({
261
354
  title: {
262
355
  fontFamily: theme.font.sans,
263
356
  fontWeight: theme.fontWeight.bold,
264
- fontSize: SPEC.titleSize,
265
- lineHeight: SPEC.titleSize * theme.lineHeight.snug,
266
- color: theme.color.text
357
+ fontSize: theme.fontSize[14],
358
+ lineHeight: theme.fontSize[14] * theme.lineHeight.snug
267
359
  },
268
360
  message: {
269
361
  fontFamily: theme.font.sans,
270
- fontSize: SPEC.bodySize,
271
- lineHeight: SPEC.bodySize * SPEC.messageLineHeight,
272
- color: theme.color.text
362
+ fontWeight: theme.fontWeight.medium,
363
+ fontSize: theme.fontSize[14],
364
+ lineHeight: theme.fontSize[14] * SPEC.messageLineHeight
273
365
  },
274
366
  // The block row carries no `marginTop`: the copy column's own 2px gap is the
275
367
  // separation, and the negative bottom margin absorbs the label's tap padding.
@@ -280,7 +372,7 @@ var sheet = createStyleSheet((theme) => ({
280
372
  marginBottom: SPEC.actionInsetBottom
281
373
  },
282
374
  action: {
283
- minHeight: SPEC.actionMinHeight,
375
+ minHeight: theme.ctl.sm,
284
376
  paddingHorizontal: SPEC.actionPadX,
285
377
  borderRadius: theme.radius.sm,
286
378
  borderWidth: 0,
@@ -293,7 +385,7 @@ var sheet = createStyleSheet((theme) => ({
293
385
  // from adding any height, so an inline action is free.
294
386
  actionInline: {
295
387
  flexShrink: 0,
296
- minHeight: SPEC.actionMinHeight,
388
+ minHeight: theme.ctl.sm,
297
389
  paddingHorizontal: SPEC.actionPadX,
298
390
  marginTop: SPEC.inlineActionInsetY,
299
391
  marginBottom: SPEC.inlineActionInsetY,
@@ -303,25 +395,26 @@ var sheet = createStyleSheet((theme) => ({
303
395
  alignItems: "center",
304
396
  justifyContent: "center"
305
397
  },
398
+ // The OS button weight (Final 03): 600 on iOS, 500 on Android.
306
399
  actionLabel: {
307
400
  fontFamily: theme.font.sans,
308
- fontWeight: theme.fontWeight.bold,
309
- fontSize: SPEC.bodySize
401
+ fontWeight: theme.platform === "iOS" ? theme.fontWeight.semibold : theme.fontWeight.medium,
402
+ fontSize: theme.fontSize[13]
310
403
  },
311
404
  // A last-updated stamp / service window. Colored the tone's on-soft ink at the
312
405
  // call site (AA on the tint); a plain weight so it reads as secondary copy.
313
406
  meta: {
314
407
  fontFamily: theme.font.sans,
315
408
  fontWeight: theme.fontWeight.medium,
316
- fontSize: SPEC.metaSize,
317
- lineHeight: SPEC.metaSize * SPEC.messageLineHeight
409
+ fontSize: theme.fontSize[12],
410
+ lineHeight: theme.fontSize[12] * SPEC.messageLineHeight
318
411
  },
319
412
  // The maintenance countdown — the same meta line, emphasized.
320
413
  metaStrong: {
321
414
  fontFamily: theme.font.sans,
322
415
  fontWeight: theme.fontWeight.bold,
323
- fontSize: SPEC.metaSize,
324
- lineHeight: SPEC.metaSize * SPEC.messageLineHeight
416
+ fontSize: theme.fontSize[12],
417
+ lineHeight: theme.fontSize[12] * SPEC.messageLineHeight
325
418
  },
326
419
  // The stale refresh affordance sits self-centered on the trailing edge.
327
420
  refreshSlot: {
@@ -336,29 +429,32 @@ var sheet = createStyleSheet((theme) => ({
336
429
  alignItems: "center",
337
430
  justifyContent: "center",
338
431
  gap: SPEC.refreshGap,
339
- minHeight: SPEC.refreshMinHeight,
432
+ minHeight: theme.ctl.sm,
340
433
  paddingHorizontal: SPEC.refreshPadX,
341
434
  borderRadius: theme.radius.sm,
342
435
  borderWidth: theme.borderWidth.thin,
343
436
  backgroundColor: "transparent"
344
437
  },
438
+ // Press acknowledgement for the unboxed controls: a dim, no layout change.
439
+ pressed: { opacity: theme.state.pressedOpacity },
345
440
  dismiss: {
346
441
  paddingTop: theme.space[1]
347
442
  },
348
443
  system: {
349
444
  flexDirection: "row",
350
445
  alignItems: "center",
351
- gap: theme.space[10],
446
+ gap: theme.space[12],
352
447
  paddingVertical: theme.space.s3,
353
448
  paddingHorizontal: theme.space.s4,
354
449
  backgroundColor: theme.color.accent
355
450
  },
451
+ systemAction: { flex: 0, textDecorationLine: "underline" },
356
452
  systemMessage: {
357
453
  flex: 1,
358
454
  minWidth: 0,
359
455
  fontFamily: theme.font.sans,
360
456
  fontWeight: theme.fontWeight.semibold,
361
- fontSize: SPEC.bodySize,
457
+ fontSize: theme.fontSize[14],
362
458
  color: theme.color.accentInk
363
459
  },
364
460
  // A full `tapMin` target pulled back with negative margins, so the reachable
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,98 @@
1
+ import { StatusDot } from './chunk-OANH27AK.js';
2
+ import { Icon } from './chunk-PCEFCOLN.js';
3
+ import 'react';
4
+ import { View } from 'react-native';
5
+ import { createStyleSheet, useStyles } from '@btndprojects/loam-theme-native';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+
8
+ var ICON_TILE_GLYPH = {
9
+ xs: 14,
10
+ sm: 16,
11
+ md: 18,
12
+ lg: 20,
13
+ xl: 24,
14
+ hero: 28
15
+ };
16
+ function IconTile({
17
+ icon,
18
+ tone = "neutral",
19
+ size = "md",
20
+ glyphSize,
21
+ shape,
22
+ status,
23
+ accessibilityLabel,
24
+ style
25
+ }) {
26
+ const { styles, theme } = useStyles(sheet, { tone, size });
27
+ const ink = {
28
+ neutral: theme.color.text2,
29
+ accent: theme.color.accentOnSoft,
30
+ good: theme.color.goodOnSoft,
31
+ warn: theme.color.warnOnSoft,
32
+ danger: theme.color.dangerOnSoft,
33
+ info: theme.color.infoOnSoft
34
+ }[tone];
35
+ const dim = {
36
+ xs: theme.space[26],
37
+ sm: theme.space[30],
38
+ md: theme.space[36],
39
+ lg: theme.space[44],
40
+ xl: theme.space[56],
41
+ hero: theme.space[64]
42
+ }[size];
43
+ const shapeStyle = shape === "circle" ? { borderRadius: theme.radius.full } : shape === "squircle" ? { borderRadius: Math.round(dim * 0.32), borderCurve: "continuous" } : null;
44
+ const tile = /* @__PURE__ */ jsx(
45
+ View,
46
+ {
47
+ accessible: accessibilityLabel != null,
48
+ accessibilityRole: accessibilityLabel ? "image" : void 0,
49
+ accessibilityLabel,
50
+ importantForAccessibility: accessibilityLabel ? "yes" : "no-hide-descendants",
51
+ accessibilityElementsHidden: accessibilityLabel == null,
52
+ style: [styles.tile, shapeStyle, style],
53
+ children: /* @__PURE__ */ jsx(Icon, { name: icon, size: glyphSize ?? ICON_TILE_GLYPH[size], color: ink })
54
+ }
55
+ );
56
+ if (!status) return tile;
57
+ return /* @__PURE__ */ jsxs(View, { style: styles.host, children: [
58
+ tile,
59
+ /* @__PURE__ */ jsx(View, { style: styles.badge, children: /* @__PURE__ */ jsx(StatusDot, { state: status, size: size === "xs" || size === "sm" ? "sm" : "md" }) })
60
+ ] });
61
+ }
62
+ var sheet = createStyleSheet((theme) => ({
63
+ host: { alignSelf: "flex-start" },
64
+ badge: {
65
+ position: "absolute",
66
+ right: -theme.space[2],
67
+ bottom: -theme.space[2],
68
+ padding: theme.space[2],
69
+ borderRadius: theme.radius.full,
70
+ backgroundColor: theme.color.surface
71
+ },
72
+ tile: {
73
+ alignItems: "center",
74
+ justifyContent: "center",
75
+ // A fixed square, so the tone edge draws inside it and costs no layout.
76
+ borderWidth: theme.borderWidth.base,
77
+ variants: {
78
+ tone: {
79
+ neutral: { backgroundColor: theme.color.surface2, borderColor: theme.edge.neutral },
80
+ accent: { backgroundColor: theme.color.accentSoft, borderColor: theme.edge.accent },
81
+ good: { backgroundColor: theme.color.goodSoft, borderColor: theme.edge.good },
82
+ warn: { backgroundColor: theme.color.warnSoft, borderColor: theme.edge.warn },
83
+ danger: { backgroundColor: theme.color.dangerSoft, borderColor: theme.edge.danger },
84
+ info: { backgroundColor: theme.color.infoSoft, borderColor: theme.edge.info }
85
+ },
86
+ size: {
87
+ xs: { width: theme.space[26], height: theme.space[26], borderRadius: theme.radius.sm },
88
+ sm: { width: theme.space[30], height: theme.space[30], borderRadius: theme.radius.sm },
89
+ md: { width: theme.space[36], height: theme.space[36], borderRadius: theme.radius.sm },
90
+ lg: { width: theme.space[44], height: theme.space[44], borderRadius: theme.radius.md },
91
+ xl: { width: theme.space[56], height: theme.space[56], borderRadius: theme.radius.lg },
92
+ hero: { width: theme.space[64], height: theme.space[64], borderRadius: theme.radius[20] }
93
+ }
94
+ }
95
+ }
96
+ }));
97
+
98
+ export { ICON_TILE_GLYPH, IconTile };
@@ -0,0 +1 @@
1
+