@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,7 +1,10 @@
1
- import { useColorTransition } from './chunk-ITTYJZWX.js';
2
- import { useResolvedMotion } from './chunk-6N33LFQA.js';
1
+ import { FieldMessage } from './chunk-BTRMA7GC.js';
2
+ import { useColorTransition } from './chunk-KXLDK6HB.js';
3
+ import { useFocusRing } from './chunk-2YKVID2V.js';
4
+ import { Icon } from './chunk-PCEFCOLN.js';
5
+ import { useResolvedMotion } from './chunk-J64KGCGX.js';
3
6
  import * as React from 'react';
4
- import { View, Text, Easing, Animated, Pressable } from 'react-native';
7
+ import { Platform, View, Text, Easing, Animated, Pressable } from 'react-native';
5
8
  import { createStyleSheet, useStyles, useLoamTheme } from '@btndprojects/loam-theme-native';
6
9
  import { jsx, jsxs } from 'react/jsx-runtime';
7
10
 
@@ -19,17 +22,24 @@ function RadioGroup({
19
22
  onValueChange,
20
23
  size = "md",
21
24
  motion = "full",
25
+ platform,
22
26
  disabled = false,
23
27
  label,
24
28
  accessibilityLabel,
29
+ error = false,
30
+ hint,
31
+ tone = "accent",
25
32
  children
26
33
  }) {
27
34
  const isControlled = value !== void 0;
28
35
  const [internal, setInternal] = React.useState(defaultValue);
29
36
  const selected = isControlled ? value : internal;
30
37
  const { styles } = useStyles(sheet, { size, disabled });
31
- const theme = useLoamTheme();
38
+ const theme = useLoamTheme("radio-group");
39
+ const os = platform ?? (Platform.OS === "ios" ? "ios" : Platform.OS === "android" ? "android" : theme.platform === "iOS" ? "ios" : "android");
32
40
  const labelId = React.useId();
41
+ const invalid = Boolean(error);
42
+ const message = typeof error === "string" && error ? error : hint;
33
43
  const itemsRef = React.useRef([]);
34
44
  const [, bump] = React.useReducer((c) => c + 1, 0);
35
45
  const register = React.useCallback((entry) => {
@@ -83,12 +93,27 @@ function RadioGroup({
83
93
  select,
84
94
  size,
85
95
  motion,
96
+ os,
86
97
  disabled,
98
+ invalid,
99
+ tone,
87
100
  activeValue,
88
101
  register,
89
102
  onItemKeyDown
90
103
  }),
91
- [selected, select, size, motion, disabled, activeValue, register, onItemKeyDown]
104
+ [
105
+ selected,
106
+ select,
107
+ size,
108
+ motion,
109
+ os,
110
+ disabled,
111
+ invalid,
112
+ tone,
113
+ activeValue,
114
+ register,
115
+ onItemKeyDown
116
+ ]
92
117
  );
93
118
  return /* @__PURE__ */ jsx(RadioGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxs(View, { style: styles.root, children: [
94
119
  label ? /* @__PURE__ */ jsx(Text, { nativeID: labelId, style: styles.groupLabel, children: label }) : null,
@@ -98,10 +123,12 @@ function RadioGroup({
98
123
  accessibilityRole: "radiogroup",
99
124
  accessibilityLabel: label ? void 0 : accessibilityLabel,
100
125
  ...label ? { "aria-labelledby": labelId } : null,
126
+ "aria-invalid": invalid || void 0,
101
127
  style: styles.group,
102
128
  children
103
129
  }
104
- )
130
+ ),
131
+ message ? /* @__PURE__ */ jsx(FieldMessage, { invalid: invalid && typeof error === "string", children: message }) : null
105
132
  ] }) });
106
133
  }
