@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,11 +1,48 @@
1
- import { expandedProps } from './chunk-RQ3HASCC.js';
1
+ import { Sheet } from './chunk-B7JZ3N5G.js';
2
+ import { expandedProps } from './chunk-W23G6JLF.js';
2
3
  import { haptics } from './chunk-NY2U3PBI.js';
3
- import { Icon } from './chunk-TKVFVF5D.js';
4
- import * as React from 'react';
5
- import { useWindowDimensions, Animated, Easing, Modal, View, StyleSheet, Pressable, Text, Platform } from 'react-native';
4
+ import { useLabels } from './chunk-APCWFOZW.js';
5
+ import { Icon } from './chunk-PCEFCOLN.js';
6
+ import { useWindowDimensions, Platform, View, Pressable, Text, Animated, Easing, Modal, StyleSheet } from 'react-native';
6
7
  import { createStyleSheet, useLoamTheme, useStyles } from '@btndprojects/loam-theme-native';
8
+ import * as React from 'react';
7
9
  import { jsx, jsxs } from 'react/jsx-runtime';
8
10
 
11
+ var ANDROID_ANCHORED_MENU_MAX = 5;
12
+ function resolveOverlayPresentation({
13
+ kind,
14
+ platform,
15
+ width,
16
+ regularWidth,
17
+ itemCount = 0,
18
+ presentation
19
+ }) {
20
+ if (presentation) return presentation;
21
+ if (platform === "ios") {
22
+ if (width >= regularWidth) return "anchored";
23
+ return kind === "combobox" ? "full" : "sheet";
24
+ }
25
+ if (kind === "menu" && itemCount <= ANDROID_ANCHORED_MENU_MAX) return "anchored";
26
+ return kind === "combobox" ? "full" : "sheet";
27
+ }
28
+ function useOverlayPresentation({
29
+ kind,
30
+ itemCount,
31
+ presentation,
32
+ platform
33
+ }) {
34
+ const theme = useLoamTheme("overlay-presentation");
35
+ const { width } = useWindowDimensions();
36
+ const os = platform ?? (Platform.OS === "ios" ? "ios" : Platform.OS === "android" ? "android" : theme.platform === "iOS" ? "ios" : "android");
37
+ return resolveOverlayPresentation({
38
+ kind,
39
+ platform: os,
40
+ width,
41
+ itemCount,
42
+ presentation,
43
+ regularWidth: theme.breakpoint.tablet
44
+ });
45
+ }
9
46
  var LONG_PRESS_DELAY_MS = 360;
10
47
  var PRE_PRESS_SCALE = 0.95;
11
48
  var LIFT_SCALE = 1.06;
@@ -20,6 +57,7 @@ var MENU_OFFSET_Y_ANDROID = -6;
20
57
  var MENU_OFFSET_X_IOS = 0;
21
58
  var MENU_OFFSET_X_ANDROID = 10;
22
59
  var MENU_FROM_SCALE_IOS = 0.7;
60
+ var PREVIEW_MAX_WIDTH = 320;
23
61
  var MENU_FROM_SCALE_ANDROID = 0.85;
24
62
  var IOS_MENU_TRANSLUCENCY = 0.82;
25
63
  var IOS_FROST_OPACITY = 0.22;
@@ -54,25 +92,110 @@ function placeContextMenu(anchor, screen, platform) {
54
92
  return { left, top, width };
55
93
  }
56
94
  function useResolvedPlatform(explicit) {
57
- const theme = useLoamTheme();
95
+ const theme = useLoamTheme("context-menu");
58
96
  if (explicit) return explicit;
59
97
  if (Platform.OS === "ios") return "ios";
60
98
  if (Platform.OS === "android") return "android";
61
99
  return theme.platform === "iOS" ? "ios" : "android";
62
100
  }
