@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
@@ -0,0 +1,443 @@
1
+ import { storageKey } from './chunk-NNCOFLNE.js';
2
+ import { NameConflictDialog } from './chunk-CHPX4MFI.js';
3
+ import { Checkbox } from './chunk-KNILMM4H.js';
4
+ import { Alert } from './chunk-Z7I4ZSO6.js';
5
+ import { Sheet } from './chunk-B7JZ3N5G.js';
6
+ import { DialogTitle, DialogFooter, DialogDescription, Dialog } from './chunk-AQ5FIG74.js';
7
+ import { Button } from './chunk-5DTKORLI.js';
8
+ import { Input, TextField } from './chunk-KXLDK6HB.js';
9
+ import { useLabels } from './chunk-APCWFOZW.js';
10
+ import * as React from 'react';
11
+ import { View, Text, Platform } from 'react-native';
12
+ import { createStyleSheet, useLoamTheme, useStyles } from '@btndprojects/loam-theme-native';
13
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
14
+
15
+ var DEFAULT_LABELS = {
16
+ cancel: "Cancel",
17
+ confirm: "Confirm",
18
+ tryAgain: "Try again",
19
+ failed: "That didn\u2019t work. Check your connection and try again.",
20
+ typeToConfirm: () => ["Type", "to confirm"],
21
+ typeMismatch: (name) => `Type ${name} to confirm`,
22
+ remember: "Don\u2019t ask again",
23
+ rememberAction: "Don\u2019t Ask Again"
24
+ };
25
+ var CONFIRM_CONSEQUENCE_MAX = 4;
26
+ var ConfirmContext = React.createContext(null);
27
+ function memoryStorage() {
28
+ const data = /* @__PURE__ */ new Map();
29
+ return {
30
+ getItem: (k) => data.get(k) ?? null,
31
+ setItem: (k, v) => {
32
+ data.set(k, v);
33
+ },
34
+ removeItem: (k) => {
35
+ data.delete(k);
36
+ }
37
+ };
38
+ }
39
+ function ConfirmProvider({
40
+ children,
41
+ storage: storageProp,
42
+ labels,
43
+ platform
44
+ }) {
45
+ const [fallback] = React.useState(memoryStorage);
46
+ const storage = storageProp ?? fallback;
47
+ const [queue, setQueue] = React.useState([]);
48
+ const hidden = React.useRef(/* @__PURE__ */ new Set());
49
+ const known = React.useRef(/* @__PURE__ */ new Set());
50
+ const api = React.useMemo(() => {
51
+ const isHidden = (id) => {
52
+ if (hidden.current.has(id)) return true;
53
+ try {
54
+ return storage.getItem(storageKey("confirm", id)) === "1";
55
+ } catch {
56
+ return false;
57
+ }
58
+ };
59
+ return {
60
+ confirm: (options) => {
61
+ const id = options.tone !== "danger" ? options.remember?.id : void 0;
62
+ if (id) known.current.add(id);
63
+ if (id && isHidden(id)) return Promise.resolve(true);
64
+ return new Promise(
65
+ (resolve) => setQueue((q) => [...q, { kind: "confirm", options, resolve }])
66
+ );
67
+ },
68
+ prompt: (options) => new Promise(
69
+ (resolve) => setQueue((q) => [...q, { kind: "prompt", options, resolve }])
70
+ ),
71
+ resolveConflict: (options) => new Promise(
72
+ (resolve) => setQueue((q) => [...q, { kind: "conflict", options, resolve }])
73
+ ),
74
+ resetHidden: (id) => {
75
+ const ids = id ? [id] : [...known.current];
76
+ for (const one of ids) {
77
+ hidden.current.delete(one);
78
+ try {
79
+ storage.removeItem?.(storageKey("confirm", one));
80
+ } catch {
81
+ }
82
+ }
83
+ }
84
+ };
85
+ }, [storage]);
86
+ const current = queue[0] ?? null;
87
+ const settle = React.useCallback(
88
+ (value, rememberId) => {
89
+ if (rememberId) {
90
+ hidden.current.add(rememberId);
91
+ try {
92
+ storage.setItem(storageKey("confirm", rememberId), "1");
93
+ } catch {
94
+ }
95
+ }
96
+ setQueue(([head, ...rest]) => {
97
+ if (head) head.resolve(value);
98
+ return rest;
99
+ });
100
+ },
101
+ [storage]
102
+ );
103
+ return /* @__PURE__ */ jsxs(ConfirmContext.Provider, { value: api, children: [
104
+ children,
105
+ current?.kind === "conflict" ? /* @__PURE__ */ jsx(
106
+ NameConflictDialog,
107
+ {
108
+ platform,
109
+ ...current.options,
110
+ open: true,
111
+ onClose: () => settle(null),
112
+ onResolve: (choice, applyToAll) => settle({ choice, applyToAll })
113
+ },
114
+ queue.length + current.options.existing.name
115
+ ) : current ? /* @__PURE__ */ jsx(
116
+ ConfirmSurface,
117
+ {
118
+ request: current,
119
+ labels,
120
+ platform,
121
+ settle
122
+ },
123
+ queue.length + current.options.title
124
+ ) : null
125
+ ] });
126
+ }
127
+ function useConfirm() {
128
+ const api = React.useContext(ConfirmContext);
129
+ if (!api) throw new Error("useConfirm() needs a <ConfirmProvider> above it.");
130
+ return api;
131
+ }
132
+ function useOptionalConfirm() {
133
+ return React.useContext(ConfirmContext);
134
+ }
135
+ function resolvePlatform(explicit, themed) {
136
+ if (explicit) return explicit;
137
+ if (Platform.OS === "ios") return "ios";
138
+ if (Platform.OS === "android") return "android";
139
+ return themed === "Android" ? "android" : "ios";
140
+ }
141
+ function ConfirmSurface({
142
+ request,
143
+ labels: labelsProp,
144
+ platform,
145
+ settle,
146
+ preview
147
+ }) {
148
+ const labels = useLabels("confirm", DEFAULT_LABELS, labelsProp);
149
+ const theme = useLoamTheme("confirm");
150
+ const { styles } = useStyles(sheet);
151
+ const os = resolvePlatform(platform, theme.platform);
152
+ const { options } = request;
153
+ const isPrompt = request.kind === "prompt";
154
+ const danger = options.tone === "danger";
155
+ const confirmOpts = request.kind === "confirm" ? request.options : null;
156
+ const promptOpts = request.kind === "prompt" ? request.options : null;
157
+ const typeName = confirmOpts?.typeToConfirm;
158
+ const remember = !danger ? confirmOpts?.remember : void 0;
159
+ const consequence = (confirmOpts?.consequence ?? []).slice(0, CONFIRM_CONSEQUENCE_MAX);
160
+ const [value, setValue] = React.useState(preview?.value ?? promptOpts?.defaultValue ?? "");
161
+ const [typed, setTyped] = React.useState(preview?.typed ?? "");
162
+ const [error, setError] = React.useState(
163
+ () => preview?.validated ? promptOpts?.validate?.(preview.value ?? promptOpts.defaultValue ?? "") || null : null
164
+ );
165
+ const [validated, setValidated] = React.useState(preview?.validated ?? false);
166
+ const [busy, setBusy] = React.useState(preview?.busy ?? false);
167
+ const [failed, setFailed] = React.useState(preview?.failed ?? null);
168
+ const [remembered, setRemembered] = React.useState(preview?.remembered ?? false);
169
+ const settled = React.useRef(false);
170
+ const mismatch = typeName != null && typed !== typeName;
171
+ const hasField = isPrompt || typeName != null;
172
+ const asSheet = os === "ios" && hasField;
173
+ const dismissValue = isPrompt ? null : false;
174
+ const finish = (result, rememberId) => {
175
+ if (settled.current) return;
176
+ settled.current = true;
177
+ settle(result, rememberId);
178
+ };
179
+ const dismiss = () => {
180
+ if (!busy) finish(dismissValue);
181
+ };
182
+ const runValidate = (text) => {
183
+ const message = promptOpts?.validate?.(text) || null;
184
+ setError(message);
185
+ return message;
186
+ };
187
+ const submit = async (rememberThis = false) => {
188
+ if (busy || mismatch) return;
189
+ if (isPrompt) {
190
+ setValidated(true);
191
+ if (runValidate(value)) return;
192
+ }
193
+ const work = isPrompt ? () => promptOpts.onConfirm?.(value) : () => confirmOpts.onConfirm?.();
194
+ try {
195
+ setFailed(null);
196
+ const pending = work();
197
+ if (pending && typeof pending.then === "function") {
198
+ setBusy(true);
199
+ await pending;
200
+ }
201
+ } catch (e) {
202
+ setBusy(false);
203
+ setFailed(e instanceof Error && e.message ? e.message : labels.failed);
204
+ return;
205
+ }
206
+ setBusy(false);
207
+ finish(isPrompt ? value : true, rememberThis ? remember?.id : void 0);
208
+ };
209
+ const confirmLabel = failed ? labels.tryAgain : options.confirmLabel ?? labels.confirm;
210
+ const confirmButton = (size, fullWidth) => /* @__PURE__ */ jsx(
211
+ Button,
212
+ {
213
+ variant: danger ? "danger" : "primary",
214
+ size,
215
+ fullWidth,
216
+ loading: busy,
217
+ softDisabled: mismatch,
218
+ disabledReason: mismatch ? labels.typeMismatch(typeName) : void 0,
219
+ onPress: () => void submit(os === "android" && remembered),
220
+ children: confirmLabel
221
+ }
222
+ );
223
+ const body = /* @__PURE__ */ jsxs(Fragment, { children: [
224
+ consequence.length > 0 ? /* @__PURE__ */ jsx(View, { style: styles.consequence, testID: "confirm-consequence", children: consequence.map((line) => /* @__PURE__ */ jsx(Text, { style: styles.consequenceLine, children: line }, line)) }) : null,
225
+ typeName != null ? /* @__PURE__ */ jsxs(View, { style: styles.field, children: [
226
+ /* @__PURE__ */ jsxs(Text, { style: styles.typeLabel, nativeID: "confirm-type-label", children: [
227
+ labels.typeToConfirm(typeName)[0],
228
+ " ",
229
+ /* @__PURE__ */ jsx(Text, { style: styles.token, children: typeName }),
230
+ " ",
231
+ labels.typeToConfirm(typeName)[1]
232
+ ] }),
233
+ /* @__PURE__ */ jsx(
234
+ Input,
235
+ {
236
+ size: asSheet ? "lg" : "md",
237
+ value: typed,
238
+ onChangeText: setTyped,
239
+ autoFocus: !preview,
240
+ autoCapitalize: "none",
241
+ autoCorrect: false,
242
+ editable: !busy,
243
+ accessibilityLabelledBy: "confirm-type-label",
244
+ accessibilityLabel: labels.typeMismatch(typeName)
245
+ }
246
+ )
247
+ ] }) : null,
248
+ promptOpts ? /* @__PURE__ */ jsx(
249
+ TextField,
250
+ {
251
+ size: asSheet ? "lg" : "md",
252
+ label: promptOpts.label,
253
+ hint: promptOpts.hint,
254
+ error: error ?? void 0,
255
+ value,
256
+ placeholder: promptOpts.placeholder,
257
+ editable: !busy,
258
+ autoFocus: !preview,
259
+ selectTextOnFocus: true,
260
+ onChangeText: (next) => {
261
+ setValue(next);
262
+ if (validated) runValidate(next);
263
+ },
264
+ onSubmitEditing: () => void submit()
265
+ }
266
+ ) : null,
267
+ failed ? /* @__PURE__ */ jsx(Alert, { tone: "danger", title: failed }) : null
268
+ ] });
269
+ if (asSheet && preview) {
270
+ return /* @__PURE__ */ jsxs(View, { style: [styles.previewCard, styles.previewSheet], children: [
271
+ /* @__PURE__ */ jsx(DialogTitle, { children: options.title }),
272
+ options.body ? /* @__PURE__ */ jsx(Text, { style: styles.sheetDescription, children: options.body }) : null,
273
+ body,
274
+ confirmButton("lg", true)
275
+ ] });
276
+ }
277
+ if (asSheet) {
278
+ return /* @__PURE__ */ jsx(
279
+ Sheet,
280
+ {
281
+ open: true,
282
+ title: options.title,
283
+ detents: ["half"],
284
+ dismissible: !busy,
285
+ onClose: dismiss,
286
+ footer: /* @__PURE__ */ jsx(View, { style: styles.sheetFooter, children: confirmButton("lg", true) }),
287
+ children: /* @__PURE__ */ jsxs(View, { style: styles.sheetBody, children: [
288
+ options.body ? /* @__PURE__ */ jsx(Text, { style: styles.sheetDescription, children: options.body }) : null,
289
+ body
290
+ ] })
291
+ }
292
+ );
293
+ }
294
+ const cancel = /* @__PURE__ */ jsx(
295
+ Button,
296
+ {
297
+ variant: os === "android" ? "ghost" : "outline",
298
+ size: "md",
299
+ fullWidth: os === "ios",
300
+ disabled: busy,
301
+ onPress: dismiss,
302
+ children: options.cancelLabel ?? labels.cancel
303
+ }
304
+ );
305
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
306
+ body,
307
+ remember && os === "android" ? /* @__PURE__ */ jsx(
308
+ Checkbox,
309
+ {
310
+ size: "sm",
311
+ platform: "android",
312
+ label: remember.label ?? labels.remember,
313
+ checked: remembered,
314
+ onCheckedChange: setRemembered,
315
+ disabled: busy
316
+ }
317
+ ) : null,
318
+ os === "ios" && remember ? (
319
+ // Three actions stack: the confirm, “Don’t Ask Again”, Cancel last.
320
+ /* @__PURE__ */ jsxs(DialogFooter, { children: [
321
+ confirmButton("md", true),
322
+ /* @__PURE__ */ jsx(
323
+ Button,
324
+ {
325
+ variant: "outline",
326
+ size: "md",
327
+ fullWidth: true,
328
+ disabled: busy,
329
+ onPress: () => void submit(true),
330
+ children: remember.label ?? labels.rememberAction
331
+ }
332
+ ),
333
+ cancel
334
+ ] })
335
+ ) : /* @__PURE__ */ jsxs(DialogFooter, { children: [
336
+ cancel,
337
+ confirmButton("md", os === "ios")
338
+ ] })
339
+ ] });
340
+ if (preview) {
341
+ return /* @__PURE__ */ jsxs(View, { style: styles.previewCard, children: [
342
+ /* @__PURE__ */ jsx(DialogTitle, { children: options.title }),
343
+ options.body ? /* @__PURE__ */ jsx(DialogDescription, { children: options.body }) : null,
344
+ content
345
+ ] });
346
+ }
347
+ return /* @__PURE__ */ jsx(
348
+ Dialog,
349
+ {
350
+ open: true,
351
+ onClose: dismiss,
352
+ dismissible: !busy,
353
+ showClose: false,
354
+ platform: os,
355
+ title: options.title,
356
+ description: options.body,
357
+ children: content
358
+ }
359
+ );
360
+ }
361
+ function ConfirmPreview({
362
+ kind = "confirm",
363
+ options,
364
+ loading,
365
+ error,
366
+ typed,
367
+ value,
368
+ validated,
369
+ remembered,
370
+ labels,
371
+ platform
372
+ }) {
373
+ const request = kind === "prompt" ? { kind, options, resolve: () => {
374
+ } } : { kind, options, resolve: () => {
375
+ } };
376
+ return /* @__PURE__ */ jsx(
377
+ ConfirmSurface,
378
+ {
379
+ request,
380
+ labels,
381
+ platform,
382
+ settle: () => {
383
+ },
384
+ preview: { busy: loading, failed: error, typed, value, validated, remembered }
385
+ }
386
+ );
387
+ }
388
+ var sheet = createStyleSheet((theme) => ({
389
+ consequence: {
390
+ gap: theme.space.s1,
391
+ borderRadius: theme.radius.md,
392
+ backgroundColor: theme.color.surface2,
393
+ paddingHorizontal: theme.space.s4,
394
+ paddingVertical: theme.space.s3
395
+ },
396
+ consequenceLine: {
397
+ fontFamily: theme.font.sans,
398
+ fontSize: theme.type.footnote.fontSize,
399
+ lineHeight: theme.type.footnote.lineHeight,
400
+ fontWeight: theme.fontWeight.medium,
401
+ color: theme.color.text
402
+ },
403
+ field: { gap: theme.space.s2 },
404
+ typeLabel: {
405
+ fontFamily: theme.font.sans,
406
+ fontSize: theme.type.footnote.fontSize,
407
+ lineHeight: theme.type.footnote.lineHeight,
408
+ fontWeight: theme.fontWeight.semibold,
409
+ color: theme.color.text
410
+ },
411
+ token: {
412
+ fontFamily: theme.font.mono,
413
+ backgroundColor: theme.color.surface2,
414
+ color: theme.color.text
415
+ },
416
+ sheetBody: { gap: theme.space.s4 },
417
+ // The Modal card's look, drawn inline for ConfirmPreview.
418
+ previewCard: {
419
+ width: "100%",
420
+ maxWidth: theme.panel.xl,
421
+ backgroundColor: theme.color.surface,
422
+ borderRadius: theme.radius.xl,
423
+ borderWidth: theme.borderWidth.base,
424
+ borderColor: theme.color.border,
425
+ padding: theme.space.s5,
426
+ gap: theme.space.s3,
427
+ ...theme.shadow.lg
428
+ },
429
+ previewSheet: { gap: theme.space.s4 },
430
+ sheetDescription: {
431
+ fontFamily: theme.font.sans,
432
+ fontSize: theme.type.subheadline.fontSize,
433
+ lineHeight: theme.type.subheadline.lineHeight,
434
+ color: theme.color.text2
435
+ },
436
+ sheetFooter: {
437
+ paddingHorizontal: theme.space.s5,
438
+ paddingTop: theme.space.s3,
439
+ paddingBottom: theme.space.s5
440
+ }
441
+ }));
442
+
443
+ export { CONFIRM_CONSEQUENCE_MAX, ConfirmPreview, ConfirmProvider, useConfirm, useOptionalConfirm };
@@ -1,6 +1,8 @@
1
1
  import { DRAG_CURSOR } from './chunk-KTAC4MGE.js';
