@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,13 +1,27 @@
1
- import { ListRow } from './chunk-IVNRBPGC.js';
2
- import { EmptyState } from './chunk-LZLHELAG.js';
3
- import { Badge } from './chunk-SBMNWWBV.js';
4
- import { Avatar } from './chunk-QDYDBCFP.js';
5
- import { Icon } from './chunk-TKVFVF5D.js';
1
+ import { ListRow } from './chunk-C4GTDLRC.js';
2
+ import { EmptyState } from './chunk-KFJGFLMW.js';
3
+ import { Badge } from './chunk-TN2ZNJUI.js';
4
+ import { Avatar } from './chunk-V2OEB75Z.js';
5
+ import { useLabels, useLoamLocale } from './chunk-APCWFOZW.js';
6
+ import { Icon } from './chunk-UXGIW7OK.js';
6
7
  import * as React from 'react';
7
- import { Animated, Easing, View, Text, ScrollView, Pressable } from 'react-native';
8
+ import { Animated, Easing, View, Text, AccessibilityInfo, ScrollView, Pressable } from 'react-native';
8
9
  import { useLoamTheme, useStyles, createStyleSheet } from '@btndprojects/loam-theme-native';
9
10
  import { jsx, jsxs } from 'react/jsx-runtime';
10
11
 
