@btndprojects/loam-ui-native 0.1.1 → 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 (262) hide show
  1. package/dist/accordion/index.js +5 -3
  2. package/dist/adaptive/index.js +6 -2
  3. package/dist/alert/index.js +5 -2
  4. package/dist/analyzer/index.js +9 -6
  5. package/dist/announcement/index.js +8 -5
  6. package/dist/audio-player/index.js +5 -3
  7. package/dist/avatar/index.js +5 -2
  8. package/dist/avatar-group/index.js +7 -3
  9. package/dist/badge/index.js +7 -4
  10. package/dist/banner/index.js +5 -2
  11. package/dist/board/index.js +11 -6
  12. package/dist/button/index.js +6 -3
  13. package/dist/camera-permission/index.js +15 -12
  14. package/dist/capture-result/index.js +19 -16
  15. package/dist/card/index.js +6 -3
  16. package/dist/card-form/index.js +12 -8
  17. package/dist/carousel/index.js +4 -2
  18. package/dist/chart/index.js +8 -5
  19. package/dist/charts/index.js +8 -6
  20. package/dist/chat/index.js +16 -0
  21. package/dist/checkbox/index.js +6 -4
  22. package/dist/checklist/index.js +11 -8
  23. package/dist/checkout/index.js +16 -11
  24. package/dist/chip/index.js +7 -4
  25. package/dist/{chunk-XNUVB5OL.js → chunk-2OLKPG4E.js} +92 -28
  26. package/dist/{chunk-RUZHTGKB.js → chunk-2PKYGLQ6.js} +71 -40
  27. package/dist/{chunk-UC2WGUP3.js → chunk-2SWKL3AJ.js} +91 -252
  28. package/dist/{chunk-AI4DWZCD.js → chunk-2SY63FCH.js} +63 -16
  29. package/dist/{chunk-F5XNPWS7.js → chunk-2TXERVVA.js} +92 -35
  30. package/dist/chunk-36EC2T6P.js +581 -0
  31. package/dist/chunk-3DUWIYV5.js +437 -0
  32. package/dist/{chunk-JNY4ZHAR.js → chunk-3QMEOFW5.js} +275 -71
  33. package/dist/chunk-3WEZCGHX.js +265 -0
  34. package/dist/chunk-46MMSDGL.js +194 -0
  35. package/dist/{chunk-7O2FMUPT.js → chunk-4IZXHVFJ.js} +297 -92
  36. package/dist/{chunk-LAECSR4H.js → chunk-5LAAAXFP.js} +14 -8
  37. package/dist/{chunk-2A5NIQAK.js → chunk-5RENVKBQ.js} +134 -46
  38. package/dist/{chunk-2ZZ7TDJ4.js → chunk-5UTRIXQ6.js} +37 -31
  39. package/dist/{chunk-LOE5YNN3.js → chunk-5VFZRGVD.js} +37 -10
  40. package/dist/{chunk-52X2VYTD.js → chunk-67IZZ2MJ.js} +115 -60
  41. package/dist/{chunk-UYG5L34B.js → chunk-6YAQBXB3.js} +10 -4
  42. package/dist/{chunk-BTTFCMKG.js → chunk-74FLKD24.js} +94 -23
  43. package/dist/{chunk-ITTYJZWX.js → chunk-7BUIKDD6.js} +73 -18
  44. package/dist/{chunk-423B7SPN.js → chunk-7OVVSVEZ.js} +273 -109
  45. package/dist/chunk-AEB7KCHQ.js +287 -0
  46. package/dist/chunk-APCWFOZW.js +28 -0
  47. package/dist/chunk-AWKQIE5I.js +139 -0
  48. package/dist/{chunk-VCDBXW5H.js → chunk-B7N4ASYE.js} +86 -42
  49. package/dist/{chunk-IVNRBPGC.js → chunk-C4GTDLRC.js} +104 -20
  50. package/dist/{chunk-4ZAHCY44.js → chunk-C6APNDVA.js} +12 -5
  51. package/dist/{chunk-4SZYY6AN.js → chunk-CMTVNF3D.js} +18 -13
  52. package/dist/{chunk-HZ6CNMAF.js → chunk-CPTOADB2.js} +151 -96
  53. package/dist/chunk-D5N5QWI7.js +1325 -0
  54. package/dist/{chunk-IIQTAY3J.js → chunk-DN7MNQIP.js} +113 -29
  55. package/dist/{chunk-47FWHGUN.js → chunk-DVGBZ3TX.js} +84 -23
  56. package/dist/chunk-DW3L54DQ.js +305 -0
  57. package/dist/{chunk-3ARE4TES.js → chunk-E2E3I5W2.js} +69 -18
  58. package/dist/{chunk-DHWADYZX.js → chunk-EDCBJV7J.js} +41 -28
  59. package/dist/{chunk-WSW6ZFAQ.js → chunk-ENP3BMZU.js} +4 -4
  60. package/dist/{chunk-OOPPQH27.js → chunk-EVOIGUBI.js} +43 -19
  61. package/dist/{chunk-VEAYTRPX.js → chunk-EY4DD67D.js} +165 -97
  62. package/dist/{chunk-223Q2T2Q.js → chunk-F3H33DQX.js} +132 -61
  63. package/dist/{chunk-CYRBHQQZ.js → chunk-F5B3UINI.js} +68 -35
  64. package/dist/{chunk-6X6PQ443.js → chunk-FAJI7BSC.js} +20 -9
  65. package/dist/{chunk-MOUJOP55.js → chunk-FUMHAAF3.js} +96 -29
  66. package/dist/{chunk-6HT2LP62.js → chunk-FV6HMP7W.js} +192 -73
  67. package/dist/{chunk-S7F6XLTK.js → chunk-FYWNRX4F.js} +76 -47
  68. package/dist/{chunk-YG3ZJHGU.js → chunk-FZGAAOKS.js} +30 -8
  69. package/dist/{chunk-YDGVJETP.js → chunk-G3AFC24V.js} +1 -1
  70. package/dist/{chunk-EJBDRVIH.js → chunk-G6UESEVN.js} +15 -8
  71. package/dist/chunk-GDKVKNR2.js +339 -0
  72. package/dist/chunk-GEIGMWNF.js +10 -0
  73. package/dist/{chunk-JUAMLEHX.js → chunk-H7DWSL4O.js} +24 -12
  74. package/dist/chunk-HJFFOOJ4.js +1 -0
  75. package/dist/{chunk-RW6ZL2FQ.js → chunk-HJLPZA4X.js} +106 -21
  76. package/dist/chunk-HYEOQWT7.js +647 -0
  77. package/dist/chunk-I2KLQ2HA.js +19 -0
  78. package/dist/{chunk-CJ5EOYZE.js → chunk-I4FHVKEC.js} +11 -5
  79. package/dist/{chunk-JNH2TYIN.js → chunk-IDM7JJMO.js} +19 -5
  80. package/dist/{chunk-O4AEHWII.js → chunk-IPUNJMAQ.js} +141 -49
  81. package/dist/{chunk-J7Q7VCVC.js → chunk-IT6FUXXG.js} +13 -6
  82. package/dist/{chunk-QJJ6MADV.js → chunk-IVKMZ7BB.js} +80 -28
  83. package/dist/{chunk-Z7H7VSFZ.js → chunk-IXKWIFWZ.js} +17 -6
  84. package/dist/chunk-J64KGCGX.js +55 -0
  85. package/dist/chunk-JBMLWFSJ.js +270 -0
  86. package/dist/{chunk-4BXMXBJO.js → chunk-JJLPBRVZ.js} +22 -11
  87. package/dist/chunk-JLC6PM5S.js +406 -0
  88. package/dist/chunk-JUYWSSKW.js +335 -0
  89. package/dist/{chunk-7CFF4HXS.js → chunk-JV5YOTOB.js} +49 -11
  90. package/dist/{chunk-LZLHELAG.js → chunk-KFJGFLMW.js} +29 -8
  91. package/dist/{chunk-O7AE6DAF.js → chunk-KQZ3GLHR.js} +18 -8
  92. package/dist/{chunk-N32RGOA5.js → chunk-LKFC4CS7.js} +80 -24
  93. package/dist/{chunk-YC6WORFL.js → chunk-LMPHCVJJ.js} +82 -50
  94. package/dist/{chunk-3WPW4KUN.js → chunk-LQP4KEXZ.js} +45 -13
  95. package/dist/{chunk-TKQYWZ5V.js → chunk-LUMVGO2K.js} +47 -31
  96. package/dist/{chunk-AWJOCGFZ.js → chunk-M656FYNH.js} +25 -13
  97. package/dist/{chunk-35OFI3JG.js → chunk-MKSNFG7H.js} +73 -20
  98. package/dist/{chunk-4GBOGOTV.js → chunk-NBEF4EPJ.js} +16 -6
  99. package/dist/chunk-NNCOFLNE.js +24 -0
  100. package/dist/{chunk-4YQOR7JM.js → chunk-NTQ2F3AU.js} +73 -20
  101. package/dist/{chunk-QCDXZBC5.js → chunk-O5V4TG3V.js} +126 -44
  102. package/dist/{chunk-U7TFM2JA.js → chunk-OJQUBQWA.js} +3 -3
  103. package/dist/{chunk-VQHPQEUH.js → chunk-OWAMM2DK.js} +13 -6
  104. package/dist/chunk-PID3NJB7.js +405 -0
  105. package/dist/{chunk-HET4LLMX.js → chunk-PMMTGBBS.js} +27 -17
  106. package/dist/{chunk-RIBDXGUG.js → chunk-PNF3NKB5.js} +49 -16
  107. package/dist/{chunk-JXJB2X6M.js → chunk-Q6NKEPRE.js} +81 -32
  108. package/dist/chunk-QDZGFXQD.js +176 -0
  109. package/dist/{chunk-SYNOJOQO.js → chunk-QEYFDRHR.js} +60 -26
  110. package/dist/{chunk-VBOXAEPI.js → chunk-QHAITQIF.js} +97 -22
  111. package/dist/{chunk-VXDZFJGP.js → chunk-QHTVYA65.js} +230 -76
  112. package/dist/{chunk-TUTI5HOZ.js → chunk-QIKT7LIB.js} +14 -8
  113. package/dist/{chunk-3ENTMPQY.js → chunk-QP3KMOVF.js} +82 -42
  114. package/dist/{chunk-GNNJ4GCC.js → chunk-QPWDDJJ4.js} +62 -148
  115. package/dist/{chunk-QWCMU5B2.js → chunk-QRUMA22E.js} +205 -80
  116. package/dist/{chunk-ZVFE5QGU.js → chunk-QYPE5JX3.js} +50 -10
  117. package/dist/{chunk-PUPM2YGF.js → chunk-ROCUG24E.js} +76 -36
  118. package/dist/{chunk-NQYBUO3K.js → chunk-RU3ZPNL6.js} +333 -142
  119. package/dist/{chunk-TOXAGRDQ.js → chunk-RXSCIO6W.js} +14 -5
  120. package/dist/{chunk-FMYDDECK.js → chunk-SATMR6SG.js} +631 -203
  121. package/dist/{chunk-4YIP3CWS.js → chunk-SHHY5OMK.js} +7 -5
  122. package/dist/chunk-SKWO3SZF.js +2284 -0
  123. package/dist/{chunk-YF4NSSMT.js → chunk-SWS5JQIF.js} +41 -13
  124. package/dist/{chunk-CUMUNPXY.js → chunk-T5LTPKX6.js} +15 -7
  125. package/dist/{chunk-H6NIOQHK.js → chunk-TDMG26JI.js} +26 -6
  126. package/dist/{chunk-UWFLYMAR.js → chunk-TLCIR6RG.js} +267 -126
  127. package/dist/{chunk-SBMNWWBV.js → chunk-TN2ZNJUI.js} +47 -9
  128. package/dist/{chunk-5YNTNN5A.js → chunk-TQVAIKFD.js} +106 -41
  129. package/dist/chunk-TRGFFU6A.js +1456 -0
  130. package/dist/{chunk-2GK6PHGE.js → chunk-TY4MTKQJ.js} +100 -22
  131. package/dist/{chunk-AZRX6SAC.js → chunk-U23FYWME.js} +15 -7
  132. package/dist/{chunk-PZXZJBMP.js → chunk-U5NLHYV6.js} +26 -12
  133. package/dist/chunk-UQEN55EY.js +1 -0
  134. package/dist/chunk-UQGBTPXH.js +218 -0
  135. package/dist/chunk-UXGIW7OK.js +116 -0
  136. package/dist/{chunk-PJXUJYS6.js → chunk-UYGDJWMN.js} +55 -30
  137. package/dist/{chunk-QDYDBCFP.js → chunk-V2OEB75Z.js} +50 -51
  138. package/dist/{chunk-LSS54GLJ.js → chunk-VAOAKWUK.js} +34 -13
  139. package/dist/{chunk-DM5QUKKO.js → chunk-VDPK5CY4.js} +18 -6
  140. package/dist/chunk-W23G6JLF.js +37 -0
  141. package/dist/{chunk-CDRZHT42.js → chunk-W63AJTM7.js} +276 -12
  142. package/dist/{chunk-XXXEFXY5.js → chunk-W74TXYFB.js} +13 -5
  143. package/dist/{chunk-LRJNDEIA.js → chunk-WRDSPUE7.js} +144 -29
  144. package/dist/{chunk-C2NTXVWM.js → chunk-XBZGDDMR.js} +11 -4
  145. package/dist/{chunk-BV3B2HYZ.js → chunk-XIDTBCBA.js} +189 -131
  146. package/dist/{chunk-YTFKPRUK.js → chunk-XN4KG3P4.js} +348 -153
  147. package/dist/chunk-XQXMLMH3.js +211 -0
  148. package/dist/{chunk-HPPW424V.js → chunk-XTORZWRF.js} +19 -8
  149. package/dist/{chunk-P23EQNRQ.js → chunk-YAAHPATV.js} +181 -30
  150. package/dist/{chunk-KMI5ML5I.js → chunk-YXOAPXMU.js} +57 -18
  151. package/dist/{chunk-RJQOOHT2.js → chunk-ZECZOOSB.js} +59 -28
  152. package/dist/{chunk-QKXCPTFS.js → chunk-ZLTO5VQI.js} +121 -31
  153. package/dist/{chunk-BEDBFJND.js → chunk-ZVATDZOM.js} +16 -18
  154. package/dist/coachmark/index.js +6 -3
  155. package/dist/code-block/index.js +5 -3
  156. package/dist/color-field/index.js +6 -4
  157. package/dist/commerce/index.js +19 -16
  158. package/dist/connectivity/index.js +5 -2
  159. package/dist/context-menu/index.js +5 -3
  160. package/dist/copy-button/index.js +4 -2
  161. package/dist/data-grid/index.js +21 -16
  162. package/dist/date-range-picker/index.js +11 -8
  163. package/dist/description-list/index.js +3 -1
  164. package/dist/dialog/index.js +4 -2
  165. package/dist/empty-state/index.js +4 -2
  166. package/dist/error-summary/index.js +4 -2
  167. package/dist/fab/index.js +5 -2
  168. package/dist/file-manager/index.js +28 -0
  169. package/dist/file-upload/index.js +10 -7
  170. package/dist/filter-bar/index.js +9 -6
  171. package/dist/flow-run/index.js +15 -12
  172. package/dist/form/index.js +5 -3
  173. package/dist/gallery/index.js +5 -2
  174. package/dist/hold-to-confirm/index.js +4 -2
  175. package/dist/index.d.ts +9557 -2985
  176. package/dist/index.js +355 -122
  177. package/dist/infinite-list/index.js +4 -2
  178. package/dist/inline-edit/index.js +6 -4
  179. package/dist/input/index.js +5 -3
  180. package/dist/interactions/index.js +2 -1
  181. package/dist/invoice/index.js +13 -9
  182. package/dist/kbd/index.js +5 -1
  183. package/dist/keyboard/index.js +4 -2
  184. package/dist/list-row/index.js +6 -4
  185. package/dist/log-viewer/index.js +4 -2
  186. package/dist/map-view/index.js +5 -3
  187. package/dist/markdown/index.js +9 -6
  188. package/dist/metric/index.js +7 -4
  189. package/dist/money/index.js +9 -3
  190. package/dist/nav-drawer/index.js +4 -2
  191. package/dist/nav-header/index.js +9 -0
  192. package/dist/navigation/index.js +5 -2
  193. package/dist/notification-center/index.js +12 -10
  194. package/dist/number-roll/index.js +5 -2
  195. package/dist/one-handed/index.js +5 -3
  196. package/dist/os-surfaces/index.js +6 -3
  197. package/dist/otp/index.js +7 -4
  198. package/dist/page-header/index.js +1 -0
  199. package/dist/pagination/index.js +6 -0
  200. package/dist/payment-method/index.js +14 -10
  201. package/dist/payment-status/index.js +17 -14
  202. package/dist/permission/index.js +5 -2
  203. package/dist/picker/index.js +11 -6
  204. package/dist/progress/index.js +6 -3
  205. package/dist/pull-to-refresh/index.js +4 -2
  206. package/dist/radio-group/index.js +6 -4
  207. package/dist/rating/index.js +5 -2
  208. package/dist/receivables/index.js +21 -16
  209. package/dist/refund/index.js +18 -14
  210. package/dist/save-status/index.js +5 -3
  211. package/dist/scroll-area/index.js +3 -1
  212. package/dist/search-field/index.js +8 -0
  213. package/dist/segmented-control/index.js +4 -3
  214. package/dist/sheet/index.js +5 -3
  215. package/dist/skeleton/index.js +3 -1
  216. package/dist/slider/index.js +4 -2
  217. package/dist/sortable/index.js +7 -0
  218. package/dist/spinner/index.js +3 -1
  219. package/dist/split-button/index.js +9 -6
  220. package/dist/spotlight/index.js +3 -1
  221. package/dist/stage-timeline/index.js +5 -3
  222. package/dist/status-dot/index.js +4 -2
  223. package/dist/stepper/index.js +7 -4
  224. package/dist/streaming-text/index.js +3 -2
  225. package/dist/survey/index.js +18 -15
  226. package/dist/switch/index.js +5 -3
  227. package/dist/system-state/index.js +7 -4
  228. package/dist/tab-bar/index.js +5 -2
  229. package/dist/tabs/index.js +4 -2
  230. package/dist/tags-input/index.js +10 -0
  231. package/dist/textarea/index.js +6 -4
  232. package/dist/thinking/index.js +3 -1
  233. package/dist/time-field/index.js +12 -0
  234. package/dist/time-range-control/index.js +22 -0
  235. package/dist/timeline/index.js +4 -2
  236. package/dist/toast/index.js +4 -2
  237. package/dist/toolbar/index.js +4 -2
  238. package/dist/tour/index.js +12 -9
  239. package/dist/truncation-notice/index.js +5 -2
  240. package/dist/update-notice/index.js +12 -9
  241. package/dist/video-player/index.js +5 -2
  242. package/dist/viewfinder/index.js +6 -4
  243. package/dist/widget/index.js +7 -4
  244. package/dist/wizard/index.js +7 -4
  245. package/package.json +13 -12
  246. package/dist/chunk-6N33LFQA.js +0 -35
  247. package/dist/chunk-GDKZTW34.js +0 -395
  248. package/dist/chunk-GL7B2DOW.js +0 -134
  249. package/dist/chunk-NKB7BZYK.js +0 -167
  250. package/dist/chunk-OETCUXQP.js +0 -134
  251. package/dist/chunk-OPXFZ4Y5.js +0 -204
  252. package/dist/chunk-Q72LJOVE.js +0 -169
  253. package/dist/chunk-RNGLIHFA.js +0 -191
  254. package/dist/chunk-RQ3HASCC.js +0 -6
  255. package/dist/chunk-RSOJT5YW.js +0 -124
  256. package/dist/chunk-TKVFVF5D.js +0 -95
  257. package/dist/chunk-XOSCY2CW.js +0 -242
  258. package/dist/header/index.js +0 -5
  259. package/dist/search-bar/index.js +0 -5
  260. /package/dist/{chunk-3ECPOSKO.js → chunk-3UG6JUCV.js} +0 -0
  261. /package/dist/{chunk-JRLTGLN4.js → chunk-5WWRTEPS.js} +0 -0
  262. /package/dist/{chunk-RTIKSY6A.js → chunk-5Z5ZYMOJ.js} +0 -0