2
2
  import { haptics } from './chunk-NY2U3PBI.js';
3
- import { useResolvedMotion } from './chunk-6N33LFQA.js';
3
+ import { useLabels } from './chunk-APCWFOZW.js';
4
+ import { Icon } from './chunk-PCEFCOLN.js';
5
+ import { useResolvedMotion } from './chunk-J64KGCGX.js';
4
6
  import * as React from 'react';
5
7
  import { Animated, Easing, PanResponder, View, Text } from 'react-native';
6
8
  import { createStyleSheet, useStyles, useLoamTheme } from '@btndprojects/loam-theme-native';
@@ -9,12 +11,21 @@ import { jsxs, jsx } from 'react/jsx-runtime';
9
11
  var GEOMETRY = {
10
12
  sm: { thumb: 18, track: 4, height: 32 },
11
13
  // loam-allow-raw: ramp keys, read via theme.space
12
- md: { thumb: 24, track: 6, height: 40 }
14
+ md: { thumb: 24, track: 4, height: 40 }
13
15
  // loam-allow-raw: ramp keys, read via theme.space
14
16
  };
15
17
  var THUMB_ACTIVE_SCALE = 1.18;
18
+ function adjustedValue(current, direction, { min, max, step }) {
19
+ const delta = step > 0 ? step : (max - min) / 10;
20
+ const next = Math.round((current + direction * delta) * 1e6) / 1e6;
21
+ return Math.min(max, Math.max(min, next));
22
+ }
16
23
  var MAX_TICKS = 20;
