@btndprojects/loam-ui-native 0.1.0 → 0.2.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 (263) hide show
  1. package/README.md +56 -0
  2. package/dist/accordion/index.js +5 -3
  3. package/dist/adaptive/index.js +6 -2
  4. package/dist/alert/index.js +5 -2
  5. package/dist/analyzer/index.js +9 -6
  6. package/dist/announcement/index.js +8 -5
  7. package/dist/audio-player/index.js +5 -3
  8. package/dist/avatar/index.js +5 -2
  9. package/dist/avatar-group/index.js +7 -3
  10. package/dist/badge/index.js +7 -4
  11. package/dist/banner/index.js +5 -2
  12. package/dist/board/index.js +11 -6
  13. package/dist/button/index.js +6 -3
  14. package/dist/camera-permission/index.js +15 -12
  15. package/dist/capture-result/index.js +19 -16
  16. package/dist/card/index.js +6 -3
  17. package/dist/card-form/index.js +12 -8
  18. package/dist/carousel/index.js +4 -2
  19. package/dist/chart/index.js +8 -5
  20. package/dist/charts/index.js +8 -6
  21. package/dist/chat/index.js +16 -0
  22. package/dist/checkbox/index.js +6 -4
  23. package/dist/checklist/index.js +11 -8
  24. package/dist/checkout/index.js +16 -11
  25. package/dist/chip/index.js +7 -4
  26. package/dist/{chunk-XNUVB5OL.js → chunk-2OLKPG4E.js} +92 -28
  27. package/dist/{chunk-RUZHTGKB.js → chunk-2PKYGLQ6.js} +71 -40
  28. package/dist/{chunk-UC2WGUP3.js → chunk-2SWKL3AJ.js} +91 -252
  29. package/dist/{chunk-AI4DWZCD.js → chunk-2SY63FCH.js} +63 -16
  30. package/dist/{chunk-F5XNPWS7.js → chunk-2TXERVVA.js} +92 -35
  31. package/dist/chunk-36EC2T6P.js +581 -0
  32. package/dist/chunk-3DUWIYV5.js +437 -0
  33. package/dist/{chunk-RGQWWKLA.js → chunk-3QMEOFW5.js} +275 -71
  34. package/dist/chunk-3WEZCGHX.js +265 -0
  35. package/dist/chunk-46MMSDGL.js +194 -0
  36. package/dist/{chunk-7O2FMUPT.js → chunk-4IZXHVFJ.js} +297 -92
  37. package/dist/{chunk-LAECSR4H.js → chunk-5LAAAXFP.js} +14 -8
  38. package/dist/{chunk-2A5NIQAK.js → chunk-5RENVKBQ.js} +134 -46
  39. package/dist/{chunk-2ZZ7TDJ4.js → chunk-5UTRIXQ6.js} +37 -31
  40. package/dist/{chunk-LOE5YNN3.js → chunk-5VFZRGVD.js} +37 -10
  41. package/dist/{chunk-52X2VYTD.js → chunk-67IZZ2MJ.js} +115 -60
  42. package/dist/{chunk-UYG5L34B.js → chunk-6YAQBXB3.js} +10 -4
  43. package/dist/{chunk-BTTFCMKG.js → chunk-74FLKD24.js} +94 -23
  44. package/dist/{chunk-ITTYJZWX.js → chunk-7BUIKDD6.js} +73 -18
  45. package/dist/{chunk-FOKG57CR.js → chunk-7OVVSVEZ.js} +273 -109
  46. package/dist/chunk-AEB7KCHQ.js +287 -0
  47. package/dist/chunk-APCWFOZW.js +28 -0
  48. package/dist/chunk-AWKQIE5I.js +139 -0
  49. package/dist/{chunk-VCDBXW5H.js → chunk-B7N4ASYE.js} +86 -42
  50. package/dist/{chunk-IVNRBPGC.js → chunk-C4GTDLRC.js} +104 -20
  51. package/dist/{chunk-4ZAHCY44.js → chunk-C6APNDVA.js} +12 -5
  52. package/dist/{chunk-4SZYY6AN.js → chunk-CMTVNF3D.js} +18 -13
  53. package/dist/{chunk-WVKKJA6U.js → chunk-CPTOADB2.js} +151 -96
  54. package/dist/chunk-D5N5QWI7.js +1325 -0
  55. package/dist/{chunk-IIQTAY3J.js → chunk-DN7MNQIP.js} +113 -29
  56. package/dist/{chunk-47FWHGUN.js → chunk-DVGBZ3TX.js} +84 -23
  57. package/dist/chunk-DW3L54DQ.js +305 -0
  58. package/dist/{chunk-3ARE4TES.js → chunk-E2E3I5W2.js} +69 -18
  59. package/dist/{chunk-DHWADYZX.js → chunk-EDCBJV7J.js} +41 -28
  60. package/dist/{chunk-WSW6ZFAQ.js → chunk-ENP3BMZU.js} +4 -4
  61. package/dist/{chunk-OOPPQH27.js → chunk-EVOIGUBI.js} +43 -19
  62. package/dist/{chunk-VEAYTRPX.js → chunk-EY4DD67D.js} +165 -97
  63. package/dist/{chunk-223Q2T2Q.js → chunk-F3H33DQX.js} +132 -61
  64. package/dist/{chunk-CYRBHQQZ.js → chunk-F5B3UINI.js} +68 -35
  65. package/dist/{chunk-6X6PQ443.js → chunk-FAJI7BSC.js} +20 -9
  66. package/dist/{chunk-MOUJOP55.js → chunk-FUMHAAF3.js} +96 -29
  67. package/dist/{chunk-6HT2LP62.js → chunk-FV6HMP7W.js} +192 -73
  68. package/dist/{chunk-S7F6XLTK.js → chunk-FYWNRX4F.js} +76 -47
  69. package/dist/{chunk-YG3ZJHGU.js → chunk-FZGAAOKS.js} +30 -8
  70. package/dist/{chunk-YDGVJETP.js → chunk-G3AFC24V.js} +1 -1
  71. package/dist/{chunk-EJBDRVIH.js → chunk-G6UESEVN.js} +15 -8
  72. package/dist/chunk-GDKVKNR2.js +339 -0
  73. package/dist/chunk-GEIGMWNF.js +10 -0
  74. package/dist/{chunk-JUAMLEHX.js → chunk-H7DWSL4O.js} +24 -12
  75. package/dist/chunk-HJFFOOJ4.js +1 -0
  76. package/dist/{chunk-RW6ZL2FQ.js → chunk-HJLPZA4X.js} +106 -21
  77. package/dist/chunk-HYEOQWT7.js +647 -0
  78. package/dist/chunk-I2KLQ2HA.js +19 -0
  79. package/dist/{chunk-CJ5EOYZE.js → chunk-I4FHVKEC.js} +11 -5
  80. package/dist/{chunk-JNH2TYIN.js → chunk-IDM7JJMO.js} +19 -5
  81. package/dist/{chunk-O4AEHWII.js → chunk-IPUNJMAQ.js} +141 -49
  82. package/dist/{chunk-J7Q7VCVC.js → chunk-IT6FUXXG.js} +13 -6
  83. package/dist/{chunk-QJJ6MADV.js → chunk-IVKMZ7BB.js} +80 -28
  84. package/dist/{chunk-Z7H7VSFZ.js → chunk-IXKWIFWZ.js} +17 -6
  85. package/dist/chunk-J64KGCGX.js +55 -0
  86. package/dist/chunk-JBMLWFSJ.js +270 -0
  87. package/dist/{chunk-4BXMXBJO.js → chunk-JJLPBRVZ.js} +22 -11
  88. package/dist/chunk-JLC6PM5S.js +406 -0
  89. package/dist/chunk-JUYWSSKW.js +335 -0
  90. package/dist/{chunk-7CFF4HXS.js → chunk-JV5YOTOB.js} +49 -11
  91. package/dist/{chunk-LZLHELAG.js → chunk-KFJGFLMW.js} +29 -8
  92. package/dist/{chunk-O7AE6DAF.js → chunk-KQZ3GLHR.js} +18 -8
  93. package/dist/{chunk-N32RGOA5.js → chunk-LKFC4CS7.js} +80 -24
  94. package/dist/{chunk-YC6WORFL.js → chunk-LMPHCVJJ.js} +82 -50
  95. package/dist/{chunk-3WPW4KUN.js → chunk-LQP4KEXZ.js} +45 -13
  96. package/dist/{chunk-TKQYWZ5V.js → chunk-LUMVGO2K.js} +47 -31
  97. package/dist/{chunk-AWJOCGFZ.js → chunk-M656FYNH.js} +25 -13
  98. package/dist/{chunk-35OFI3JG.js → chunk-MKSNFG7H.js} +73 -20
  99. package/dist/{chunk-4GBOGOTV.js → chunk-NBEF4EPJ.js} +16 -6
  100. package/dist/chunk-NNCOFLNE.js +24 -0
  101. package/dist/{chunk-4YQOR7JM.js → chunk-NTQ2F3AU.js} +73 -20
  102. package/dist/{chunk-QCDXZBC5.js → chunk-O5V4TG3V.js} +126 -44
  103. package/dist/{chunk-U7TFM2JA.js → chunk-OJQUBQWA.js} +3 -3
  104. package/dist/{chunk-VQHPQEUH.js → chunk-OWAMM2DK.js} +13 -6
  105. package/dist/chunk-PID3NJB7.js +405 -0
  106. package/dist/{chunk-66SG2H23.js → chunk-PMMTGBBS.js} +27 -17
  107. package/dist/{chunk-RIBDXGUG.js → chunk-PNF3NKB5.js} +49 -16
  108. package/dist/{chunk-JXJB2X6M.js → chunk-Q6NKEPRE.js} +81 -32
  109. package/dist/chunk-QDZGFXQD.js +176 -0
  110. package/dist/{chunk-SYNOJOQO.js → chunk-QEYFDRHR.js} +60 -26
  111. package/dist/{chunk-VBOXAEPI.js → chunk-QHAITQIF.js} +97 -22
  112. package/dist/{chunk-VXDZFJGP.js → chunk-QHTVYA65.js} +230 -76
  113. package/dist/{chunk-TUTI5HOZ.js → chunk-QIKT7LIB.js} +14 -8
  114. package/dist/{chunk-3ENTMPQY.js → chunk-QP3KMOVF.js} +82 -42
  115. package/dist/{chunk-GNNJ4GCC.js → chunk-QPWDDJJ4.js} +62 -148
  116. package/dist/{chunk-QWCMU5B2.js → chunk-QRUMA22E.js} +205 -80
  117. package/dist/{chunk-ZVFE5QGU.js → chunk-QYPE5JX3.js} +50 -10
  118. package/dist/{chunk-PUPM2YGF.js → chunk-ROCUG24E.js} +76 -36
  119. package/dist/{chunk-NQYBUO3K.js → chunk-RU3ZPNL6.js} +333 -142
  120. package/dist/{chunk-TOXAGRDQ.js → chunk-RXSCIO6W.js} +14 -5
  121. package/dist/{chunk-FIF2M24N.js → chunk-SATMR6SG.js} +631 -203
  122. package/dist/{chunk-4YIP3CWS.js → chunk-SHHY5OMK.js} +7 -5
  123. package/dist/chunk-SKWO3SZF.js +2284 -0
  124. package/dist/{chunk-YF4NSSMT.js → chunk-SWS5JQIF.js} +41 -13
  125. package/dist/{chunk-CUMUNPXY.js → chunk-T5LTPKX6.js} +15 -7
  126. package/dist/{chunk-H6NIOQHK.js → chunk-TDMG26JI.js} +26 -6
  127. package/dist/{chunk-UWFLYMAR.js → chunk-TLCIR6RG.js} +267 -126
  128. package/dist/{chunk-SBMNWWBV.js → chunk-TN2ZNJUI.js} +47 -9
  129. package/dist/{chunk-5YNTNN5A.js → chunk-TQVAIKFD.js} +106 -41
  130. package/dist/chunk-TRGFFU6A.js +1456 -0
  131. package/dist/{chunk-2GK6PHGE.js → chunk-TY4MTKQJ.js} +100 -22
  132. package/dist/{chunk-AZRX6SAC.js → chunk-U23FYWME.js} +15 -7
  133. package/dist/{chunk-PZXZJBMP.js → chunk-U5NLHYV6.js} +26 -12
  134. package/dist/chunk-UQEN55EY.js +1 -0
  135. package/dist/chunk-UQGBTPXH.js +218 -0
  136. package/dist/chunk-UXGIW7OK.js +116 -0
  137. package/dist/{chunk-PJXUJYS6.js → chunk-UYGDJWMN.js} +55 -30
  138. package/dist/{chunk-QDYDBCFP.js → chunk-V2OEB75Z.js} +50 -51
  139. package/dist/{chunk-LSS54GLJ.js → chunk-VAOAKWUK.js} +34 -13
  140. package/dist/{chunk-DM5QUKKO.js → chunk-VDPK5CY4.js} +18 -6
  141. package/dist/chunk-W23G6JLF.js +37 -0
  142. package/dist/{chunk-CDRZHT42.js → chunk-W63AJTM7.js} +276 -12
  143. package/dist/{chunk-XXXEFXY5.js → chunk-W74TXYFB.js} +13 -5
  144. package/dist/{chunk-LRJNDEIA.js → chunk-WRDSPUE7.js} +144 -29
  145. package/dist/{chunk-C2NTXVWM.js → chunk-XBZGDDMR.js} +11 -4
  146. package/dist/{chunk-BV3B2HYZ.js → chunk-XIDTBCBA.js} +189 -131
  147. package/dist/{chunk-DSJBXLUG.js → chunk-XN4KG3P4.js} +348 -153
  148. package/dist/chunk-XQXMLMH3.js +211 -0
  149. package/dist/{chunk-HPPW424V.js → chunk-XTORZWRF.js} +19 -8
  150. package/dist/{chunk-P23EQNRQ.js → chunk-YAAHPATV.js} +181 -30
  151. package/dist/{chunk-KMI5ML5I.js → chunk-YXOAPXMU.js} +57 -18
  152. package/dist/{chunk-RJQOOHT2.js → chunk-ZECZOOSB.js} +59 -28
  153. package/dist/{chunk-QKXCPTFS.js → chunk-ZLTO5VQI.js} +121 -31
  154. package/dist/{chunk-BEDBFJND.js → chunk-ZVATDZOM.js} +16 -18
  155. package/dist/coachmark/index.js +6 -3
  156. package/dist/code-block/index.js +5 -3
  157. package/dist/color-field/index.js +6 -4
  158. package/dist/commerce/index.js +19 -16
  159. package/dist/connectivity/index.js +5 -2
  160. package/dist/context-menu/index.js +5 -3
  161. package/dist/copy-button/index.js +4 -2
  162. package/dist/data-grid/index.js +21 -16
  163. package/dist/date-range-picker/index.js +11 -8
  164. package/dist/description-list/index.js +3 -1
  165. package/dist/dialog/index.js +4 -2
  166. package/dist/empty-state/index.js +4 -2
  167. package/dist/error-summary/index.js +4 -2
  168. package/dist/fab/index.js +5 -2
  169. package/dist/file-manager/index.js +28 -0
  170. package/dist/file-upload/index.js +10 -7
  171. package/dist/filter-bar/index.js +9 -6
  172. package/dist/flow-run/index.js +15 -12
  173. package/dist/form/index.js +5 -3
  174. package/dist/gallery/index.js +5 -2
  175. package/dist/hold-to-confirm/index.js +4 -2
  176. package/dist/index.d.ts +9557 -2985
  177. package/dist/index.js +355 -122
  178. package/dist/infinite-list/index.js +4 -2
  179. package/dist/inline-edit/index.js +6 -4
  180. package/dist/input/index.js +5 -3
  181. package/dist/interactions/index.js +2 -1
  182. package/dist/invoice/index.js +13 -9
  183. package/dist/kbd/index.js +5 -1
  184. package/dist/keyboard/index.js +4 -2
  185. package/dist/list-row/index.js +6 -4
  186. package/dist/log-viewer/index.js +4 -2
  187. package/dist/map-view/index.js +5 -3
  188. package/dist/markdown/index.js +9 -6
  189. package/dist/metric/index.js +7 -4
  190. package/dist/money/index.js +9 -3
  191. package/dist/nav-drawer/index.js +4 -2
  192. package/dist/nav-header/index.js +9 -0
  193. package/dist/navigation/index.js +5 -2
  194. package/dist/notification-center/index.js +12 -10
  195. package/dist/number-roll/index.js +5 -2
  196. package/dist/one-handed/index.js +5 -3
  197. package/dist/os-surfaces/index.js +6 -3
  198. package/dist/otp/index.js +7 -4
  199. package/dist/page-header/index.js +1 -0
  200. package/dist/pagination/index.js +6 -0
  201. package/dist/payment-method/index.js +14 -10
  202. package/dist/payment-status/index.js +17 -14
  203. package/dist/permission/index.js +5 -2
  204. package/dist/picker/index.js +11 -6
  205. package/dist/progress/index.js +6 -3
  206. package/dist/pull-to-refresh/index.js +4 -2
  207. package/dist/radio-group/index.js +6 -4
  208. package/dist/rating/index.js +5 -2
  209. package/dist/receivables/index.js +21 -16
  210. package/dist/refund/index.js +18 -14
  211. package/dist/save-status/index.js +5 -3
  212. package/dist/scroll-area/index.js +3 -1
  213. package/dist/search-field/index.js +8 -0
  214. package/dist/segmented-control/index.js +4 -3
  215. package/dist/sheet/index.js +5 -3
  216. package/dist/skeleton/index.js +3 -1
  217. package/dist/slider/index.js +4 -2
  218. package/dist/sortable/index.js +7 -0
  219. package/dist/spinner/index.js +3 -1
  220. package/dist/split-button/index.js +9 -6
  221. package/dist/spotlight/index.js +3 -1
  222. package/dist/stage-timeline/index.js +5 -3
  223. package/dist/status-dot/index.js +4 -2
  224. package/dist/stepper/index.js +7 -4
  225. package/dist/streaming-text/index.js +3 -2
  226. package/dist/survey/index.js +18 -15
  227. package/dist/switch/index.js +5 -3
  228. package/dist/system-state/index.js +7 -4
  229. package/dist/tab-bar/index.js +5 -2
  230. package/dist/tabs/index.js +4 -2
  231. package/dist/tags-input/index.js +10 -0
  232. package/dist/textarea/index.js +6 -4
  233. package/dist/thinking/index.js +3 -1
  234. package/dist/time-field/index.js +12 -0
  235. package/dist/time-range-control/index.js +22 -0
  236. package/dist/timeline/index.js +4 -2
  237. package/dist/toast/index.js +4 -2
  238. package/dist/toolbar/index.js +4 -2
  239. package/dist/tour/index.js +12 -9
  240. package/dist/truncation-notice/index.js +5 -2
  241. package/dist/update-notice/index.js +12 -9
  242. package/dist/video-player/index.js +5 -2
  243. package/dist/viewfinder/index.js +6 -4
  244. package/dist/widget/index.js +7 -4
  245. package/dist/wizard/index.js +7 -4
  246. package/package.json +13 -12
  247. package/dist/chunk-6N33LFQA.js +0 -35
  248. package/dist/chunk-GDKZTW34.js +0 -395
  249. package/dist/chunk-GL7B2DOW.js +0 -134
  250. package/dist/chunk-NKB7BZYK.js +0 -167
  251. package/dist/chunk-OETCUXQP.js +0 -134
  252. package/dist/chunk-OPXFZ4Y5.js +0 -204
  253. package/dist/chunk-Q72LJOVE.js +0 -169
  254. package/dist/chunk-RNGLIHFA.js +0 -191
  255. package/dist/chunk-RQ3HASCC.js +0 -6
  256. package/dist/chunk-RSOJT5YW.js +0 -124
  257. package/dist/chunk-TKVFVF5D.js +0 -95
  258. package/dist/chunk-XOSCY2CW.js +0 -242
  259. package/dist/header/index.js +0 -5
  260. package/dist/search-bar/index.js +0 -5
  261. /package/dist/{chunk-3ECPOSKO.js → chunk-3UG6JUCV.js} +0 -0
  262. /package/dist/{chunk-JRLTGLN4.js → chunk-5WWRTEPS.js} +0 -0
  263. /package/dist/{chunk-RTIKSY6A.js → chunk-5Z5ZYMOJ.js} +0 -0