63
- function ContextMenuOverlay({
101
+ function ContextMenuOverlay(props) {
102
+ const os = useResolvedPlatform(props.platform);
103
+ const presentation = useOverlayPresentation({
104
+ kind: "menu",
105
+ itemCount: props.items.length,
106
+ platform: os
107
+ });
108
+ if (os === "android" && presentation !== "anchored" && !props.preview) {
109
+ return /* @__PURE__ */ jsx(ContextMenuSheet, { ...props });
110
+ }
111
+ return /* @__PURE__ */ jsx(AnchoredContextMenu, { ...props });
112
+ }
113
+ function sizeType(theme, size) {
114
+ if (size === "sm") return theme.type.footnote;
115
+ if (size === "lg") return theme.type.body;
116
+ return null;
117
+ }
118
+ function ContextMenuSheet({
119
+ open,
120
+ onClose,
121
+ items,
122
+ accessibilityLabel,
123
+ labels: labelsProp,
124
+ density,
125
+ size
126
+ }) {
127
+ const labels = useLabels("contextMenu", DEFAULT_LABELS, labelsProp);
128
+ const { styles, theme } = useStyles(sheet, { platform: "android" });
129
+ const ordered = orderContextMenuItems(items);
130
+ return /* @__PURE__ */ jsx(Sheet, { open, onClose, children: /* @__PURE__ */ jsxs(View, { accessibilityRole: "menu", accessibilityLabel: accessibilityLabel ?? labels.actions, children: [
131
+ ordered.map((item) => {
132
+ const tint = item.destructive ? theme.color.dangerOnSoft : theme.color.text;
133
+ return /* @__PURE__ */ jsxs(
134
+ Pressable,
135
+ {
136
+ accessibilityRole: "menuitem",
137
+ accessibilityLabel: item.label,
138
+ accessibilityState: { disabled: item.disabled === true, checked: item.checked },
139
+ disabled: item.disabled === true,
140
+ onPress: () => {
141
+ haptics.selection();
142
+ onClose();
143
+ item.onSelect?.();
144
+ },
145
+ style: ({ pressed }) => [
146
+ styles.sheetRow,
147
+ density === "compact" ? { paddingVertical: theme.space.s2 } : null,
148
+ pressed ? item.destructive ? styles.rowPressedDanger : styles.sheetRowPressed : null,
149
+ item.disabled ? styles.rowDisabled : null
150
+ ],
151
+ children: [
152
+ item.icon ? /* @__PURE__ */ jsx(
153
+ Icon,
154
+ {
155
+ name: item.icon,
156
+ size: theme.icon.md,
157
+ color: item.destructive ? theme.color.dangerOnSoft : theme.color.text2
158
+ }
159
+ ) : null,
160
+ /* @__PURE__ */ jsx(Text, { style: [styles.sheetLabel, sizeType(theme, size), { color: tint }], children: item.label }),
161
+ item.checked ? /* @__PURE__ */ jsx(Icon, { name: "check", size: theme.icon.md, color: tint }) : null
162
+ ]
163
+ },
164
+ item.key
165
+ );
166
+ }),
167
+ /* @__PURE__ */ jsx(
168
+ Pressable,
169
+ {
170
+ accessibilityRole: "menuitem",
171
+ accessibilityLabel: labels.cancel,
172
+ onPress: onClose,
173
+ style: ({ pressed }) => [styles.sheetRow, pressed ? styles.sheetRowPressed : null],
174
+ children: /* @__PURE__ */ jsx(Text, { style: [styles.sheetLabel, styles.sheetCancel], children: labels.cancel })
175
+ }
176
+ )
177
+ ] }) });
178
+ }
179
+ function AnchoredContextMenu({
64
180
  open,
65
181
  onClose,
66
182
  items,
67
183
  anchor,
68
184
  platform,
69
185
  lift,
186
+ preview,
187
+ onPreviewPress,
188
+ previewLabel,
70
189
  radius,
71
- accessibilityLabel = "Actions",
72
- closeLabel = "Close menu",
73
- motion = "full"
190
+ accessibilityLabel,
191
+ closeLabel,
192
+ labels: labelsProp,
193
+ motion = "full",
194
+ density,
195
+ size
74
196
  }) {
75
- const theme = useLoamTheme();
197
+ const labels = useLabels("contextMenu", DEFAULT_LABELS, labelsProp);
198
+ const theme = useLoamTheme("context-menu");
76
199
  const os = useResolvedPlatform(platform);
77
200
  const ios = os === "ios";
78
201
  const { styles } = useStyles(sheet, { platform: os });
@@ -212,6 +335,13 @@ function ContextMenuOverlay({
212
335
  const place = placeContextMenu(rect, window, os);
213
336
  const ordered = orderContextMenuItems(items);
214
337
  const liftRadius = radius ?? theme.radius.lg;
338
+ const [columnHeight, setColumnHeight] = React.useState(0);
339
+ const withPreview = ios && preview != null;
340
+ const columnWidth = Math.min(PREVIEW_MAX_WIDTH, window.width - theme.space.s4 * 2);
341
+ const columnTop = Math.max(
342
+ MENU_MIN_TOP,
343
+ Math.min(rect.y + rect.height + theme.space.s2, window.height - columnHeight - theme.space.s4)
344
+ );
215
345
  return /* @__PURE__ */ jsx(
216
346
  Modal,
217
347
  {
@@ -229,15 +359,17 @@ function ContextMenuOverlay({
229
359
  {
230
360
  style: StyleSheet.absoluteFill,
231
361
  accessibilityRole: "button",
232
- accessibilityLabel: closeLabel,
362
+ accessibilityLabel: closeLabel ?? labels.closeMenu,
233
363
  onPress: onClose
234
364
  }
235
365
  )
236
366
  ] }),
237
- ios && lift != null ? /* @__PURE__ */ jsx(
367
+ ios && lift != null && !withPreview ? /* @__PURE__ */ jsx(
238
368
  Animated.View,
239
369
  {
240
370
  pointerEvents: "none",
371
+ accessibilityElementsHidden: true,
372
+ importantForAccessibility: "no-hide-descendants",
241
373
  style: [
242
374
  styles.lift,
243
375
  {
@@ -255,11 +387,66 @@ function ContextMenuOverlay({
255
387
  children: lift
256
388
  }
257
389
  ) : null,
258
- /* @__PURE__ */ jsxs(
390
+ withPreview ? /* @__PURE__ */ jsxs(
391
+ Animated.View,
392
+ {
393
+ onLayout: (e) => setColumnHeight(e.nativeEvent.layout.height),
394
+ style: [
395
+ styles.previewColumn,
396
+ {
397
+ top: columnTop,
398
+ left: (window.width - columnWidth) / 2,
399
+ width: columnWidth,
400
+ opacity: menuOpacity,
401
+ transform: [{ scale: menuScale }]
402
+ }
403
+ ],
404
+ children: [
405
+ /* @__PURE__ */ jsx(
406
+ Pressable,
407
+ {
408
+ accessibilityRole: "button",
409
+ accessibilityLabel: previewLabel,
410
+ onPress: () => {
411
+ onClose();
412
+ onPreviewPress?.();
413
+ },
414
+ style: styles.platter,
415
+ children: preview
416
+ }
417
+ ),
418
+ ordered.length > 0 ? /* @__PURE__ */ jsxs(
419
+ View,
420
+ {
421
+ accessibilityViewIsModal: true,
422
+ accessibilityRole: "menu",
423
+ accessibilityLabel: accessibilityLabel ?? labels.actions,
424
+ style: [styles.menu, styles.menuInColumn, { width: place.width }],
425
+ children: [
426
+ /* @__PURE__ */ jsx(View, { style: [StyleSheet.absoluteFill, styles.translucency] }),
427
+ ordered.map((item, i) => /* @__PURE__ */ jsx(
428
+ MenuItem,
429
+ {
430
+ item,
431
+ platform: os,
432
+ last: i === ordered.length - 1,
433
+ onClose,
434
+ density,
435
+ size
436
+ },
437
+ item.key
438
+ ))
439
+ ]
440
+ }
441
+ ) : null
442
+ ]
443
+ }
444
+ ) : /* @__PURE__ */ jsxs(
259
445
  Animated.View,
260
446
  {
447
+ accessibilityViewIsModal: true,
261
448
  accessibilityRole: "menu",
262
- accessibilityLabel,
449
+ accessibilityLabel: accessibilityLabel ?? labels.actions,
263
450
  style: [
264
451
  styles.menu,
265
452
  {
@@ -278,7 +465,9 @@ function ContextMenuOverlay({
278
465
  item,
279
466
  platform: os,
280
467
  last: i === ordered.length - 1,
281
- onClose
468
+ onClose,
469
+ density,
470
+ size
282
471
  },
283
472
  item.key
284
473
  ))
@@ -293,9 +482,12 @@ function MenuItem({
293
482
  item,
294
483
  platform,
295
484
  last,
296
- onClose
485
+ onClose,
486
+ density,
487
+ size: labelSize,
488
+ highlighted = false
297
489
  }) {
298
- const theme = useLoamTheme();
490
+ const theme = useLoamTheme("context-menu");
299
491
  const ios = platform === "ios";
300
492
  const { styles } = useStyles(sheet, { platform, separated: ios && !last });
301
493
  const size = React.useRef({ width: 0, height: 0 });
@@ -348,31 +540,45 @@ function MenuItem({
348
540
  if (ios) onClose();
349
541
  else timer.current = setTimeout(onClose, theme.duration.fast);
350
542
  };
351
- const tint = item.destructive === true ? theme.color.danger : theme.color.text;
543
+ const tint = item.destructive === true ? theme.color.dangerOnSoft : theme.color.text;
352
544
  const glyph = item.icon == null ? null : /* @__PURE__ */ jsx(
353
545
  Icon,
354
546
  {
355
547
  name: item.icon,
356
548
  size: theme.icon.sm,
357
- color: item.destructive === true ? theme.color.danger : theme.color.text3
549
+ color: item.destructive === true ? theme.color.dangerOnSoft : theme.color.text3
358
550
  }
359
551
  );
552
+ const check = item.checked ? /* @__PURE__ */ jsx(Icon, { name: "check", size: theme.icon.sm, color: tint }) : null;
360
553
  return /* @__PURE__ */ jsxs(
361
554
  Pressable,
362
555
  {
363
556
  accessibilityRole: "menuitem",
364
557
  accessibilityLabel: item.label,
558
+ accessibilityState: { disabled: item.disabled === true, checked: item.checked },
559
+ disabled: item.disabled === true,
365
560
  onLayout,
366
561
  onPress,
367
562
  style: ({ pressed }) => [
368
563
  styles.item,
369
- // iOS has no ripple, so it gets the state layer instead.
370
- pressed && ios ? styles.itemPressed : null
564
+ density === "compact" ? { paddingVertical: theme.space.s2 } : null,
565
+ // iOS has no ripple, so it gets the state layer instead; a destructive
566
+ // row presses to the danger-soft fill.
567
+ pressed && ios || highlighted ? item.destructive ? styles.rowPressedDanger : styles.itemPressed : null,
568
+ item.disabled === true ? styles.rowDisabled : null
371
569
  ],
372
570
  children: [
373
571
  ios ? null : /* @__PURE__ */ jsx(View, { style: styles.androidGlyph, children: glyph }),
374
- /* @__PURE__ */ jsx(Text, { style: [styles.itemLabel, { color: tint }], numberOfLines: 1, children: item.label }),
572
+ /* @__PURE__ */ jsx(
573
+ Text,
574
+ {
575
+ style: [styles.itemLabel, sizeType(theme, labelSize), { color: tint }],
576
+ numberOfLines: 1,
577
+ children: item.label
578
+ }
579
+ ),
375
580
  ios ? glyph : null,
581
+ check,
376
582
  ripple ? /* @__PURE__ */ jsx(
377
583
  Animated.View,
378
584
  {
@@ -395,6 +601,57 @@ function MenuItem({
395
601
  }
396
602
  );
397
603
  }
604
+ function ContextMenuPreview({
605
+ items,
606
+ platform,
607
+ highlightedKey,
608
+ title,
609
+ density,
610
+ size,
611
+ labels: labelsProp
612
+ }) {
613
+ const labels = useLabels("contextMenu", DEFAULT_LABELS, labelsProp);
614
+ const os = useResolvedPlatform(platform);
615
+ const { styles } = useStyles(sheet, { platform: os });
616
+ const ordered = orderContextMenuItems(items);
617
+ const { width: menuWidth } = placeContextMenu(
618
+ { x: 0, y: 0, height: 0 },
619
+ { width: Infinity, height: Infinity },
620
+ os
621
+ );
622
+ return /* @__PURE__ */ jsxs(
623
+ View,
624
+ {
625
+ accessibilityRole: "menu",
626
+ accessibilityLabel: title ?? labels.actions,
627
+ style: [styles.menu, styles.menuInline, { width: menuWidth }],
628
+ children: [
629
+ os === "ios" ? /* @__PURE__ */ jsx(View, { style: [StyleSheet.absoluteFill, styles.translucency] }) : null,
630
+ title ? /* @__PURE__ */ jsx(Text, { style: styles.sectionLabel, children: title }) : null,
631
+ ordered.map((item, i) => /* @__PURE__ */ jsx(
632
+ MenuItem,
633
+ {
634
+ item,
635
+ platform: os,
636
+ last: i === ordered.length - 1,
637
+ onClose: () => {
638
+ },
639
+ density,
640
+ size,
641
+ highlighted: item.key === highlightedKey
642
+ },
643
+ item.key
644
+ ))
645
+ ]
646
+ }
647
+ );
648
+ }
649
+ var DEFAULT_LABELS = {
650
+ actions: "Actions",
651
+ closeMenu: "Close menu",
652
+ showActions: "Show actions",
653
+ cancel: "Cancel"
654
+ };
398
655
  function ContextMenu({
399
656
  items,
400
657
  children,
@@ -403,12 +660,18 @@ function ContextMenu({
403
660
  platform,
404
661
  accessibilityLabel,
405
662
  radius,
663
+ androidRipple,
406
664
  style,
407
665
  onOpen,
408
666
  onClose,
409
- motion = "full"
667
+ motion = "full",
668
+ density,
669
+ size,
670
+ selected = false,
671
+ labels: labelsProp
410
672
  }) {
411
- const theme = useLoamTheme();
673
+ const labels = useLabels("contextMenu", DEFAULT_LABELS, labelsProp);
674
+ const theme = useLoamTheme("context-menu");
412
675
  const os = useResolvedPlatform(platform);
413
676
  const ios = os === "ios";
414
677
  const { styles } = useStyles(sheet, { platform: os });
@@ -459,12 +722,16 @@ function ContextMenu({
459
722
  children: /* @__PURE__ */ jsx(
460
723
  Pressable,
461
724
  {
462
- style: { borderRadius: triggerRadius },
725
+ style: [
726
+ { borderRadius: triggerRadius },
727
+ selected ? { backgroundColor: theme.state.selected } : null
728
+ ],
729
+ android_ripple: androidRipple,
463
730
  accessibilityRole: "button",
464
731
  accessibilityLabel,
465
- accessibilityState: { disabled, expanded: open },
732
+ accessibilityState: { disabled, expanded: open, selected: selected || void 0 },
466
733
  ...expandedProps(open),
467
- accessibilityActions: [{ name: "longpress", label: "Show actions" }],
734
+ accessibilityActions: [{ name: "longpress", label: labels.showActions }],
468
735
  onAccessibilityAction: (e) => {
469
736
  if (e.nativeEvent.actionName === "longpress") openMenu();
470
737
  },
@@ -509,12 +776,34 @@ function ContextMenu({
509
776
  lift: children,
510
777
  radius: triggerRadius,
511
778
  accessibilityLabel,
512
- motion
779
+ labels: labelsProp,
780
+ motion,
781
+ density,
782
+ size
513
783
  }
514
784
  )
515
785
  ] });
516
786
  }
517
787
  var sheet = createStyleSheet((theme) => ({
788
+ sheetRow: {
789
+ flexDirection: "row",
790
+ alignItems: "center",
791
+ gap: theme.space.s3,
792
+ minHeight: theme.space[48],
793
+ paddingHorizontal: theme.space.s3,
794
+ borderRadius: theme.radius.md
795
+ },
796
+ sheetRowPressed: { backgroundColor: theme.state.pressed },
797
+ sheetLabel: {
798
+ flex: 1,
799
+ fontFamily: theme.font.sans,
800
+ fontSize: theme.fontSize[16]
801
+ },
802
+ sheetCancel: {
803
+ textAlign: "center",
804
+ fontWeight: theme.fontWeight.semibold,
805
+ color: theme.color.text
806
+ },
518
807
  /** The dim behind the menu. iOS whispers (`scrimLight`), Android commits (`scrim`). */
519
808
  dim: {
520
809
  variants: {
@@ -534,6 +823,25 @@ var sheet = createStyleSheet((theme) => ({
534
823
  position: "absolute",
535
824
  ...theme.shadow.lg
536
825
  },
826
+ /** The preview platter and the menu under it (iOS context preview). */
827
+ previewColumn: {
828
+ position: "absolute",
829
+ gap: theme.space.s2,
830
+ alignItems: "flex-start",
831
+ transformOrigin: "top center"
832
+ },
833
+ platter: {
834
+ alignSelf: "stretch",
835
+ backgroundColor: theme.color.surface,
836
+ borderRadius: theme.radius.md,
837
+ borderWidth: theme.borderWidth.base,
838
+ borderColor: theme.color.border,
839
+ padding: theme.space.s4,
840
+ gap: theme.space.s3,
841
+ ...theme.shadow.lg
842
+ },
843
+ /** The menu laid out in the column rather than placed absolutely. */
844
+ menuInColumn: { position: "relative", transformOrigin: "top left" },
537
845
  /** The in-place trigger while its copy is lifted. */
538
846
  liftedAway: { opacity: 0 },
539
847
  menu: {
@@ -542,11 +850,12 @@ var sheet = createStyleSheet((theme) => ({
542
850
  // The reference sets `transform-origin: top left` so the menu grows out of
543
851
  // the anchor's corner. RN 0.74+ supports `transformOrigin`.
544
852
  transformOrigin: "top left",
545
- ...theme.shadow.lg,
853
+ // An anchored overlay sits at sh-md (was sh-lg); the lifted copy keeps lg.
854
+ ...theme.shadow.md,
546
855
  variants: {
547
856
  platform: {
548
- // Reference radius 16 → `radius.lg` (19); 12 → `radius.md` (13).
549
- ios: { borderRadius: theme.radius.lg },
857
+ // r 12 on both platforms → `radius.md`.
858
+ ios: { borderRadius: theme.radius.md },
550
859
  android: {
551
860
  borderRadius: theme.radius.md,
552
861
  backgroundColor: theme.color.surface,
@@ -590,6 +899,22 @@ var sheet = createStyleSheet((theme) => ({
590
899
  }
591
900
  },
592
901
  itemPressed: { backgroundColor: theme.state.pressed },
902
+ // ContextMenuPreview: the anchored menu in flow, at the reference width.
903
+ menuInline: { position: "relative" },
904
+ sectionLabel: {
905
+ fontFamily: theme.font.sans,
906
+ fontSize: theme.type.caption1.fontSize,
907
+ lineHeight: theme.type.caption1.lineHeight,
908
+ fontWeight: theme.fontWeight.semibold,
909
+ textTransform: "uppercase",
910
+ color: theme.color.text3,
911
+ paddingHorizontal: theme.space.s4,
912
+ paddingTop: theme.space.s3,
913
+ paddingBottom: theme.space.s1
914
+ },
915
+ // loam-contrast-ignore — transient pressed-row wash inside a bordered menu; the row has no surface of its own.
916
+ rowPressedDanger: { backgroundColor: theme.color.dangerSoft },
917
+ rowDisabled: { opacity: theme.state.disabledOpacity },
593
918
  itemLabel: {
594
919
  flexShrink: 1,
595
920
  fontFamily: theme.font.sans,
@@ -617,4 +942,4 @@ var sheet = createStyleSheet((theme) => ({
617
942
  }
618
943
  }));
619
944
 
620
- export { ContextMenu, ContextMenuOverlay, LONG_PRESS_DELAY_MS, orderContextMenuItems, placeContextMenu };
945
+ export { ANDROID_ANCHORED_MENU_MAX, ContextMenu, ContextMenuOverlay, ContextMenuPreview, LONG_PRESS_DELAY_MS, orderContextMenuItems, placeContextMenu, useOverlayPresentation };
@@ -1,16 +1,28 @@
1
- import { Spinner } from './chunk-O7AE6DAF.js';
1
+ import { alignItemsStyle } from './chunk-TUACVJNG.js';
2
+ import { Spinner } from './chunk-G7H3NX3G.js';
3
+ import { useLabels } from './chunk-APCWFOZW.js';
2
4
  import * as React from 'react';
3
5
  import { FlatList, View } from 'react-native';
4
6
  import { createStyleSheet, useStyles } from '@btndprojects/loam-theme-native';
5
7
  import { jsx, Fragment } from 'react/jsx-runtime';
6
8
 
9
+ var DEFAULT_LABELS = {
10
+ loadingMore: "Loading more"
11
+ };
7
12
  function loadMoreIfNeeded(opts) {
8
13
  if (opts.hasMore && !opts.loading) opts.onLoadMore();
9
14
  }
10
15
  var FOOTER_SPINNER_SIZE = "lg";
11
- function Footer() {
12
- const { styles } = useStyles(sheet);
13
- return /* @__PURE__ */ jsx(View, { style: styles.footer, children: /* @__PURE__ */ jsx(Spinner, { size: FOOTER_SPINNER_SIZE, accessibilityLabel: "Loading more" }) });
16
+ function Footer({ label }) {
17
+ const { styles, theme } = useStyles(sheet);
18
+ return /* @__PURE__ */ jsx(View, { style: styles.footer, children: /* @__PURE__ */ jsx(
19
+ Spinner,
20
+ {
21
+ size: FOOTER_SPINNER_SIZE,
22
+ color: theme.color.text2,
23
+ accessibilityLabel: label
24
+ }
25
+ ) });
14
26
  }
15
27
  function InfiniteList({
16
28
  data,
@@ -23,9 +35,13 @@ function InfiniteList({
23
35
  // Accepted for API parity but intentionally inert — a virtualized list must
24
36
  // not animate (recycled rows would flicker). Destructured so it is never
25
37
  // forwarded onto the underlying FlatList.
26
- motion: _motion = "full"
38
+ motion: _motion = "full",
39
+ labels: labelsProp,
40
+ orientation = "vertical",
41
+ align
27
42
  }) {
28
43
  const { styles } = useStyles(sheet);
44
+ const labels = useLabels("infiniteList", DEFAULT_LABELS, labelsProp);
29
45
  const handleEndReached = React.useCallback(() => {
30
46
  loadMoreIfNeeded({ hasMore, loading, onLoadMore });
31
47
  }, [hasMore, loading, onLoadMore]);
@@ -42,8 +58,9 @@ function InfiniteList({
42
58
  keyExtractor,
43
59
  onEndReached: handleEndReached,
44
60
  onEndReachedThreshold,
45
- contentContainerStyle: styles.content,
46
- ListFooterComponent: loading ? /* @__PURE__ */ jsx(Footer, {}) : null
61
+ horizontal: orientation === "horizontal",
62
+ contentContainerStyle: [styles.content, alignItemsStyle(align)],
63
+ ListFooterComponent: loading ? /* @__PURE__ */ jsx(Footer, { label: labels.loadingMore }) : null
47
64
  }
48
65
  );
49
66
  }