17
24
  var BUBBLE_BOTTOM = 28;
25
+ var DEFAULT_LABELS = {
26
+ percent: (percent) => `${percent}%`,
27
+ range: (min, percent, max) => `${min} \xB7 ${percent}% \xB7 ${max}`
28
+ };
18
29
  function clamp(n, lo, hi) {
19
30
  return Math.max(lo, Math.min(hi, n));
20
31
  }
@@ -31,14 +42,21 @@ function Slider({
31
42
  showValue = false,
32
43
  showReadout = false,
33
44
  showTicks = false,
34
- accessibilityLabel
45
+ accessibilityLabel,
46
+ error: errorMessage,
47
+ tone = "default",
48
+ bubble = "auto",
49
+ labels: labelsProp
35
50
  }) {
36
- const animateScale = useResolvedMotion(motion) === "full";
51
+ const labels = useLabels("slider", DEFAULT_LABELS, labelsProp);
52
+ const animateScale = useResolvedMotion(motion, "slider") === "full";
37
53
  const isControlled = value !== void 0;
38
54
  const [internal, setInternal] = React.useState(defaultValue ?? min);
39
55
  const current = clamp(isControlled ? value : internal, min, max);
40
56
  const { styles } = useStyles(sheet, { size, disabled });
41
- const theme = useLoamTheme();
57
+ const theme = useLoamTheme("slider");
58
+ const errorId = React.useId();
59
+ const toneColor = errorMessage ? theme.color.danger : tone === "default" ? null : tone === "accent" ? theme.color.accentStrong : theme.color[tone];
42
60
  const fraction = max > min ? (current - min) / (max - min) : 0;
43
61
  const pct = `${fraction * 100}%`;
44
62
  const [trackWidth, setTrackWidth] = React.useState(0);
@@ -84,7 +102,10 @@ function Slider({
84
102
  useNativeDriver: true
85
103
  }).start();
86
104
  };