@@ -1,5 +1,5 @@
1
- import { StreamFade } from './chunk-WSW6ZFAQ.js';
2
- import { CodeBlock } from './chunk-TOXAGRDQ.js';
1
+ import { StreamFade } from './chunk-ENP3BMZU.js';
2
+ import { CodeBlock } from './chunk-RXSCIO6W.js';
3
3
  import * as React from 'react';
4
4
  import { View, Text, Linking } from 'react-native';
5
5
  import { createStyleSheet, useStyles } from '@btndprojects/loam-theme-native';
@@ -172,7 +172,7 @@ var HEADING_ROLE = {
172
172
  5: "headline",
173
173
  6: "subheadline"
174
174
  };
175
- function useInlineRenderer() {
175
+ function useInlineRenderer(onLinkPress) {
176
176
  const { styles } = useStyles(sheet);
177
177
  const render = React.useCallback(
178
178
  (nodes, keyPrefix) => nodes.map((node, i) => {
@@ -199,7 +199,8 @@ function useInlineRenderer() {
199
199
  style: styles.link,
200
200
  accessibilityRole: "link",
201
201
  onPress: () => {
202
- void Linking.openURL(href);
202
+ if (onLinkPress) onLinkPress(href);
203
+ else void Linking.openURL(href);
203
204
  },
204
205
  children: render(node.children, key)
205
206
  },
@@ -208,17 +209,18 @@ function useInlineRenderer() {
208
209
  }
209
210
  }
210
211
  }),
211
- [styles]
212
+ [styles, onLinkPress]
212
213
  );
213
214
  return render;
214
215
  }