@@ -1,5 +1,6 @@
1
- import { Avatar } from './chunk-QDYDBCFP.js';
2
- import { Icon } from './chunk-TKVFVF5D.js';
1
+ import { Avatar } from './chunk-V2OEB75Z.js';
2
+ import { useLabels } from './chunk-APCWFOZW.js';
3
+ import { Icon } from './chunk-UXGIW7OK.js';
3
4
  import * as React4 from 'react';
4
5
  import { Platform, View, Text, Pressable, Animated, Easing } from 'react-native';
5
6
  import { createStyleSheet, useStyles, useLoamTheme } from '@btndprojects/loam-theme-native';
@@ -58,15 +59,29 @@ var OS_MATERIAL = {
58
59
  };
59
60
  var OS_MATERIAL_INK_OPACITY = { secondary: 0.85, tertiary: 0.7 };
60
61
  var LOCK_SCREEN_WALLPAPER = "#2b2620";
62
+
63
+ // src/os-surfaces/labels.ts
64
+ var DEFAULT_LABELS = {
65
+ appIconPreview: (px, sizeClass, shape) => `App icon preview, ${px} px ${sizeClass}, ${shape} mask`,
66
+ launchScreenPreview: "Launch screen preview",
67
+ cancel: "Cancel",
68
+ moreGrouped: (count) => `+${count} more`,
69
+ lockScreenPreview: "Lock screen preview",
70
+ shareSheetPreview: "Share sheet preview",
71
+ shareWith: (name) => `Share with ${name}`,
72
+ textSelectionMenu: "Text selection menu"
73
+ };
61
74
  function AppIconPreview({
62
75
  sizeClass = "home",
63
76
  size,
64
77
  shape,
65
78
  showCaption = false,
66
- accessibilityLabel
79
+ accessibilityLabel,
80
+ labels: labelsProp
67
81
  }) {
68
82
  const { styles } = useStyles(sheet);
69
- const theme = useLoamTheme();
83
+ const labels = useLabels("osSurfaces", DEFAULT_LABELS, labelsProp);
84
+ const theme = useLoamTheme("os-surfaces");
70
85
  const px = size ?? APP_ICON_PREVIEW_PX[sizeClass];
71
86
  const resolved = shape ?? (Platform.OS === "android" ? "circle" : "squircle");
72
87
  const radius = resolved === "circle" ? px * ANDROID_ICON_MASK_RATIO : Math.round(px * IOS_ICON_CORNER_RATIO);
@@ -77,7 +92,7 @@ function AppIconPreview({
77
92
  View,
78
93
  {
79
94
  accessibilityRole: "image",
80
- accessibilityLabel: accessibilityLabel ?? `App icon preview, ${APP_ICON_ASSET_PX[sizeClass]} px ${sizeClass}, ${resolved} mask`,
95
+ accessibilityLabel: accessibilityLabel ?? labels.appIconPreview(APP_ICON_ASSET_PX[sizeClass], sizeClass, resolved),
81
96
  style: [
82
97
  styles.tile,
83
98
  {
@@ -128,16 +143,26 @@ var sheet = createStyleSheet((theme) => ({
128
143
  function LaunchScreenPreview({
129
144
  wordmark,
130
145
  reviewNote,
131
- accessibilityLabel = "Launch screen preview"
146
+ accessibilityLabel,
147
+ labels: labelsProp
132
148
  }) {
133
149
  const { styles } = useStyles(sheet2);
134
- return /* @__PURE__ */ jsxs(View, { accessibilityRole: "image", accessibilityLabel, style: styles.screen, children: [
135
- /* @__PURE__ */ jsxs(View, { style: styles.stack, children: [
136
- /* @__PURE__ */ jsx(View, { style: styles.mark }),
137
- wordmark ? /* @__PURE__ */ jsx(Text, { style: styles.wordmark, children: wordmark }) : null
138
- ] }),
139
- reviewNote ? /* @__PURE__ */ jsx(Text, { style: styles.note, children: reviewNote }) : null
140
- ] });
150
+ const labels = useLabels("osSurfaces", DEFAULT_LABELS, labelsProp);
151
+ return /* @__PURE__ */ jsxs(
152
+ View,
153
+ {
154
+ accessibilityRole: "image",
155
+ accessibilityLabel: accessibilityLabel ?? labels.launchScreenPreview,
156
+ style: styles.screen,
157
+ children: [
158
+ /* @__PURE__ */ jsxs(View, { style: styles.stack, children: [
159
+ /* @__PURE__ */ jsx(View, { style: styles.mark }),
160
+ wordmark ? /* @__PURE__ */ jsx(Text, { style: styles.wordmark, children: wordmark }) : null
161
+ ] }),
162
+ reviewNote ? /* @__PURE__ */ jsx(Text, { style: styles.note, children: reviewNote }) : null
163
+ ]
164
+ }
165
+ );
141
166
  }
142
167
  var sheet2 = createStyleSheet((theme) => ({
143
168
  // The reference paints a flat `var(--accent)` here — the one screen in the
@@ -181,12 +206,19 @@ var sheet2 = createStyleSheet((theme) => ({
181
206
  }));
182
207
  var NOTIFICATION_TILE = { size: 26, radius: 8 };
183
208
  var GROUP_STACK_OFFSET = 6;
184
- function announce({ title, body, time }) {
185
- return [title, body, time].filter(Boolean).join(", ");
209
+ function announce({ appName, title, body, time, groupCount }, labels) {
210
+ return [
211
+ appName,
212
+ title,
213
+ body,
214
+ time,
215
+ groupCount && groupCount > 0 ? labels.moreGrouped(groupCount) : void 0
216
+ ].filter(Boolean).join(", ");
186
217
  }
187
218
  function NotificationBanner(props) {
188
219
  const { styles } = useStyles(sheet3);
189
- const theme = useLoamTheme();
220
+ const theme = useLoamTheme("os-surfaces");
221
+ const labels = useLabels("osSurfaces", DEFAULT_LABELS, props.labels);
190
222
  const { appName, icon, title, body, time, actionLabel, onAction, onPress, groupCount, style } = props;
191
223
  const android = Platform.OS === "android";
192
224
  const content = /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -201,7 +233,7 @@ function NotificationBanner(props) {
201
233
  !android && time ? /* @__PURE__ */ jsx(Text, { style: styles.time, children: time }) : null
202
234
  ] }),
203
235
  /* @__PURE__ */ jsx(Text, { style: styles.body, numberOfLines: 2, children: body }),
204
- groupCount && groupCount > 0 ? /* @__PURE__ */ jsx(Text, { style: styles.group, children: `+${groupCount} more` }) : null
236
+ groupCount && groupCount > 0 ? /* @__PURE__ */ jsx(Text, { style: styles.group, children: labels.moreGrouped(groupCount) }) : null
205
237
  ] })
206
238
  ] });
207
239
  return /* @__PURE__ */ jsxs(View, { style: styles.stackRoot, children: [
@@ -210,12 +242,20 @@ function NotificationBanner(props) {
210
242
  Pressable,
211
243
  {
212
244
  accessibilityRole: "button",
213
- accessibilityLabel: announce(props),
245
+ accessibilityLabel: announce(props, labels),
214
246
  onPress,
215
247
  style: ({ pressed }) => [styles.bannerBody, pressed ? styles.pressed : null],
216
248
  children: content
217
249
  }
218
- ) : /* @__PURE__ */ jsx(View, { accessibilityRole: "image", accessibilityLabel: announce(props), style: styles.bannerBody, children: content }),
250
+ ) : /* @__PURE__ */ jsx(
251
+ View,
252
+ {
253
+ accessibilityRole: "image",
254
+ accessibilityLabel: announce(props, labels),
255
+ style: styles.bannerBody,
256
+ children: content
257
+ }
258
+ ),
219
259
  actionLabel ? /* @__PURE__ */ jsx(
220
260
  Pressable,
221
261
  {
@@ -232,6 +272,7 @@ function NotificationBanner(props) {
232
272
  }
233
273
  function LockScreenNotification(props) {
234
274
  const { styles } = useStyles(sheet3);
275
+ const labels = useLabels("osSurfaces", DEFAULT_LABELS, props.labels);
235
276
  const { title, body, time, actionLabel, onAction, onPress, groupCount, style } = props;
236
277
  const content = /* @__PURE__ */ jsxs(Fragment, { children: [
237
278
  /* @__PURE__ */ jsx(View, { style: styles.materialTile }),
@@ -241,7 +282,7 @@ function LockScreenNotification(props) {
241
282
  time ? /* @__PURE__ */ jsx(Text, { style: styles.materialTime, children: time }) : null
242
283
  ] }),
243
284
  /* @__PURE__ */ jsx(Text, { style: styles.materialBody, numberOfLines: 2, children: body }),
244
- groupCount && groupCount > 0 ? /* @__PURE__ */ jsx(Text, { style: styles.materialTime, children: `+${groupCount} more` }) : null
285
+ groupCount && groupCount > 0 ? /* @__PURE__ */ jsx(Text, { style: styles.materialTime, children: labels.moreGrouped(groupCount) }) : null
245
286
  ] })
246
287
  ] });
247
288
  return /* @__PURE__ */ jsxs(View, { style: styles.stackRoot, children: [
@@ -250,12 +291,20 @@ function LockScreenNotification(props) {
250
291
  Pressable,
251
292
  {
252
293
  accessibilityRole: "button",
253
- accessibilityLabel: announce(props),
294
+ accessibilityLabel: announce(props, labels),
254
295
  onPress,
255
296
  style: ({ pressed }) => [styles.materialBodyRow, pressed ? styles.pressed : null],
256
297
  children: content
257
298
  }
258
- ) : /* @__PURE__ */ jsx(View, { accessibilityRole: "image", accessibilityLabel: announce(props), style: styles.materialBodyRow, children: content }),
299
+ ) : /* @__PURE__ */ jsx(
300
+ View,
301
+ {
302
+ accessibilityRole: "image",
303
+ accessibilityLabel: announce(props, labels),
304
+ style: styles.materialBodyRow,
305
+ children: content
306
+ }
307
+ ),
259
308
  actionLabel ? /* @__PURE__ */ jsx(
260
309
  Pressable,
261
310
  {
@@ -276,14 +325,16 @@ function LockScreenPreview({
276
325
  activity,
277
326
  notifications = [],
278
327
  onNotificationPress,
279
- wallpaperColor = LOCK_SCREEN_WALLPAPER
328
+ wallpaperColor = LOCK_SCREEN_WALLPAPER,
329
+ labels: labelsProp
280
330
  }) {
281
331
  const { styles } = useStyles(sheet3);
332
+ const labels = useLabels("osSurfaces", DEFAULT_LABELS, labelsProp);
282
333
  return /* @__PURE__ */ jsxs(
283
334
  View,
284
335
  {
285
336
  role: "group",
286
- accessibilityLabel: "Lock screen preview",
337
+ accessibilityLabel: labels.lockScreenPreview,
287
338
  style: [styles.lockScreen, { backgroundColor: wallpaperColor }],
288
339
  children: [
289
340
  /* @__PURE__ */ jsxs(View, { style: styles.clock, children: [
@@ -492,12 +543,14 @@ function LiveActivityPreview({
492
543
  detail,
493
544
  icon = "upload",
494
545
  presentation = "lockScreen",
495
- cancelLabel = "Cancel",
546
+ cancelLabel,
496
547
  onCancel,
497
- accessibilityLabel
548
+ accessibilityLabel,
549
+ labels: labelsProp
498
550
  }) {
499
551
  const { styles } = useStyles(sheet4);
500
- const theme = useLoamTheme();
552
+ const labels = useLabels("osSurfaces", DEFAULT_LABELS, labelsProp);
553
+ const theme = useLoamTheme("os-surfaces");
501
554
  const announced = accessibilityLabel ?? [title, status, detail].filter(Boolean).join(", ");
502
555
  const fraction = progress === void 0 ? void 0 : clamp01(progress);
503
556
  const percent = fraction === void 0 ? void 0 : Math.round(fraction * 100);
@@ -585,7 +638,7 @@ function LiveActivityPreview({
585
638
  Pressable,
586
639
  {
587
640
  accessibilityRole: "button",
588
- accessibilityLabel: cancelLabel,
641
+ accessibilityLabel: cancelLabel ?? labels.cancel,
589
642
  onPress: onCancel,
590
643
  style: ({ pressed }) => [styles.cancel, pressed ? styles.pressed : null],
591
644
  children: /* @__PURE__ */ jsx(Icon, { name: "x", size: theme.icon.sm, color: OS_MATERIAL.ink })
@@ -704,7 +757,7 @@ function WidgetPreview({
704
757
  accessibilityLabel
705
758
  }) {
706
759
  const { styles } = useStyles(sheet5);
707
- const theme = useLoamTheme();
760
+ const theme = useLoamTheme("os-surfaces");
708
761
  const size = WIDGET_SIZE[sizeClass];
709
762
  const android = Platform.OS === "android";
710
763
  const radius = android ? WIDGET_CORNER.android : WIDGET_CORNER.iOS;
@@ -825,11 +878,13 @@ function ShareSheetPreview({
825
878
  people = [],
826
879
  onPersonPress,
827
880
  actions = [],
828
- onActionPress
881
+ onActionPress,
882
+ labels: labelsProp
829
883
  }) {
830
884
  const { styles } = useStyles(sheet6);
831
- const theme = useLoamTheme();
832
- return /* @__PURE__ */ jsxs(View, { role: "group", accessibilityLabel: "Share sheet preview", style: styles.sheet, children: [
885
+ const labels = useLabels("osSurfaces", DEFAULT_LABELS, labelsProp);
886
+ const theme = useLoamTheme("os-surfaces");
887
+ return /* @__PURE__ */ jsxs(View, { role: "group", accessibilityLabel: labels.shareSheetPreview, style: styles.sheet, children: [
833
888
  /* @__PURE__ */ jsx(View, { style: styles.grabber }),
834
889
  /* @__PURE__ */ jsxs(View, { style: styles.preview, children: [
835
890
  /* @__PURE__ */ jsx(View, { style: styles.previewTile, children: /* @__PURE__ */ jsx(Icon, { name: icon, size: theme.icon.md, color: theme.color.accentOnSoft }) }),
@@ -842,7 +897,7 @@ function ShareSheetPreview({
842
897
  Pressable,
843
898
  {
844
899
  accessibilityRole: "button",
845
- accessibilityLabel: `Share with ${p.name}`,
900
+ accessibilityLabel: labels.shareWith(p.name),
846
901
  onPress: onPersonPress ? () => onPersonPress(p.id) : void 0,
847
902
  style: ({ pressed }) => [styles.person, pressed ? styles.pressed : null],
848
903
  children: [
@@ -875,16 +930,18 @@ function ShareSheetPreview({
875
930
  function TextSelectionMenu({
876
931
  items,
877
932
  onItemPress,
878
- platform
933
+ platform,
934
+ labels: labelsProp
879
935
  }) {
880
936
  const { styles } = useStyles(sheet6);
937
+ const labels = useLabels("osSurfaces", DEFAULT_LABELS, labelsProp);
881
938
  const resolved = platform ?? (Platform.OS === "android" ? "Android" : "iOS");
882
939
  const ios = resolved === "iOS";
883
940
  return /* @__PURE__ */ jsx(
884
941
  View,
885
942
  {
886
943
  accessibilityRole: "menu",
887
- accessibilityLabel: "Text selection menu",
944
+ accessibilityLabel: labels.textSelectionMenu,
888
945
  style: [styles.menu, ios ? styles.menuIOS : styles.menuAndroid],
889
946
  children: items.map((item, i) => /* @__PURE__ */ jsx(
890
947
  Pressable,