87
- const bubbleScale = React.useRef(new Animated.Value(0)).current;
105
+ const bubbleScale = React.useRef(new Animated.Value(bubble === "always" ? 1 : 0)).current;
106
+ const restBubble = bubble === "always" ? 1 : 0;
107
+ const restBubbleRef = React.useRef(restBubble);
108
+ restBubbleRef.current = restBubble;
88
109
  const bubbleRef = React.useRef(() => {
89
110
  });
90
111
  bubbleRef.current = (to) => {
@@ -99,6 +120,9 @@ function Slider({
99
120
  useNativeDriver: true
100
121
  }).start();
101
122
  };
123
+ React.useEffect(() => {
124
+ bubbleScale.setValue(restBubble);
125
+ }, [bubbleScale, restBubble]);
102
126
  const steppedRef = React.useRef(step > 0);
103
127
  steppedRef.current = step > 0;
104
128
  const pan = React.useRef(
@@ -118,12 +142,12 @@ function Slider({
118
142
  },
119
143
  onPanResponderRelease: () => {
120
144
  swellRef.current(1);
121
- bubbleRef.current(0);
145
+ bubbleRef.current(restBubbleRef.current);
122
146
  if (steppedRef.current) haptics.impact("medium");
123
147
  },
124
148
  onPanResponderTerminate: () => {
125
149
  swellRef.current(1);
126
- bubbleRef.current(0);
150
+ bubbleRef.current(restBubbleRef.current);
127
151
  }
128
152
  })