215
216
  function Markdown({
216
217
  content,
217
218
  streaming = false,
218
- motion = "none"
219
+ motion = "none",
220
+ onLinkPress
219
221
  }) {
220
222
  const { styles } = useStyles(sheet);
221
- const renderInline = useInlineRenderer();
223
+ const renderInline = useInlineRenderer(onLinkPress);
222
224
  const blocks = React.useMemo(() => parseMarkdown(content), [content]);
223
225
  const animate = streaming && motion === "full";
224
226
  const prevCount = React.useRef(0);
@@ -235,6 +237,7 @@ function Markdown({
235
237
  Text,
236
238
  {
237
239
  accessibilityRole: "header",
240
+ "aria-level": block.level,
238
241
  style: [styles.heading, styles[`h${block.level}`]],
239
242
  children: renderInline(block.children, `h${index}`)
240
243
  }
@@ -244,20 +247,45 @@ function Markdown({
244
247
  case "hr":
245
248
  return /* @__PURE__ */ jsx(View, { style: styles.hr, accessibilityRole: "none" });
246
249
  case "code":
247
- return /* @__PURE__ */ jsx(CodeBlock, { code: block.value, language: block.lang ?? void 0, showLineNumbers: false });
250
+ return /* @__PURE__ */ jsx(
251
+ CodeBlock,
252
+ {
253
+ code: block.value,
254
+ language: block.lang ?? void 0,
255
+ showLineNumbers: false
256
+ }
257
+ );
248
258
  case "blockquote":
249
- return /* @__PURE__ */ jsxs(View, { style: styles.blockquote, children: [
250
- /* @__PURE__ */ jsx(View, { style: styles.blockquoteBar }),
259
+ return /* @__PURE__ */ jsxs(View, { ...{ role: "blockquote" }, style: styles.blockquote, children: [
260
+ /* @__PURE__ */ jsx(
261
+ View,
262
+ {
263
+ accessible: false,
264
+ accessibilityElementsHidden: true,
265
+ importantForAccessibility: "no-hide-descendants",
266
+ "aria-hidden": true,
267
+ style: styles.blockquoteBar
268
+ }
269
+ ),
251
270
  /* @__PURE__ */ jsx(Text, { style: styles.blockquoteText, children: renderInline(block.children, `q${index}`) })
252
271
  ] });
253
272
  case "list":
254
- return /* @__PURE__ */ jsx(View, { style: styles.list, children: block.items.map((item, j) => /* @__PURE__ */ jsxs(View, { style: styles.listItem, children: [
255
- /* @__PURE__ */ jsx(Text, { style: styles.marker, children: block.ordered ? `${block.start + j}.` : "\u2022" }),
273
+ return /* @__PURE__ */ jsx(View, { role: "list", style: styles.list, children: block.items.map((item, j) => /* @__PURE__ */ jsxs(View, { role: "listitem", style: styles.listItem, children: [
274
+ /* @__PURE__ */ jsx(
275
+ Text,
276
+ {
277
+ accessibilityElementsHidden: !block.ordered,
278
+ importantForAccessibility: block.ordered ? "auto" : "no-hide-descendants",
279
+ "aria-hidden": block.ordered ? void 0 : true,
280
+ style: styles.marker,
281
+ children: block.ordered ? `${block.start + j}.` : "\u2022"
282
+ }
283
+ ),
256
284
  /* @__PURE__ */ jsx(Text, { style: styles.listItemText, children: renderInline(item, `l${index}-${j}`) })
257
285
  ] }, j)) });
258
286
  }
259
287
  };
260
- return /* @__PURE__ */ jsx(View, { style: styles.root, children: blocks.map((block, i) => {
288
+ return /* @__PURE__ */ jsx(View, { style: styles.root, "aria-busy": streaming || void 0, children: blocks.map((block, i) => {
261
289
  const el = renderBlock(block, i);
262
290
  if (animate && i >= baseline) {
263
291
  return /* @__PURE__ */ jsx(StreamFade, { children: el }, i);
@@ -1,4 +1,6 @@
1
- import { useResolvedMotion } from './chunk-6N33LFQA.js';
1
+ import { NAMED_ROLE } from './chunk-W23G6JLF.js';
2
+ import { useLoamLocale } from './chunk-APCWFOZW.js';
3
+ import { useResolvedMotion } from './chunk-J64KGCGX.js';
2
4
  import * as React from 'react';
3
5
  import { StyleSheet, AccessibilityInfo, View, Text, Animated, Easing } from 'react-native';
4
6
  import { useLoamTheme } from '@btndprojects/loam-theme-native';
@@ -55,14 +57,15 @@ function NumberRoll({
55
57
  style,
56
58
  testID
57
59
  }) {
58
- const theme = useLoamTheme();
59
- const resolved = useResolvedMotion(motion);
60
+ const theme = useLoamTheme("number-roll");
61
+ const resolved = useResolvedMotion(motion, "number-roll");
60
62
  const canAnimate = resolved === "full";
63
+ const providerLocale = useLoamLocale();
61
64
  const text = React.useMemo(() => {
62
65
  if (formatValue) return formatValue(value);
63
- if (format) return new Intl.NumberFormat(locale, format).format(value);
66
+ if (format) return new Intl.NumberFormat(locale ?? providerLocale, format).format(value);
64
67
  return String(value);
65
- }, [formatValue, format, locale, value]);
68
+ }, [formatValue, format, locale, providerLocale, value]);
66
69
  const [ready, setReady] = React.useState(false);
67
70
  React.useEffect(() => {
68
71
  setReady(true);
@@ -86,8 +89,12 @@ function NumberRoll({
86
89
  const stagger = theme.timing.stagger;
87
90
  const tokens = React.useMemo(() => Array.from(text), [text]);
88
91
  let digitIndex = 0;
89
- const a11y = decorative ? { accessibilityElementsHidden: true, importantForAccessibility: "no-hide-descendants" } : {
90
- accessibilityRole: "text",
92
+ const a11y = decorative ? {
93
+ accessibilityElementsHidden: true,
94
+ importantForAccessibility: "no-hide-descendants",
95
+ "aria-hidden": true
96
+ } : {
97
+ accessibilityRole: NAMED_ROLE,
91
98
  accessibilityLabel: accessibilityLabel ?? text,
92
99
  accessibilityLiveRegion: announce ? "polite" : "none"
93
100
  };
@@ -97,6 +104,7 @@ function NumberRoll({
97
104
  style: styles.row,
98
105
  accessibilityElementsHidden: true,
99
106
  importantForAccessibility: "no-hide-descendants",
107
+ "aria-hidden": true,
100
108
  children: tokens.map((ch, i) => {
101
109
  const key = String(tokens.length - 1 - i);
102
110
  if (isDigit(ch)) {
@@ -1,6 +1,7 @@
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 { useResolvedMotion } from './chunk-J64KGCGX.js';
4
5
  import * as React from 'react';
5
6
  import { Animated, Easing, PanResponder, View, Text } from 'react-native';
6
7
  import { createStyleSheet, useStyles, useLoamTheme } from '@btndprojects/loam-theme-native';
@@ -13,8 +14,17 @@ var GEOMETRY = {
13
14
  // loam-allow-raw: ramp keys, read via theme.space
14
15
  };
15
16
  var THUMB_ACTIVE_SCALE = 1.18;
17
+ function adjustedValue(current, direction, { min, max, step }) {
18
+ const delta = step > 0 ? step : (max - min) / 10;
19
+ const next = Math.round((current + direction * delta) * 1e6) / 1e6;
20
+ return Math.min(max, Math.max(min, next));
21
+ }
16
22
  var MAX_TICKS = 20;
17
23
  var BUBBLE_BOTTOM = 28;
24
+ var DEFAULT_LABELS = {
25
+ percent: (percent) => `${percent}%`,
26
+ range: (min, percent, max) => `${min} \xB7 ${percent}% \xB7 ${max}`
27
+ };
18
28
  function clamp(n, lo, hi) {
19
29
  return Math.max(lo, Math.min(hi, n));
20
30
  }
@@ -31,14 +41,16 @@ function Slider({
31
41
  showValue = false,
32
42
  showReadout = false,
33
43
  showTicks = false,
34
- accessibilityLabel
44
+ accessibilityLabel,
45
+ labels: labelsProp
35
46
  }) {
36
- const animateScale = useResolvedMotion(motion) === "full";
47
+ const labels = useLabels("slider", DEFAULT_LABELS, labelsProp);
48
+ const animateScale = useResolvedMotion(motion, "slider") === "full";
37
49
  const isControlled = value !== void 0;
38
50
  const [internal, setInternal] = React.useState(defaultValue ?? min);
39
51
  const current = clamp(isControlled ? value : internal, min, max);
40
52
  const { styles } = useStyles(sheet, { size, disabled });
41
- const theme = useLoamTheme();
53
+ const theme = useLoamTheme("slider");
42
54
  const fraction = max > min ? (current - min) / (max - min) : 0;
43
55
  const pct = `${fraction * 100}%`;
44
56
  const [trackWidth, setTrackWidth] = React.useState(0);
@@ -140,8 +152,8 @@ function Slider({
140
152
  const stepCount = step > 0 && max > min ? Math.round((max - min) / step) : 0;
141
153
  const showTickMarks = showTicks && stepCount > 0 && stepCount <= MAX_TICKS;
142
154
  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}`;
155
+ const bubbleLabel = step > 0 ? String(current) : labels.percent(Math.round(fraction * 100));
156
+ const readoutText = labels.range(min, Math.round(fraction * 100), max);
145
157
  return /* @__PURE__ */ jsxs(View, { style: styles.wrap, children: [
146
158
  /* @__PURE__ */ jsxs(View, { style: styles.trackRow, children: [
147
159
  /* @__PURE__ */ jsxs(
@@ -152,6 +164,12 @@ function Slider({
152
164
  accessibilityLabel,
153
165
  accessibilityValue: { min, max, now: current },
154
166
  accessibilityState: { disabled },
167
+ accessibilityActions: [{ name: "increment" }, { name: "decrement" }],
168
+ onAccessibilityAction: (e) => {
169
+ if (disabled) return;
170
+ const dir = e.nativeEvent.actionName === "increment" ? 1 : -1;
171
+ setValue(adjustedValue(currentRef.current, dir, { min, max, step }));
172
+ },
155
173
  "aria-valuemin": min,
156
174
  "aria-valuemax": max,
157
175
  "aria-valuenow": current,
@@ -213,6 +231,8 @@ var sheet = createStyleSheet((theme) => ({
213
231
  container: {
214
232
  flex: 1,
215
233
  justifyContent: "center",
234
+ // The drawn control stays slim; the touch region still reaches the minimum.
235
+ minHeight: theme.tapMin,
216
236
  variants: {
217
237
  size: {
218
238
  sm: { height: theme.space[GEOMETRY.sm.height] },