@oxyhq/bloom 0.78.0 → 0.79.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.
- package/README.md +3 -3
- package/lib/commonjs/provider/index.js +11 -7
- package/lib/commonjs/provider/index.js.map +1 -1
- package/lib/commonjs/scroll/context.js +96 -0
- package/lib/commonjs/scroll/context.js.map +1 -0
- package/lib/commonjs/scroll/expo-router/index.js +133 -0
- package/lib/commonjs/scroll/expo-router/index.js.map +1 -0
- package/lib/commonjs/scroll/index.js +85 -21
- package/lib/commonjs/scroll/index.js.map +1 -1
- package/lib/commonjs/scroll/index.web.js +184 -118
- package/lib/commonjs/scroll/index.web.js.map +1 -1
- package/lib/commonjs/scroll/scrollable.native.js +58 -0
- package/lib/commonjs/scroll/scrollable.native.js.map +1 -0
- package/lib/commonjs/scroll/store.js +47 -25
- package/lib/commonjs/scroll/store.js.map +1 -1
- package/lib/commonjs/theme/color-policy.js +11 -9
- package/lib/commonjs/theme/color-policy.js.map +1 -1
- package/lib/module/provider/index.js +10 -6
- package/lib/module/provider/index.js.map +1 -1
- package/lib/module/scroll/context.js +90 -0
- package/lib/module/scroll/context.js.map +1 -0
- package/lib/module/scroll/expo-router/index.js +128 -0
- package/lib/module/scroll/expo-router/index.js.map +1 -0
- package/lib/module/scroll/index.js +80 -21
- package/lib/module/scroll/index.js.map +1 -1
- package/lib/module/scroll/index.web.js +181 -119
- package/lib/module/scroll/index.web.js.map +1 -1
- package/lib/module/scroll/scrollable.native.js +54 -0
- package/lib/module/scroll/scrollable.native.js.map +1 -0
- package/lib/module/scroll/store.js +47 -25
- package/lib/module/scroll/store.js.map +1 -1
- package/lib/module/theme/color-policy.js +11 -9
- package/lib/module/theme/color-policy.js.map +1 -1
- package/lib/typescript/commonjs/provider/index.d.ts +7 -5
- package/lib/typescript/commonjs/provider/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/scroll/context.d.ts +14 -0
- package/lib/typescript/commonjs/scroll/context.d.ts.map +1 -0
- package/lib/typescript/commonjs/scroll/expo-router/index.d.ts +7 -0
- package/lib/typescript/commonjs/scroll/expo-router/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/scroll/index.d.ts +14 -23
- package/lib/typescript/commonjs/scroll/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/scroll/index.web.d.ts +17 -19
- package/lib/typescript/commonjs/scroll/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/scroll/scrollable.native.d.ts +23 -0
- package/lib/typescript/commonjs/scroll/scrollable.native.d.ts.map +1 -0
- package/lib/typescript/commonjs/scroll/store.d.ts +41 -22
- package/lib/typescript/commonjs/scroll/store.d.ts.map +1 -1
- package/lib/typescript/commonjs/scroll/types.d.ts +82 -12
- package/lib/typescript/commonjs/scroll/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/color-policy.d.ts.map +1 -1
- package/lib/typescript/module/provider/index.d.ts +7 -5
- package/lib/typescript/module/provider/index.d.ts.map +1 -1
- package/lib/typescript/module/scroll/context.d.ts +14 -0
- package/lib/typescript/module/scroll/context.d.ts.map +1 -0
- package/lib/typescript/module/scroll/expo-router/index.d.ts +7 -0
- package/lib/typescript/module/scroll/expo-router/index.d.ts.map +1 -0
- package/lib/typescript/module/scroll/index.d.ts +14 -23
- package/lib/typescript/module/scroll/index.d.ts.map +1 -1
- package/lib/typescript/module/scroll/index.web.d.ts +17 -19
- package/lib/typescript/module/scroll/index.web.d.ts.map +1 -1
- package/lib/typescript/module/scroll/scrollable.native.d.ts +23 -0
- package/lib/typescript/module/scroll/scrollable.native.d.ts.map +1 -0
- package/lib/typescript/module/scroll/store.d.ts +41 -22
- package/lib/typescript/module/scroll/store.d.ts.map +1 -1
- package/lib/typescript/module/scroll/types.d.ts +82 -12
- package/lib/typescript/module/scroll/types.d.ts.map +1 -1
- package/lib/typescript/module/theme/color-policy.d.ts.map +1 -1
- package/package.json +15 -1
- package/src/__tests__/BloomProvider.web.test.tsx +8 -15
- package/src/__tests__/optional-peer-imports.test.ts +2 -2
- package/src/__tests__/scroll-expo-router-adapter.test.tsx +164 -0
- package/src/__tests__/scroll-native.test.tsx +465 -0
- package/src/__tests__/scroll-store.test.ts +41 -17
- package/src/__tests__/scroll-web.test.tsx +547 -111
- package/src/provider/index.tsx +10 -7
- package/src/scroll/context.tsx +107 -0
- package/src/scroll/expo-router/index.ts +140 -0
- package/src/scroll/index.ts +92 -25
- package/src/scroll/index.web.tsx +219 -162
- package/src/scroll/scrollable.native.ts +64 -0
- package/src/scroll/store.ts +47 -25
- package/src/scroll/types.ts +82 -12
- package/src/theme/__tests__/__fixtures__/golden-resolved-tokens.json +27 -27
- package/src/theme/__tests__/__snapshots__/visual-gallery.test.tsx.snap +55 -55
- package/src/theme/__tests__/policy-legibility.test.ts +21 -1
- package/src/theme/color-policy.ts +13 -9
- package/lib/commonjs/provider/scroll-provider.js +0 -13
- package/lib/commonjs/provider/scroll-provider.js.map +0 -1
- package/lib/commonjs/provider/scroll-provider.web.js +0 -13
- package/lib/commonjs/provider/scroll-provider.web.js.map +0 -1
- package/lib/module/provider/scroll-provider.js +0 -16
- package/lib/module/provider/scroll-provider.js.map +0 -1
- package/lib/module/provider/scroll-provider.web.js +0 -5
- package/lib/module/provider/scroll-provider.web.js.map +0 -1
- package/lib/typescript/commonjs/provider/scroll-provider.d.ts +0 -14
- package/lib/typescript/commonjs/provider/scroll-provider.d.ts.map +0 -1
- package/lib/typescript/commonjs/provider/scroll-provider.web.d.ts +0 -3
- package/lib/typescript/commonjs/provider/scroll-provider.web.d.ts.map +0 -1
- package/lib/typescript/module/provider/scroll-provider.d.ts +0 -14
- package/lib/typescript/module/provider/scroll-provider.d.ts.map +0 -1
- package/lib/typescript/module/provider/scroll-provider.web.d.ts +0 -3
- package/lib/typescript/module/provider/scroll-provider.web.d.ts.map +0 -1
- package/src/__tests__/scroll-native.test.ts +0 -25
- package/src/provider/scroll-provider.ts +0 -13
- package/src/provider/scroll-provider.web.ts +0 -2
|
@@ -12,16 +12,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
12
12
|
"contrast50": "rgb(51 40 27)",
|
|
13
13
|
"error": "rgb(218 52 55)",
|
|
14
14
|
"icon": "rgb(217 195 171)",
|
|
15
|
-
"iconActive": "rgb(
|
|
15
|
+
"iconActive": "rgb(163 103 0)",
|
|
16
16
|
"info": "rgb(33 112 228)",
|
|
17
17
|
"negative": "rgb(255 180 171)",
|
|
18
18
|
"negativeForeground": "rgb(105 0 5)",
|
|
19
19
|
"negativeSubtle": "rgba(239, 68, 68, 0.24)",
|
|
20
20
|
"negativeSubtleForeground": "rgb(255 179 173)",
|
|
21
21
|
"overlay": "rgba(0, 0, 0, 0.5)",
|
|
22
|
-
"primary": "rgb(
|
|
22
|
+
"primary": "rgb(163 103 0)",
|
|
23
23
|
"primaryDark": "rgb(21 12 3)",
|
|
24
|
-
"primaryForeground": "rgb(
|
|
24
|
+
"primaryForeground": "rgb(255 255 255)",
|
|
25
25
|
"primaryLight": "rgb(36 26 14)",
|
|
26
26
|
"primarySubtle": "rgba(202, 129, 0, 0.24)",
|
|
27
27
|
"primarySubtleForeground": "rgb(255 221 184)",
|
|
@@ -34,7 +34,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
34
34
|
"text": "rgb(244 223 203)",
|
|
35
35
|
"textSecondary": "rgb(217 195 171)",
|
|
36
36
|
"textTertiary": "rgb(161 141 120)",
|
|
37
|
-
"tint": "rgb(
|
|
37
|
+
"tint": "rgb(163 103 0)",
|
|
38
38
|
"warning": "rgb(163 103 0)",
|
|
39
39
|
},
|
|
40
40
|
"amber/light": {
|
|
@@ -47,14 +47,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
47
47
|
"contrast50": "rgb(249 229 209)",
|
|
48
48
|
"error": "rgb(203 41 46)",
|
|
49
49
|
"icon": "rgb(84 68 50)",
|
|
50
|
-
"iconActive": "rgb(
|
|
50
|
+
"iconActive": "rgb(150 94 0)",
|
|
51
51
|
"info": "rgb(5 102 217)",
|
|
52
52
|
"negative": "rgb(186 26 26)",
|
|
53
53
|
"negativeForeground": "rgb(255 255 255)",
|
|
54
54
|
"negativeSubtle": "rgba(239, 68, 68, 0.13)",
|
|
55
55
|
"negativeSubtleForeground": "rgb(167 55 53)",
|
|
56
56
|
"overlay": "rgba(0, 0, 0, 0.5)",
|
|
57
|
-
"primary": "rgb(
|
|
57
|
+
"primary": "rgb(150 94 0)",
|
|
58
58
|
"primaryDark": "rgb(255 241 229)",
|
|
59
59
|
"primaryForeground": "rgb(255 255 255)",
|
|
60
60
|
"primaryLight": "rgb(255 241 229)",
|
|
@@ -69,7 +69,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
69
69
|
"text": "rgb(36 26 14)",
|
|
70
70
|
"textSecondary": "rgb(84 68 50)",
|
|
71
71
|
"textTertiary": "rgb(135 116 96)",
|
|
72
|
-
"tint": "rgb(
|
|
72
|
+
"tint": "rgb(150 94 0)",
|
|
73
73
|
"warning": "rgb(150 94 0)",
|
|
74
74
|
},
|
|
75
75
|
"blue/dark": {
|
|
@@ -82,16 +82,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
82
82
|
"contrast50": "rgb(36 43 51)",
|
|
83
83
|
"error": "rgb(218 52 55)",
|
|
84
84
|
"icon": "rgb(190 199 212)",
|
|
85
|
-
"iconActive": "rgb(
|
|
85
|
+
"iconActive": "rgb(0 121 192)",
|
|
86
86
|
"info": "rgb(33 112 228)",
|
|
87
87
|
"negative": "rgb(255 180 171)",
|
|
88
88
|
"negativeForeground": "rgb(105 0 5)",
|
|
89
89
|
"negativeSubtle": "rgba(239, 68, 68, 0.24)",
|
|
90
90
|
"negativeSubtleForeground": "rgb(255 179 173)",
|
|
91
91
|
"overlay": "rgba(0, 0, 0, 0.5)",
|
|
92
|
-
"primary": "rgb(
|
|
92
|
+
"primary": "rgb(0 121 192)",
|
|
93
93
|
"primaryDark": "rgb(8 15 22)",
|
|
94
|
-
"primaryForeground": "rgb(
|
|
94
|
+
"primaryForeground": "rgb(255 255 255)",
|
|
95
95
|
"primaryLight": "rgb(21 28 36)",
|
|
96
96
|
"primarySubtle": "rgba(0, 151, 237, 0.24)",
|
|
97
97
|
"primarySubtleForeground": "rgb(207 229 255)",
|
|
@@ -104,7 +104,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
104
104
|
"text": "rgb(220 227 238)",
|
|
105
105
|
"textSecondary": "rgb(190 199 212)",
|
|
106
106
|
"textTertiary": "rgb(136 146 158)",
|
|
107
|
-
"tint": "rgb(
|
|
107
|
+
"tint": "rgb(0 121 192)",
|
|
108
108
|
"warning": "rgb(163 103 0)",
|
|
109
109
|
},
|
|
110
110
|
"blue/light": {
|
|
@@ -187,16 +187,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
187
187
|
"contrast50": "rgb(228 235 216)",
|
|
188
188
|
"error": "rgb(203 41 46)",
|
|
189
189
|
"icon": "rgb(65 73 57)",
|
|
190
|
-
"iconActive": "rgb(
|
|
190
|
+
"iconActive": "rgb(63 120 0)",
|
|
191
191
|
"info": "rgb(5 102 217)",
|
|
192
192
|
"negative": "rgb(186 26 26)",
|
|
193
193
|
"negativeForeground": "rgb(255 255 255)",
|
|
194
194
|
"negativeSubtle": "rgba(239, 68, 68, 0.13)",
|
|
195
195
|
"negativeSubtleForeground": "rgb(167 55 53)",
|
|
196
196
|
"overlay": "rgba(0, 0, 0, 0.5)",
|
|
197
|
-
"primary": "rgb(
|
|
197
|
+
"primary": "rgb(63 120 0)",
|
|
198
198
|
"primaryDark": "rgb(240 246 227)",
|
|
199
|
-
"primaryForeground": "rgb(
|
|
199
|
+
"primaryForeground": "rgb(255 255 255)",
|
|
200
200
|
"primaryLight": "rgb(240 246 227)",
|
|
201
201
|
"primarySubtle": "rgba(87, 163, 0, 0.13)",
|
|
202
202
|
"primarySubtleForeground": "rgb(40 80 0)",
|
|
@@ -209,7 +209,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
209
209
|
"text": "rgb(24 29 18)",
|
|
210
210
|
"textSecondary": "rgb(65 73 57)",
|
|
211
211
|
"textTertiary": "rgb(114 122 103)",
|
|
212
|
-
"tint": "rgb(
|
|
212
|
+
"tint": "rgb(63 120 0)",
|
|
213
213
|
"warning": "rgb(150 94 0)",
|
|
214
214
|
},
|
|
215
215
|
"green/dark": {
|
|
@@ -222,16 +222,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
222
222
|
"contrast50": "rgb(33 44 38)",
|
|
223
223
|
"error": "rgb(218 52 55)",
|
|
224
224
|
"icon": "rgb(186 203 191)",
|
|
225
|
-
"iconActive": "rgb(
|
|
225
|
+
"iconActive": "rgb(0 133 91)",
|
|
226
226
|
"info": "rgb(33 112 228)",
|
|
227
227
|
"negative": "rgb(255 180 171)",
|
|
228
228
|
"negativeForeground": "rgb(105 0 5)",
|
|
229
229
|
"negativeSubtle": "rgba(239, 68, 68, 0.24)",
|
|
230
230
|
"negativeSubtleForeground": "rgb(255 179 173)",
|
|
231
231
|
"overlay": "rgba(0, 0, 0, 0.5)",
|
|
232
|
-
"primary": "rgb(
|
|
232
|
+
"primary": "rgb(0 133 91)",
|
|
233
233
|
"primaryDark": "rgb(6 16 11)",
|
|
234
|
-
"primaryForeground": "rgb(
|
|
234
|
+
"primaryForeground": "rgb(255 255 255)",
|
|
235
235
|
"primaryLight": "rgb(19 30 24)",
|
|
236
236
|
"primarySubtle": "rgba(0, 165, 114, 0.24)",
|
|
237
237
|
"primarySubtleForeground": "rgb(71 255 184)",
|
|
@@ -244,7 +244,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
244
244
|
"text": "rgb(217 230 220)",
|
|
245
245
|
"textSecondary": "rgb(186 203 191)",
|
|
246
246
|
"textTertiary": "rgb(132 149 138)",
|
|
247
|
-
"tint": "rgb(
|
|
247
|
+
"tint": "rgb(0 133 91)",
|
|
248
248
|
"warning": "rgb(163 103 0)",
|
|
249
249
|
},
|
|
250
250
|
"green/light": {
|
|
@@ -292,16 +292,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
292
292
|
"contrast50": "rgb(32 44 42)",
|
|
293
293
|
"error": "rgb(218 52 55)",
|
|
294
294
|
"icon": "rgb(184 202 198)",
|
|
295
|
-
"iconActive": "rgb(
|
|
295
|
+
"iconActive": "rgb(0 131 118)",
|
|
296
296
|
"info": "rgb(33 112 228)",
|
|
297
297
|
"negative": "rgb(255 180 171)",
|
|
298
298
|
"negativeForeground": "rgb(105 0 5)",
|
|
299
299
|
"negativeSubtle": "rgba(239, 68, 68, 0.24)",
|
|
300
300
|
"negativeSubtleForeground": "rgb(255 179 173)",
|
|
301
301
|
"overlay": "rgba(0, 0, 0, 0.5)",
|
|
302
|
-
"primary": "rgb(
|
|
302
|
+
"primary": "rgb(0 131 118)",
|
|
303
303
|
"primaryDark": "rgb(5 16 14)",
|
|
304
|
-
"primaryForeground": "rgb(
|
|
304
|
+
"primaryForeground": "rgb(255 255 255)",
|
|
305
305
|
"primaryLight": "rgb(17 30 28)",
|
|
306
306
|
"primarySubtle": "rgba(0, 163, 146, 0.24)",
|
|
307
307
|
"primarySubtleForeground": "rgb(0 254 229)",
|
|
@@ -314,7 +314,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
314
314
|
"text": "rgb(215 230 225)",
|
|
315
315
|
"textSecondary": "rgb(184 202 198)",
|
|
316
316
|
"textTertiary": "rgb(130 148 144)",
|
|
317
|
-
"tint": "rgb(
|
|
317
|
+
"tint": "rgb(0 131 118)",
|
|
318
318
|
"warning": "rgb(163 103 0)",
|
|
319
319
|
},
|
|
320
320
|
"mint/light": {
|
|
@@ -362,16 +362,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
362
362
|
"contrast50": "rgb(54 39 31)",
|
|
363
363
|
"error": "rgb(218 52 55)",
|
|
364
364
|
"icon": "rgb(223 192 178)",
|
|
365
|
-
"iconActive": "rgb(
|
|
365
|
+
"iconActive": "rgb(192 84 0)",
|
|
366
366
|
"info": "rgb(33 112 228)",
|
|
367
367
|
"negative": "rgb(255 180 171)",
|
|
368
368
|
"negativeForeground": "rgb(105 0 5)",
|
|
369
369
|
"negativeSubtle": "rgba(239, 68, 68, 0.24)",
|
|
370
370
|
"negativeSubtleForeground": "rgb(255 179 173)",
|
|
371
371
|
"overlay": "rgba(0, 0, 0, 0.5)",
|
|
372
|
-
"primary": "rgb(
|
|
372
|
+
"primary": "rgb(192 84 0)",
|
|
373
373
|
"primaryDark": "rgb(23 11 5)",
|
|
374
|
-
"primaryForeground": "rgb(
|
|
374
|
+
"primaryForeground": "rgb(255 255 255)",
|
|
375
375
|
"primaryLight": "rgb(38 24 17)",
|
|
376
376
|
"primarySubtle": "rgba(237, 105, 0, 0.24)",
|
|
377
377
|
"primarySubtleForeground": "rgb(255 219 202)",
|
|
@@ -384,7 +384,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
384
384
|
"text": "rgb(248 221 209)",
|
|
385
385
|
"textSecondary": "rgb(223 192 178)",
|
|
386
386
|
"textTertiary": "rgb(166 139 126)",
|
|
387
|
-
"tint": "rgb(
|
|
387
|
+
"tint": "rgb(192 84 0)",
|
|
388
388
|
"warning": "rgb(163 103 0)",
|
|
389
389
|
},
|
|
390
390
|
"orange/light": {
|
|
@@ -432,16 +432,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
432
432
|
"contrast50": "rgb(48 39 49)",
|
|
433
433
|
"error": "rgb(218 52 55)",
|
|
434
434
|
"icon": "rgb(210 193 210)",
|
|
435
|
-
"iconActive": "rgb(
|
|
435
|
+
"iconActive": "rgb(165 81 191)",
|
|
436
436
|
"info": "rgb(33 112 228)",
|
|
437
437
|
"negative": "rgb(255 180 171)",
|
|
438
438
|
"negativeForeground": "rgb(105 0 5)",
|
|
439
439
|
"negativeSubtle": "rgba(239, 68, 68, 0.24)",
|
|
440
440
|
"negativeSubtleForeground": "rgb(255 179 173)",
|
|
441
441
|
"overlay": "rgba(0, 0, 0, 0.5)",
|
|
442
|
-
"primary": "rgb(
|
|
442
|
+
"primary": "rgb(165 81 191)",
|
|
443
443
|
"primaryDark": "rgb(19 12 20)",
|
|
444
|
-
"primaryForeground": "rgb(
|
|
444
|
+
"primaryForeground": "rgb(255 255 255)",
|
|
445
445
|
"primaryLight": "rgb(33 25 34)",
|
|
446
446
|
"primarySubtle": "rgba(213, 86, 255, 0.24)",
|
|
447
447
|
"primarySubtleForeground": "rgb(251 215 255)",
|
|
@@ -454,7 +454,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
454
454
|
"text": "rgb(237 222 235)",
|
|
455
455
|
"textSecondary": "rgb(210 193 210)",
|
|
456
456
|
"textTertiary": "rgb(155 140 155)",
|
|
457
|
-
"tint": "rgb(
|
|
457
|
+
"tint": "rgb(165 81 191)",
|
|
458
458
|
"warning": "rgb(163 103 0)",
|
|
459
459
|
},
|
|
460
460
|
"oxy/light": {
|
|
@@ -502,16 +502,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
502
502
|
"contrast50": "rgb(53 38 43)",
|
|
503
503
|
"error": "rgb(218 52 55)",
|
|
504
504
|
"icon": "rgb(219 191 200)",
|
|
505
|
-
"iconActive": "rgb(
|
|
505
|
+
"iconActive": "rgb(210 50 132)",
|
|
506
506
|
"info": "rgb(33 112 228)",
|
|
507
507
|
"negative": "rgb(255 180 171)",
|
|
508
508
|
"negativeForeground": "rgb(105 0 5)",
|
|
509
509
|
"negativeSubtle": "rgba(239, 68, 68, 0.24)",
|
|
510
510
|
"negativeSubtleForeground": "rgb(255 179 173)",
|
|
511
511
|
"overlay": "rgba(0, 0, 0, 0.5)",
|
|
512
|
-
"primary": "rgb(
|
|
512
|
+
"primary": "rgb(210 50 132)",
|
|
513
513
|
"primaryDark": "rgb(23 11 15)",
|
|
514
|
-
"primaryForeground": "rgb(
|
|
514
|
+
"primaryForeground": "rgb(255 255 255)",
|
|
515
515
|
"primaryLight": "rgb(37 24 29)",
|
|
516
516
|
"primarySubtle": "rgba(255, 69, 163, 0.24)",
|
|
517
517
|
"primarySubtleForeground": "rgb(255 217 228)",
|
|
@@ -524,7 +524,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
524
524
|
"text": "rgb(245 220 227)",
|
|
525
525
|
"textSecondary": "rgb(219 191 200)",
|
|
526
526
|
"textTertiary": "rgb(163 138 146)",
|
|
527
|
-
"tint": "rgb(
|
|
527
|
+
"tint": "rgb(210 50 132)",
|
|
528
528
|
"warning": "rgb(163 103 0)",
|
|
529
529
|
},
|
|
530
530
|
"pink/light": {
|
|
@@ -572,16 +572,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
572
572
|
"contrast50": "rgb(44 40 51)",
|
|
573
573
|
"error": "rgb(218 52 55)",
|
|
574
574
|
"icon": "rgb(203 195 213)",
|
|
575
|
-
"iconActive": "rgb(
|
|
575
|
+
"iconActive": "rgb(132 85 239)",
|
|
576
576
|
"info": "rgb(33 112 228)",
|
|
577
577
|
"negative": "rgb(255 180 171)",
|
|
578
578
|
"negativeForeground": "rgb(105 0 5)",
|
|
579
579
|
"negativeSubtle": "rgba(239, 68, 68, 0.24)",
|
|
580
580
|
"negativeSubtleForeground": "rgb(255 179 173)",
|
|
581
581
|
"overlay": "rgba(0, 0, 0, 0.5)",
|
|
582
|
-
"primary": "rgb(
|
|
582
|
+
"primary": "rgb(132 85 239)",
|
|
583
583
|
"primaryDark": "rgb(16 13 22)",
|
|
584
|
-
"primaryForeground": "rgb(
|
|
584
|
+
"primaryForeground": "rgb(255 255 255)",
|
|
585
585
|
"primaryLight": "rgb(29 26 36)",
|
|
586
586
|
"primarySubtle": "rgba(160, 120, 255, 0.24)",
|
|
587
587
|
"primarySubtleForeground": "rgb(233 221 255)",
|
|
@@ -594,7 +594,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
594
594
|
"text": "rgb(231 224 238)",
|
|
595
595
|
"textSecondary": "rgb(203 195 213)",
|
|
596
596
|
"textTertiary": "rgb(148 142 159)",
|
|
597
|
-
"tint": "rgb(
|
|
597
|
+
"tint": "rgb(132 85 239)",
|
|
598
598
|
"warning": "rgb(163 103 0)",
|
|
599
599
|
},
|
|
600
600
|
"purple/light": {
|
|
@@ -642,16 +642,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
642
642
|
"contrast50": "rgb(54 38 37)",
|
|
643
643
|
"error": "rgb(218 52 55)",
|
|
644
644
|
"icon": "rgb(223 191 188)",
|
|
645
|
-
"iconActive": "rgb(
|
|
645
|
+
"iconActive": "rgb(218 52 55)",
|
|
646
646
|
"info": "rgb(33 112 228)",
|
|
647
647
|
"negative": "rgb(255 180 171)",
|
|
648
648
|
"negativeForeground": "rgb(105 0 5)",
|
|
649
649
|
"negativeSubtle": "rgba(239, 68, 68, 0.24)",
|
|
650
650
|
"negativeSubtleForeground": "rgb(255 179 173)",
|
|
651
651
|
"overlay": "rgba(0, 0, 0, 0.5)",
|
|
652
|
-
"primary": "rgb(
|
|
652
|
+
"primary": "rgb(218 52 55)",
|
|
653
653
|
"primaryDark": "rgb(24 11 10)",
|
|
654
|
-
"primaryForeground": "rgb(
|
|
654
|
+
"primaryForeground": "rgb(255 255 255)",
|
|
655
655
|
"primaryLight": "rgb(39 24 23)",
|
|
656
656
|
"primarySubtle": "rgba(255, 84, 81, 0.24)",
|
|
657
657
|
"primarySubtleForeground": "rgb(255 218 215)",
|
|
@@ -664,7 +664,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
664
664
|
"text": "rgb(249 220 217)",
|
|
665
665
|
"textSecondary": "rgb(223 191 188)",
|
|
666
666
|
"textTertiary": "rgb(167 138 136)",
|
|
667
|
-
"tint": "rgb(
|
|
667
|
+
"tint": "rgb(218 52 55)",
|
|
668
668
|
"warning": "rgb(163 103 0)",
|
|
669
669
|
},
|
|
670
670
|
"red/light": {
|
|
@@ -712,16 +712,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
712
712
|
"contrast50": "rgb(34 43 50)",
|
|
713
713
|
"error": "rgb(218 52 55)",
|
|
714
714
|
"icon": "rgb(188 200 211)",
|
|
715
|
-
"iconActive": "rgb(
|
|
715
|
+
"iconActive": "rgb(0 124 177)",
|
|
716
716
|
"info": "rgb(33 112 228)",
|
|
717
717
|
"negative": "rgb(255 180 171)",
|
|
718
718
|
"negativeForeground": "rgb(105 0 5)",
|
|
719
719
|
"negativeSubtle": "rgba(239, 68, 68, 0.24)",
|
|
720
720
|
"negativeSubtleForeground": "rgb(255 179 173)",
|
|
721
721
|
"overlay": "rgba(0, 0, 0, 0.5)",
|
|
722
|
-
"primary": "rgb(
|
|
722
|
+
"primary": "rgb(0 124 177)",
|
|
723
723
|
"primaryDark": "rgb(7 15 21)",
|
|
724
|
-
"primaryForeground": "rgb(
|
|
724
|
+
"primaryForeground": "rgb(255 255 255)",
|
|
725
725
|
"primaryLight": "rgb(20 29 35)",
|
|
726
726
|
"primarySubtle": "rgba(0, 154, 218, 0.24)",
|
|
727
727
|
"primarySubtleForeground": "rgb(201 230 255)",
|
|
@@ -734,7 +734,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
734
734
|
"text": "rgb(219 227 237)",
|
|
735
735
|
"textSecondary": "rgb(188 200 211)",
|
|
736
736
|
"textTertiary": "rgb(134 146 157)",
|
|
737
|
-
"tint": "rgb(
|
|
737
|
+
"tint": "rgb(0 124 177)",
|
|
738
738
|
"warning": "rgb(163 103 0)",
|
|
739
739
|
},
|
|
740
740
|
"sky/light": {
|
|
@@ -782,16 +782,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
782
782
|
"contrast50": "rgb(32 44 46)",
|
|
783
783
|
"error": "rgb(218 52 55)",
|
|
784
784
|
"icon": "rgb(184 202 205)",
|
|
785
|
-
"iconActive": "rgb(
|
|
785
|
+
"iconActive": "rgb(55 126 138)",
|
|
786
786
|
"info": "rgb(33 112 228)",
|
|
787
787
|
"negative": "rgb(255 180 171)",
|
|
788
788
|
"negativeForeground": "rgb(105 0 5)",
|
|
789
789
|
"negativeSubtle": "rgba(239, 68, 68, 0.24)",
|
|
790
790
|
"negativeSubtleForeground": "rgb(255 179 173)",
|
|
791
791
|
"overlay": "rgba(0, 0, 0, 0.5)",
|
|
792
|
-
"primary": "rgb(
|
|
792
|
+
"primary": "rgb(55 126 138)",
|
|
793
793
|
"primaryDark": "rgb(5 16 18)",
|
|
794
|
-
"primaryForeground": "rgb(
|
|
794
|
+
"primaryForeground": "rgb(255 255 255)",
|
|
795
795
|
"primaryLight": "rgb(17 29 32)",
|
|
796
796
|
"primarySubtle": "rgba(0, 159, 177, 0.24)",
|
|
797
797
|
"primarySubtleForeground": "rgb(154 240 255)",
|
|
@@ -804,7 +804,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
804
804
|
"text": "rgb(215 229 232)",
|
|
805
805
|
"textSecondary": "rgb(184 202 205)",
|
|
806
806
|
"textTertiary": "rgb(131 148 151)",
|
|
807
|
-
"tint": "rgb(
|
|
807
|
+
"tint": "rgb(55 126 138)",
|
|
808
808
|
"warning": "rgb(163 103 0)",
|
|
809
809
|
},
|
|
810
810
|
"teal/light": {
|
|
@@ -887,16 +887,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
887
887
|
"contrast50": "rgb(244 231 208)",
|
|
888
888
|
"error": "rgb(203 41 46)",
|
|
889
889
|
"icon": "rgb(79 70 49)",
|
|
890
|
-
"iconActive": "rgb(
|
|
890
|
+
"iconActive": "rgb(135 102 0)",
|
|
891
891
|
"info": "rgb(5 102 217)",
|
|
892
892
|
"negative": "rgb(186 26 26)",
|
|
893
893
|
"negativeForeground": "rgb(255 255 255)",
|
|
894
894
|
"negativeSubtle": "rgba(239, 68, 68, 0.13)",
|
|
895
895
|
"negativeSubtleForeground": "rgb(167 55 53)",
|
|
896
896
|
"overlay": "rgba(0, 0, 0, 0.5)",
|
|
897
|
-
"primary": "rgb(
|
|
897
|
+
"primary": "rgb(135 102 0)",
|
|
898
898
|
"primaryDark": "rgb(255 242 221)",
|
|
899
|
-
"primaryForeground": "rgb(
|
|
899
|
+
"primaryForeground": "rgb(255 255 255)",
|
|
900
900
|
"primaryLight": "rgb(255 242 221)",
|
|
901
901
|
"primarySubtle": "rgba(182, 138, 0, 0.13)",
|
|
902
902
|
"primarySubtleForeground": "rgb(90 67 0)",
|
|
@@ -909,7 +909,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
|
|
|
909
909
|
"text": "rgb(33 27 13)",
|
|
910
910
|
"textSecondary": "rgb(79 70 49)",
|
|
911
911
|
"textTertiary": "rgb(130 118 95)",
|
|
912
|
-
"tint": "rgb(
|
|
912
|
+
"tint": "rgb(135 102 0)",
|
|
913
913
|
"warning": "rgb(150 94 0)",
|
|
914
914
|
},
|
|
915
915
|
}
|
|
@@ -116,4 +116,24 @@ describe('colour policy legibility', () => {
|
|
|
116
116
|
expect(avoidableBlack).toEqual([]);
|
|
117
117
|
});
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
|
|
120
|
+
// The two modes want opposite things and the suite has to say which. Applying
|
|
121
|
+
// the budget in LIGHT let a light seed keep its own tone there, so faircoin
|
|
122
|
+
// rendered the same pale lime in both modes — no theme at all. Skipping it in
|
|
123
|
+
// DARK left every Follow button, avatar and chat bubble with a black label.
|
|
124
|
+
// Each half was individually legible, so nothing else could catch either.
|
|
125
|
+
it('the brand fill keeps light exemption-free and dark budgeted', () => {
|
|
126
|
+
const white = { light: 0, dark: 0 };
|
|
127
|
+
for (const preset of APP_COLOR_NAMES) {
|
|
128
|
+
for (const mode of ['light', 'dark'] as const) {
|
|
129
|
+
if (getResolvedTokens(preset, mode)['--primary-foreground'] === 'rgb(255 255 255)') {
|
|
130
|
+
white[mode] += 1;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Light admits no exemption, so every preset carries white there. Dark keeps
|
|
135
|
+
// the budget, so the seeds that are already light keep their colour instead.
|
|
136
|
+
expect(white.light).toBe(APP_COLOR_NAMES.length);
|
|
137
|
+
expect(white.dark).toBeGreaterThan(APP_COLOR_NAMES.length - 4);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
@@ -214,15 +214,19 @@ function vividHueNear(hue: number): number {
|
|
|
214
214
|
* why 11 of the 13 presets carry white and exactly the two light ones do not.
|
|
215
215
|
*/
|
|
216
216
|
function whiteLabelTone(palette: TonalPalette, seedTone: number, isDark: boolean): number {
|
|
217
|
-
//
|
|
218
|
-
//
|
|
219
|
-
//
|
|
220
|
-
//
|
|
221
|
-
//
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
217
|
+
// LIGHT: every fill comes down, no exemption. On a near-white page a bright
|
|
218
|
+
// colour has nothing to read against — a lime at its own tone 90 is a pale
|
|
219
|
+
// smear there, indistinguishable from the same colour in dark, which is not a
|
|
220
|
+
// theme at all. Coming down is what makes faircoin a deep green in light and a
|
|
221
|
+
// bright lime in dark.
|
|
222
|
+
if (!isDark) return LIGHT_FILL_TONE;
|
|
223
|
+
// DARK: the budget applies. Most brands come down to where white fits, but a
|
|
224
|
+
// seed that is already light cannot without ceasing to be itself, so it keeps
|
|
225
|
+
// its own tone and takes a black label. That is the eleven-and-two pattern.
|
|
226
|
+
const candidate = Math.max(DARK_FILL_TONE, seedTone - TONE_BUDGET);
|
|
227
|
+
return contrastOf(palette.tone(candidate), true) >= AA
|
|
228
|
+
? candidate
|
|
229
|
+
: Math.max(seedTone, DARK_SEED_FLOOR);
|
|
226
230
|
}
|
|
227
231
|
|
|
228
232
|
/**
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "ScrollRestorationProvider", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function () {
|
|
9
|
-
return _index.ScrollRestorationProvider;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
var _index = require("../scroll/index.js");
|
|
13
|
-
//# sourceMappingURL=scroll-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_index","require"],"sourceRoot":"../../../src","sources":["provider/scroll-provider.ts"],"mappings":";;;;;;;;;;;AAYA,IAAAA,MAAA,GAAAC,OAAA","ignoreList":[]}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "ScrollRestorationProvider", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function () {
|
|
9
|
-
return _indexWeb.ScrollRestorationProvider;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
var _indexWeb = require("../scroll/index.web.js");
|
|
13
|
-
//# sourceMappingURL=scroll-provider.web.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_indexWeb","require"],"sourceRoot":"../../../src","sources":["provider/scroll-provider.web.ts"],"mappings":";;;;;;;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA","ignoreList":[]}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Native/default binding for the scroll-restoration provider used by
|
|
5
|
-
* {@link BloomProvider}.
|
|
6
|
-
*
|
|
7
|
-
* `@oxyhq/bloom/scroll` is web-forked, so its `browser` export condition hands
|
|
8
|
-
* web consumers the real implementation while native gets the no-op. A compiled
|
|
9
|
-
* `lib/module/provider/index.js` cannot benefit from that condition (it imports
|
|
10
|
-
* a relative path, not the package subpath), so the platform choice is made
|
|
11
|
-
* here by FILENAME instead: Metro picks `scroll-provider.web.ts` on web, and
|
|
12
|
-
* every web bundler that resolves `.web.js` picks the compiled sibling. Same
|
|
13
|
-
* mechanism the toast engine uses for `ToastHost.native.tsx`.
|
|
14
|
-
*/
|
|
15
|
-
export { ScrollRestorationProvider } from "../scroll/index.js";
|
|
16
|
-
//# sourceMappingURL=scroll-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["ScrollRestorationProvider"],"sourceRoot":"../../../src","sources":["provider/scroll-provider.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,yBAAyB,QAAQ,oBAAW","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["ScrollRestorationProvider"],"sourceRoot":"../../../src","sources":["provider/scroll-provider.web.ts"],"mappings":";;AAAA;AACA,SAASA,yBAAyB,QAAQ,wBAAqB","ignoreList":[]}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Native/default binding for the scroll-restoration provider used by
|
|
3
|
-
* {@link BloomProvider}.
|
|
4
|
-
*
|
|
5
|
-
* `@oxyhq/bloom/scroll` is web-forked, so its `browser` export condition hands
|
|
6
|
-
* web consumers the real implementation while native gets the no-op. A compiled
|
|
7
|
-
* `lib/module/provider/index.js` cannot benefit from that condition (it imports
|
|
8
|
-
* a relative path, not the package subpath), so the platform choice is made
|
|
9
|
-
* here by FILENAME instead: Metro picks `scroll-provider.web.ts` on web, and
|
|
10
|
-
* every web bundler that resolves `.web.js` picks the compiled sibling. Same
|
|
11
|
-
* mechanism the toast engine uses for `ToastHost.native.tsx`.
|
|
12
|
-
*/
|
|
13
|
-
export { ScrollRestorationProvider } from '../scroll';
|
|
14
|
-
//# sourceMappingURL=scroll-provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-provider.d.ts","sourceRoot":"","sources":["../../../../src/provider/scroll-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-provider.web.d.ts","sourceRoot":"","sources":["../../../../src/provider/scroll-provider.web.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Native/default binding for the scroll-restoration provider used by
|
|
3
|
-
* {@link BloomProvider}.
|
|
4
|
-
*
|
|
5
|
-
* `@oxyhq/bloom/scroll` is web-forked, so its `browser` export condition hands
|
|
6
|
-
* web consumers the real implementation while native gets the no-op. A compiled
|
|
7
|
-
* `lib/module/provider/index.js` cannot benefit from that condition (it imports
|
|
8
|
-
* a relative path, not the package subpath), so the platform choice is made
|
|
9
|
-
* here by FILENAME instead: Metro picks `scroll-provider.web.ts` on web, and
|
|
10
|
-
* every web bundler that resolves `.web.js` picks the compiled sibling. Same
|
|
11
|
-
* mechanism the toast engine uses for `ToastHost.native.tsx`.
|
|
12
|
-
*/
|
|
13
|
-
export { ScrollRestorationProvider } from '../scroll';
|
|
14
|
-
//# sourceMappingURL=scroll-provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-provider.d.ts","sourceRoot":"","sources":["../../../../src/provider/scroll-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-provider.web.d.ts","sourceRoot":"","sources":["../../../../src/provider/scroll-provider.web.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ScrollRestorationProvider,
|
|
3
|
-
useScrollRestoration,
|
|
4
|
-
} from '../scroll/index';
|
|
5
|
-
|
|
6
|
-
// The native barrel is a deliberate no-op: native-stack already preserves
|
|
7
|
-
// scroll. These tests pin that contract so a future refactor can't silently
|
|
8
|
-
// turn the native path into something that touches the DOM or throws.
|
|
9
|
-
|
|
10
|
-
describe('native scroll-restoration barrel', () => {
|
|
11
|
-
it('ScrollRestorationProvider renders its children unchanged', () => {
|
|
12
|
-
const child = { sentinel: true } as unknown as React.ReactElement;
|
|
13
|
-
expect(ScrollRestorationProvider({ children: child })).toBe(child);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it('useScrollRestoration is a no-op for any target/options', () => {
|
|
17
|
-
const ref = { current: null };
|
|
18
|
-
expect(() => useScrollRestoration(ref)).not.toThrow();
|
|
19
|
-
expect(() => useScrollRestoration('window')).not.toThrow();
|
|
20
|
-
expect(() =>
|
|
21
|
-
useScrollRestoration(ref, { key: 'feed', enabled: true }),
|
|
22
|
-
).not.toThrow();
|
|
23
|
-
expect(useScrollRestoration(ref)).toBeUndefined();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Native/default binding for the scroll-restoration provider used by
|
|
3
|
-
* {@link BloomProvider}.
|
|
4
|
-
*
|
|
5
|
-
* `@oxyhq/bloom/scroll` is web-forked, so its `browser` export condition hands
|
|
6
|
-
* web consumers the real implementation while native gets the no-op. A compiled
|
|
7
|
-
* `lib/module/provider/index.js` cannot benefit from that condition (it imports
|
|
8
|
-
* a relative path, not the package subpath), so the platform choice is made
|
|
9
|
-
* here by FILENAME instead: Metro picks `scroll-provider.web.ts` on web, and
|
|
10
|
-
* every web bundler that resolves `.web.js` picks the compiled sibling. Same
|
|
11
|
-
* mechanism the toast engine uses for `ToastHost.native.tsx`.
|
|
12
|
-
*/
|
|
13
|
-
export { ScrollRestorationProvider } from '../scroll';
|