129
153
  ).current;
@@ -140,8 +164,8 @@ function Slider({
140
164
  const stepCount = step > 0 && max > min ? Math.round((max - min) / step) : 0;
141
165
  const showTickMarks = showTicks && stepCount > 0 && stepCount <= MAX_TICKS;
142
166
  const tickIndices = showTickMarks ? Array.from({ length: stepCount + 1 }, (_, i) => i) : [];
143
- const bubbleLabel = step > 0 ? String(current) : `${Math.round(fraction * 100)}%`;
144
- const readoutText = `${min} \xB7 ${Math.round(fraction * 100)}% \xB7 ${max}`;
167
+ const bubbleLabel = step > 0 ? String(current) : labels.percent(Math.round(fraction * 100));
168
+ const readoutText = labels.range(min, Math.round(fraction * 100), max);
145
169
  return /* @__PURE__ */ jsxs(View, { style: styles.wrap, children: [
146
170
  /* @__PURE__ */ jsxs(View, { style: styles.trackRow, children: [
147
171
  /* @__PURE__ */ jsxs(
@@ -152,15 +176,28 @@ function Slider({
152
176
  accessibilityLabel,
153
177
  accessibilityValue: { min, max, now: current },
154
178
  accessibilityState: { disabled },
179
+ accessibilityActions: [{ name: "increment" }, { name: "decrement" }],
180
+ onAccessibilityAction: (e) => {
181
+ if (disabled) return;
182
+ const dir = e.nativeEvent.actionName === "increment" ? 1 : -1;
183
+ setValue(adjustedValue(currentRef.current, dir, { min, max, step }));
184
+ },
155
185
  "aria-valuemin": min,
156
186
  "aria-valuemax": max,
157
187
  "aria-valuenow": current,
188
+ "aria-invalid": errorMessage ? true : void 0,
189
+ "aria-describedby": errorMessage ? errorId : void 0,
158
190
  onLayout,
159
191
  style: [styles.container, !disabled && DRAG_CURSOR],
160
192
  ...disabled ? {} : pan.panHandlers,
161
193
  children: [
162
194
  /* @__PURE__ */ jsxs(View, { style: styles.track, children: [
163
- /* @__PURE__ */ jsx(View, { style: [styles.fill, { width: pct }] }),
195
+ /* @__PURE__ */ jsx(
196
+ View,
197
+ {
198
+ style: [styles.fill, { width: pct }, toneColor ? { backgroundColor: toneColor } : null]
199
+ }
200
+ ),
164
201
  showTickMarks && /* @__PURE__ */ jsx(View, { style: styles.ticks, children: tickIndices.map((i) => /* @__PURE__ */ jsx(View, { testID: `slider-tick-${i}`, style: styles.tick }, i)) })
165
202
  ] }),
166
203
  /* @__PURE__ */ jsx(
@@ -183,6 +220,7 @@ function Slider({
183
220
  testID: "slider-thumb",
184
221
  style: [
185
222
  styles.thumb,
223
+ errorMessage ? { borderColor: theme.color.danger } : null,
186
224
  {
187
225
  transform: [{ translateX: thumbTranslateX }, { scale: thumbScale }]
188
226
  }
@@ -194,7 +232,11 @@ function Slider({
194
232
  ),
195
233
  showValue ? /* @__PURE__ */ jsx(Text, { style: styles.value, children: current }) : null
196
234
  ] }),
197
- showReadout ? /* @__PURE__ */ jsx(Text, { style: styles.readout, children: readoutText }) : null
235
+ showReadout ? /* @__PURE__ */ jsx(Text, { style: styles.readout, children: readoutText }) : null,
236
+ errorMessage ? /* @__PURE__ */ jsxs(View, { style: styles.errorRow, children: [
237
+ /* @__PURE__ */ jsx(Icon, { name: "alert-triangle", size: theme.icon.sm, color: theme.color.danger }),
238
+ /* @__PURE__ */ jsx(Text, { nativeID: errorId, role: "alert", style: styles.errorText, children: errorMessage })
239
+ ] }) : null
198
240
  ] });
199
241
  }
200
242
  var sheet = createStyleSheet((theme) => ({
@@ -213,6 +255,8 @@ var sheet = createStyleSheet((theme) => ({
213
255
  container: {
214
256
  flex: 1,
215
257
  justifyContent: "center",
258
+ // The drawn control stays slim; the touch region still reaches the minimum.
259
+ minHeight: theme.tapMin,
216
260
  variants: {
217
261
  size: {
218
262
  sm: { height: theme.space[GEOMETRY.sm.height] },
@@ -243,7 +287,7 @@ var sheet = createStyleSheet((theme) => ({
243
287
  top: 0,
244
288
  bottom: 0,
245
289
  borderRadius: theme.radius.full,
246
- backgroundColor: theme.color.accent,
290
+ backgroundColor: theme.color.accentStrong,
247
291
  variants: { size: {}, disabled: {} }
248
292
  },
249
293
  // Tick marks overlaid inside the track (reference sliderCtl line 2294).
@@ -277,7 +321,7 @@ var sheet = createStyleSheet((theme) => ({
277
321
  },
278
322
  // The pill-shaped card that floats above the thumb during drag.
279
323
  // Reference sliderCtl line 2292: background var(--text), color var(--bg),
280
- // font-size 12px, font-weight 700, padding 4px 9px, border-radius 8px.
324
+ // font-size 12px, font-weight 600, padding 4px 9px, border-radius 8px.
281
325
  bubbleCard: {
282
326
  backgroundColor: theme.color.text,
283
327
  borderRadius: theme.radius.sm,
@@ -288,7 +332,7 @@ var sheet = createStyleSheet((theme) => ({
288
332
  color: theme.color.bg,
289
333
  fontFamily: theme.font.sans,
290
334
  fontSize: theme.type.caption1.fontSize,
291
- fontWeight: theme.fontWeight.bold,
335
+ fontWeight: theme.fontWeight.semibold,
292
336
  lineHeight: theme.type.caption1.lineHeight
293
337
  },
294
338
  thumb: {
@@ -334,6 +378,13 @@ var sheet = createStyleSheet((theme) => ({
334
378
  fontSize: theme.fontSize[14],
335
379
  color: theme.color.text2
336
380
  },
381
+ errorRow: { flexDirection: "row", alignItems: "center", gap: theme.space.s1 },
382
+ errorText: {
383
+ fontFamily: theme.font.sans,
384
+ fontSize: theme.type.caption1.fontSize,
385
+ lineHeight: theme.type.caption1.lineHeight,
386
+ color: theme.color.danger
387
+ },
337
388
  // Read-out row: mono `min · value% · max` below the track.
338
389
  readout: {
339
390
  fontFamily: theme.font.mono,