12
+ var DEFAULT_LABELS = {
13
+ archive: "Archive",
14
+ empty: "You're all caught up",
15
+ emptyDescription: "New notifications will show up here.",
16
+ title: "Notifications",
17
+ markAllRead: "Mark all read",
18
+ unread: "Unread",
19
+ read: "Read",
20
+ unreadCount: (n) => `${n} unread`,
21
+ today: "Today",
22
+ yesterday: "Yesterday",
23
+ earlier: "Earlier"
24
+ };
11
25
  function toDate(value) {
12
26
  if (value == null) return null;
13
27
  const d = value instanceof Date ? value : new Date(value);
@@ -16,20 +30,20 @@ function toDate(value) {
16
30
  function startOfDay(d) {
17
31
  return new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();
18
32
  }
19
- function dayLabel(date, now) {
33
+ function dayLabel(date, now, labels = DEFAULT_LABELS, locale) {
20
34
  const day = startOfDay(date);
21
35
  const today = startOfDay(now);
22
36
  const oneDay = 864e5;
23
- if (day === today) return "Today";
24
- if (day === today - oneDay) return "Yesterday";
37
+ if (day === today) return labels.today;
38
+ if (day === today - oneDay) return labels.yesterday;
25
39
  const sameYear = date.getFullYear() === now.getFullYear();
26
- return date.toLocaleDateString(void 0, {
40
+ return date.toLocaleDateString(locale, {
27
41
  month: "short",
28
42
  day: "numeric",
29
43
  ...sameYear ? {} : { year: "numeric" }
30
44
  });
31
45
  }
32
- function buildSections(items, groupByDay, now) {
46
+ function buildSections(items, groupByDay, now, labels = DEFAULT_LABELS, locale) {
33
47
  if (!groupByDay) return [{ key: "all", title: "", data: items }];
34
48
  const order = [];
35
49
  const byKey = /* @__PURE__ */ new Map();
@@ -38,7 +52,11 @@ function buildSections(items, groupByDay, now) {
38
52
  const key = date ? String(startOfDay(date)) : "earlier";
39
53
  let section = byKey.get(key);
40
54
  if (!section) {
41
- section = { key, title: date ? dayLabel(date, now) : "Earlier", data: [] };
55
+ section = {
56
+ key,
57
+ title: date ? dayLabel(date, now, labels, locale) : labels.earlier,
58
+ data: []
59
+ };
42
60
  byKey.set(key, section);
43
61
  order.push(key);
44
62
  }
@@ -55,11 +73,14 @@ var NotificationRow = React.memo(function NotificationRow2({
55
73
  divider,
56
74
  motion,
57
75
  animateEntrance,
76
+ enterDelay = 0,
77
+ onArchive,
78
+ archiveLabel,
58
79
  unreadLabel,
59
80
  readLabel,
60
81
  onActivate
61
82
  }) {
62
- const theme = useLoamTheme();
83
+ const theme = useLoamTheme("notification-center");
63
84
  const { styles } = useStyles(sheet);
64
85
  const unread = !read;
65
86
  const unreadOpacity = React.useRef(new Animated.Value(read ? 0 : 1)).current;
@@ -86,6 +107,7 @@ var NotificationRow = React.memo(function NotificationRow2({
86
107
  if (!animateEntrance) return;
87
108
  Animated.timing(enter, {
88
109
  toValue: 1,
110
+ delay: enterDelay,
89
111
  duration: theme.motion.enter.duration,
90
112
  easing: Easing.bezier(...theme.motion.enter.easing),
91
113
  useNativeDriver: true
@@ -133,7 +155,18 @@ var NotificationRow = React.memo(function NotificationRow2({
133
155
  trailing,
134
156
  divider,
135
157
  onPress: () => onActivate(item),
136
- accessibilityLabel: label
158
+ accessibilityLabel: label,
159
+ swipeActions: onArchive ? {
160
+ trailing: [
161
+ {
162
+ key: "archive",
163
+ label: archiveLabel,
164
+ icon: "archive",
165
+ fullSwipe: true,
166
+ onAction: () => onArchive(item)
167
+ }
168
+ ]
169
+ } : void 0
137
170
  }
138
171
  )
139
172
  ] });
@@ -143,16 +176,27 @@ function NotificationCenter({
143
176
  groupByDay = true,
144
177
  onMarkAllRead,
145
178
  onItemPress,
146
- emptyLabel = "You're all caught up",
147
- title = "Notifications",
148
- markAllReadLabel = "Mark all read",
149
- unreadLabel = "Unread",
150
- readLabel = "Read",
179
+ onArchive,
180
+ archiveLabel: archiveLabelProp,
181
+ emptyLabel: emptyLabelProp,
182
+ title: titleProp,
183
+ markAllReadLabel: markAllReadLabelProp,
184
+ unreadLabel: unreadLabelProp,
185
+ readLabel: readLabelProp,
151
186
  motion = "reduced",
152
- now
187
+ now,
188
+ labels: labelsProp
153
189
  }) {
190
+ const labels = useLabels("notificationCenter", DEFAULT_LABELS, labelsProp);
191
+ const locale = useLoamLocale();
192
+ const archiveLabel = archiveLabelProp ?? labels.archive;
193
+ const emptyLabel = emptyLabelProp ?? labels.empty;
194
+ const title = titleProp ?? labels.title;
195
+ const markAllReadLabel = markAllReadLabelProp ?? labels.markAllRead;
196
+ const unreadLabel = unreadLabelProp ?? labels.unread;
197
+ const readLabel = readLabelProp ?? labels.read;
154
198
  const { styles } = useStyles(sheet);
155
- const theme = useLoamTheme();
199
+ const theme = useLoamTheme("notification-center");
156
200
  const [locallyRead, setLocallyRead] = React.useState({});
157
201
  const isRead = React.useCallback(
158
202
  (item) => item.read === true || locallyRead[item.id] === true,
@@ -185,17 +229,26 @@ function NotificationCenter({
185
229
  for (const n of notifications) next[n.id] = true;
186
230
  return next;
187
231
  });
232
+ AccessibilityInfo.announceForAccessibility(markAllReadLabel);
188
233
  onMarkAllRead?.();
189
- }, [notifications, onMarkAllRead]);
234
+ }, [notifications, onMarkAllRead, markAllReadLabel]);
190
235
  const unreadCount = React.useMemo(
191
236
  () => notifications.reduce((n, item) => isRead(item) ? n : n + 1, 0),
192
237
  [notifications, isRead]
193
238
  );
194
239
  const sections = React.useMemo(
195
- () => buildSections(notifications, groupByDay, now != null ? new Date(now) : /* @__PURE__ */ new Date()),
196
- [notifications, groupByDay, now]
240
+ () => buildSections(
241
+ notifications,
242
+ groupByDay,
243
+ now != null ? new Date(now) : /* @__PURE__ */ new Date(),
244
+ labels,
245
+ locale
246
+ ),
247
+ [notifications, groupByDay, now, labels, locale]
197
248
  );
198
249
  const children = [];
250
+ const opening = prevIds.current === null;
251
+ let rowCount = 0;
199
252
  const stickyIndices = [];
200
253
  for (const section of sections) {
201
254
  if (groupByDay && section.title) {
@@ -205,6 +258,7 @@ function NotificationCenter({
205
258
  );
206
259
  }
207
260
  section.data.forEach((item, i) => {
261
+ const row = rowCount++;
208
262
  children.push(
209
263
  /* @__PURE__ */ jsx(
210
264
  NotificationRow,
@@ -213,7 +267,10 @@ function NotificationCenter({
213
267
  read: isRead(item),
214
268
  divider: i < section.data.length - 1,
215
269
  motion,
216
- animateEntrance: motion === "full" && newIds.has(item.id),
270
+ animateEntrance: motion === "full" && (newIds.has(item.id) || opening && row < 6),
271
+ enterDelay: opening ? Math.min(row, 5) * 30 : 0,
272
+ onArchive,
273
+ archiveLabel,
217
274
  unreadLabel,
218
275
  readLabel,
219
276
  onActivate: activate
@@ -227,8 +284,17 @@ function NotificationCenter({
227
284
  return /* @__PURE__ */ jsxs(View, { style: styles.root, children: [
228
285
  /* @__PURE__ */ jsxs(View, { style: styles.header, children: [
229
286
  /* @__PURE__ */ jsxs(View, { style: styles.headerTitleWrap, children: [
230
- /* @__PURE__ */ jsx(Text, { style: styles.headerTitle, children: title }),
231
- unreadCount > 0 ? /* @__PURE__ */ jsx(Badge, { style: styles.rowBadge, variant: "accent", size: "sm", accessibilityLabel: `${unreadCount} unread`, children: String(unreadCount) }) : null
287
+ /* @__PURE__ */ jsx(Text, { accessibilityRole: "header", style: styles.headerTitle, children: title }),
288
+ unreadCount > 0 ? /* @__PURE__ */ jsx(
289
+ Badge,
290
+ {
291
+ style: styles.rowBadge,
292
+ variant: "accent",
293
+ size: "sm",
294
+ accessibilityLabel: labels.unreadCount(unreadCount),
295
+ children: String(unreadCount)
296
+ }
297
+ ) : null
232
298
  ] }),
233
299
  onMarkAllRead ? /* @__PURE__ */ jsx(
234
300
  MarkAllReadButton,
@@ -245,7 +311,7 @@ function NotificationCenter({
245
311
  variant: "empty",
246
312
  icon: "bell",
247
313
  title: emptyLabel,
248
- description: "New notifications will show up here."
314
+ description: labels.emptyDescription
249
315
  }
250
316
  ) }) : (
251
317
  // No `role="list"`: sticky day headers are flattened in as direct children
@@ -255,6 +321,7 @@ function NotificationCenter({
255
321
  /* @__PURE__ */ jsx(
256
322
  ScrollView,
257
323
  {
324
+ role: "region",
258
325
  accessibilityLabel: title,
259
326
  style: styles.scroll,
260
327
  contentContainerStyle: styles.scrollContent,
@@ -272,7 +339,7 @@ function MarkAllReadButton({
272
339
  onPress
273
340
  }) {
274
341
  const { styles } = useStyles(sheet);
275
- const theme = useLoamTheme();
342
+ const theme = useLoamTheme("notification-center");
276
343
  const ink = disabled ? theme.color.text3 : theme.color.accentStrong;
277
344
  return /* @__PURE__ */ jsxs(
278
345
  Pressable,