107
134
  function RadioGroupItem({
@@ -111,10 +138,17 @@ function RadioGroupItem({
111
138
  disabled = false
112
139
  }) {
113
140
  const ctx = useRadioGroupContext();
114
- const theme = useLoamTheme();
141
+ const theme = useLoamTheme("radio-group");
115
142
  const selected = ctx.value === value;
116
143
  const isDisabled = ctx.disabled || disabled;
117
- const { styles } = useStyles(sheet, { size: ctx.size, disabled: isDisabled });
144
+ const { styles } = useStyles(sheet, {
145
+ size: ctx.size,
146
+ disabled: isDisabled,
147
+ os: ctx.os,
148
+ selected
149
+ });
150
+ const ios = ctx.os === "ios";
151
+ const focusRing = useFocusRing(theme.radius.sm);
118
152
  const nodeRef = React.useRef(null);
119
153
  const entryRef = React.useRef({ value, disabled: isDisabled, focus: () => {
120
154
  } });
@@ -123,12 +157,12 @@ function RadioGroupItem({
123
157
  entryRef.current.focus = () => nodeRef.current?.focus?.();
124
158
  const { register } = ctx;
125
159
  React.useEffect(() => register(entryRef.current), [register]);
126
- const resolvedMotion = useResolvedMotion(ctx.motion);
160
+ const resolvedMotion = useResolvedMotion(ctx.motion, "radio-group");
127
161
  const animateEdge = resolvedMotion !== "none";
128
162
  const animateDot = resolvedMotion === "full";
129
163
  const easing = React.useMemo(() => Easing.bezier(...theme.easing.base), [theme.easing.base]);
130
164
  const borderColor = useColorTransition(
131
- selected ? theme.color.accent : theme.color.borderStrong,
165
+ selected ? theme.color[ctx.tone] : ctx.invalid ? theme.color.danger : theme.color.text3,
132
166
  theme.duration.fast,
133
167
  easing,
134
168
  animateEdge
@@ -164,10 +198,32 @@ function RadioGroupItem({
164
198
  "aria-checked": selected,
165
199
  disabled: isDisabled,
166
200
  onPress: isDisabled ? void 0 : () => ctx.select(value),
167
- style: styles.item,
201
+ style: [styles.item, focusRing.style],
202
+ onFocus: focusRing.handlers.onFocus,
203
+ onBlur: focusRing.handlers.onBlur,
168
204
  ...webProps,
169
205
  children: [
170
- /* @__PURE__ */ jsx(Animated.View, { testID: "radio-indicator", style: [styles.indicator, { borderColor }], children: /* @__PURE__ */ jsx(Animated.View, { style: [styles.dot, { transform: [{ scale: dotScale }] }] }) }),
206
+ ios ? (
207
+ // The check column is always reserved so labels never shift.
208
+ /* @__PURE__ */ jsx(View, { testID: "radio-check", style: styles.checkColumn, children: selected ? /* @__PURE__ */ jsx(View, { testID: "radio-check-mark", children: /* @__PURE__ */ jsx(
209
+ Icon,
210
+ {
211
+ name: "check",
212
+ size: theme.icon.sm,
213
+ color: ctx.tone === "accent" ? theme.color.accentStrong : theme.color[ctx.tone],
214
+ strokeWidth: theme.icon.strokeBold
215
+ }
216
+ ) }) : null })
217
+ ) : /* @__PURE__ */ jsx(Animated.View, { testID: "radio-indicator", style: [styles.indicator, { borderColor }], children: /* @__PURE__ */ jsx(
218
+ Animated.View,
219
+ {
220
+ style: [
221
+ styles.dot,
222
+ ctx.tone === "accent" ? null : { backgroundColor: theme.color[ctx.tone] },
223
+ { transform: [{ scale: dotScale }] }
224
+ ]
225
+ }
226
+ ) }),
171
227
  label ? /* @__PURE__ */ jsx(Text, { style: styles.label, children: label }) : null
172
228
  ]
173
229
  }
@@ -177,20 +233,34 @@ var sheet = createStyleSheet((theme) => ({
177
233
  // Stacks the optional group label above the radios.
178
234
  root: { gap: theme.space.s2 },
179
235
  group: { gap: theme.space.s3 },
236
+ // Group label 13 / 600 text (R11), on the OS label role.
180
237
  groupLabel: {
238
+ ...theme.ctl.label.sm,
181
239
  fontFamily: theme.font.sans,
182
- fontWeight: theme.fontWeight.semibold,
183
- fontSize: theme.fontSize[14],
184
- color: theme.color.text2
240
+ color: theme.color.text
185
241
  },
186
242
  item: {
187
243
  flexDirection: "row",
188
244
  alignItems: "center",
189
- gap: theme.space.s3,
245
+ // Label 10 from the mark (R10).
246
+ gap: theme.space[10],
247
+ paddingHorizontal: theme.space[12],
248
+ borderRadius: theme.ctl.r.md,
249
+ // The row is the hit area: never shorter than the minimum tap target.
250
+ minHeight: theme.tapMin,
190
251
  variants: {
252
+ // iOS check rows sit on the tap minimum; Android radio rows are 56 (F7).
253
+ os: { ios: {}, android: { minHeight: theme.space[56] } },
254
+ selected: { true: { backgroundColor: theme.state.selected }, false: {} },
191
255
  disabled: { true: { opacity: theme.state.disabledOpacity }, false: {} }
192
256
  }
193
257
  },
258
+ checkColumn: {
259
+ width: theme.space[24],
260
+ alignItems: "center",
261
+ justifyContent: "center",
262
+ variants: { size: { sm: {}, md: {} }, disabled: { true: {}, false: {} } }
263
+ },
194
264
  // `borderColor` is supplied at the use site as an animated value so the edge
195
265
  // can travel over `duration.fast`. The fill stays transparent — the reference
196
266
  // gives the indicator a border and nothing else.
@@ -202,10 +272,10 @@ var sheet = createStyleSheet((theme) => ({
202
272
  backgroundColor: "transparent",
203
273
  borderRadius: theme.radius.full,
204
274
  variants: {
205
- // The dot is always half the indicator (reference: 11px inside 22px).
275
+ // The dot is always half the indicator (10px inside 20px).
206
276
  size: {
207
277
  sm: { width: theme.space[16], height: theme.space[16] },
208
- md: { width: theme.space[22], height: theme.space[22] }
278
+ md: { width: theme.space[20], height: theme.space[20] }
209
279
  },
210
280
  disabled: { true: {}, false: {} }
211
281
  }
@@ -216,7 +286,7 @@ var sheet = createStyleSheet((theme) => ({
216
286
  variants: {
217
287
  size: {
218
288
  sm: { width: theme.space[8], height: theme.space[8] },
219
- md: { width: theme.space[11], height: theme.space[11] }
289
+ md: { width: theme.space[10], height: theme.space[10] }
220
290
  },
221
291
  disabled: { true: {}, false: {} }
222
292
  }
@@ -1,10 +1,21 @@
1
- import { Spinner } from './chunk-O7AE6DAF.js';
2
- import { Skeleton, SkeletonText } from './chunk-RIBDXGUG.js';
1
+ import { Image } from './chunk-KZ3X7TSL.js';
2
+ import { Skeleton, SkeletonText } from './chunk-YJ5PXOX3.js';
3
+ import { softToneSkin } from './chunk-PJLTKDVY.js';
4
+ import { Spinner } from './chunk-G7H3NX3G.js';
5
+ import { isAndroidIdiom } from './chunk-TH4PW2WU.js';
6
+ import { useLabels } from './chunk-APCWFOZW.js';
7
+ import { Icon } from './chunk-PCEFCOLN.js';
8
+ import { motionTiming, springConfig } from './chunk-J64KGCGX.js';
3
9
  import * as React from 'react';
4
- import { StyleSheet, Animated, View, Pressable, Text, Image } from 'react-native';
10
+ import { StyleSheet, Animated, View, Pressable, Text, Image as Image$1 } from 'react-native';
5
11
  import { createStyleSheet, useLoamTheme, useStyles } from '@btndprojects/loam-theme-native';
6
12
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
13
 
14
+ var DEFAULT_LABELS = {
15
+ loading: "Loading",
16
+ select: "Select"
17
+ };
18
+ var CardStateContext = React.createContext({ inactive: false });
8
19
  function Card({
9
20
  children,
10
21
  variant = "default",
@@ -13,26 +24,54 @@ function Card({
13
24
  accessibilityLabel,
14
25
  selected = false,
15
26
  busy = false,
16
- busyLabel = "Loading",
27
+ busyLabel,
17
28
  skeleton = false,
18
29
  emphasized = false,
19
30
  dragging = false,
20
- motion = "full"
31
+ motion = "full",
32
+ padding = "none",
33
+ tone = "neutral",
34
+ inactive = false,
35
+ selectable = false,
36
+ onSelectedChange,
37
+ platform,
38
+ labels: labelsProp
21
39
  }) {
22
- const theme = useLoamTheme();
40
+ const labels = useLabels("card", DEFAULT_LABELS, labelsProp);
41
+ const theme = useLoamTheme("card");
23
42
  const { styles } = useStyles(sheet, {
24
43
  variant: variant === "default" ? void 0 : variant,
25
44
  selected,
26
45
  emphasized,
27
- dragging
46
+ dragging,
47
+ inactive
28
48
  });
49
+ const android = isAndroidIdiom(theme, platform);
50
+ const skin = tone === "neutral" ? null : softToneSkin(theme, tone);
51
+ const PAD = { none: 0, sm: theme.space.s2, md: theme.space.s4, lg: theme.space.s6 };
52
+ const extra = skin || padding !== "none" ? {
53
+ ...skin ? { backgroundColor: skin.fill, borderColor: skin.edge } : null,
54
+ ...padding !== "none" ? { padding: PAD[padding] } : null
55
+ } : null;
56
+ const toggle = () => onSelectedChange?.(!selected);
29
57
  const scale = React.useRef(new Animated.Value(1)).current;
30
- const spring = (to) => Animated.spring(scale, {
31
- toValue: to,
32
- useNativeDriver: true,
33
- speed: 40,
34
- bounciness: 6
35
- }).start();
58
+ const spring = (to) => {
59
+ if (theme.reduceMotion) return;
60
+ Animated.spring(scale, {
61
+ ...springConfig(theme, "fs"),
62
+ toValue: to,
63
+ useNativeDriver: true
64
+ }).start();
65
+ };
66
+ const tintOn = dragging || selected;
67
+ const tintOpacity = React.useRef(new Animated.Value(tintOn ? 1 : 0)).current;
68
+ React.useEffect(() => {
69
+ Animated.timing(tintOpacity, {
70
+ toValue: tintOn ? 1 : 0,
71
+ ...motionTiming(theme.reduceMotion ? "reduced" : "full"),
72
+ useNativeDriver: true
73
+ }).start();
74
+ }, [tintOn, tintOpacity, theme.reduceMotion]);
36
75
  if (skeleton) {
37
76
  return /* @__PURE__ */ jsx(
38
77
  View,
@@ -52,7 +91,24 @@ function Card({
52
91
  );
53
92
  }
54
93
  const tint = dragging ? theme.state.dragged : selected ? theme.state.selected : null;
55
- const tintOverlay = tint ? /* @__PURE__ */ jsx(View, { style: [StyleSheet.absoluteFill, { backgroundColor: tint, pointerEvents: "none" }] }) : null;
94
+ const tintOverlay = tint ? /* @__PURE__ */ jsx(
95
+ Animated.View,
96
+ {
97
+ style: [StyleSheet.absoluteFill, { backgroundColor: tint, opacity: tintOpacity, pointerEvents: "none" }]
98
+ }
99
+ ) : null;
100
+ const selectMark = selectable && (!android || selected) ? /* @__PURE__ */ jsx(
101
+ Pressable,
102
+ {
103
+ accessibilityRole: "checkbox",
104
+ accessibilityLabel: labels.select,
105
+ accessibilityState: { checked: selected },
106
+ onPress: toggle,
107
+ hitSlop: theme.space[12],
108
+ style: [styles.selectMark, android ? styles.selectMarkAndroid : null, selected ? styles.selectMarkOn : null],
109
+ children: selected ? /* @__PURE__ */ jsx(Icon, { name: "check", size: android ? theme.space[14] : theme.space[16], color: theme.color.accentInk }) : null
110
+ }
111
+ ) : null;
56
112
  const lift = dragging && motion === "full" && !theme.reduceMotion;
57
113
  const dragTransform = lift ? [{ scale: 1.022 }, { rotate: theme.rtl ? "-1.2deg" : "1.2deg" }] : [];
58
114
  const withBusy = (node) => busy ? /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -65,10 +121,10 @@ function Card({
65
121
  importantForAccessibility: "no-hide-descendants"
66
122
  }
67
123
  ),
68
- /* @__PURE__ */ jsx(View, { style: styles.busySpinner, children: /* @__PURE__ */ jsx(Spinner, { size: "sm", accessibilityLabel: busyLabel }) })
124
+ /* @__PURE__ */ jsx(View, { style: styles.busySpinner, children: /* @__PURE__ */ jsx(Spinner, { size: "sm", accessibilityLabel: busyLabel ?? labels.loading }) })
69
125
  ] }) : node;
70
126
  if (onPress) {
71
- return /* @__PURE__ */ jsxs(Animated.View, { style: [styles.base, style, { transform: [{ scale }, ...dragTransform] }], children: [
127
+ return /* @__PURE__ */ jsxs(Animated.View, { style: [styles.base, extra, style, { transform: [{ scale }, ...dragTransform] }], children: [
72
128
  tintOverlay,
73
129
  /* @__PURE__ */ jsx(
74
130
  Pressable,
@@ -77,12 +133,14 @@ function Card({
77
133
  accessibilityLabel,
78
134
  accessibilityState: { selected: selected || void 0, busy: busy || void 0 },
79
135
  onPress,
80
- onPressIn: () => spring(0.98),
136
+ onLongPress: selectable && android ? toggle : void 0,
137
+ onPressIn: () => spring(0.97),
81
138
  onPressOut: () => spring(1),
82
139
  style: StyleSheet.absoluteFill
83
140
  }
84
141
  ),
85
- /* @__PURE__ */ jsx(View, { style: styles.pressContent, children: withBusy(children) })
142
+ /* @__PURE__ */ jsx(View, { style: styles.pressContent, children: /* @__PURE__ */ jsx(CardStateContext.Provider, { value: { inactive }, children: withBusy(children) }) }),
143
+ selectMark
86
144
  ] });
87
145
  }
88
146
  return /* @__PURE__ */ jsxs(
@@ -91,10 +149,11 @@ function Card({
91
149
  role: "group",
92
150
  accessibilityLabel,
93
151
  accessibilityState: { selected: selected || void 0, busy: busy || void 0 },
94
- style: [styles.base, style, dragTransform.length ? { transform: dragTransform } : null],
152
+ style: [styles.base, extra, style, dragTransform.length ? { transform: dragTransform } : null],
95
153
  children: [
96
154
  tintOverlay,
97
- withBusy(children)
155
+ /* @__PURE__ */ jsx(CardStateContext.Provider, { value: { inactive }, children: withBusy(children) }),
156
+ selectMark
98
157
  ]
99
158
  }
100
159
  );
@@ -105,7 +164,8 @@ function CardHeader({ children, style }) {
105
164
  }
106
165
  function CardTitle({ children, style }) {
107
166
  const { styles } = useStyles(sheet);
108
- return typeof children === "string" ? /* @__PURE__ */ jsx(Text, { style: [styles.title, style], children }) : /* @__PURE__ */ jsx(Fragment, { children });
167
+ const { inactive } = React.useContext(CardStateContext);
168
+ return typeof children === "string" ? /* @__PURE__ */ jsx(Text, { style: [styles.title, inactive ? styles.titleInactive : null, style], children }) : /* @__PURE__ */ jsx(Fragment, { children });
109
169
  }
110
170
  function CardDescription({ children, style }) {
111
171
  const { styles } = useStyles(sheet);
@@ -121,13 +181,30 @@ function CardFooter({ children, style }) {
121
181
  }
122
182
  function CardMedia({
123
183
  source,
184
+ fallbackSrc,
185
+ placeholder,
124
186
  height = 160,
125
187
  style,
126
188
  accessibilityLabel
127
189
  }) {
128
190
  const { styles } = useStyles(sheet);
191
+ const { inactive } = React.useContext(CardStateContext);
192
+ const uri = source && typeof source === "object" && !Array.isArray(source) && "uri" in source ? source.uri : void 0;
193
+ if (uri !== void 0 || !source) {
194
+ return /* @__PURE__ */ jsx(
195
+ Image,
196
+ {
197
+ src: uri,
198
+ fallbackSrc,
199
+ placeholder,
200
+ alt: accessibilityLabel,
201
+ inactive,
202
+ style: [styles.media, { height }, style]
203
+ }
204
+ );
205
+ }
129
206
  return /* @__PURE__ */ jsx(
130
- Image,
207
+ Image$1,
131
208
  {
132
209
  source,
133
210
  resizeMode: "cover",
@@ -168,14 +245,25 @@ var sheet = createStyleSheet((theme) => ({
168
245
  backgroundColor: theme.color.surface,
169
246
  borderWidth: theme.borderWidth.thin,
170
247
  borderColor: theme.color.border,
171
- borderRadius: theme.radius.xl,
248
+ borderRadius: theme.radius.lg,
172
249
  overflow: "hidden",
173
250
  variants: {
174
251
  variant: {
175
252
  // Reference (buildWidgets): `box-shadow:0 12px 30px rgba(30,25,15,.14)` → md token is
176
253
  // the nearest match; elevated steps up to lg for the stronger treatment.
177
- default: { ...theme.shadow.md },
178
- elevated: { ...theme.shadow.lg },
254
+ // The resting card reads the theme's `card` style (edge + shadow), so one
255
+ // theme setting restyles every card. `outline` keeps its own edge — it
256
+ // is the variant that *is* a border.
257
+ default: {
258
+ borderWidth: theme.card.borderWidth,
259
+ borderColor: theme.card.borderColor,
260
+ ...theme.card.shadow
261
+ },
262
+ elevated: {
263
+ borderWidth: theme.card.borderWidth,
264
+ borderColor: theme.card.borderColor,
265
+ ...theme.shadow.lg
266
+ },
179
267
  outline: {}
180
268
  },
181
269
  // Selection: an accent border. The `state-selected` tint is a translucent
@@ -189,7 +277,8 @@ var sheet = createStyleSheet((theme) => ({
189
277
  // it derives the accent at the hard-edge strength every such edge needs,
190
278
  // and it is a no-op on an accent that already clears.
191
279
  selected: {
192
- true: { borderColor: theme.focus.ringColor },
280
+ // Width too: a theme may draw cards edgeless, and the mark must survive it.
281
+ true: { borderColor: theme.focus.ringColor, borderWidth: theme.borderWidth.thin },
193
282
  false: {}
194
283
  },
195
284
  // Von Restorff emphasis — a 2px accent border + the stronger `lg`
@@ -206,11 +295,48 @@ var sheet = createStyleSheet((theme) => ({
206
295
  // Dragging: a raised shadow + accent border over the card's own surface;
207
296
  // the `state-dragged` tint and the scale/tilt are applied in the component.
208
297
  dragging: {
209
- true: { borderColor: theme.focus.ringColor, ...theme.shadow.lg },
298
+ true: {
299
+ borderColor: theme.focus.ringColor,
300
+ borderWidth: theme.borderWidth.thin,
301
+ ...theme.shadow.lg
302
+ },
303
+ false: {}
304
+ },
305
+ // A07 inactive: surface-2 and no shadow; it still opens and selects.
306
+ inactive: {
307
+ true: {
308
+ backgroundColor: theme.color.surface2,
309
+ shadowOpacity: 0,
310
+ elevation: 0
311
+ },
210
312
  false: {}
211
313
  }
212
314
  }
213
315
  },
316
+ titleInactive: { color: theme.color.text2 },
317
+ // A08 selection mark, top-start 12 in. iOS: the edit-mode circle 22.
318
+ selectMark: {
319
+ position: "absolute",
320
+ top: theme.space[12],
321
+ start: theme.space[12],
322
+ width: theme.space[22],
323
+ height: theme.space[22],
324
+ borderRadius: theme.radius.full,
325
+ borderWidth: theme.borderWidth.heavy,
326
+ borderColor: theme.color.borderStrong,
327
+ backgroundColor: theme.color.surface,
328
+ alignItems: "center",
329
+ justifyContent: "center"
330
+ },
331
+ // Android: the 18 check, drawn only on a selected card.
332
+ selectMarkAndroid: {
333
+ width: theme.space[18],
334
+ height: theme.space[18]
335
+ },
336
+ selectMarkOn: {
337
+ backgroundColor: theme.color.accent,
338
+ borderColor: theme.color.accent
339
+ },
214
340
  header: {
215
341
  // Reference (buildWidgets small widget): `padding:16px` — s4 = 16px.
216
342
  paddingHorizontal: theme.space.s4,
@@ -253,8 +379,8 @@ var sheet = createStyleSheet((theme) => ({
253
379
  },
254
380
  media: {
255
381
  width: "100%",
256
- borderTopLeftRadius: theme.radius.xl,
257
- borderTopRightRadius: theme.radius.xl,
382
+ borderTopLeftRadius: theme.radius.lg,
383
+ borderTopRightRadius: theme.radius.lg,
258
384
  backgroundColor: theme.color.surface2
259
385
  }
260
386
  }));