radix-native 0.0.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 (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +51 -0
  3. package/dist/index.cjs +4323 -0
  4. package/dist/index.d.cts +861 -0
  5. package/dist/index.d.mts +861 -0
  6. package/dist/index.d.ts +861 -0
  7. package/dist/index.mjs +4285 -0
  8. package/package.json +51 -0
  9. package/src/components/actions/Button.tsx +337 -0
  10. package/src/components/actions/Checkbox.tsx +216 -0
  11. package/src/components/actions/CheckboxCards.tsx +257 -0
  12. package/src/components/actions/CheckboxGroup.tsx +249 -0
  13. package/src/components/actions/index.ts +4 -0
  14. package/src/components/layout/Box.tsx +108 -0
  15. package/src/components/layout/Flex.tsx +149 -0
  16. package/src/components/layout/Grid.tsx +224 -0
  17. package/src/components/layout/index.ts +9 -0
  18. package/src/components/playground/ThemeControls.tsx +456 -0
  19. package/src/components/playground/index.ts +1 -0
  20. package/src/components/typography/Blockquote.tsx +137 -0
  21. package/src/components/typography/Code.tsx +164 -0
  22. package/src/components/typography/Em.tsx +68 -0
  23. package/src/components/typography/Heading.tsx +136 -0
  24. package/src/components/typography/Kbd.tsx +162 -0
  25. package/src/components/typography/Link.tsx +173 -0
  26. package/src/components/typography/Quote.tsx +71 -0
  27. package/src/components/typography/Strong.tsx +70 -0
  28. package/src/components/typography/Text.tsx +140 -0
  29. package/src/components/typography/index.ts +9 -0
  30. package/src/hooks/useResolveColor.ts +24 -0
  31. package/src/hooks/useThemeContext.ts +11 -0
  32. package/src/index.ts +63 -0
  33. package/src/theme/Theme.tsx +12 -0
  34. package/src/theme/ThemeContext.ts +4 -0
  35. package/src/theme/ThemeImpl.tsx +54 -0
  36. package/src/theme/ThemeRoot.tsx +65 -0
  37. package/src/theme/createTheme.tsx +17 -0
  38. package/src/theme/resolveGrayColor.ts +38 -0
  39. package/src/theme/theme.types.ts +95 -0
  40. package/src/tokens/colors/amber.ts +28 -0
  41. package/src/tokens/colors/blue.ts +28 -0
  42. package/src/tokens/colors/bronze.ts +28 -0
  43. package/src/tokens/colors/brown.ts +28 -0
  44. package/src/tokens/colors/crimson.ts +28 -0
  45. package/src/tokens/colors/cyan.ts +28 -0
  46. package/src/tokens/colors/gold.ts +28 -0
  47. package/src/tokens/colors/grass.ts +28 -0
  48. package/src/tokens/colors/gray.ts +28 -0
  49. package/src/tokens/colors/green.ts +28 -0
  50. package/src/tokens/colors/index.ts +36 -0
  51. package/src/tokens/colors/indigo.ts +28 -0
  52. package/src/tokens/colors/iris.ts +28 -0
  53. package/src/tokens/colors/jade.ts +28 -0
  54. package/src/tokens/colors/lime.ts +28 -0
  55. package/src/tokens/colors/mauve.ts +28 -0
  56. package/src/tokens/colors/mint.ts +28 -0
  57. package/src/tokens/colors/olive.ts +28 -0
  58. package/src/tokens/colors/orange.ts +28 -0
  59. package/src/tokens/colors/pink.ts +28 -0
  60. package/src/tokens/colors/plum.ts +28 -0
  61. package/src/tokens/colors/purple.ts +28 -0
  62. package/src/tokens/colors/red.ts +28 -0
  63. package/src/tokens/colors/ruby.ts +28 -0
  64. package/src/tokens/colors/sage.ts +28 -0
  65. package/src/tokens/colors/sand.ts +28 -0
  66. package/src/tokens/colors/sky.ts +28 -0
  67. package/src/tokens/colors/slate.ts +28 -0
  68. package/src/tokens/colors/teal.ts +28 -0
  69. package/src/tokens/colors/tomato.ts +28 -0
  70. package/src/tokens/colors/types.ts +69 -0
  71. package/src/tokens/colors/violet.ts +28 -0
  72. package/src/tokens/colors/yellow.ts +28 -0
  73. package/src/tokens/index.ts +5 -0
  74. package/src/tokens/radius.ts +56 -0
  75. package/src/tokens/scaling.ts +10 -0
  76. package/src/tokens/spacing.ts +21 -0
  77. package/src/tokens/typography.ts +60 -0
  78. package/src/utils/applyScaling.ts +6 -0
  79. package/src/utils/classicEffect.ts +46 -0
  80. package/src/utils/resolveColor.ts +69 -0
  81. package/src/utils/resolveSpace.ts +13 -0
package/dist/index.cjs ADDED
@@ -0,0 +1,4323 @@
1
+ 'use strict';
2
+
3
+ const React = require('react');
4
+ const reactNative = require('react-native');
5
+
6
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
7
+
8
+ const React__default = /*#__PURE__*/_interopDefaultCompat(React);
9
+
10
+ const ThemeContext = React__default.createContext(void 0);
11
+
12
+ function resolveGrayColor(accentColor) {
13
+ switch (accentColor) {
14
+ case "tomato":
15
+ case "red":
16
+ case "ruby":
17
+ case "crimson":
18
+ case "pink":
19
+ case "plum":
20
+ case "purple":
21
+ case "violet":
22
+ return "mauve";
23
+ case "iris":
24
+ case "indigo":
25
+ case "blue":
26
+ case "sky":
27
+ case "cyan":
28
+ return "slate";
29
+ case "teal":
30
+ case "jade":
31
+ case "mint":
32
+ case "green":
33
+ return "sage";
34
+ case "grass":
35
+ case "lime":
36
+ return "olive";
37
+ case "gray":
38
+ return "gray";
39
+ case "yellow":
40
+ case "amber":
41
+ case "orange":
42
+ case "brown":
43
+ case "gold":
44
+ case "bronze":
45
+ return "sand";
46
+ }
47
+ }
48
+
49
+ function ThemeRoot({
50
+ appearance: appearanceProp = "inherit",
51
+ accentColor: accentColorProp = "indigo",
52
+ grayColor: grayColorProp = "auto",
53
+ radius: radiusProp = "medium",
54
+ scaling: scalingProp = "100%",
55
+ fonts: fontsProp = {},
56
+ colorOverrides: colorOverridesProp = {},
57
+ children
58
+ }) {
59
+ const systemColorScheme = reactNative.useColorScheme();
60
+ const [appearance, setAppearance] = React__default.useState(
61
+ () => appearanceProp === "inherit" ? systemColorScheme === "dark" ? "dark" : "light" : appearanceProp
62
+ );
63
+ const [accentColor, setAccentColor] = React__default.useState(accentColorProp);
64
+ const [grayColor, setGrayColor] = React__default.useState(grayColorProp);
65
+ const [radius, setRadius] = React__default.useState(radiusProp);
66
+ const [scaling, setScaling] = React__default.useState(scalingProp);
67
+ React__default.useEffect(() => {
68
+ setAppearance(
69
+ appearanceProp === "inherit" ? systemColorScheme === "dark" ? "dark" : "light" : appearanceProp
70
+ );
71
+ }, [appearanceProp, systemColorScheme]);
72
+ React__default.useEffect(() => {
73
+ setAccentColor(accentColorProp);
74
+ }, [accentColorProp]);
75
+ React__default.useEffect(() => {
76
+ setGrayColor(grayColorProp);
77
+ }, [grayColorProp]);
78
+ React__default.useEffect(() => {
79
+ setRadius(radiusProp);
80
+ }, [radiusProp]);
81
+ React__default.useEffect(() => {
82
+ setScaling(scalingProp);
83
+ }, [scalingProp]);
84
+ const resolvedGrayColor = grayColor === "auto" ? resolveGrayColor(accentColor) : grayColor;
85
+ const value = React__default.useMemo(
86
+ () => ({
87
+ appearance,
88
+ accentColor,
89
+ grayColor,
90
+ resolvedGrayColor,
91
+ radius,
92
+ scaling,
93
+ fonts: fontsProp,
94
+ colorOverrides: colorOverridesProp,
95
+ onAppearanceChange: setAppearance,
96
+ onAccentColorChange: setAccentColor,
97
+ onGrayColorChange: setGrayColor,
98
+ onRadiusChange: setRadius,
99
+ onScalingChange: setScaling
100
+ }),
101
+ [appearance, accentColor, grayColor, resolvedGrayColor, radius, scaling, fontsProp, colorOverridesProp]
102
+ );
103
+ return /* @__PURE__ */ React__default.createElement(ThemeContext.Provider, { value }, children);
104
+ }
105
+ ThemeRoot.displayName = "ThemeRoot";
106
+
107
+ function ThemeImpl({
108
+ appearance: appearanceProp,
109
+ accentColor: accentColorProp,
110
+ grayColor: grayColorProp,
111
+ radius: radiusProp,
112
+ scaling: scalingProp,
113
+ fonts: fontsProp,
114
+ colorOverrides: colorOverridesProp,
115
+ children
116
+ }) {
117
+ const parent = React__default.useContext(ThemeContext);
118
+ const appearance = appearanceProp !== void 0 && appearanceProp !== "inherit" ? appearanceProp : parent.appearance;
119
+ const accentColor = accentColorProp ?? parent.accentColor;
120
+ const grayColor = grayColorProp ?? parent.resolvedGrayColor;
121
+ const radius = radiusProp ?? parent.radius;
122
+ const scaling = scalingProp ?? parent.scaling;
123
+ const resolvedGrayColor = grayColor === "auto" ? resolveGrayColor(accentColor) : grayColor;
124
+ const value = React__default.useMemo(
125
+ () => ({
126
+ appearance,
127
+ accentColor,
128
+ grayColor,
129
+ resolvedGrayColor,
130
+ radius,
131
+ scaling,
132
+ fonts: fontsProp ?? parent.fonts,
133
+ colorOverrides: colorOverridesProp ?? parent.colorOverrides,
134
+ // Handlers always bubble up to ThemeRoot
135
+ onAppearanceChange: parent.onAppearanceChange,
136
+ onAccentColorChange: parent.onAccentColorChange,
137
+ onGrayColorChange: parent.onGrayColorChange,
138
+ onRadiusChange: parent.onRadiusChange,
139
+ onScalingChange: parent.onScalingChange
140
+ }),
141
+ [appearance, accentColor, grayColor, resolvedGrayColor, radius, scaling, fontsProp, colorOverridesProp, parent]
142
+ );
143
+ return /* @__PURE__ */ React__default.createElement(ThemeContext.Provider, { value }, children);
144
+ }
145
+ ThemeImpl.displayName = "ThemeImpl";
146
+
147
+ function Theme(props) {
148
+ const context = React__default.useContext(ThemeContext);
149
+ const isRoot = context === void 0;
150
+ return isRoot ? /* @__PURE__ */ React__default.createElement(ThemeRoot, { ...props }) : /* @__PURE__ */ React__default.createElement(ThemeImpl, { ...props });
151
+ }
152
+ Theme.displayName = "Theme";
153
+
154
+ function createTheme(config) {
155
+ function ThemeProvider({ children }) {
156
+ return /* @__PURE__ */ React__default.createElement(Theme, { ...config }, children);
157
+ }
158
+ ThemeProvider.displayName = "ThemeProvider";
159
+ return ThemeProvider;
160
+ }
161
+
162
+ function useThemeContext() {
163
+ const context = React__default.useContext(ThemeContext);
164
+ if (context === void 0) {
165
+ throw new Error("`useThemeContext` must be used within a `Theme`");
166
+ }
167
+ return context;
168
+ }
169
+
170
+ const tomato = {
171
+ light: {
172
+ 1: "#fffcfc",
173
+ 2: "#fff8f7",
174
+ 3: "#feebe7",
175
+ 4: "#ffdcd3",
176
+ 5: "#ffcdc2",
177
+ 6: "#fdbdaf",
178
+ 7: "#f5a898",
179
+ 8: "#ec8e7b",
180
+ 9: "#e54d2e",
181
+ 10: "#dd4425",
182
+ 11: "#d13415",
183
+ 12: "#5c271f",
184
+ a1: "#ff000003",
185
+ a2: "#ff200008",
186
+ a3: "#f52b0018",
187
+ a4: "#ff35002c",
188
+ a5: "#ff2e003d",
189
+ a6: "#f92d0050",
190
+ a7: "#e7280067",
191
+ a8: "#db250084",
192
+ a9: "#df2600d1",
193
+ a10: "#d72400da",
194
+ a11: "#cd2200ea",
195
+ a12: "#460900e0",
196
+ contrast: "#ffffff",
197
+ surface: "#fff6f5cc",
198
+ indicator: "#e54d2e",
199
+ track: "#e54d2e"
200
+ },
201
+ dark: {
202
+ 1: "#181111",
203
+ 2: "#1f1513",
204
+ 3: "#391714",
205
+ 4: "#4e1511",
206
+ 5: "#5e1c16",
207
+ 6: "#6e2920",
208
+ 7: "#853a2d",
209
+ 8: "#ac4d39",
210
+ 9: "#e54d2e",
211
+ 10: "#ec6142",
212
+ 11: "#ff977d",
213
+ 12: "#fbd3cb",
214
+ a1: "#f1121208",
215
+ a2: "#ff55330f",
216
+ a3: "#ff35232b",
217
+ a4: "#fd201142",
218
+ a5: "#fe332153",
219
+ a6: "#ff4f3864",
220
+ a7: "#fd644a7d",
221
+ a8: "#fe6d4ea7",
222
+ a9: "#fe5431e4",
223
+ a10: "#ff6847eb",
224
+ a11: "#ff977d",
225
+ a12: "#ffd6cefb",
226
+ contrast: "#ffffff",
227
+ surface: "#2d191580",
228
+ indicator: "#e54d2e",
229
+ track: "#e54d2e"
230
+ }
231
+ };
232
+
233
+ const red = {
234
+ light: {
235
+ 1: "#fffcfc",
236
+ 2: "#fff7f7",
237
+ 3: "#feebec",
238
+ 4: "#ffdbdc",
239
+ 5: "#ffcdce",
240
+ 6: "#fdbdbe",
241
+ 7: "#f4a9aa",
242
+ 8: "#eb8e90",
243
+ 9: "#e5484d",
244
+ 10: "#dc3e42",
245
+ 11: "#ce2c31",
246
+ 12: "#641723",
247
+ a1: "#ff000003",
248
+ a2: "#ff000008",
249
+ a3: "#f3000d14",
250
+ a4: "#ff000824",
251
+ a5: "#ff000632",
252
+ a6: "#f8000442",
253
+ a7: "#df000356",
254
+ a8: "#d2000571",
255
+ a9: "#db0007b7",
256
+ a10: "#d10005c1",
257
+ a11: "#c40006d3",
258
+ a12: "#55000de8",
259
+ contrast: "#ffffff",
260
+ surface: "#fff5f5cc",
261
+ indicator: "#e5484d",
262
+ track: "#e5484d"
263
+ },
264
+ dark: {
265
+ 1: "#191111",
266
+ 2: "#201314",
267
+ 3: "#3b1219",
268
+ 4: "#500f1c",
269
+ 5: "#611623",
270
+ 6: "#72232d",
271
+ 7: "#8c333a",
272
+ 8: "#b54548",
273
+ 9: "#e5484d",
274
+ 10: "#ec5d5e",
275
+ 11: "#ff9592",
276
+ 12: "#ffd1d9",
277
+ a1: "#f4121209",
278
+ a2: "#f22f3e11",
279
+ a3: "#ff173f2d",
280
+ a4: "#fe0a3b44",
281
+ a5: "#ff204756",
282
+ a6: "#ff3e5668",
283
+ a7: "#ff536184",
284
+ a8: "#ff5d61b0",
285
+ a9: "#fe4e54e4",
286
+ a10: "#ff6465eb",
287
+ a11: "#ff9592",
288
+ a12: "#ffd1d9",
289
+ contrast: "#ffffff",
290
+ surface: "#2f151780",
291
+ indicator: "#e5484d",
292
+ track: "#e5484d"
293
+ }
294
+ };
295
+
296
+ const ruby = {
297
+ light: {
298
+ 1: "#fffcfd",
299
+ 2: "#fff7f8",
300
+ 3: "#feeaed",
301
+ 4: "#ffdce1",
302
+ 5: "#ffced6",
303
+ 6: "#f8bfc8",
304
+ 7: "#efacb8",
305
+ 8: "#e592a3",
306
+ 9: "#e54666",
307
+ 10: "#dc3b5d",
308
+ 11: "#ca244d",
309
+ 12: "#64172b",
310
+ a1: "#ff005503",
311
+ a2: "#ff002008",
312
+ a3: "#f3002515",
313
+ a4: "#ff002523",
314
+ a5: "#ff002a31",
315
+ a6: "#e4002440",
316
+ a7: "#ce002553",
317
+ a8: "#c300286d",
318
+ a9: "#db002cb9",
319
+ a10: "#d2002cc4",
320
+ a11: "#c10030db",
321
+ a12: "#550016e8",
322
+ contrast: "#ffffff",
323
+ surface: "#fff5f6cc",
324
+ indicator: "#e54666",
325
+ track: "#e54666"
326
+ },
327
+ dark: {
328
+ 1: "#191113",
329
+ 2: "#1e1517",
330
+ 3: "#3a141e",
331
+ 4: "#4e1325",
332
+ 5: "#5e1a2e",
333
+ 6: "#6f2539",
334
+ 7: "#883447",
335
+ 8: "#b3445a",
336
+ 9: "#e54666",
337
+ 10: "#ec5a72",
338
+ 11: "#ff949d",
339
+ 12: "#fed2e1",
340
+ a1: "#f4124a09",
341
+ a2: "#fe5a7f0e",
342
+ a3: "#ff235d2c",
343
+ a4: "#fd195e42",
344
+ a5: "#fe2d6b53",
345
+ a6: "#ff447665",
346
+ a7: "#ff577d80",
347
+ a8: "#ff5c7cae",
348
+ a9: "#fe4c70e4",
349
+ a10: "#ff617beb",
350
+ a11: "#ff949d",
351
+ a12: "#ffd3e2fe",
352
+ contrast: "#ffffff",
353
+ surface: "#2b191d80",
354
+ indicator: "#e54666",
355
+ track: "#e54666"
356
+ }
357
+ };
358
+
359
+ const crimson = {
360
+ light: {
361
+ 1: "#fffcfd",
362
+ 2: "#fef7f9",
363
+ 3: "#ffe9f0",
364
+ 4: "#fedce7",
365
+ 5: "#facedd",
366
+ 6: "#f3bed1",
367
+ 7: "#eaacc3",
368
+ 8: "#e093b2",
369
+ 9: "#e93d82",
370
+ 10: "#df3478",
371
+ 11: "#cb1d63",
372
+ 12: "#621639",
373
+ a1: "#ff005503",
374
+ a2: "#e0004008",
375
+ a3: "#ff005216",
376
+ a4: "#f8005123",
377
+ a5: "#e5004f31",
378
+ a6: "#d0004b41",
379
+ a7: "#bf004753",
380
+ a8: "#b6004a6c",
381
+ a9: "#e2005bc2",
382
+ a10: "#d70056cb",
383
+ a11: "#c4004fe2",
384
+ a12: "#530026e9",
385
+ contrast: "#ffffff",
386
+ surface: "#fef5f8cc",
387
+ indicator: "#e93d82",
388
+ track: "#e93d82"
389
+ },
390
+ dark: {
391
+ 1: "#191114",
392
+ 2: "#201318",
393
+ 3: "#381525",
394
+ 4: "#4d122f",
395
+ 5: "#5c1839",
396
+ 6: "#6d2545",
397
+ 7: "#873356",
398
+ 8: "#b0436e",
399
+ 9: "#e93d82",
400
+ 10: "#ee518a",
401
+ 11: "#ff92ad",
402
+ 12: "#fdd3e8",
403
+ a1: "#f4126709",
404
+ a2: "#f22f7a11",
405
+ a3: "#fe2a8b2a",
406
+ a4: "#fd158741",
407
+ a5: "#fd278f51",
408
+ a6: "#fe459763",
409
+ a7: "#fd559b7f",
410
+ a8: "#fe5b9bab",
411
+ a9: "#fe418de8",
412
+ a10: "#ff5693ed",
413
+ a11: "#ff92ad",
414
+ a12: "#ffd5eafd",
415
+ contrast: "#ffffff",
416
+ surface: "#2f151f80",
417
+ indicator: "#e93d82",
418
+ track: "#e93d82"
419
+ }
420
+ };
421
+
422
+ const pink = {
423
+ light: {
424
+ 1: "#fffcfe",
425
+ 2: "#fef7fb",
426
+ 3: "#fee9f5",
427
+ 4: "#fbdcef",
428
+ 5: "#f6cee7",
429
+ 6: "#efbfdd",
430
+ 7: "#e7acd0",
431
+ 8: "#dd93c2",
432
+ 9: "#d6409f",
433
+ 10: "#cf3897",
434
+ 11: "#c2298a",
435
+ 12: "#651249",
436
+ a1: "#ff00aa03",
437
+ a2: "#e0008008",
438
+ a3: "#f4008c16",
439
+ a4: "#e2008b23",
440
+ a5: "#d1008331",
441
+ a6: "#c0007840",
442
+ a7: "#b6006f53",
443
+ a8: "#af006f6c",
444
+ a9: "#c8007fbf",
445
+ a10: "#c2007ac7",
446
+ a11: "#b60074d6",
447
+ a12: "#59003bed",
448
+ contrast: "#ffffff",
449
+ surface: "#fef5facc",
450
+ indicator: "#d6409f",
451
+ track: "#d6409f"
452
+ },
453
+ dark: {
454
+ 1: "#191117",
455
+ 2: "#21121d",
456
+ 3: "#37172f",
457
+ 4: "#4b143d",
458
+ 5: "#591c47",
459
+ 6: "#692955",
460
+ 7: "#833869",
461
+ 8: "#a84885",
462
+ 9: "#d6409f",
463
+ 10: "#de51a8",
464
+ 11: "#ff8dcc",
465
+ 12: "#fdd1ea",
466
+ a1: "#f412bc09",
467
+ a2: "#f420bb12",
468
+ a3: "#fe37cc29",
469
+ a4: "#fc1ec43f",
470
+ a5: "#fd35c24e",
471
+ a6: "#fd51c75f",
472
+ a7: "#fd62c87b",
473
+ a8: "#ff68c8a2",
474
+ a9: "#fe49bcd4",
475
+ a10: "#ff5cc0dc",
476
+ a11: "#ff8dcc",
477
+ a12: "#ffd3ecfd",
478
+ contrast: "#ffffff",
479
+ surface: "#31132980",
480
+ indicator: "#d6409f",
481
+ track: "#d6409f"
482
+ }
483
+ };
484
+
485
+ const plum = {
486
+ light: {
487
+ 1: "#fefcff",
488
+ 2: "#fdf7fd",
489
+ 3: "#fbebfb",
490
+ 4: "#f7def8",
491
+ 5: "#f2d1f3",
492
+ 6: "#e9c2ec",
493
+ 7: "#deade3",
494
+ 8: "#cf91d8",
495
+ 9: "#ab4aba",
496
+ 10: "#a144af",
497
+ 11: "#953ea3",
498
+ 12: "#53195d",
499
+ a1: "#aa00ff03",
500
+ a2: "#c000c008",
501
+ a3: "#cc00cc14",
502
+ a4: "#c200c921",
503
+ a5: "#b700bd2e",
504
+ a6: "#a400b03d",
505
+ a7: "#9900a852",
506
+ a8: "#9000a56e",
507
+ a9: "#89009eb5",
508
+ a10: "#7f0092bb",
509
+ a11: "#730086c1",
510
+ a12: "#40004be6",
511
+ contrast: "#ffffff",
512
+ surface: "#fdf5fdcc",
513
+ indicator: "#ab4aba",
514
+ track: "#ab4aba"
515
+ },
516
+ dark: {
517
+ 1: "#181118",
518
+ 2: "#201320",
519
+ 3: "#351a35",
520
+ 4: "#451d47",
521
+ 5: "#512454",
522
+ 6: "#5e3061",
523
+ 7: "#734079",
524
+ 8: "#92549c",
525
+ 9: "#ab4aba",
526
+ 10: "#b658c4",
527
+ 11: "#e796f3",
528
+ 12: "#f4d4f4",
529
+ a1: "#f112f108",
530
+ a2: "#f22ff211",
531
+ a3: "#fd4cfd27",
532
+ a4: "#f646ff3a",
533
+ a5: "#f455ff48",
534
+ a6: "#f66dff56",
535
+ a7: "#f07cfd70",
536
+ a8: "#ee84ff95",
537
+ a9: "#e961feb6",
538
+ a10: "#ed70ffc0",
539
+ a11: "#f19cfef3",
540
+ a12: "#feddfef4",
541
+ contrast: "#ffffff",
542
+ surface: "#2f152f80",
543
+ indicator: "#ab4aba",
544
+ track: "#ab4aba"
545
+ }
546
+ };
547
+
548
+ const purple = {
549
+ light: {
550
+ 1: "#fefcfe",
551
+ 2: "#fbf7fe",
552
+ 3: "#f7edfe",
553
+ 4: "#f2e2fc",
554
+ 5: "#ead5f9",
555
+ 6: "#e0c4f4",
556
+ 7: "#d1afec",
557
+ 8: "#be93e4",
558
+ 9: "#8e4ec6",
559
+ 10: "#8347b9",
560
+ 11: "#8145b5",
561
+ 12: "#402060",
562
+ a1: "#aa00aa03",
563
+ a2: "#8000e008",
564
+ a3: "#8e00f112",
565
+ a4: "#8d00e51d",
566
+ a5: "#8000db2a",
567
+ a6: "#7a01d03b",
568
+ a7: "#6d00c350",
569
+ a8: "#6600c06c",
570
+ a9: "#5c00adb1",
571
+ a10: "#53009eb8",
572
+ a11: "#52009aba",
573
+ a12: "#250049df",
574
+ contrast: "#ffffff",
575
+ surface: "#faf5fecc",
576
+ indicator: "#8e4ec6",
577
+ track: "#8e4ec6"
578
+ },
579
+ dark: {
580
+ 1: "#18111b",
581
+ 2: "#1e1523",
582
+ 3: "#301c3b",
583
+ 4: "#3d224e",
584
+ 5: "#48295c",
585
+ 6: "#54346b",
586
+ 7: "#664282",
587
+ 8: "#8457aa",
588
+ 9: "#8e4ec6",
589
+ 10: "#9a5cd0",
590
+ 11: "#d19dff",
591
+ 12: "#ecd9fa",
592
+ a1: "#b412f90b",
593
+ a2: "#b744f714",
594
+ a3: "#c150ff2d",
595
+ a4: "#bb53fd42",
596
+ a5: "#be5cfd51",
597
+ a6: "#c16dfd61",
598
+ a7: "#c378fd7a",
599
+ a8: "#c47effa4",
600
+ a9: "#b661ffc2",
601
+ a10: "#bc6fffcd",
602
+ a11: "#d19dff",
603
+ a12: "#f1ddfffa",
604
+ contrast: "#ffffff",
605
+ surface: "#2b173580",
606
+ indicator: "#8e4ec6",
607
+ track: "#8e4ec6"
608
+ }
609
+ };
610
+
611
+ const violet = {
612
+ light: {
613
+ 1: "#fdfcfe",
614
+ 2: "#faf8ff",
615
+ 3: "#f4f0fe",
616
+ 4: "#ebe4ff",
617
+ 5: "#e1d9ff",
618
+ 6: "#d4cafe",
619
+ 7: "#c2b5f5",
620
+ 8: "#aa99ec",
621
+ 9: "#6e56cf",
622
+ 10: "#654dc4",
623
+ 11: "#6550b9",
624
+ 12: "#2f265f",
625
+ a1: "#5500aa03",
626
+ a2: "#4900ff07",
627
+ a3: "#4400ee0f",
628
+ a4: "#4300ff1b",
629
+ a5: "#3600ff26",
630
+ a6: "#3100fb35",
631
+ a7: "#2d01dd4a",
632
+ a8: "#2b00d066",
633
+ a9: "#2400b7a9",
634
+ a10: "#2300abb2",
635
+ a11: "#1f0099af",
636
+ a12: "#0b0043d9",
637
+ contrast: "#ffffff",
638
+ surface: "#f9f6ffcc",
639
+ indicator: "#6e56cf",
640
+ track: "#6e56cf"
641
+ },
642
+ dark: {
643
+ 1: "#14121f",
644
+ 2: "#1b1525",
645
+ 3: "#291f43",
646
+ 4: "#33255b",
647
+ 5: "#3c2e69",
648
+ 6: "#473876",
649
+ 7: "#56468b",
650
+ 8: "#6958ad",
651
+ 9: "#6e56cf",
652
+ 10: "#7d66d9",
653
+ 11: "#baa7ff",
654
+ 12: "#e2ddfe",
655
+ a1: "#4422ff0f",
656
+ a2: "#853ff916",
657
+ a3: "#8354fe36",
658
+ a4: "#7d51fd50",
659
+ a5: "#845ffd5f",
660
+ a6: "#8f6cfd6d",
661
+ a7: "#9879ff83",
662
+ a8: "#977dfea8",
663
+ a9: "#8668ffcc",
664
+ a10: "#9176fed7",
665
+ a11: "#baa7ff",
666
+ a12: "#e3defffe",
667
+ contrast: "#ffffff",
668
+ surface: "#25193980",
669
+ indicator: "#6e56cf",
670
+ track: "#6e56cf"
671
+ }
672
+ };
673
+
674
+ const iris = {
675
+ light: {
676
+ 1: "#fdfdff",
677
+ 2: "#f8f8ff",
678
+ 3: "#f0f1fe",
679
+ 4: "#e6e7ff",
680
+ 5: "#dadcff",
681
+ 6: "#cbcdff",
682
+ 7: "#b8baf8",
683
+ 8: "#9b9ef0",
684
+ 9: "#5b5bd6",
685
+ 10: "#5151cd",
686
+ 11: "#5753c6",
687
+ 12: "#272962",
688
+ a1: "#0000ff02",
689
+ a2: "#0000ff07",
690
+ a3: "#0011ee0f",
691
+ a4: "#000bff19",
692
+ a5: "#000eff25",
693
+ a6: "#000aff34",
694
+ a7: "#0008e647",
695
+ a8: "#0008d964",
696
+ a9: "#0000c0a4",
697
+ a10: "#0000b6ae",
698
+ a11: "#0600abac",
699
+ a12: "#000246d8",
700
+ contrast: "#ffffff",
701
+ surface: "#f6f6ffcc",
702
+ indicator: "#5b5bd6",
703
+ track: "#5b5bd6"
704
+ },
705
+ dark: {
706
+ 1: "#13131e",
707
+ 2: "#171625",
708
+ 3: "#202248",
709
+ 4: "#262a65",
710
+ 5: "#303374",
711
+ 6: "#3d3e82",
712
+ 7: "#4a4a95",
713
+ 8: "#5958b1",
714
+ 9: "#5b5bd6",
715
+ 10: "#6e6ade",
716
+ 11: "#b1a9ff",
717
+ 12: "#e0dffe",
718
+ a1: "#3636fe0e",
719
+ a2: "#564bf916",
720
+ a3: "#525bff3b",
721
+ a4: "#4d58ff5a",
722
+ a5: "#5b62fd6b",
723
+ a6: "#6d6ffd7a",
724
+ a7: "#7777fe8e",
725
+ a8: "#7b7afeac",
726
+ a9: "#6a6afed4",
727
+ a10: "#7d79ffdc",
728
+ a11: "#b1a9ff",
729
+ a12: "#e1e0fffe",
730
+ contrast: "#ffffff",
731
+ surface: "#1d1b3980",
732
+ indicator: "#5b5bd6",
733
+ track: "#5b5bd6"
734
+ }
735
+ };
736
+
737
+ const indigo = {
738
+ light: {
739
+ 1: "#fdfdfe",
740
+ 2: "#f7f9ff",
741
+ 3: "#edf2fe",
742
+ 4: "#e1e9ff",
743
+ 5: "#d2deff",
744
+ 6: "#c1d0ff",
745
+ 7: "#abbdf9",
746
+ 8: "#8da4ef",
747
+ 9: "#3e63dd",
748
+ 10: "#3358d4",
749
+ 11: "#3a5bc7",
750
+ 12: "#1f2d5c",
751
+ a1: "#00008002",
752
+ a2: "#0040ff08",
753
+ a3: "#0047f112",
754
+ a4: "#0044ff1e",
755
+ a5: "#0044ff2d",
756
+ a6: "#003eff3e",
757
+ a7: "#0037ed54",
758
+ a8: "#0034dc72",
759
+ a9: "#0031d2c1",
760
+ a10: "#002ec9cc",
761
+ a11: "#002bb7c5",
762
+ a12: "#001046e0",
763
+ contrast: "#ffffff",
764
+ surface: "#f5f8ffcc",
765
+ indicator: "#3e63dd",
766
+ track: "#3e63dd"
767
+ },
768
+ dark: {
769
+ 1: "#11131f",
770
+ 2: "#141726",
771
+ 3: "#182449",
772
+ 4: "#1d2e62",
773
+ 5: "#253974",
774
+ 6: "#304384",
775
+ 7: "#3a4f97",
776
+ 8: "#435db1",
777
+ 9: "#3e63dd",
778
+ 10: "#5472e4",
779
+ 11: "#9eb1ff",
780
+ 12: "#d6e1ff",
781
+ a1: "#1133ff0f",
782
+ a2: "#3354fa17",
783
+ a3: "#2f62ff3c",
784
+ a4: "#3566ff57",
785
+ a5: "#4171fd6b",
786
+ a6: "#5178fd7c",
787
+ a7: "#5a7fff90",
788
+ a8: "#5b81feac",
789
+ a9: "#4671ffdb",
790
+ a10: "#5c7efee3",
791
+ a11: "#9eb1ff",
792
+ a12: "#d6e1ff",
793
+ contrast: "#ffffff",
794
+ surface: "#171d3b80",
795
+ indicator: "#3e63dd",
796
+ track: "#3e63dd"
797
+ }
798
+ };
799
+
800
+ const blue = {
801
+ light: {
802
+ 1: "#fbfdff",
803
+ 2: "#f4faff",
804
+ 3: "#e6f4fe",
805
+ 4: "#d5efff",
806
+ 5: "#c2e5ff",
807
+ 6: "#acd8fc",
808
+ 7: "#8ec8f6",
809
+ 8: "#5eb1ef",
810
+ 9: "#0090ff",
811
+ 10: "#0588f0",
812
+ 11: "#0d74ce",
813
+ 12: "#113264",
814
+ a1: "#0080ff04",
815
+ a2: "#008cff0b",
816
+ a3: "#008ff519",
817
+ a4: "#009eff2a",
818
+ a5: "#0093ff3d",
819
+ a6: "#0088f653",
820
+ a7: "#0083eb71",
821
+ a8: "#0084e6a1",
822
+ a9: "#0090ff",
823
+ a10: "#0086f0fa",
824
+ a11: "#006dcbf2",
825
+ a12: "#002359ee",
826
+ contrast: "#ffffff",
827
+ surface: "#f1f9ffcc",
828
+ indicator: "#0090ff",
829
+ track: "#0090ff"
830
+ },
831
+ dark: {
832
+ 1: "#0d1520",
833
+ 2: "#111927",
834
+ 3: "#0d2847",
835
+ 4: "#003362",
836
+ 5: "#004074",
837
+ 6: "#104d87",
838
+ 7: "#205d9e",
839
+ 8: "#2870bd",
840
+ 9: "#0090ff",
841
+ 10: "#3b9eff",
842
+ 11: "#70b8ff",
843
+ 12: "#c2e6ff",
844
+ a1: "#004df211",
845
+ a2: "#1166fb18",
846
+ a3: "#0077ff3a",
847
+ a4: "#0075ff57",
848
+ a5: "#0081fd6b",
849
+ a6: "#0f89fd7f",
850
+ a7: "#2a91fe98",
851
+ a8: "#3094feb9",
852
+ a9: "#0090ff",
853
+ a10: "#3b9eff",
854
+ a11: "#70b8ff",
855
+ a12: "#c2e6ff",
856
+ contrast: "#ffffff",
857
+ surface: "#11213d80",
858
+ indicator: "#0090ff",
859
+ track: "#0090ff"
860
+ }
861
+ };
862
+
863
+ const cyan = {
864
+ light: {
865
+ 1: "#fafdfe",
866
+ 2: "#f2fafb",
867
+ 3: "#def7f9",
868
+ 4: "#caf1f6",
869
+ 5: "#b5e9f0",
870
+ 6: "#9ddde7",
871
+ 7: "#7dcedc",
872
+ 8: "#3db9cf",
873
+ 9: "#00a2c7",
874
+ 10: "#0797b9",
875
+ 11: "#107d98",
876
+ 12: "#0d3c48",
877
+ a1: "#0099cc05",
878
+ a2: "#009db10d",
879
+ a3: "#00c2d121",
880
+ a4: "#00bcd435",
881
+ a5: "#01b4cc4a",
882
+ a6: "#00a7c162",
883
+ a7: "#009fbb82",
884
+ a8: "#00a3c0c2",
885
+ a9: "#00a2c7",
886
+ a10: "#0094b7f8",
887
+ a11: "#007491ef",
888
+ a12: "#00323ef2",
889
+ contrast: "#ffffff",
890
+ surface: "#eff9facc",
891
+ indicator: "#00a2c7",
892
+ track: "#00a2c7"
893
+ },
894
+ dark: {
895
+ 1: "#0b161a",
896
+ 2: "#101b20",
897
+ 3: "#082c36",
898
+ 4: "#003848",
899
+ 5: "#004558",
900
+ 6: "#045468",
901
+ 7: "#12677e",
902
+ 8: "#11809c",
903
+ 9: "#00a2c7",
904
+ 10: "#23afd0",
905
+ 11: "#4ccce6",
906
+ 12: "#b6ecf7",
907
+ a1: "#0091f70a",
908
+ a2: "#02a7f211",
909
+ a3: "#00befd28",
910
+ a4: "#00baff3b",
911
+ a5: "#00befd4d",
912
+ a6: "#00c7fd5e",
913
+ a7: "#14cdff75",
914
+ a8: "#11cfff95",
915
+ a9: "#00cfffc3",
916
+ a10: "#28d6ffcd",
917
+ a11: "#52e1fee5",
918
+ a12: "#bbf3fef7",
919
+ contrast: "#ffffff",
920
+ surface: "#11252d80",
921
+ indicator: "#00a2c7",
922
+ track: "#00a2c7"
923
+ }
924
+ };
925
+
926
+ const teal = {
927
+ light: {
928
+ 1: "#fafefd",
929
+ 2: "#f3fbf9",
930
+ 3: "#e0f8f3",
931
+ 4: "#ccf3ea",
932
+ 5: "#b8eae0",
933
+ 6: "#a1ded2",
934
+ 7: "#83cdc1",
935
+ 8: "#53b9ab",
936
+ 9: "#12a594",
937
+ 10: "#0d9b8a",
938
+ 11: "#008573",
939
+ 12: "#0d3d38",
940
+ a1: "#00cc9905",
941
+ a2: "#00aa800c",
942
+ a3: "#00c69d1f",
943
+ a4: "#00c39633",
944
+ a5: "#00b49047",
945
+ a6: "#00a6855e",
946
+ a7: "#0099807c",
947
+ a8: "#009783ac",
948
+ a9: "#009e8ced",
949
+ a10: "#009684f2",
950
+ a11: "#008573",
951
+ a12: "#00332df2",
952
+ contrast: "#ffffff",
953
+ surface: "#f0faf8cc",
954
+ indicator: "#12a594",
955
+ track: "#12a594"
956
+ },
957
+ dark: {
958
+ 1: "#0d1514",
959
+ 2: "#111c1b",
960
+ 3: "#0d2d2a",
961
+ 4: "#023b37",
962
+ 5: "#084843",
963
+ 6: "#145750",
964
+ 7: "#1c6961",
965
+ 8: "#207e73",
966
+ 9: "#12a594",
967
+ 10: "#0eb39e",
968
+ 11: "#0bd8b6",
969
+ 12: "#adf0dd",
970
+ a1: "#00deab05",
971
+ a2: "#12fbe60c",
972
+ a3: "#00ffe61e",
973
+ a4: "#00ffe92d",
974
+ a5: "#00ffea3b",
975
+ a6: "#1cffe84b",
976
+ a7: "#2efde85f",
977
+ a8: "#32ffe775",
978
+ a9: "#13ffe49f",
979
+ a10: "#0dffe0ae",
980
+ a11: "#0afed5d6",
981
+ a12: "#b8ffebef",
982
+ contrast: "#ffffff",
983
+ surface: "#13272580",
984
+ indicator: "#12a594",
985
+ track: "#12a594"
986
+ }
987
+ };
988
+
989
+ const jade = {
990
+ light: {
991
+ 1: "#fbfefd",
992
+ 2: "#f4fbf7",
993
+ 3: "#e6f7ed",
994
+ 4: "#d6f1e3",
995
+ 5: "#c3e9d7",
996
+ 6: "#acdec8",
997
+ 7: "#8bceb6",
998
+ 8: "#56ba9f",
999
+ 9: "#29a383",
1000
+ 10: "#26997b",
1001
+ 11: "#208368",
1002
+ 12: "#1d3b31",
1003
+ a1: "#00c08004",
1004
+ a2: "#00a3460b",
1005
+ a3: "#00ae4819",
1006
+ a4: "#00a85129",
1007
+ a5: "#00a2553c",
1008
+ a6: "#009a5753",
1009
+ a7: "#00945f74",
1010
+ a8: "#00976ea9",
1011
+ a9: "#00916bd6",
1012
+ a10: "#008764d9",
1013
+ a11: "#007152df",
1014
+ a12: "#002217e2",
1015
+ contrast: "#ffffff",
1016
+ surface: "#f1faf5cc",
1017
+ indicator: "#29a383",
1018
+ track: "#29a383"
1019
+ },
1020
+ dark: {
1021
+ 1: "#0d1512",
1022
+ 2: "#121c18",
1023
+ 3: "#0f2e22",
1024
+ 4: "#0b3b2c",
1025
+ 5: "#114837",
1026
+ 6: "#1b5745",
1027
+ 7: "#246854",
1028
+ 8: "#2a7e68",
1029
+ 9: "#29a383",
1030
+ 10: "#27b08b",
1031
+ 11: "#1fd8a4",
1032
+ 12: "#adf0d4",
1033
+ a1: "#00de4505",
1034
+ a2: "#27fba60c",
1035
+ a3: "#02f99920",
1036
+ a4: "#00ffaa2d",
1037
+ a5: "#11ffb63b",
1038
+ a6: "#34ffc24b",
1039
+ a7: "#45fdc75e",
1040
+ a8: "#48ffcf75",
1041
+ a9: "#38feca9d",
1042
+ a10: "#31fec7ab",
1043
+ a11: "#21fec0d6",
1044
+ a12: "#b8ffe1ef",
1045
+ contrast: "#ffffff",
1046
+ surface: "#13271f80",
1047
+ indicator: "#29a383",
1048
+ track: "#29a383"
1049
+ }
1050
+ };
1051
+
1052
+ const green = {
1053
+ light: {
1054
+ 1: "#fbfefc",
1055
+ 2: "#f4fbf6",
1056
+ 3: "#e6f6eb",
1057
+ 4: "#d6f1df",
1058
+ 5: "#c4e8d1",
1059
+ 6: "#adddc0",
1060
+ 7: "#8eceaa",
1061
+ 8: "#5bb98b",
1062
+ 9: "#30a46c",
1063
+ 10: "#2b9a66",
1064
+ 11: "#218358",
1065
+ 12: "#193b2d",
1066
+ a1: "#00c04004",
1067
+ a2: "#00a32f0b",
1068
+ a3: "#00a43319",
1069
+ a4: "#00a83829",
1070
+ a5: "#019c393b",
1071
+ a6: "#00963c52",
1072
+ a7: "#00914071",
1073
+ a8: "#00924ba4",
1074
+ a9: "#008f4acf",
1075
+ a10: "#008647d4",
1076
+ a11: "#00713fde",
1077
+ a12: "#002616e6",
1078
+ contrast: "#ffffff",
1079
+ surface: "#f1faf4cc",
1080
+ indicator: "#30a46c",
1081
+ track: "#30a46c"
1082
+ },
1083
+ dark: {
1084
+ 1: "#0e1512",
1085
+ 2: "#121b17",
1086
+ 3: "#132d21",
1087
+ 4: "#113b29",
1088
+ 5: "#174933",
1089
+ 6: "#20573e",
1090
+ 7: "#28684a",
1091
+ 8: "#2f7c57",
1092
+ 9: "#30a46c",
1093
+ 10: "#33b074",
1094
+ 11: "#3dd68c",
1095
+ 12: "#b1f1cb",
1096
+ a1: "#00de4505",
1097
+ a2: "#29f99d0b",
1098
+ a3: "#22ff991e",
1099
+ a4: "#11ff992d",
1100
+ a5: "#2bffa23c",
1101
+ a6: "#44ffaa4b",
1102
+ a7: "#50fdac5e",
1103
+ a8: "#54ffad73",
1104
+ a9: "#44ffa49e",
1105
+ a10: "#43fea4ab",
1106
+ a11: "#46fea5d4",
1107
+ a12: "#bbffd7f0",
1108
+ contrast: "#ffffff",
1109
+ surface: "#15251d80",
1110
+ indicator: "#30a46c",
1111
+ track: "#30a46c"
1112
+ }
1113
+ };
1114
+
1115
+ const grass = {
1116
+ light: {
1117
+ 1: "#fbfefb",
1118
+ 2: "#f5fbf5",
1119
+ 3: "#e9f6e9",
1120
+ 4: "#daf1db",
1121
+ 5: "#c9e8ca",
1122
+ 6: "#b2ddb5",
1123
+ 7: "#94ce9a",
1124
+ 8: "#65ba74",
1125
+ 9: "#46a758",
1126
+ 10: "#3e9b4f",
1127
+ 11: "#2a7e3b",
1128
+ 12: "#203c25",
1129
+ a1: "#00c00004",
1130
+ a2: "#0099000a",
1131
+ a3: "#00970016",
1132
+ a4: "#009f0725",
1133
+ a5: "#00930536",
1134
+ a6: "#008f0a4d",
1135
+ a7: "#018b0f6b",
1136
+ a8: "#008d199a",
1137
+ a9: "#008619b9",
1138
+ a10: "#007b17c1",
1139
+ a11: "#006514d5",
1140
+ a12: "#002006df",
1141
+ contrast: "#ffffff",
1142
+ surface: "#f3faf3cc",
1143
+ indicator: "#46a758",
1144
+ track: "#46a758"
1145
+ },
1146
+ dark: {
1147
+ 1: "#0e1511",
1148
+ 2: "#141a15",
1149
+ 3: "#1b2a1e",
1150
+ 4: "#1d3a24",
1151
+ 5: "#25482d",
1152
+ 6: "#2d5736",
1153
+ 7: "#366740",
1154
+ 8: "#3e7949",
1155
+ 9: "#46a758",
1156
+ 10: "#53b365",
1157
+ 11: "#71d083",
1158
+ 12: "#c2f0c2",
1159
+ a1: "#00de1205",
1160
+ a2: "#5ef7780a",
1161
+ a3: "#70fe8c1b",
1162
+ a4: "#57ff802c",
1163
+ a5: "#68ff8b3b",
1164
+ a6: "#71ff8f4b",
1165
+ a7: "#77fd925d",
1166
+ a8: "#77fd9070",
1167
+ a9: "#65ff82a1",
1168
+ a10: "#72ff8dae",
1169
+ a11: "#89ff9fcd",
1170
+ a12: "#ceffceef",
1171
+ contrast: "#ffffff",
1172
+ surface: "#19231b80",
1173
+ indicator: "#46a758",
1174
+ track: "#46a758"
1175
+ }
1176
+ };
1177
+
1178
+ const bronze = {
1179
+ light: {
1180
+ 1: "#fdfcfc",
1181
+ 2: "#fdf7f5",
1182
+ 3: "#f6edea",
1183
+ 4: "#efe4df",
1184
+ 5: "#e7d9d3",
1185
+ 6: "#dfcdc5",
1186
+ 7: "#d3bcb3",
1187
+ 8: "#c2a499",
1188
+ 9: "#a18072",
1189
+ 10: "#957468",
1190
+ 11: "#7d5e54",
1191
+ 12: "#43302b",
1192
+ a1: "#55000003",
1193
+ a2: "#cc33000a",
1194
+ a3: "#92250015",
1195
+ a4: "#80280020",
1196
+ a5: "#7423002c",
1197
+ a6: "#7324003a",
1198
+ a7: "#6c1f004c",
1199
+ a8: "#671c0066",
1200
+ a9: "#551a008d",
1201
+ a10: "#4c150097",
1202
+ a11: "#3d0f00ab",
1203
+ a12: "#1d0600d4",
1204
+ contrast: "#ffffff",
1205
+ surface: "#fdf5f3cc",
1206
+ indicator: "#a18072",
1207
+ track: "#a18072"
1208
+ },
1209
+ dark: {
1210
+ 1: "#141110",
1211
+ 2: "#1c1917",
1212
+ 3: "#262220",
1213
+ 4: "#302a27",
1214
+ 5: "#3b3330",
1215
+ 6: "#493e3a",
1216
+ 7: "#5a4c47",
1217
+ 8: "#6f5f58",
1218
+ 9: "#a18072",
1219
+ 10: "#ae8c7e",
1220
+ 11: "#d4b3a5",
1221
+ 12: "#ede0d9",
1222
+ a1: "#d1110004",
1223
+ a2: "#fbbc910c",
1224
+ a3: "#faceb817",
1225
+ a4: "#facdb622",
1226
+ a5: "#ffd2c12d",
1227
+ a6: "#ffd1c03c",
1228
+ a7: "#fdd0c04f",
1229
+ a8: "#ffd6c565",
1230
+ a9: "#fec7b09b",
1231
+ a10: "#fecab5a9",
1232
+ a11: "#ffd7c6d1",
1233
+ a12: "#fff1e9ec",
1234
+ contrast: "#ffffff",
1235
+ surface: "#27211d80",
1236
+ indicator: "#a18072",
1237
+ track: "#a18072"
1238
+ }
1239
+ };
1240
+
1241
+ const gold = {
1242
+ light: {
1243
+ 1: "#fdfdfc",
1244
+ 2: "#faf9f2",
1245
+ 3: "#f2f0e7",
1246
+ 4: "#eae6db",
1247
+ 5: "#e1dccf",
1248
+ 6: "#d8d0bf",
1249
+ 7: "#cbc0aa",
1250
+ 8: "#b9a88d",
1251
+ 9: "#978365",
1252
+ 10: "#8c7a5e",
1253
+ 11: "#71624b",
1254
+ 12: "#3b352b",
1255
+ a1: "#55550003",
1256
+ a2: "#9d8a000d",
1257
+ a3: "#75600018",
1258
+ a4: "#6b4e0024",
1259
+ a5: "#60460030",
1260
+ a6: "#64440040",
1261
+ a7: "#63420055",
1262
+ a8: "#633d0072",
1263
+ a9: "#5332009a",
1264
+ a10: "#492d00a1",
1265
+ a11: "#362100b4",
1266
+ a12: "#130c00d4",
1267
+ contrast: "#ffffff",
1268
+ surface: "#f9f8efcc",
1269
+ indicator: "#978365",
1270
+ track: "#978365"
1271
+ },
1272
+ dark: {
1273
+ 1: "#121211",
1274
+ 2: "#1b1a17",
1275
+ 3: "#24231f",
1276
+ 4: "#2d2b26",
1277
+ 5: "#38352e",
1278
+ 6: "#444039",
1279
+ 7: "#544f46",
1280
+ 8: "#696256",
1281
+ 9: "#978365",
1282
+ 10: "#a39073",
1283
+ 11: "#cbb99f",
1284
+ 12: "#e8e2d9",
1285
+ a1: "#91911102",
1286
+ a2: "#f9e29d0b",
1287
+ a3: "#f8ecbb15",
1288
+ a4: "#ffeec41e",
1289
+ a5: "#feecc22a",
1290
+ a6: "#feebcb37",
1291
+ a7: "#ffedcd48",
1292
+ a8: "#fdeaca5f",
1293
+ a9: "#ffdba690",
1294
+ a10: "#fedfb09d",
1295
+ a11: "#fee7c6c8",
1296
+ a12: "#fef7ede7",
1297
+ contrast: "#ffffff",
1298
+ surface: "#25231d80",
1299
+ indicator: "#978365",
1300
+ track: "#978365"
1301
+ }
1302
+ };
1303
+
1304
+ const brown = {
1305
+ light: {
1306
+ 1: "#fefdfc",
1307
+ 2: "#fcf9f6",
1308
+ 3: "#f6eee7",
1309
+ 4: "#f0e4d9",
1310
+ 5: "#ebdaca",
1311
+ 6: "#e4cdb7",
1312
+ 7: "#dcbc9f",
1313
+ 8: "#cea37e",
1314
+ 9: "#ad7f58",
1315
+ 10: "#a07553",
1316
+ 11: "#815e46",
1317
+ 12: "#3e332e",
1318
+ a1: "#aa550003",
1319
+ a2: "#aa550009",
1320
+ a3: "#a04b0018",
1321
+ a4: "#9b4a0026",
1322
+ a5: "#9f4d0035",
1323
+ a6: "#a04e0048",
1324
+ a7: "#a34e0060",
1325
+ a8: "#9f4a0081",
1326
+ a9: "#823c00a7",
1327
+ a10: "#723300ac",
1328
+ a11: "#522100b9",
1329
+ a12: "#140600d1",
1330
+ contrast: "#ffffff",
1331
+ surface: "#fbf8f4cc",
1332
+ indicator: "#ad7f58",
1333
+ track: "#ad7f58"
1334
+ },
1335
+ dark: {
1336
+ 1: "#12110f",
1337
+ 2: "#1c1816",
1338
+ 3: "#28211d",
1339
+ 4: "#322922",
1340
+ 5: "#3e3128",
1341
+ 6: "#4d3c2f",
1342
+ 7: "#614a39",
1343
+ 8: "#7c5f46",
1344
+ 9: "#ad7f58",
1345
+ 10: "#b88c67",
1346
+ 11: "#dbb594",
1347
+ 12: "#f2e1ca",
1348
+ a1: "#91110002",
1349
+ a2: "#fba67c0c",
1350
+ a3: "#fcb58c19",
1351
+ a4: "#fbbb8a24",
1352
+ a5: "#fcb88931",
1353
+ a6: "#fdba8741",
1354
+ a7: "#ffbb8856",
1355
+ a8: "#ffbe8773",
1356
+ a9: "#feb87da8",
1357
+ a10: "#ffc18cb3",
1358
+ a11: "#fed1aad9",
1359
+ a12: "#feecd4f2",
1360
+ contrast: "#ffffff",
1361
+ surface: "#271f1b80",
1362
+ indicator: "#ad7f58",
1363
+ track: "#ad7f58"
1364
+ }
1365
+ };
1366
+
1367
+ const orange = {
1368
+ light: {
1369
+ 1: "#fefcfb",
1370
+ 2: "#fff7ed",
1371
+ 3: "#ffefd6",
1372
+ 4: "#ffdfb5",
1373
+ 5: "#ffd19a",
1374
+ 6: "#ffc182",
1375
+ 7: "#f5ae73",
1376
+ 8: "#ec9455",
1377
+ 9: "#f76b15",
1378
+ 10: "#ef5f00",
1379
+ 11: "#cc4e00",
1380
+ 12: "#582d1d",
1381
+ a1: "#c0400004",
1382
+ a2: "#ff8e0012",
1383
+ a3: "#ff9c0029",
1384
+ a4: "#ff91014a",
1385
+ a5: "#ff8b0065",
1386
+ a6: "#ff81007d",
1387
+ a7: "#ed6c008c",
1388
+ a8: "#e35f00aa",
1389
+ a9: "#f65e00ea",
1390
+ a10: "#ef5f00",
1391
+ a11: "#cc4e00",
1392
+ a12: "#431200e2",
1393
+ contrast: "#ffffff",
1394
+ surface: "#fff5e9cc",
1395
+ indicator: "#f76b15",
1396
+ track: "#f76b15"
1397
+ },
1398
+ dark: {
1399
+ 1: "#17120e",
1400
+ 2: "#1e160f",
1401
+ 3: "#331e0b",
1402
+ 4: "#462100",
1403
+ 5: "#562800",
1404
+ 6: "#66350c",
1405
+ 7: "#7e451d",
1406
+ 8: "#a35829",
1407
+ 9: "#f76b15",
1408
+ 10: "#ff801f",
1409
+ 11: "#ffa057",
1410
+ 12: "#ffe0c2",
1411
+ a1: "#ec360007",
1412
+ a2: "#fe6d000e",
1413
+ a3: "#fb6a0025",
1414
+ a4: "#ff590039",
1415
+ a5: "#ff61004a",
1416
+ a6: "#fd75045c",
1417
+ a7: "#ff832c75",
1418
+ a8: "#fe84389d",
1419
+ a9: "#fe6d15f7",
1420
+ a10: "#ff801f",
1421
+ a11: "#ffa057",
1422
+ a12: "#ffe0c2",
1423
+ contrast: "#ffffff",
1424
+ surface: "#271d1d80",
1425
+ indicator: "#f76b15",
1426
+ track: "#f76b15"
1427
+ }
1428
+ };
1429
+
1430
+ const amber = {
1431
+ light: {
1432
+ 1: "#fefdfb",
1433
+ 2: "#fefbe9",
1434
+ 3: "#fff7c2",
1435
+ 4: "#ffee9c",
1436
+ 5: "#fbe577",
1437
+ 6: "#f3d673",
1438
+ 7: "#e9c162",
1439
+ 8: "#e2a336",
1440
+ 9: "#ffc53d",
1441
+ 10: "#ffba18",
1442
+ 11: "#ab6400",
1443
+ 12: "#4f3422",
1444
+ a1: "#c0800004",
1445
+ a2: "#f4d10016",
1446
+ a3: "#ffde003d",
1447
+ a4: "#ffd40063",
1448
+ a5: "#f8cf0088",
1449
+ a6: "#eab5008c",
1450
+ a7: "#dc9b009d",
1451
+ a8: "#da8a00c9",
1452
+ a9: "#ffb300c2",
1453
+ a10: "#ffb300e7",
1454
+ a11: "#ab6400",
1455
+ a12: "#341500dd",
1456
+ contrast: "#21201c",
1457
+ surface: "#fefae4cc",
1458
+ indicator: "#ffc53d",
1459
+ track: "#ffc53d"
1460
+ },
1461
+ dark: {
1462
+ 1: "#16120c",
1463
+ 2: "#1d180f",
1464
+ 3: "#302008",
1465
+ 4: "#3f2700",
1466
+ 5: "#4d3000",
1467
+ 6: "#5c3d05",
1468
+ 7: "#714f19",
1469
+ 8: "#8f6424",
1470
+ 9: "#ffc53d",
1471
+ 10: "#ffd60a",
1472
+ 11: "#ffca16",
1473
+ 12: "#ffe7b3",
1474
+ a1: "#e63c0006",
1475
+ a2: "#fd9b000d",
1476
+ a3: "#fa820022",
1477
+ a4: "#fc820032",
1478
+ a5: "#fd8b0041",
1479
+ a6: "#fd9b0051",
1480
+ a7: "#ffab2567",
1481
+ a8: "#ffae3587",
1482
+ a9: "#ffc53d",
1483
+ a10: "#ffd60a",
1484
+ a11: "#ffca16",
1485
+ a12: "#ffe7b3",
1486
+ contrast: "#21201c",
1487
+ surface: "#271f1380",
1488
+ indicator: "#ffc53d",
1489
+ track: "#ffc53d"
1490
+ }
1491
+ };
1492
+
1493
+ const yellow = {
1494
+ light: {
1495
+ 1: "#fdfdf9",
1496
+ 2: "#fefce9",
1497
+ 3: "#fffab8",
1498
+ 4: "#fff394",
1499
+ 5: "#ffe770",
1500
+ 6: "#f3d768",
1501
+ 7: "#e4c767",
1502
+ 8: "#d5ae39",
1503
+ 9: "#ffe629",
1504
+ 10: "#ffdc00",
1505
+ 11: "#9e6c00",
1506
+ 12: "#473b1f",
1507
+ a1: "#aaaa0006",
1508
+ a2: "#f4dd0016",
1509
+ a3: "#ffee0047",
1510
+ a4: "#ffe3016b",
1511
+ a5: "#ffd5008f",
1512
+ a6: "#ebbc0097",
1513
+ a7: "#d2a10098",
1514
+ a8: "#c99700c6",
1515
+ a9: "#ffe100d6",
1516
+ a10: "#ffdc00",
1517
+ a11: "#9e6c00",
1518
+ a12: "#2e2000e0",
1519
+ contrast: "#21201c",
1520
+ surface: "#fefbe4cc",
1521
+ indicator: "#ffe629",
1522
+ track: "#ffe629"
1523
+ },
1524
+ dark: {
1525
+ 1: "#14120b",
1526
+ 2: "#1b180f",
1527
+ 3: "#2d2305",
1528
+ 4: "#362b00",
1529
+ 5: "#433500",
1530
+ 6: "#524202",
1531
+ 7: "#665417",
1532
+ 8: "#836a21",
1533
+ 9: "#ffe629",
1534
+ 10: "#ffff57",
1535
+ 11: "#f5e147",
1536
+ 12: "#f6eeb4",
1537
+ a1: "#d1510004",
1538
+ a2: "#f9b4000b",
1539
+ a3: "#ffaa001e",
1540
+ a4: "#fdb70028",
1541
+ a5: "#febb0036",
1542
+ a6: "#fec40046",
1543
+ a7: "#fdcb225c",
1544
+ a8: "#fdca327b",
1545
+ a9: "#ffe629",
1546
+ a10: "#ffff57",
1547
+ a11: "#fee949f5",
1548
+ a12: "#fef6baf6",
1549
+ contrast: "#21201c",
1550
+ surface: "#231f1380",
1551
+ indicator: "#ffe629",
1552
+ track: "#ffe629"
1553
+ }
1554
+ };
1555
+
1556
+ const lime = {
1557
+ light: {
1558
+ 1: "#fcfdfa",
1559
+ 2: "#f8faf3",
1560
+ 3: "#eef6d6",
1561
+ 4: "#e2f0bd",
1562
+ 5: "#d3e7a6",
1563
+ 6: "#c2da91",
1564
+ 7: "#abc978",
1565
+ 8: "#8db654",
1566
+ 9: "#bdee63",
1567
+ 10: "#b0e64c",
1568
+ 11: "#5c7c2f",
1569
+ 12: "#37401c",
1570
+ a1: "#66990005",
1571
+ a2: "#6b95000c",
1572
+ a3: "#96c80029",
1573
+ a4: "#8fc60042",
1574
+ a5: "#81bb0059",
1575
+ a6: "#72aa006e",
1576
+ a7: "#61990087",
1577
+ a8: "#559200ab",
1578
+ a9: "#93e4009c",
1579
+ a10: "#8fdc00b3",
1580
+ a11: "#375f00d0",
1581
+ a12: "#1e2900e3",
1582
+ contrast: "#21201c",
1583
+ surface: "#f6f9f0cc",
1584
+ indicator: "#bdee63",
1585
+ track: "#bdee63"
1586
+ },
1587
+ dark: {
1588
+ 1: "#11130c",
1589
+ 2: "#151a10",
1590
+ 3: "#1f2917",
1591
+ 4: "#29371d",
1592
+ 5: "#334423",
1593
+ 6: "#3d522a",
1594
+ 7: "#496231",
1595
+ 8: "#577538",
1596
+ 9: "#bdee63",
1597
+ 10: "#d4ff70",
1598
+ 11: "#bde56c",
1599
+ 12: "#e3f7ba",
1600
+ a1: "#11bb0003",
1601
+ a2: "#78f7000a",
1602
+ a3: "#9bfd4c1a",
1603
+ a4: "#a7fe5c29",
1604
+ a5: "#affe6537",
1605
+ a6: "#b2fe6d46",
1606
+ a7: "#b6ff6f57",
1607
+ a8: "#b6fd6d6c",
1608
+ a9: "#caff69ed",
1609
+ a10: "#d4ff70",
1610
+ a11: "#d1fe77e4",
1611
+ a12: "#e9febff7",
1612
+ contrast: "#21201c",
1613
+ surface: "#1b211580",
1614
+ indicator: "#bdee63",
1615
+ track: "#bdee63"
1616
+ }
1617
+ };
1618
+
1619
+ const mint = {
1620
+ light: {
1621
+ 1: "#f9fefd",
1622
+ 2: "#f2fbf9",
1623
+ 3: "#ddf9f2",
1624
+ 4: "#c8f4e9",
1625
+ 5: "#b3ecde",
1626
+ 6: "#9ce0d0",
1627
+ 7: "#7ecfbd",
1628
+ 8: "#4cbba5",
1629
+ 9: "#86ead4",
1630
+ 10: "#7de0cb",
1631
+ 11: "#027864",
1632
+ 12: "#16433c",
1633
+ a1: "#00d5aa06",
1634
+ a2: "#00b18a0d",
1635
+ a3: "#00d29e22",
1636
+ a4: "#00cc9937",
1637
+ a5: "#00c0914c",
1638
+ a6: "#00b08663",
1639
+ a7: "#00a17d81",
1640
+ a8: "#009e7fb3",
1641
+ a9: "#00d3a579",
1642
+ a10: "#00c39982",
1643
+ a11: "#007763fd",
1644
+ a12: "#00312ae9",
1645
+ contrast: "#21201c",
1646
+ surface: "#effaf8cc",
1647
+ indicator: "#86ead4",
1648
+ track: "#86ead4"
1649
+ },
1650
+ dark: {
1651
+ 1: "#0e1515",
1652
+ 2: "#0f1b1b",
1653
+ 3: "#092c2b",
1654
+ 4: "#003a38",
1655
+ 5: "#004744",
1656
+ 6: "#105650",
1657
+ 7: "#1e685f",
1658
+ 8: "#277f70",
1659
+ 9: "#86ead4",
1660
+ 10: "#a8f5e5",
1661
+ 11: "#58d5ba",
1662
+ 12: "#c4f5e1",
1663
+ a1: "#00dede05",
1664
+ a2: "#00f9f90b",
1665
+ a3: "#00fff61d",
1666
+ a4: "#00fff42c",
1667
+ a5: "#00fff23a",
1668
+ a6: "#0effeb4a",
1669
+ a7: "#34fde55e",
1670
+ a8: "#41ffdf76",
1671
+ a9: "#92ffe7e9",
1672
+ a10: "#aefeedf5",
1673
+ a11: "#67ffded2",
1674
+ a12: "#cbfee9f5",
1675
+ contrast: "#21201c",
1676
+ surface: "#15272780",
1677
+ indicator: "#86ead4",
1678
+ track: "#86ead4"
1679
+ }
1680
+ };
1681
+
1682
+ const sky = {
1683
+ light: {
1684
+ 1: "#f9feff",
1685
+ 2: "#f1fafd",
1686
+ 3: "#e1f6fd",
1687
+ 4: "#d1f0fa",
1688
+ 5: "#bee7f5",
1689
+ 6: "#a9daed",
1690
+ 7: "#8dcae3",
1691
+ 8: "#60b3d7",
1692
+ 9: "#7ce2fe",
1693
+ 10: "#74daf8",
1694
+ 11: "#00749e",
1695
+ 12: "#1d3e56",
1696
+ a1: "#00d5ff06",
1697
+ a2: "#00a4db0e",
1698
+ a3: "#00b3ee1e",
1699
+ a4: "#00ace42e",
1700
+ a5: "#00a1d841",
1701
+ a6: "#0092ca56",
1702
+ a7: "#0089c172",
1703
+ a8: "#0085bf9f",
1704
+ a9: "#00c7fe83",
1705
+ a10: "#00bcf38b",
1706
+ a11: "#00749e",
1707
+ a12: "#002540e2",
1708
+ contrast: "#21201c",
1709
+ surface: "#eef9fdcc",
1710
+ indicator: "#7ce2fe",
1711
+ track: "#7ce2fe"
1712
+ },
1713
+ dark: {
1714
+ 1: "#0d141f",
1715
+ 2: "#111a27",
1716
+ 3: "#112840",
1717
+ 4: "#113555",
1718
+ 5: "#154467",
1719
+ 6: "#1b537b",
1720
+ 7: "#1f6692",
1721
+ 8: "#197cae",
1722
+ 9: "#7ce2fe",
1723
+ 10: "#a8eeff",
1724
+ 11: "#75c7f0",
1725
+ 12: "#c2f3ff",
1726
+ a1: "#0044ff0f",
1727
+ a2: "#1171fb18",
1728
+ a3: "#1184fc33",
1729
+ a4: "#128fff49",
1730
+ a5: "#1c9dfd5d",
1731
+ a6: "#28a5ff72",
1732
+ a7: "#2badfe8b",
1733
+ a8: "#1db2fea9",
1734
+ a9: "#7ce3fffe",
1735
+ a10: "#a8eeff",
1736
+ a11: "#7cd3ffef",
1737
+ a12: "#c2f3ff",
1738
+ contrast: "#21201c",
1739
+ surface: "#13233b80",
1740
+ indicator: "#7ce2fe",
1741
+ track: "#7ce2fe"
1742
+ }
1743
+ };
1744
+
1745
+ const gray = {
1746
+ light: {
1747
+ 1: "#fcfcfc",
1748
+ 2: "#f9f9f9",
1749
+ 3: "#f0f0f0",
1750
+ 4: "#e8e8e8",
1751
+ 5: "#e0e0e0",
1752
+ 6: "#d9d9d9",
1753
+ 7: "#cecece",
1754
+ 8: "#bbbbbb",
1755
+ 9: "#8d8d8d",
1756
+ 10: "#838383",
1757
+ 11: "#646464",
1758
+ 12: "#202020",
1759
+ a1: "#00000003",
1760
+ a2: "#00000006",
1761
+ a3: "#0000000f",
1762
+ a4: "#00000017",
1763
+ a5: "#0000001f",
1764
+ a6: "#00000026",
1765
+ a7: "#00000031",
1766
+ a8: "#00000044",
1767
+ a9: "#00000072",
1768
+ a10: "#0000007c",
1769
+ a11: "#0000009b",
1770
+ a12: "#000000df",
1771
+ contrast: "#ffffff",
1772
+ surface: "#ffffffcc",
1773
+ indicator: "#8d8d8d",
1774
+ track: "#8d8d8d"
1775
+ },
1776
+ dark: {
1777
+ 1: "#111111",
1778
+ 2: "#191919",
1779
+ 3: "#222222",
1780
+ 4: "#2a2a2a",
1781
+ 5: "#313131",
1782
+ 6: "#3a3a3a",
1783
+ 7: "#484848",
1784
+ 8: "#606060",
1785
+ 9: "#6e6e6e",
1786
+ 10: "#7b7b7b",
1787
+ 11: "#b4b4b4",
1788
+ 12: "#eeeeee",
1789
+ a1: "#00000000",
1790
+ a2: "#ffffff09",
1791
+ a3: "#ffffff12",
1792
+ a4: "#ffffff1b",
1793
+ a5: "#ffffff22",
1794
+ a6: "#ffffff2c",
1795
+ a7: "#ffffff3b",
1796
+ a8: "#ffffff55",
1797
+ a9: "#ffffff64",
1798
+ a10: "#ffffff72",
1799
+ a11: "#ffffffaf",
1800
+ a12: "#ffffffed",
1801
+ contrast: "#ffffff",
1802
+ surface: "#21212180",
1803
+ indicator: "#6e6e6e",
1804
+ track: "#6e6e6e"
1805
+ }
1806
+ };
1807
+
1808
+ const mauve = {
1809
+ light: {
1810
+ 1: "#fdfcfd",
1811
+ 2: "#faf9fb",
1812
+ 3: "#f2eff3",
1813
+ 4: "#eae7ec",
1814
+ 5: "#e3dfe6",
1815
+ 6: "#dbd8e0",
1816
+ 7: "#d0cdd7",
1817
+ 8: "#bcbac7",
1818
+ 9: "#8e8c99",
1819
+ 10: "#84828e",
1820
+ 11: "#65636d",
1821
+ 12: "#211f26",
1822
+ a1: "#55005503",
1823
+ a2: "#2b005506",
1824
+ a3: "#30004010",
1825
+ a4: "#20003618",
1826
+ a5: "#20003820",
1827
+ a6: "#14003527",
1828
+ a7: "#10003332",
1829
+ a8: "#08003145",
1830
+ a9: "#05001d73",
1831
+ a10: "#0500197d",
1832
+ a11: "#0400119c",
1833
+ a12: "#020008e0",
1834
+ contrast: "#ffffff",
1835
+ surface: "#ffffffcc",
1836
+ indicator: "#8e8c99",
1837
+ track: "#8e8c99"
1838
+ },
1839
+ dark: {
1840
+ 1: "#121113",
1841
+ 2: "#1a191b",
1842
+ 3: "#232225",
1843
+ 4: "#2b292d",
1844
+ 5: "#323035",
1845
+ 6: "#3c393f",
1846
+ 7: "#49474e",
1847
+ 8: "#625f69",
1848
+ 9: "#6f6d78",
1849
+ 10: "#7c7a85",
1850
+ 11: "#b5b2bc",
1851
+ 12: "#eeeef0",
1852
+ a1: "#00000000",
1853
+ a2: "#f5f4f609",
1854
+ a3: "#ebeaf814",
1855
+ a4: "#eee5f81d",
1856
+ a5: "#efe6fe25",
1857
+ a6: "#f1e6fd30",
1858
+ a7: "#eee9ff40",
1859
+ a8: "#eee7ff5d",
1860
+ a9: "#eae6fd6e",
1861
+ a10: "#ece9fd7c",
1862
+ a11: "#f5f1ffb7",
1863
+ a12: "#fdfdffef",
1864
+ contrast: "#ffffff",
1865
+ surface: "#22212380",
1866
+ indicator: "#6f6d78",
1867
+ track: "#6f6d78"
1868
+ }
1869
+ };
1870
+
1871
+ const slate = {
1872
+ light: {
1873
+ 1: "#fcfcfd",
1874
+ 2: "#f9f9fb",
1875
+ 3: "#f0f0f3",
1876
+ 4: "#e8e8ec",
1877
+ 5: "#e0e1e6",
1878
+ 6: "#d9d9e0",
1879
+ 7: "#cdced6",
1880
+ 8: "#b9bbc6",
1881
+ 9: "#8b8d98",
1882
+ 10: "#80838d",
1883
+ 11: "#60646c",
1884
+ 12: "#1c2024",
1885
+ a1: "#00005503",
1886
+ a2: "#00005506",
1887
+ a3: "#0000330f",
1888
+ a4: "#00002d17",
1889
+ a5: "#0009321f",
1890
+ a6: "#00002f26",
1891
+ a7: "#00062e32",
1892
+ a8: "#00083046",
1893
+ a9: "#00051d74",
1894
+ a10: "#00071b7f",
1895
+ a11: "#0007149f",
1896
+ a12: "#000509e3",
1897
+ contrast: "#ffffff",
1898
+ surface: "#ffffffcc",
1899
+ indicator: "#8b8d98",
1900
+ track: "#8b8d98"
1901
+ },
1902
+ dark: {
1903
+ 1: "#111113",
1904
+ 2: "#18191b",
1905
+ 3: "#212225",
1906
+ 4: "#272a2d",
1907
+ 5: "#2e3135",
1908
+ 6: "#363a3f",
1909
+ 7: "#43484e",
1910
+ 8: "#5a6169",
1911
+ 9: "#696e77",
1912
+ 10: "#777b84",
1913
+ 11: "#b0b4ba",
1914
+ 12: "#edeef0",
1915
+ a1: "#00000000",
1916
+ a2: "#d8f4f609",
1917
+ a3: "#ddeaf814",
1918
+ a4: "#d3edf81d",
1919
+ a5: "#d9edfe25",
1920
+ a6: "#d6ebfd30",
1921
+ a7: "#d9edff40",
1922
+ a8: "#d9edff5d",
1923
+ a9: "#dfebfd6d",
1924
+ a10: "#e5edfd7b",
1925
+ a11: "#f1f7feb5",
1926
+ a12: "#fcfdffef",
1927
+ contrast: "#ffffff",
1928
+ surface: "#1f212380",
1929
+ indicator: "#696e77",
1930
+ track: "#696e77"
1931
+ }
1932
+ };
1933
+
1934
+ const sage = {
1935
+ light: {
1936
+ 1: "#fbfdfc",
1937
+ 2: "#f7f9f8",
1938
+ 3: "#eef1f0",
1939
+ 4: "#e6e9e8",
1940
+ 5: "#dfe2e0",
1941
+ 6: "#d7dad9",
1942
+ 7: "#cbcfcd",
1943
+ 8: "#b8bcba",
1944
+ 9: "#868e8b",
1945
+ 10: "#7c8481",
1946
+ 11: "#5f6563",
1947
+ 12: "#1a211e",
1948
+ a1: "#00804004",
1949
+ a2: "#00402008",
1950
+ a3: "#002d1e11",
1951
+ a4: "#001f1519",
1952
+ a5: "#00180820",
1953
+ a6: "#00140d28",
1954
+ a7: "#00140a34",
1955
+ a8: "#000f0847",
1956
+ a9: "#00110b79",
1957
+ a10: "#00100a83",
1958
+ a11: "#000a07a0",
1959
+ a12: "#000805e5",
1960
+ contrast: "#ffffff",
1961
+ surface: "#ffffffcc",
1962
+ indicator: "#868e8b",
1963
+ track: "#868e8b"
1964
+ },
1965
+ dark: {
1966
+ 1: "#101211",
1967
+ 2: "#171918",
1968
+ 3: "#202221",
1969
+ 4: "#272a29",
1970
+ 5: "#2e3130",
1971
+ 6: "#373b39",
1972
+ 7: "#444947",
1973
+ 8: "#5b625f",
1974
+ 9: "#63706b",
1975
+ 10: "#717d79",
1976
+ 11: "#adb5b2",
1977
+ 12: "#eceeed",
1978
+ a1: "#00000000",
1979
+ a2: "#f0f2f108",
1980
+ a3: "#f3f5f412",
1981
+ a4: "#f2fefd1a",
1982
+ a5: "#f1fbfa22",
1983
+ a6: "#edfbf42d",
1984
+ a7: "#edfcf73c",
1985
+ a8: "#ebfdf657",
1986
+ a9: "#dffdf266",
1987
+ a10: "#e5fdf674",
1988
+ a11: "#f4fefbb0",
1989
+ a12: "#fdfffeed",
1990
+ contrast: "#ffffff",
1991
+ surface: "#1e201f80",
1992
+ indicator: "#63706b",
1993
+ track: "#63706b"
1994
+ }
1995
+ };
1996
+
1997
+ const olive = {
1998
+ light: {
1999
+ 1: "#fcfdfc",
2000
+ 2: "#f8faf8",
2001
+ 3: "#eff1ef",
2002
+ 4: "#e7e9e7",
2003
+ 5: "#dfe2df",
2004
+ 6: "#d7dad7",
2005
+ 7: "#cccfcc",
2006
+ 8: "#b9bcb8",
2007
+ 9: "#898e87",
2008
+ 10: "#7f847d",
2009
+ 11: "#60655f",
2010
+ 12: "#1d211c",
2011
+ a1: "#00550003",
2012
+ a2: "#00490007",
2013
+ a3: "#00200010",
2014
+ a4: "#00160018",
2015
+ a5: "#00180020",
2016
+ a6: "#00140028",
2017
+ a7: "#000f0033",
2018
+ a8: "#040f0047",
2019
+ a9: "#050f0078",
2020
+ a10: "#040e0082",
2021
+ a11: "#020a00a0",
2022
+ a12: "#010600e3",
2023
+ contrast: "#ffffff",
2024
+ surface: "#ffffffcc",
2025
+ indicator: "#898e87",
2026
+ track: "#898e87"
2027
+ },
2028
+ dark: {
2029
+ 1: "#111210",
2030
+ 2: "#181917",
2031
+ 3: "#212220",
2032
+ 4: "#282a27",
2033
+ 5: "#2f312e",
2034
+ 6: "#383a36",
2035
+ 7: "#454843",
2036
+ 8: "#5c625b",
2037
+ 9: "#687066",
2038
+ 10: "#767d74",
2039
+ 11: "#afb5ad",
2040
+ 12: "#eceeec",
2041
+ a1: "#00000000",
2042
+ a2: "#f1f2f008",
2043
+ a3: "#f4f5f312",
2044
+ a4: "#f3fef21a",
2045
+ a5: "#f2fbf122",
2046
+ a6: "#f4faed2c",
2047
+ a7: "#f2fced3b",
2048
+ a8: "#edfdeb57",
2049
+ a9: "#ebfde766",
2050
+ a10: "#f0fdec74",
2051
+ a11: "#f6fef4b0",
2052
+ a12: "#fdfffded",
2053
+ contrast: "#ffffff",
2054
+ surface: "#1f201e80",
2055
+ indicator: "#687066",
2056
+ track: "#687066"
2057
+ }
2058
+ };
2059
+
2060
+ const sand = {
2061
+ light: {
2062
+ 1: "#fdfdfc",
2063
+ 2: "#f9f9f8",
2064
+ 3: "#f1f0ef",
2065
+ 4: "#e9e8e6",
2066
+ 5: "#e2e1de",
2067
+ 6: "#dad9d6",
2068
+ 7: "#cfceca",
2069
+ 8: "#bcbbb5",
2070
+ 9: "#8d8d86",
2071
+ 10: "#82827c",
2072
+ 11: "#63635e",
2073
+ 12: "#21201c",
2074
+ a1: "#55550003",
2075
+ a2: "#25250007",
2076
+ a3: "#20100010",
2077
+ a4: "#1f150019",
2078
+ a5: "#1f180021",
2079
+ a6: "#19130029",
2080
+ a7: "#19140035",
2081
+ a8: "#1915014a",
2082
+ a9: "#0f0f0079",
2083
+ a10: "#0c0c0083",
2084
+ a11: "#080800a1",
2085
+ a12: "#060500e3",
2086
+ contrast: "#ffffff",
2087
+ surface: "#ffffffcc",
2088
+ indicator: "#8d8d86",
2089
+ track: "#8d8d86"
2090
+ },
2091
+ dark: {
2092
+ 1: "#111110",
2093
+ 2: "#191918",
2094
+ 3: "#222221",
2095
+ 4: "#2a2a28",
2096
+ 5: "#31312e",
2097
+ 6: "#3b3a37",
2098
+ 7: "#494844",
2099
+ 8: "#62605b",
2100
+ 9: "#6f6d66",
2101
+ 10: "#7c7b74",
2102
+ 11: "#b5b3ad",
2103
+ 12: "#eeeeec",
2104
+ a1: "#00000000",
2105
+ a2: "#f4f4f309",
2106
+ a3: "#f6f6f513",
2107
+ a4: "#fefef31b",
2108
+ a5: "#fbfbeb23",
2109
+ a6: "#fffaed2d",
2110
+ a7: "#fffbed3c",
2111
+ a8: "#fff9eb57",
2112
+ a9: "#fffae965",
2113
+ a10: "#fffdee73",
2114
+ a11: "#fffcf4b0",
2115
+ a12: "#fffffded",
2116
+ contrast: "#ffffff",
2117
+ surface: "#21212080",
2118
+ indicator: "#6f6d66",
2119
+ track: "#6f6d66"
2120
+ }
2121
+ };
2122
+
2123
+ const colorMap = {
2124
+ tomato,
2125
+ red,
2126
+ ruby,
2127
+ crimson,
2128
+ pink,
2129
+ plum,
2130
+ purple,
2131
+ violet,
2132
+ iris,
2133
+ indigo,
2134
+ blue,
2135
+ cyan,
2136
+ teal,
2137
+ jade,
2138
+ green,
2139
+ grass,
2140
+ bronze,
2141
+ gold,
2142
+ brown,
2143
+ orange,
2144
+ amber,
2145
+ yellow,
2146
+ lime,
2147
+ mint,
2148
+ sky,
2149
+ gray,
2150
+ mauve,
2151
+ slate,
2152
+ sage,
2153
+ olive,
2154
+ sand
2155
+ };
2156
+ function resolveColor(color, appearance, accentColor, resolvedGrayColor, colorOverrides) {
2157
+ let colorName;
2158
+ let step;
2159
+ if (color.startsWith("accent-")) {
2160
+ colorName = accentColor;
2161
+ step = color.slice("accent-".length);
2162
+ } else if (color.startsWith("gray-")) {
2163
+ colorName = resolvedGrayColor;
2164
+ step = color.slice("gray-".length);
2165
+ } else {
2166
+ const dashIdx = color.lastIndexOf("-");
2167
+ if (dashIdx <= 0) return color;
2168
+ colorName = color.slice(0, dashIdx);
2169
+ step = color.slice(dashIdx + 1);
2170
+ }
2171
+ if (colorOverrides) {
2172
+ const scaleOverride = colorOverrides[colorName];
2173
+ if (scaleOverride) {
2174
+ const modeOverride = scaleOverride[appearance];
2175
+ if (modeOverride) {
2176
+ const value = modeOverride[step];
2177
+ if (value !== void 0) return value;
2178
+ }
2179
+ }
2180
+ }
2181
+ const scale = colorMap[colorName]?.[appearance];
2182
+ if (!scale) return color;
2183
+ return scale[step] ?? color;
2184
+ }
2185
+
2186
+ function useResolveColor() {
2187
+ const { appearance, accentColor, resolvedGrayColor, colorOverrides } = useThemeContext();
2188
+ return React__default.useCallback(
2189
+ (color) => resolveColor(color, appearance, accentColor, resolvedGrayColor, colorOverrides),
2190
+ [appearance, accentColor, resolvedGrayColor, colorOverrides]
2191
+ );
2192
+ }
2193
+
2194
+ const scalingMap = {
2195
+ "90%": 0.9,
2196
+ "95%": 0.95,
2197
+ "100%": 1,
2198
+ "105%": 1.05,
2199
+ "110%": 1.1
2200
+ };
2201
+
2202
+ function applyScaling(value, scaling) {
2203
+ return Math.round(value * scalingMap[scaling]);
2204
+ }
2205
+
2206
+ const space = {
2207
+ 0: 0,
2208
+ 1: 4,
2209
+ 2: 8,
2210
+ 3: 12,
2211
+ 4: 16,
2212
+ 5: 24,
2213
+ 6: 32,
2214
+ 7: 40,
2215
+ 8: 48,
2216
+ 9: 64
2217
+ };
2218
+
2219
+ function resolveSpace(token, scaling) {
2220
+ if (token === 0) return 0;
2221
+ const sign = token < 0 ? -1 : 1;
2222
+ const abs = Math.abs(token);
2223
+ return sign * Math.round(space[abs] * scalingMap[scaling]);
2224
+ }
2225
+
2226
+ function getClassicEffect(appearance, options) {
2227
+ const isLight = appearance === "light";
2228
+ const pressed = options?.pressed ?? false;
2229
+ const isDisabled = options?.disabled ?? false;
2230
+ if (isDisabled) return {};
2231
+ if (pressed) {
2232
+ return reactNative.Platform.select({
2233
+ ios: {
2234
+ shadowColor: "transparent",
2235
+ shadowOffset: { width: 0, height: 0 },
2236
+ shadowOpacity: 0,
2237
+ shadowRadius: 0
2238
+ },
2239
+ default: { elevation: 0 }
2240
+ });
2241
+ }
2242
+ return reactNative.Platform.select({
2243
+ ios: {
2244
+ shadowColor: "#000",
2245
+ shadowOffset: { width: 0, height: 1 },
2246
+ shadowOpacity: isLight ? 0.15 : 0.3,
2247
+ shadowRadius: 2
2248
+ },
2249
+ default: { elevation: 2 }
2250
+ });
2251
+ }
2252
+
2253
+ const BASE_RADIUS = {
2254
+ 1: 3,
2255
+ 2: 4,
2256
+ 3: 6,
2257
+ 4: 8,
2258
+ 5: 12,
2259
+ 6: 16
2260
+ };
2261
+ const RADIUS_FACTOR = {
2262
+ none: 0,
2263
+ small: 0.75,
2264
+ medium: 1,
2265
+ large: 1.5,
2266
+ full: 1.5
2267
+ };
2268
+ const RADIUS_FULL = {
2269
+ none: 0,
2270
+ small: 0,
2271
+ medium: 0,
2272
+ large: 0,
2273
+ full: 9999
2274
+ };
2275
+ function getRadius(token, level) {
2276
+ return Math.round(BASE_RADIUS[level] * RADIUS_FACTOR[token]);
2277
+ }
2278
+ function getFullRadius(token) {
2279
+ return RADIUS_FULL[token];
2280
+ }
2281
+
2282
+ function Box({
2283
+ p,
2284
+ px,
2285
+ py,
2286
+ pt,
2287
+ pr,
2288
+ pb,
2289
+ pl,
2290
+ m,
2291
+ mx,
2292
+ my,
2293
+ mt,
2294
+ mr,
2295
+ mb,
2296
+ ml,
2297
+ width,
2298
+ minWidth,
2299
+ maxWidth,
2300
+ height,
2301
+ minHeight,
2302
+ maxHeight,
2303
+ position,
2304
+ top,
2305
+ right,
2306
+ bottom,
2307
+ left,
2308
+ overflow,
2309
+ flexBasis,
2310
+ flexShrink,
2311
+ flexGrow,
2312
+ bg,
2313
+ radius,
2314
+ style,
2315
+ ...rest
2316
+ }) {
2317
+ const { scaling } = useThemeContext();
2318
+ const rc = useResolveColor();
2319
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
2320
+ const boxStyle = {
2321
+ // Padding — specific > axis > all
2322
+ paddingTop: sp(pt ?? py ?? p),
2323
+ paddingBottom: sp(pb ?? py ?? p),
2324
+ paddingLeft: sp(pl ?? px ?? p),
2325
+ paddingRight: sp(pr ?? px ?? p),
2326
+ // Margin — specific > axis > all
2327
+ marginTop: sp(mt ?? my ?? m),
2328
+ marginBottom: sp(mb ?? my ?? m),
2329
+ marginLeft: sp(ml ?? mx ?? m),
2330
+ marginRight: sp(mr ?? mx ?? m),
2331
+ // Size
2332
+ width,
2333
+ minWidth,
2334
+ maxWidth,
2335
+ height,
2336
+ minHeight,
2337
+ maxHeight,
2338
+ // Position
2339
+ position,
2340
+ top,
2341
+ right,
2342
+ bottom,
2343
+ left,
2344
+ // Layout
2345
+ overflow,
2346
+ flexBasis,
2347
+ flexShrink,
2348
+ flexGrow,
2349
+ // Theme
2350
+ backgroundColor: bg ? rc(bg) : void 0,
2351
+ borderRadius: radius ? radius === "full" ? getFullRadius(radius) : getRadius(radius, 4) : void 0
2352
+ };
2353
+ return /* @__PURE__ */ React__default.createElement(reactNative.View, { style: [boxStyle, style], ...rest });
2354
+ }
2355
+ Box.displayName = "Box";
2356
+
2357
+ const ALIGN_MAP$1 = {
2358
+ start: "flex-start",
2359
+ center: "center",
2360
+ end: "flex-end",
2361
+ baseline: "baseline",
2362
+ stretch: "stretch"
2363
+ };
2364
+ const JUSTIFY_MAP$1 = {
2365
+ start: "flex-start",
2366
+ center: "center",
2367
+ end: "flex-end",
2368
+ between: "space-between"
2369
+ };
2370
+ function Flex({
2371
+ direction,
2372
+ align,
2373
+ justify,
2374
+ wrap,
2375
+ gap,
2376
+ gapX,
2377
+ gapY,
2378
+ p,
2379
+ px,
2380
+ py,
2381
+ pt,
2382
+ pr,
2383
+ pb,
2384
+ pl,
2385
+ m,
2386
+ mx,
2387
+ my,
2388
+ mt,
2389
+ mr,
2390
+ mb,
2391
+ ml,
2392
+ width,
2393
+ minWidth,
2394
+ maxWidth,
2395
+ height,
2396
+ minHeight,
2397
+ maxHeight,
2398
+ position,
2399
+ top,
2400
+ right,
2401
+ bottom,
2402
+ left,
2403
+ overflow,
2404
+ flexBasis,
2405
+ flexShrink,
2406
+ flexGrow,
2407
+ bg,
2408
+ radius,
2409
+ style,
2410
+ ...rest
2411
+ }) {
2412
+ const { scaling } = useThemeContext();
2413
+ const rc = useResolveColor();
2414
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
2415
+ const flexStyle = {
2416
+ // Flex-specific
2417
+ flexDirection: direction,
2418
+ alignItems: align ? ALIGN_MAP$1[align] : void 0,
2419
+ justifyContent: justify ? JUSTIFY_MAP$1[justify] : void 0,
2420
+ flexWrap: wrap,
2421
+ rowGap: sp(gapY ?? gap),
2422
+ columnGap: sp(gapX ?? gap),
2423
+ // Padding — specific > axis > all
2424
+ paddingTop: sp(pt ?? py ?? p),
2425
+ paddingBottom: sp(pb ?? py ?? p),
2426
+ paddingLeft: sp(pl ?? px ?? p),
2427
+ paddingRight: sp(pr ?? px ?? p),
2428
+ // Margin — specific > axis > all
2429
+ marginTop: sp(mt ?? my ?? m),
2430
+ marginBottom: sp(mb ?? my ?? m),
2431
+ marginLeft: sp(ml ?? mx ?? m),
2432
+ marginRight: sp(mr ?? mx ?? m),
2433
+ // Size
2434
+ width,
2435
+ minWidth,
2436
+ maxWidth,
2437
+ height,
2438
+ minHeight,
2439
+ maxHeight,
2440
+ // Position
2441
+ position,
2442
+ top,
2443
+ right,
2444
+ bottom,
2445
+ left,
2446
+ // Layout
2447
+ overflow,
2448
+ flexBasis,
2449
+ flexShrink,
2450
+ flexGrow,
2451
+ // Theme
2452
+ backgroundColor: bg ? rc(bg) : void 0,
2453
+ borderRadius: radius ? radius === "full" ? getFullRadius(radius) : getRadius(radius, 4) : void 0
2454
+ };
2455
+ return /* @__PURE__ */ React__default.createElement(reactNative.View, { style: [flexStyle, style], ...rest });
2456
+ }
2457
+ Flex.displayName = "Flex";
2458
+
2459
+ const ALIGN_MAP = {
2460
+ start: "flex-start",
2461
+ center: "center",
2462
+ end: "flex-end",
2463
+ stretch: "stretch"
2464
+ };
2465
+ const JUSTIFY_MAP = {
2466
+ start: "flex-start",
2467
+ center: "center",
2468
+ end: "flex-end",
2469
+ between: "space-between"
2470
+ };
2471
+ function Grid({
2472
+ columns = 1,
2473
+ gap,
2474
+ gapX,
2475
+ gapY,
2476
+ align,
2477
+ justify,
2478
+ p,
2479
+ px,
2480
+ py,
2481
+ pt,
2482
+ pr,
2483
+ pb,
2484
+ pl,
2485
+ m,
2486
+ mx,
2487
+ my,
2488
+ mt,
2489
+ mr,
2490
+ mb,
2491
+ ml,
2492
+ width,
2493
+ minWidth,
2494
+ maxWidth,
2495
+ height,
2496
+ minHeight,
2497
+ maxHeight,
2498
+ position,
2499
+ top,
2500
+ right,
2501
+ bottom,
2502
+ left,
2503
+ overflow,
2504
+ flexBasis,
2505
+ flexShrink,
2506
+ flexGrow,
2507
+ bg,
2508
+ radius,
2509
+ style,
2510
+ children,
2511
+ onLayout: onLayoutProp,
2512
+ ...rest
2513
+ }) {
2514
+ const { scaling } = useThemeContext();
2515
+ const rc = useResolveColor();
2516
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
2517
+ const columnGap = sp(gapX ?? gap) ?? 0;
2518
+ const rowGap = sp(gapY ?? gap) ?? 0;
2519
+ const [containerWidth, setContainerWidth] = React.useState(0);
2520
+ const handleLayout = React.useCallback(
2521
+ (e) => {
2522
+ setContainerWidth(e.nativeEvent.layout.width);
2523
+ onLayoutProp?.(e);
2524
+ },
2525
+ [onLayoutProp]
2526
+ );
2527
+ const cols = Math.max(1, Math.round(columns));
2528
+ const cellWidth = containerWidth > 0 ? (containerWidth - (cols - 1) * columnGap) / cols : void 0;
2529
+ const containerStyle = {
2530
+ flexDirection: "row",
2531
+ flexWrap: "wrap",
2532
+ alignItems: ALIGN_MAP[align ?? "stretch"],
2533
+ justifyContent: justify ? JUSTIFY_MAP[justify] : void 0,
2534
+ rowGap,
2535
+ columnGap,
2536
+ // Padding
2537
+ paddingTop: sp(pt ?? py ?? p),
2538
+ paddingBottom: sp(pb ?? py ?? p),
2539
+ paddingLeft: sp(pl ?? px ?? p),
2540
+ paddingRight: sp(pr ?? px ?? p),
2541
+ // Margin
2542
+ marginTop: sp(mt ?? my ?? m),
2543
+ marginBottom: sp(mb ?? my ?? m),
2544
+ marginLeft: sp(ml ?? mx ?? m),
2545
+ marginRight: sp(mr ?? mx ?? m),
2546
+ // Size
2547
+ width,
2548
+ minWidth,
2549
+ maxWidth,
2550
+ height,
2551
+ minHeight,
2552
+ maxHeight,
2553
+ // Position
2554
+ position,
2555
+ top,
2556
+ right,
2557
+ bottom,
2558
+ left,
2559
+ // Layout
2560
+ overflow,
2561
+ flexBasis,
2562
+ flexShrink,
2563
+ flexGrow,
2564
+ // Theme
2565
+ backgroundColor: bg ? rc(bg) : void 0,
2566
+ borderRadius: radius ? radius === "full" ? getFullRadius(radius) : getRadius(radius, 4) : void 0
2567
+ };
2568
+ const items = React__default.Children.toArray(children);
2569
+ return /* @__PURE__ */ React__default.createElement(reactNative.View, { style: [containerStyle, style], onLayout: handleLayout, ...rest }, items.map((child, i) => /* @__PURE__ */ React__default.createElement(reactNative.View, { key: i, style: { width: cellWidth } }, child)));
2570
+ }
2571
+ Grid.displayName = "Grid";
2572
+
2573
+ const fontSize = {
2574
+ 1: 12,
2575
+ 2: 14,
2576
+ 3: 16,
2577
+ 4: 18,
2578
+ 5: 20,
2579
+ 6: 24,
2580
+ 7: 28,
2581
+ 8: 35,
2582
+ 9: 60
2583
+ };
2584
+ const lineHeight = {
2585
+ 1: 16,
2586
+ 2: 20,
2587
+ 3: 24,
2588
+ 4: 26,
2589
+ 5: 28,
2590
+ 6: 30,
2591
+ 7: 36,
2592
+ 8: 40,
2593
+ 9: 60
2594
+ };
2595
+ const headingLineHeight = {
2596
+ 1: 16,
2597
+ 2: 18,
2598
+ 3: 22,
2599
+ 4: 24,
2600
+ 5: 26,
2601
+ 6: 30,
2602
+ 7: 36,
2603
+ 8: 40,
2604
+ 9: 60
2605
+ };
2606
+ const letterSpacingEm = {
2607
+ 1: 25e-4,
2608
+ 2: 0,
2609
+ 3: 0,
2610
+ 4: -25e-4,
2611
+ 5: -5e-3,
2612
+ 6: -625e-5,
2613
+ 7: -75e-4,
2614
+ 8: -0.01,
2615
+ 9: -0.025
2616
+ };
2617
+
2618
+ const FONT_WEIGHT$4 = {
2619
+ light: "300",
2620
+ regular: "400",
2621
+ medium: "500",
2622
+ bold: "700"
2623
+ };
2624
+ function Text({
2625
+ size = 3,
2626
+ weight,
2627
+ align,
2628
+ truncate,
2629
+ wrap,
2630
+ color,
2631
+ highContrast,
2632
+ m,
2633
+ mx,
2634
+ my,
2635
+ mt,
2636
+ mr,
2637
+ mb,
2638
+ ml,
2639
+ style,
2640
+ ...rest
2641
+ }) {
2642
+ const { scaling, fonts } = useThemeContext();
2643
+ const rc = useResolveColor();
2644
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
2645
+ const scalingFactor = scalingMap[scaling];
2646
+ const resolvedSize = Math.round(fontSize[size] * scalingFactor);
2647
+ const resolvedLineHeight = Math.round(lineHeight[size] * scalingFactor);
2648
+ const resolvedLetterSpacing = letterSpacingEm[size] * resolvedSize;
2649
+ const textColor = color ? rc(highContrast ? `${color}-12` : `${color}-a11`) : rc("gray-12");
2650
+ const effectiveWeight = weight ?? "regular";
2651
+ const fontFamily = fonts[effectiveWeight] ?? fonts.regular;
2652
+ const numberOfLines = truncate ? 1 : wrap === "nowrap" ? 1 : void 0;
2653
+ const ellipsizeMode = truncate ? "tail" : wrap === "nowrap" ? "clip" : void 0;
2654
+ const textStyle = {
2655
+ fontSize: resolvedSize,
2656
+ lineHeight: resolvedLineHeight,
2657
+ letterSpacing: resolvedLetterSpacing,
2658
+ color: textColor,
2659
+ textAlign: align,
2660
+ fontWeight: weight ? FONT_WEIGHT$4[weight] : void 0,
2661
+ fontFamily,
2662
+ // RN defaults flexShrink to 0; CSS defaults to 1. Without this, text
2663
+ // inside a Flex row overflows instead of wrapping to the available width.
2664
+ flexShrink: 1,
2665
+ // Margins
2666
+ marginTop: sp(mt ?? my ?? m),
2667
+ marginBottom: sp(mb ?? my ?? m),
2668
+ marginLeft: sp(ml ?? mx ?? m),
2669
+ marginRight: sp(mr ?? mx ?? m)
2670
+ };
2671
+ return /* @__PURE__ */ React__default.createElement(
2672
+ reactNative.Text,
2673
+ {
2674
+ numberOfLines,
2675
+ ellipsizeMode,
2676
+ style: [textStyle, style],
2677
+ ...rest
2678
+ }
2679
+ );
2680
+ }
2681
+ Text.displayName = "Text";
2682
+
2683
+ const FONT_WEIGHT$3 = {
2684
+ light: "300",
2685
+ regular: "400",
2686
+ medium: "500",
2687
+ bold: "700"
2688
+ };
2689
+ function Heading({
2690
+ size = 6,
2691
+ weight = "bold",
2692
+ align,
2693
+ truncate,
2694
+ wrap,
2695
+ color,
2696
+ highContrast,
2697
+ m,
2698
+ mx,
2699
+ my,
2700
+ mt,
2701
+ mr,
2702
+ mb,
2703
+ ml,
2704
+ style,
2705
+ children,
2706
+ ...rest
2707
+ }) {
2708
+ const { scaling, fonts } = useThemeContext();
2709
+ const rc = useResolveColor();
2710
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
2711
+ const scalingFactor = scalingMap[scaling];
2712
+ const resolvedSize = Math.round(fontSize[size] * scalingFactor);
2713
+ const resolvedLineHeight = Math.round(headingLineHeight[size] * scalingFactor);
2714
+ const resolvedLetterSpacing = letterSpacingEm[size] * resolvedSize;
2715
+ const textColor = color ? rc(highContrast ? `${color}-12` : `${color}-a11`) : rc("gray-12");
2716
+ const effectiveWeight = weight ?? "bold";
2717
+ const fontFamily = fonts.heading ?? fonts[effectiveWeight] ?? fonts.bold ?? fonts.regular;
2718
+ const numberOfLines = truncate ? 1 : wrap === "nowrap" ? 1 : void 0;
2719
+ const ellipsizeMode = truncate ? "tail" : wrap === "nowrap" ? "clip" : void 0;
2720
+ const headingStyle = {
2721
+ fontSize: resolvedSize,
2722
+ lineHeight: resolvedLineHeight,
2723
+ letterSpacing: resolvedLetterSpacing,
2724
+ color: textColor,
2725
+ textAlign: align,
2726
+ fontWeight: FONT_WEIGHT$3[weight],
2727
+ fontFamily,
2728
+ // RN defaults flexShrink to 0; CSS defaults to 1. Without this, text
2729
+ // inside a Flex row overflows instead of wrapping to the available width.
2730
+ flexShrink: 1,
2731
+ // Margins
2732
+ marginTop: sp(mt ?? my ?? m),
2733
+ marginBottom: sp(mb ?? my ?? m),
2734
+ marginLeft: sp(ml ?? mx ?? m),
2735
+ marginRight: sp(mr ?? mx ?? m)
2736
+ };
2737
+ return /* @__PURE__ */ React__default.createElement(
2738
+ reactNative.Text,
2739
+ {
2740
+ accessibilityRole: "header",
2741
+ numberOfLines,
2742
+ ellipsizeMode,
2743
+ style: [headingStyle, style],
2744
+ ...rest
2745
+ },
2746
+ children
2747
+ );
2748
+ }
2749
+ Heading.displayName = "Heading";
2750
+
2751
+ const FONT_WEIGHT$2 = {
2752
+ light: "300",
2753
+ regular: "400",
2754
+ medium: "500",
2755
+ bold: "700"
2756
+ };
2757
+ function Link({
2758
+ size = 3,
2759
+ weight,
2760
+ truncate,
2761
+ wrap,
2762
+ underline = "auto",
2763
+ color,
2764
+ highContrast,
2765
+ href,
2766
+ onPress,
2767
+ m,
2768
+ mx,
2769
+ my,
2770
+ mt,
2771
+ mr,
2772
+ mb,
2773
+ ml,
2774
+ style,
2775
+ ...rest
2776
+ }) {
2777
+ const { scaling, fonts } = useThemeContext();
2778
+ const rc = useResolveColor();
2779
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
2780
+ const scalingFactor = scalingMap[scaling];
2781
+ const resolvedSize = Math.round(fontSize[size] * scalingFactor);
2782
+ const resolvedLineHeight = Math.round(lineHeight[size] * scalingFactor);
2783
+ const resolvedLetterSpacing = letterSpacingEm[size] * resolvedSize;
2784
+ const prefix = color ?? "accent";
2785
+ const isGray = color === "gray";
2786
+ const linkColor = rc(
2787
+ isGray || highContrast ? `${prefix}-12` : `${prefix}-a11`
2788
+ );
2789
+ const effectiveWeight = weight ?? "regular";
2790
+ const fontFamily = fonts[effectiveWeight] ?? fonts.regular;
2791
+ const showUnderline = underline === "always" || underline === "auto" && !!highContrast;
2792
+ const textDecorationLine = showUnderline ? "underline" : "none";
2793
+ const textDecorationColor = showUnderline ? rc(highContrast ? `${prefix}-a6` : `${prefix}-a5`) : void 0;
2794
+ const numberOfLines = truncate ? 1 : wrap === "nowrap" ? 1 : void 0;
2795
+ const ellipsizeMode = truncate ? "tail" : wrap === "nowrap" ? "clip" : void 0;
2796
+ const handlePress = React__default.useCallback(
2797
+ (e) => {
2798
+ if (onPress) {
2799
+ onPress(e);
2800
+ } else if (href) {
2801
+ void reactNative.Linking.openURL(href);
2802
+ }
2803
+ },
2804
+ [onPress, href]
2805
+ );
2806
+ const linkStyle = {
2807
+ fontSize: resolvedSize,
2808
+ lineHeight: resolvedLineHeight,
2809
+ letterSpacing: resolvedLetterSpacing,
2810
+ color: linkColor,
2811
+ fontWeight: weight ? FONT_WEIGHT$2[weight] : void 0,
2812
+ fontFamily,
2813
+ textDecorationLine,
2814
+ textDecorationColor,
2815
+ // RN defaults flexShrink to 0; CSS defaults to 1. Without this, text
2816
+ // inside a Flex row overflows instead of wrapping to the available width.
2817
+ flexShrink: 1,
2818
+ // Margins
2819
+ marginTop: sp(mt ?? my ?? m),
2820
+ marginBottom: sp(mb ?? my ?? m),
2821
+ marginLeft: sp(ml ?? mx ?? m),
2822
+ marginRight: sp(mr ?? mx ?? m)
2823
+ };
2824
+ return /* @__PURE__ */ React__default.createElement(
2825
+ reactNative.Text,
2826
+ {
2827
+ accessibilityRole: "link",
2828
+ numberOfLines,
2829
+ ellipsizeMode,
2830
+ onPress: handlePress,
2831
+ style: [linkStyle, style],
2832
+ ...rest
2833
+ }
2834
+ );
2835
+ }
2836
+ Link.displayName = "Link";
2837
+
2838
+ const FONT_WEIGHT$1 = {
2839
+ light: "300",
2840
+ regular: "400",
2841
+ medium: "500",
2842
+ bold: "700"
2843
+ };
2844
+ function Blockquote({
2845
+ size = 3,
2846
+ weight = "regular",
2847
+ color,
2848
+ highContrast,
2849
+ truncate,
2850
+ wrap,
2851
+ m,
2852
+ mx,
2853
+ my,
2854
+ mt,
2855
+ mr,
2856
+ mb,
2857
+ ml,
2858
+ style,
2859
+ children
2860
+ }) {
2861
+ const { scaling, fonts } = useThemeContext();
2862
+ const rc = useResolveColor();
2863
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
2864
+ const scalingFactor = scalingMap[scaling];
2865
+ const resolvedSize = Math.round(fontSize[size] * scalingFactor);
2866
+ const resolvedLineHeight = Math.round(lineHeight[size] * scalingFactor);
2867
+ const resolvedLetterSpacing = letterSpacingEm[size] * resolvedSize;
2868
+ const borderColor = rc(color ? `${color}-a6` : "accent-a6");
2869
+ const textColor = color ? rc(highContrast ? `${color}-12` : `${color}-a11`) : rc("gray-12");
2870
+ const fontFamily = fonts[weight] ?? fonts.regular;
2871
+ const numberOfLines = truncate ? 1 : wrap === "nowrap" ? 1 : void 0;
2872
+ const ellipsizeMode = truncate ? "tail" : wrap === "nowrap" ? "clip" : void 0;
2873
+ const s1 = space[1] * scalingFactor;
2874
+ const s3 = space[3] * scalingFactor;
2875
+ const s5 = space[5] * scalingFactor;
2876
+ const borderWidth = Math.max(s1, resolvedSize * 0.25);
2877
+ const paddingLeft = Math.min(s5, Math.max(s3, resolvedSize * 0.5));
2878
+ const containerStyle = {
2879
+ borderLeftWidth: borderWidth,
2880
+ borderLeftColor: borderColor,
2881
+ paddingLeft,
2882
+ // RN defaults flexShrink to 0; CSS defaults to 1. Without this, text
2883
+ // inside a Flex row overflows instead of wrapping to the available width.
2884
+ flexShrink: 1,
2885
+ // Margins
2886
+ marginTop: sp(mt ?? my ?? m),
2887
+ marginBottom: sp(mb ?? my ?? m),
2888
+ marginLeft: sp(ml ?? mx ?? m),
2889
+ marginRight: sp(mr ?? mx ?? m)
2890
+ };
2891
+ const textStyle = {
2892
+ fontSize: resolvedSize,
2893
+ lineHeight: resolvedLineHeight,
2894
+ letterSpacing: resolvedLetterSpacing,
2895
+ fontWeight: FONT_WEIGHT$1[weight],
2896
+ fontFamily,
2897
+ color: textColor
2898
+ };
2899
+ return /* @__PURE__ */ React__default.createElement(reactNative.View, { style: [containerStyle, style] }, /* @__PURE__ */ React__default.createElement(
2900
+ reactNative.Text,
2901
+ {
2902
+ numberOfLines,
2903
+ ellipsizeMode,
2904
+ style: textStyle
2905
+ },
2906
+ children
2907
+ ));
2908
+ }
2909
+ Blockquote.displayName = "Blockquote";
2910
+
2911
+ function Em({
2912
+ truncate,
2913
+ wrap,
2914
+ m,
2915
+ mx,
2916
+ my,
2917
+ mt,
2918
+ mr,
2919
+ mb,
2920
+ ml,
2921
+ style,
2922
+ ...rest
2923
+ }) {
2924
+ const { scaling } = useThemeContext();
2925
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
2926
+ const numberOfLines = truncate ? 1 : wrap === "nowrap" ? 1 : void 0;
2927
+ const ellipsizeMode = truncate ? "tail" : wrap === "nowrap" ? "clip" : void 0;
2928
+ const emStyle = {
2929
+ fontStyle: "italic",
2930
+ // RN defaults flexShrink to 0; CSS defaults to 1. Without this, text
2931
+ // inside a Flex row overflows instead of wrapping to the available width.
2932
+ flexShrink: 1,
2933
+ marginTop: sp(mt ?? my ?? m),
2934
+ marginBottom: sp(mb ?? my ?? m),
2935
+ marginLeft: sp(ml ?? mx ?? m),
2936
+ marginRight: sp(mr ?? mx ?? m)
2937
+ };
2938
+ return /* @__PURE__ */ React__default.createElement(
2939
+ reactNative.Text,
2940
+ {
2941
+ numberOfLines,
2942
+ ellipsizeMode,
2943
+ style: [emStyle, style],
2944
+ ...rest
2945
+ }
2946
+ );
2947
+ }
2948
+ Em.displayName = "Em";
2949
+
2950
+ function Strong({
2951
+ truncate,
2952
+ wrap,
2953
+ m,
2954
+ mx,
2955
+ my,
2956
+ mt,
2957
+ mr,
2958
+ mb,
2959
+ ml,
2960
+ style,
2961
+ ...rest
2962
+ }) {
2963
+ const { scaling, fonts } = useThemeContext();
2964
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
2965
+ const numberOfLines = truncate ? 1 : wrap === "nowrap" ? 1 : void 0;
2966
+ const ellipsizeMode = truncate ? "tail" : wrap === "nowrap" ? "clip" : void 0;
2967
+ const strongStyle = {
2968
+ fontWeight: "700",
2969
+ fontFamily: fonts.bold ?? fonts.regular,
2970
+ // RN defaults flexShrink to 0; CSS defaults to 1. Without this, text
2971
+ // inside a Flex row overflows instead of wrapping to the available width.
2972
+ flexShrink: 1,
2973
+ marginTop: sp(mt ?? my ?? m),
2974
+ marginBottom: sp(mb ?? my ?? m),
2975
+ marginLeft: sp(ml ?? mx ?? m),
2976
+ marginRight: sp(mr ?? mx ?? m)
2977
+ };
2978
+ return /* @__PURE__ */ React__default.createElement(
2979
+ reactNative.Text,
2980
+ {
2981
+ numberOfLines,
2982
+ ellipsizeMode,
2983
+ style: [strongStyle, style],
2984
+ ...rest
2985
+ }
2986
+ );
2987
+ }
2988
+ Strong.displayName = "Strong";
2989
+
2990
+ const FONT_WEIGHT = {
2991
+ light: "300",
2992
+ regular: "400",
2993
+ medium: "500",
2994
+ bold: "700"
2995
+ };
2996
+ function Code({
2997
+ size = 3,
2998
+ variant = "soft",
2999
+ weight,
3000
+ color,
3001
+ highContrast,
3002
+ truncate,
3003
+ wrap,
3004
+ m,
3005
+ mx,
3006
+ my,
3007
+ mt,
3008
+ mr,
3009
+ mb,
3010
+ ml,
3011
+ style,
3012
+ ...rest
3013
+ }) {
3014
+ const { scaling, fonts, radius } = useThemeContext();
3015
+ const rc = useResolveColor();
3016
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
3017
+ const scalingFactor = scalingMap[scaling];
3018
+ const resolvedSize = Math.round(fontSize[size] * scalingFactor * 0.85);
3019
+ const resolvedLetterSpacing = letterSpacingEm[size] * resolvedSize;
3020
+ const prefix = color ?? "accent";
3021
+ const textColor = (() => {
3022
+ switch (variant) {
3023
+ case "solid":
3024
+ return rc(`${prefix}-contrast`);
3025
+ case "soft":
3026
+ case "outline":
3027
+ case "ghost":
3028
+ default:
3029
+ return rc(highContrast ? `${prefix}-12` : `${prefix}-a11`);
3030
+ }
3031
+ })();
3032
+ const backgroundColor = (() => {
3033
+ switch (variant) {
3034
+ case "solid":
3035
+ return rc(`${prefix}-9`);
3036
+ case "soft":
3037
+ return rc(`${prefix}-a3`);
3038
+ default:
3039
+ return void 0;
3040
+ }
3041
+ })();
3042
+ const borderColor = variant === "outline" ? rc(`${prefix}-a7`) : void 0;
3043
+ const effectiveWeight = weight ?? "regular";
3044
+ const fontFamily = fonts.code ?? fonts[effectiveWeight] ?? fonts.regular;
3045
+ const numberOfLines = truncate ? 1 : wrap === "nowrap" ? 1 : void 0;
3046
+ const ellipsizeMode = truncate ? "tail" : wrap === "nowrap" ? "clip" : void 0;
3047
+ const paddingVertical = Math.round(resolvedSize * 0.1);
3048
+ const paddingHorizontal = Math.round(resolvedSize * 0.35);
3049
+ const codeStyle = {
3050
+ fontSize: resolvedSize,
3051
+ letterSpacing: resolvedLetterSpacing,
3052
+ fontWeight: weight ? FONT_WEIGHT[weight] : void 0,
3053
+ fontFamily,
3054
+ color: textColor,
3055
+ backgroundColor,
3056
+ borderRadius: getRadius(radius, 1),
3057
+ borderWidth: borderColor ? 1 : void 0,
3058
+ borderColor,
3059
+ paddingVertical,
3060
+ paddingHorizontal,
3061
+ // Shrink to content width when used standalone (no-op when nested inline in Text).
3062
+ alignSelf: variant !== "ghost" ? "flex-start" : void 0,
3063
+ // Margins
3064
+ marginTop: sp(mt ?? my ?? m),
3065
+ marginBottom: sp(mb ?? my ?? m),
3066
+ marginLeft: sp(ml ?? mx ?? m),
3067
+ marginRight: sp(mr ?? mx ?? m)
3068
+ };
3069
+ return /* @__PURE__ */ React__default.createElement(
3070
+ reactNative.Text,
3071
+ {
3072
+ numberOfLines,
3073
+ ellipsizeMode,
3074
+ style: [codeStyle, style],
3075
+ ...rest
3076
+ }
3077
+ );
3078
+ }
3079
+ Code.displayName = "Code";
3080
+
3081
+ function Kbd({
3082
+ size = 2,
3083
+ variant = "classic",
3084
+ m,
3085
+ mx,
3086
+ my,
3087
+ mt,
3088
+ mr,
3089
+ mb,
3090
+ ml,
3091
+ style,
3092
+ children
3093
+ }) {
3094
+ const { scaling, fonts, radius } = useThemeContext();
3095
+ const rc = useResolveColor();
3096
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
3097
+ const sf = scalingMap[scaling];
3098
+ const kbdFontSize = Math.round(fontSize[size] * sf * 0.8);
3099
+ const borderR = Math.max(2, Math.round(getRadius(radius, 2) * 0.35 * (kbdFontSize / 14)));
3100
+ const minW = Math.round(kbdFontSize * 1.75);
3101
+ const kbdHeight = Math.round(kbdFontSize * 1.7);
3102
+ const ph = Math.round(kbdFontSize * 0.5);
3103
+ const pb = Math.round(kbdFontSize * 0.05);
3104
+ const parentFontSize = Math.round(fontSize[size] * sf);
3105
+ const ascender = Math.round(parentFontSize * 0.82);
3106
+ const translateY = Math.round((kbdHeight - ascender) * 0.5);
3107
+ const isClassic = variant === "classic";
3108
+ const containerStyle = {
3109
+ alignSelf: "flex-start",
3110
+ flexDirection: "row",
3111
+ alignItems: "center",
3112
+ justifyContent: "center",
3113
+ height: kbdHeight,
3114
+ minWidth: minW,
3115
+ paddingHorizontal: ph,
3116
+ paddingBottom: pb,
3117
+ borderRadius: borderR,
3118
+ backgroundColor: isClassic ? rc("gray-1") : rc("gray-a3"),
3119
+ // Classic uses border to approximate box-shadow outline + bottom shadow
3120
+ ...isClassic ? {
3121
+ borderWidth: 1,
3122
+ borderColor: rc("gray-a5"),
3123
+ borderBottomWidth: 2,
3124
+ borderBottomColor: rc("gray-a7")
3125
+ } : {},
3126
+ transform: [{ translateY }],
3127
+ // iOS shadow approximates the outer drop shadow from Radix box-shadow
3128
+ ...isClassic ? reactNative.Platform.select({
3129
+ ios: {
3130
+ shadowColor: rc("gray-12"),
3131
+ shadowOffset: { width: 0, height: 1 },
3132
+ shadowOpacity: 0.12,
3133
+ shadowRadius: 1
3134
+ },
3135
+ android: {
3136
+ elevation: 1
3137
+ }
3138
+ }) : {},
3139
+ // Margins
3140
+ marginTop: sp(mt ?? my ?? m),
3141
+ marginBottom: sp(mb ?? my ?? m),
3142
+ marginLeft: sp(ml ?? mx ?? m),
3143
+ marginRight: sp(mr ?? mx ?? m)
3144
+ };
3145
+ const textStyle = {
3146
+ fontSize: kbdFontSize,
3147
+ // Radix uses the default (body) font, NOT monospace
3148
+ fontFamily: fonts.regular,
3149
+ fontWeight: "normal",
3150
+ color: rc("gray-12"),
3151
+ letterSpacing: letterSpacingEm[size] * kbdFontSize
3152
+ };
3153
+ const highlightStyle = isClassic ? {
3154
+ position: "absolute",
3155
+ top: 0,
3156
+ left: 1,
3157
+ right: 1,
3158
+ height: 1,
3159
+ backgroundColor: rc("gray-a3"),
3160
+ borderTopLeftRadius: Math.max(0, borderR - 1),
3161
+ borderTopRightRadius: Math.max(0, borderR - 1)
3162
+ } : null;
3163
+ return /* @__PURE__ */ React__default.createElement(reactNative.View, { style: [containerStyle, style] }, highlightStyle && /* @__PURE__ */ React__default.createElement(reactNative.View, { style: highlightStyle }), /* @__PURE__ */ React__default.createElement(reactNative.Text, { style: textStyle }, children));
3164
+ }
3165
+ Kbd.displayName = "Kbd";
3166
+
3167
+ function Quote({
3168
+ truncate,
3169
+ wrap,
3170
+ m,
3171
+ mx,
3172
+ my,
3173
+ mt,
3174
+ mr,
3175
+ mb,
3176
+ ml,
3177
+ style,
3178
+ children,
3179
+ ...rest
3180
+ }) {
3181
+ const { scaling } = useThemeContext();
3182
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
3183
+ const numberOfLines = truncate ? 1 : wrap === "nowrap" ? 1 : void 0;
3184
+ const ellipsizeMode = truncate ? "tail" : wrap === "nowrap" ? "clip" : void 0;
3185
+ const quoteStyle = {
3186
+ fontStyle: "italic",
3187
+ // RN defaults flexShrink to 0; CSS defaults to 1. Without this, text
3188
+ // inside a Flex row overflows instead of wrapping to the available width.
3189
+ flexShrink: 1,
3190
+ marginTop: sp(mt ?? my ?? m),
3191
+ marginBottom: sp(mb ?? my ?? m),
3192
+ marginLeft: sp(ml ?? mx ?? m),
3193
+ marginRight: sp(mr ?? mx ?? m)
3194
+ };
3195
+ return /* @__PURE__ */ React__default.createElement(
3196
+ reactNative.Text,
3197
+ {
3198
+ numberOfLines,
3199
+ ellipsizeMode,
3200
+ style: [quoteStyle, style],
3201
+ ...rest
3202
+ },
3203
+ "\u201C",
3204
+ children,
3205
+ "\u201D"
3206
+ );
3207
+ }
3208
+ Quote.displayName = "Quote";
3209
+
3210
+ const SIZE_HEIGHT = { 1: 24, 2: 32, 3: 40, 4: 48 };
3211
+ const SIZE_PADDING_X = { 1: 8, 2: 12, 3: 16, 4: 24 };
3212
+ const GHOST_PADDING_X = { 1: 8, 2: 8, 3: 12, 4: 16 };
3213
+ const GHOST_PADDING_Y = { 1: 4, 2: 4, 3: 6, 4: 8 };
3214
+ const SIZE_GAP = { 1: 4, 2: 8, 3: 12, 4: 12 };
3215
+ const GHOST_GAP = { 1: 4, 2: 4, 3: 8, 4: 8 };
3216
+ const SIZE_FONT = { 1: 1, 2: 2, 3: 3, 4: 4 };
3217
+ const SIZE_RADIUS_LEVEL = { 1: 1, 2: 2, 3: 3, 4: 4 };
3218
+ function Button({
3219
+ size = 2,
3220
+ variant = "solid",
3221
+ color,
3222
+ highContrast,
3223
+ radius: radiusProp,
3224
+ loading = false,
3225
+ disabled = false,
3226
+ children,
3227
+ m,
3228
+ mx,
3229
+ my,
3230
+ mt,
3231
+ mr,
3232
+ mb,
3233
+ ml,
3234
+ style,
3235
+ onPress,
3236
+ ...rest
3237
+ }) {
3238
+ const { appearance, scaling, fonts, radius: themeRadius } = useThemeContext();
3239
+ const rc = useResolveColor();
3240
+ const effectiveRadius = radiusProp ?? themeRadius;
3241
+ const isDisabled = disabled || loading;
3242
+ const prefix = color ?? "accent";
3243
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
3244
+ const scalingFactor = scalingMap[scaling];
3245
+ const fontIdx = SIZE_FONT[size];
3246
+ const resolvedFontSize = Math.round(fontSize[fontIdx] * scalingFactor);
3247
+ const resolvedLineHeight = Math.round(lineHeight[fontIdx] * scalingFactor);
3248
+ const resolvedLetterSpacing = letterSpacingEm[fontIdx] * resolvedFontSize;
3249
+ const isGhost = variant === "ghost";
3250
+ const resolvedHeight = Math.round(SIZE_HEIGHT[size] * scalingFactor);
3251
+ const resolvedPaddingX = Math.round(
3252
+ (isGhost ? GHOST_PADDING_X[size] : SIZE_PADDING_X[size]) * scalingFactor
3253
+ );
3254
+ const resolvedPaddingY = isGhost ? Math.round(GHOST_PADDING_Y[size] * scalingFactor) : 0;
3255
+ const resolvedGap = Math.round(
3256
+ (isGhost ? GHOST_GAP[size] : SIZE_GAP[size]) * scalingFactor
3257
+ );
3258
+ const level = SIZE_RADIUS_LEVEL[size];
3259
+ const borderRadius = Math.max(getRadius(effectiveRadius, level), getFullRadius(effectiveRadius));
3260
+ const colors = React.useMemo(() => {
3261
+ if (isDisabled) {
3262
+ const disabledText = rc("gray-a8");
3263
+ switch (variant) {
3264
+ case "classic":
3265
+ return {
3266
+ bg: rc("gray-2"),
3267
+ text: disabledText,
3268
+ border: void 0,
3269
+ pressedBg: rc("gray-2")
3270
+ };
3271
+ case "solid":
3272
+ case "soft":
3273
+ return {
3274
+ bg: rc("gray-a3"),
3275
+ text: disabledText,
3276
+ border: void 0,
3277
+ pressedBg: rc("gray-a3")
3278
+ };
3279
+ case "surface":
3280
+ return {
3281
+ bg: rc("gray-a2"),
3282
+ text: disabledText,
3283
+ border: rc("gray-a6"),
3284
+ pressedBg: rc("gray-a2")
3285
+ };
3286
+ case "outline":
3287
+ return {
3288
+ bg: "transparent",
3289
+ text: disabledText,
3290
+ border: rc("gray-a7"),
3291
+ pressedBg: "transparent"
3292
+ };
3293
+ case "ghost":
3294
+ return {
3295
+ bg: "transparent",
3296
+ text: disabledText,
3297
+ border: void 0,
3298
+ pressedBg: "transparent"
3299
+ };
3300
+ }
3301
+ }
3302
+ const hc = highContrast;
3303
+ switch (variant) {
3304
+ case "classic":
3305
+ case "solid": {
3306
+ const bg = hc ? rc(`${prefix}-12`) : rc(`${prefix}-9`);
3307
+ const text = hc ? rc("gray-1") : rc(`${prefix}-contrast`);
3308
+ const pressedBg = hc ? rc(`${prefix}-12`) : rc(`${prefix}-10`);
3309
+ const pressedOpacity = hc ? 0.88 : void 0;
3310
+ return { bg, text, border: void 0, pressedBg, pressedOpacity };
3311
+ }
3312
+ case "soft": {
3313
+ const bg = rc(`${prefix}-a3`);
3314
+ const text = hc ? rc(`${prefix}-12`) : rc(`${prefix}-a11`);
3315
+ const pressedBg = rc(`${prefix}-a5`);
3316
+ return { bg, text, border: void 0, pressedBg };
3317
+ }
3318
+ case "surface": {
3319
+ const bg = rc(`${prefix}-surface`);
3320
+ const text = hc ? rc(`${prefix}-12`) : rc(`${prefix}-a11`);
3321
+ const border = rc(`${prefix}-a7`);
3322
+ const pressedBg = rc(`${prefix}-a3`);
3323
+ return { bg, text, border, pressedBg };
3324
+ }
3325
+ case "outline": {
3326
+ const text = hc ? rc(`${prefix}-12`) : rc(`${prefix}-a11`);
3327
+ const border = hc ? rc("gray-a11") : rc(`${prefix}-a8`);
3328
+ const pressedBg = hc ? rc(`${prefix}-a3`) : rc(`${prefix}-a2`);
3329
+ return { bg: "transparent", text, border, pressedBg };
3330
+ }
3331
+ case "ghost": {
3332
+ const text = hc ? rc(`${prefix}-12`) : rc(`${prefix}-a11`);
3333
+ const pressedBg = rc(`${prefix}-a4`);
3334
+ return { bg: "transparent", text, border: void 0, pressedBg };
3335
+ }
3336
+ }
3337
+ }, [variant, prefix, highContrast, isDisabled, loading, rc]);
3338
+ const fontFamily = isGhost ? fonts.regular : fonts.medium ?? fonts.regular;
3339
+ const handlePress = React.useCallback(
3340
+ (e) => {
3341
+ if (!isDisabled && onPress) onPress(e);
3342
+ },
3343
+ [isDisabled, onPress]
3344
+ );
3345
+ const isClassic = variant === "classic";
3346
+ return /* @__PURE__ */ React__default.createElement(
3347
+ reactNative.Pressable,
3348
+ {
3349
+ onPress: handlePress,
3350
+ disabled: isDisabled,
3351
+ accessibilityRole: "button",
3352
+ accessibilityState: { disabled: isDisabled, busy: loading },
3353
+ style: ({ pressed }) => {
3354
+ const bg = pressed && !isDisabled ? colors.pressedBg : colors.bg;
3355
+ const opacity = pressed && !isDisabled && colors.pressedOpacity != null ? colors.pressedOpacity : isDisabled && !loading ? 1 : void 0;
3356
+ const containerStyle = {
3357
+ flexDirection: "row",
3358
+ alignItems: "center",
3359
+ justifyContent: "center",
3360
+ alignSelf: "flex-start",
3361
+ overflow: "hidden",
3362
+ height: isGhost ? void 0 : resolvedHeight,
3363
+ paddingHorizontal: resolvedPaddingX,
3364
+ paddingVertical: isGhost ? resolvedPaddingY : void 0,
3365
+ gap: resolvedGap,
3366
+ backgroundColor: bg,
3367
+ borderRadius,
3368
+ borderWidth: colors.border ? 1 : void 0,
3369
+ borderColor: colors.border,
3370
+ opacity,
3371
+ // Margins
3372
+ marginTop: sp(mt ?? my ?? m),
3373
+ marginBottom: sp(mb ?? my ?? m),
3374
+ marginLeft: sp(ml ?? mx ?? m),
3375
+ marginRight: sp(mr ?? mx ?? m)
3376
+ };
3377
+ const classicStyle = isClassic ? getClassicEffect(appearance, { pressed, disabled: isDisabled && !loading }) : void 0;
3378
+ return [containerStyle, classicStyle, style];
3379
+ },
3380
+ ...rest
3381
+ },
3382
+ isClassic && !isDisabled && /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
3383
+ reactNative.View,
3384
+ {
3385
+ pointerEvents: "none",
3386
+ style: {
3387
+ position: "absolute",
3388
+ top: 0,
3389
+ left: 0,
3390
+ right: 0,
3391
+ height: "50%",
3392
+ backgroundColor: "rgba(255,255,255,0.12)"
3393
+ }
3394
+ }
3395
+ ), /* @__PURE__ */ React__default.createElement(
3396
+ reactNative.View,
3397
+ {
3398
+ pointerEvents: "none",
3399
+ style: {
3400
+ position: "absolute",
3401
+ bottom: 0,
3402
+ left: 0,
3403
+ right: 0,
3404
+ height: "50%",
3405
+ backgroundColor: "rgba(0,0,0,0.08)"
3406
+ }
3407
+ }
3408
+ )),
3409
+ loading ? /* @__PURE__ */ React__default.createElement(reactNative.View, { style: { position: "relative", flexDirection: "row", alignItems: "center", justifyContent: "center" } }, /* @__PURE__ */ React__default.createElement(reactNative.View, { style: { opacity: 0, flexDirection: "row", alignItems: "center", gap: resolvedGap } }, renderContent(children, {
3410
+ fontSize: resolvedFontSize,
3411
+ lineHeight: resolvedLineHeight,
3412
+ letterSpacing: resolvedLetterSpacing,
3413
+ color: colors.text,
3414
+ fontWeight: isGhost ? "400" : "500",
3415
+ fontFamily
3416
+ })), /* @__PURE__ */ React__default.createElement(reactNative.View, { style: { position: "absolute", alignItems: "center", justifyContent: "center" } }, /* @__PURE__ */ React__default.createElement(reactNative.ActivityIndicator, { size: "small", color: colors.text }))) : renderContent(children, {
3417
+ fontSize: resolvedFontSize,
3418
+ lineHeight: resolvedLineHeight,
3419
+ letterSpacing: resolvedLetterSpacing,
3420
+ color: colors.text,
3421
+ fontWeight: isGhost ? "400" : "500",
3422
+ fontFamily
3423
+ })
3424
+ );
3425
+ }
3426
+ Button.displayName = "Button";
3427
+ function renderContent(children, textStyle) {
3428
+ if (typeof children === "string" || typeof children === "number") {
3429
+ return /* @__PURE__ */ React__default.createElement(reactNative.Text, { style: textStyle }, children);
3430
+ }
3431
+ return children;
3432
+ }
3433
+
3434
+ const SIZE_PX = { 1: 14, 2: 16, 3: 20 };
3435
+ const INDICATOR_SIZE = { 1: 9, 2: 10, 3: 12 };
3436
+ const RADIUS_MULT = { 1: 0.875, 2: 1, 3: 1.25 };
3437
+ function Checkbox({
3438
+ size = 2,
3439
+ variant = "surface",
3440
+ color,
3441
+ highContrast,
3442
+ checked: checkedProp,
3443
+ defaultChecked = false,
3444
+ onCheckedChange,
3445
+ disabled = false,
3446
+ m,
3447
+ mx,
3448
+ my,
3449
+ mt,
3450
+ mr,
3451
+ mb,
3452
+ ml,
3453
+ style,
3454
+ ...rest
3455
+ }) {
3456
+ const { appearance, scaling, radius } = useThemeContext();
3457
+ const rc = useResolveColor();
3458
+ const [internal, setInternal] = React__default.useState(defaultChecked);
3459
+ const isControlled = checkedProp !== void 0;
3460
+ const checkedState = isControlled ? checkedProp : internal;
3461
+ const isChecked = checkedState === true;
3462
+ const isIndeterminate = checkedState === "indeterminate";
3463
+ const isActive = isChecked || isIndeterminate;
3464
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
3465
+ const scalingFactor = scalingMap[scaling];
3466
+ const boxSize = Math.round(SIZE_PX[size] * scalingFactor);
3467
+ const indicatorSize = Math.round(INDICATOR_SIZE[size] * scalingFactor);
3468
+ const borderRadius = Math.round(getRadius(radius, 1) * RADIUS_MULT[size]);
3469
+ const prefix = color ?? "accent";
3470
+ const colors = React.useMemo(() => {
3471
+ if (disabled) {
3472
+ const indicator = isActive ? rc("gray-a8") : void 0;
3473
+ switch (variant) {
3474
+ case "classic":
3475
+ case "surface":
3476
+ return {
3477
+ bg: rc("gray-a3"),
3478
+ border: rc("gray-a6"),
3479
+ indicator,
3480
+ showBorder: true
3481
+ };
3482
+ case "soft":
3483
+ return {
3484
+ bg: rc("gray-a3"),
3485
+ border: void 0,
3486
+ indicator,
3487
+ showBorder: false
3488
+ };
3489
+ }
3490
+ }
3491
+ const hc = highContrast;
3492
+ switch (variant) {
3493
+ case "classic":
3494
+ case "surface": {
3495
+ if (isActive) {
3496
+ const bg = hc ? rc(`${prefix}-12`) : rc(`${prefix}-9`);
3497
+ const indicator = hc ? rc(`${prefix}-1`) : rc(`${prefix}-contrast`);
3498
+ return { bg, border: void 0, indicator, showBorder: false };
3499
+ }
3500
+ return {
3501
+ bg: rc("gray-surface"),
3502
+ border: rc("gray-a7"),
3503
+ indicator: void 0,
3504
+ showBorder: true
3505
+ };
3506
+ }
3507
+ case "soft": {
3508
+ const bg = rc(`${prefix}-a5`);
3509
+ const indicator = isActive ? hc ? rc(`${prefix}-12`) : rc(`${prefix}-a11`) : void 0;
3510
+ return { bg, border: void 0, indicator, showBorder: false };
3511
+ }
3512
+ }
3513
+ }, [variant, prefix, highContrast, isActive, disabled, rc]);
3514
+ const handlePress = React.useCallback(() => {
3515
+ if (disabled) return;
3516
+ const next = isChecked ? false : true;
3517
+ if (!isControlled) setInternal(next);
3518
+ onCheckedChange?.(next);
3519
+ }, [disabled, isChecked, isControlled, onCheckedChange]);
3520
+ const isClassic = variant === "classic";
3521
+ const classicStyle = isClassic ? getClassicEffect(appearance, { disabled }) : void 0;
3522
+ const boxStyle = {
3523
+ width: boxSize,
3524
+ height: boxSize,
3525
+ borderRadius,
3526
+ backgroundColor: colors.bg,
3527
+ borderWidth: colors.showBorder ? 1 : void 0,
3528
+ borderColor: colors.border,
3529
+ alignItems: "center",
3530
+ justifyContent: "center",
3531
+ // Margins
3532
+ marginTop: sp(mt ?? my ?? m),
3533
+ marginBottom: sp(mb ?? my ?? m),
3534
+ marginLeft: sp(ml ?? mx ?? m),
3535
+ marginRight: sp(mr ?? mx ?? m)
3536
+ };
3537
+ const indicatorStyle = {
3538
+ fontSize: indicatorSize,
3539
+ lineHeight: indicatorSize + 2,
3540
+ color: colors.indicator,
3541
+ fontWeight: "700"
3542
+ };
3543
+ return /* @__PURE__ */ React__default.createElement(
3544
+ reactNative.Pressable,
3545
+ {
3546
+ onPress: handlePress,
3547
+ disabled,
3548
+ accessibilityRole: "checkbox",
3549
+ accessibilityState: {
3550
+ checked: isIndeterminate ? "mixed" : isChecked,
3551
+ disabled
3552
+ },
3553
+ style: [boxStyle, classicStyle, style],
3554
+ ...rest
3555
+ },
3556
+ isClassic && isActive && !disabled && /* @__PURE__ */ React__default.createElement(reactNative.View, { pointerEvents: "none", style: { position: "absolute", inset: 0, overflow: "hidden", borderRadius } }, /* @__PURE__ */ React__default.createElement(reactNative.View, { style: { position: "absolute", top: 0, left: 0, right: 0, height: "50%", backgroundColor: "rgba(255,255,255,0.12)" } }), /* @__PURE__ */ React__default.createElement(reactNative.View, { style: { position: "absolute", bottom: 0, left: 0, right: 0, height: "50%", backgroundColor: "rgba(0,0,0,0.08)" } })),
3557
+ isActive && /* @__PURE__ */ React__default.createElement(reactNative.Text, { style: indicatorStyle }, isIndeterminate ? "\u2013" : "\u2713")
3558
+ );
3559
+ }
3560
+ Checkbox.displayName = "Checkbox";
3561
+
3562
+ const CheckboxGroupContext = React.createContext(null);
3563
+ const LABEL_FONT_SIZE = { 1: 1, 2: 2, 3: 3 };
3564
+ const LABEL_GAP = { 1: 4, 2: 6, 3: 8 };
3565
+ function CheckboxGroupRoot({
3566
+ size = 2,
3567
+ variant = "surface",
3568
+ color,
3569
+ highContrast,
3570
+ value: valueProp,
3571
+ defaultValue = [],
3572
+ onValueChange,
3573
+ disabled = false,
3574
+ children,
3575
+ m,
3576
+ mx,
3577
+ my,
3578
+ mt,
3579
+ mr,
3580
+ mb,
3581
+ ml,
3582
+ style
3583
+ }) {
3584
+ const { scaling } = useThemeContext();
3585
+ const [internal, setInternal] = React__default.useState(defaultValue);
3586
+ const isControlled = valueProp !== void 0;
3587
+ const value = isControlled ? valueProp : internal;
3588
+ const onItemToggle = React.useCallback((itemValue) => {
3589
+ const next = value.includes(itemValue) ? value.filter((v) => v !== itemValue) : [...value, itemValue];
3590
+ if (!isControlled) setInternal(next);
3591
+ onValueChange?.(next);
3592
+ }, [value, isControlled, onValueChange]);
3593
+ const ctx = React.useMemo(() => ({
3594
+ size,
3595
+ variant,
3596
+ color,
3597
+ highContrast,
3598
+ disabled,
3599
+ value,
3600
+ onItemToggle
3601
+ }), [size, variant, color, highContrast, disabled, value, onItemToggle]);
3602
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
3603
+ return /* @__PURE__ */ React__default.createElement(CheckboxGroupContext.Provider, { value: ctx }, /* @__PURE__ */ React__default.createElement(
3604
+ reactNative.View,
3605
+ {
3606
+ accessibilityRole: "none",
3607
+ style: [
3608
+ { flexDirection: "column", gap: resolveSpace(2, scaling) },
3609
+ {
3610
+ marginTop: sp(mt ?? my ?? m),
3611
+ marginBottom: sp(mb ?? my ?? m),
3612
+ marginLeft: sp(ml ?? mx ?? m),
3613
+ marginRight: sp(mr ?? mx ?? m)
3614
+ },
3615
+ style
3616
+ ]
3617
+ },
3618
+ children
3619
+ ));
3620
+ }
3621
+ CheckboxGroupRoot.displayName = "CheckboxGroup.Root";
3622
+ function CheckboxGroupItem({
3623
+ value: itemValue,
3624
+ disabled: disabledProp,
3625
+ children,
3626
+ m,
3627
+ mx,
3628
+ my,
3629
+ mt,
3630
+ mr,
3631
+ mb,
3632
+ ml,
3633
+ style
3634
+ }) {
3635
+ const ctx = React.useContext(CheckboxGroupContext);
3636
+ if (!ctx) throw new Error("CheckboxGroup.Item must be used within CheckboxGroup.Root");
3637
+ const { size, variant, color, highContrast, disabled: groupDisabled, value, onItemToggle } = ctx;
3638
+ const { scaling, fonts } = useThemeContext();
3639
+ const rc = useResolveColor();
3640
+ const isDisabled = disabledProp ?? groupDisabled;
3641
+ const isChecked = value.includes(itemValue);
3642
+ const handlePress = React.useCallback(() => {
3643
+ if (!isDisabled) onItemToggle(itemValue);
3644
+ }, [isDisabled, onItemToggle, itemValue]);
3645
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
3646
+ const scalingFactor = scalingMap[scaling];
3647
+ const fontIdx = LABEL_FONT_SIZE[size];
3648
+ const resolvedFontSize = Math.round(fontSize[fontIdx] * scalingFactor);
3649
+ const resolvedLineHeight = Math.round(lineHeight[fontIdx] * scalingFactor);
3650
+ const resolvedLetterSpacing = letterSpacingEm[fontIdx] * resolvedFontSize;
3651
+ const gap = Math.round(LABEL_GAP[size] * scalingFactor);
3652
+ const textColor = rc("gray-12");
3653
+ const fontFamily = fonts.regular;
3654
+ const hasLabel = children != null;
3655
+ if (!hasLabel) {
3656
+ return /* @__PURE__ */ React__default.createElement(
3657
+ Checkbox,
3658
+ {
3659
+ size,
3660
+ variant,
3661
+ color,
3662
+ highContrast,
3663
+ checked: isChecked,
3664
+ onCheckedChange: () => onItemToggle(itemValue),
3665
+ disabled: isDisabled,
3666
+ m,
3667
+ mx,
3668
+ my,
3669
+ mt,
3670
+ mr,
3671
+ mb,
3672
+ ml,
3673
+ style
3674
+ }
3675
+ );
3676
+ }
3677
+ const labelStyle = {
3678
+ fontSize: resolvedFontSize,
3679
+ lineHeight: resolvedLineHeight,
3680
+ letterSpacing: resolvedLetterSpacing,
3681
+ color: isDisabled ? rc("gray-a8") : textColor,
3682
+ fontFamily
3683
+ };
3684
+ return /* @__PURE__ */ React__default.createElement(
3685
+ reactNative.Pressable,
3686
+ {
3687
+ onPress: handlePress,
3688
+ disabled: isDisabled,
3689
+ accessibilityRole: "checkbox",
3690
+ accessibilityState: { checked: isChecked, disabled: isDisabled },
3691
+ style: [
3692
+ {
3693
+ flexDirection: "row",
3694
+ alignItems: "center",
3695
+ gap,
3696
+ marginTop: sp(mt ?? my ?? m),
3697
+ marginBottom: sp(mb ?? my ?? m),
3698
+ marginLeft: sp(ml ?? mx ?? m),
3699
+ marginRight: sp(mr ?? mx ?? m)
3700
+ },
3701
+ style
3702
+ ]
3703
+ },
3704
+ /* @__PURE__ */ React__default.createElement(
3705
+ Checkbox,
3706
+ {
3707
+ size,
3708
+ variant,
3709
+ color,
3710
+ highContrast,
3711
+ checked: isChecked,
3712
+ onCheckedChange: () => onItemToggle(itemValue),
3713
+ disabled: isDisabled
3714
+ }
3715
+ ),
3716
+ typeof children === "string" || typeof children === "number" ? /* @__PURE__ */ React__default.createElement(reactNative.Text, { style: labelStyle }, children) : children
3717
+ );
3718
+ }
3719
+ CheckboxGroupItem.displayName = "CheckboxGroup.Item";
3720
+ const CheckboxGroup = Object.assign(CheckboxGroupRoot, {
3721
+ Root: CheckboxGroupRoot,
3722
+ Item: CheckboxGroupItem
3723
+ });
3724
+
3725
+ const CheckboxCardsContext = React.createContext(null);
3726
+ const SIZE_CONFIG = {
3727
+ 1: { paddingLeft: 12, paddingY: 10, checkboxSize: 14, radiusLevel: 3 },
3728
+ 2: { paddingLeft: 16, paddingY: 14, checkboxSize: 16, radiusLevel: 3 },
3729
+ 3: { paddingLeft: 24, paddingY: 20, checkboxSize: 20, radiusLevel: 4 }
3730
+ };
3731
+ function CheckboxCardsRoot({
3732
+ size = 2,
3733
+ variant = "surface",
3734
+ color,
3735
+ highContrast,
3736
+ columns = 1,
3737
+ gap: gapProp = 4,
3738
+ value: valueProp,
3739
+ defaultValue = [],
3740
+ onValueChange,
3741
+ disabled = false,
3742
+ children,
3743
+ m,
3744
+ mx,
3745
+ my,
3746
+ mt,
3747
+ mr,
3748
+ mb,
3749
+ ml,
3750
+ style
3751
+ }) {
3752
+ const { scaling } = useThemeContext();
3753
+ const [internal, setInternal] = React__default.useState(defaultValue);
3754
+ const isControlled = valueProp !== void 0;
3755
+ const value = isControlled ? valueProp : internal;
3756
+ const onItemToggle = React.useCallback((itemValue) => {
3757
+ const next = value.includes(itemValue) ? value.filter((v) => v !== itemValue) : [...value, itemValue];
3758
+ if (!isControlled) setInternal(next);
3759
+ onValueChange?.(next);
3760
+ }, [value, isControlled, onValueChange]);
3761
+ const ctx = React.useMemo(() => ({
3762
+ size,
3763
+ variant,
3764
+ color,
3765
+ highContrast,
3766
+ disabled,
3767
+ value,
3768
+ onItemToggle
3769
+ }), [size, variant, color, highContrast, disabled, value, onItemToggle]);
3770
+ const sp = (token) => token !== void 0 ? resolveSpace(token, scaling) : void 0;
3771
+ const resolvedGap = resolveSpace(gapProp, scaling);
3772
+ return /* @__PURE__ */ React__default.createElement(CheckboxCardsContext.Provider, { value: ctx }, /* @__PURE__ */ React__default.createElement(
3773
+ reactNative.View,
3774
+ {
3775
+ style: [
3776
+ {
3777
+ flexDirection: "row",
3778
+ flexWrap: "wrap",
3779
+ gap: resolvedGap,
3780
+ marginTop: sp(mt ?? my ?? m),
3781
+ marginBottom: sp(mb ?? my ?? m),
3782
+ marginLeft: sp(ml ?? mx ?? m),
3783
+ marginRight: sp(mr ?? mx ?? m)
3784
+ },
3785
+ style
3786
+ ]
3787
+ },
3788
+ React__default.Children.map(children, (child) => /* @__PURE__ */ React__default.createElement(reactNative.View, { style: {
3789
+ flexBasis: columns > 1 ? `${100 / columns}%` : void 0,
3790
+ flexGrow: 1,
3791
+ flexShrink: 1,
3792
+ minWidth: 0
3793
+ } }, child))
3794
+ ));
3795
+ }
3796
+ CheckboxCardsRoot.displayName = "CheckboxCards.Root";
3797
+ function CheckboxCardsItem({
3798
+ value: itemValue,
3799
+ disabled: disabledProp,
3800
+ children,
3801
+ style
3802
+ }) {
3803
+ const ctx = React.useContext(CheckboxCardsContext);
3804
+ if (!ctx) throw new Error("CheckboxCards.Item must be used within CheckboxCards.Root");
3805
+ const { size, variant, color, highContrast, disabled: groupDisabled, value, onItemToggle } = ctx;
3806
+ const { scaling, radius } = useThemeContext();
3807
+ const rc = useResolveColor();
3808
+ const isDisabled = disabledProp ?? groupDisabled;
3809
+ const isChecked = value.includes(itemValue);
3810
+ const handlePress = React.useCallback(() => {
3811
+ if (!isDisabled) onItemToggle(itemValue);
3812
+ }, [isDisabled, onItemToggle, itemValue]);
3813
+ const scalingFactor = scalingMap[scaling];
3814
+ const cfg = SIZE_CONFIG[size];
3815
+ const paddingLeft = Math.round(cfg.paddingLeft * scalingFactor);
3816
+ const paddingY = Math.round(cfg.paddingY * scalingFactor);
3817
+ const checkboxSize = Math.round(cfg.checkboxSize * scalingFactor);
3818
+ const paddingRight = paddingLeft * 2 + checkboxSize;
3819
+ const borderRadius = getRadius(radius, cfg.radiusLevel);
3820
+ const borderColor = rc("gray-a5");
3821
+ const bgColor = rc("gray-surface");
3822
+ const cardStyle = {
3823
+ position: "relative",
3824
+ overflow: "hidden",
3825
+ paddingLeft,
3826
+ paddingRight,
3827
+ paddingTop: paddingY,
3828
+ paddingBottom: paddingY,
3829
+ borderRadius,
3830
+ borderWidth: 1,
3831
+ borderColor,
3832
+ backgroundColor: bgColor,
3833
+ opacity: isDisabled ? 0.5 : void 0
3834
+ };
3835
+ return /* @__PURE__ */ React__default.createElement(
3836
+ reactNative.Pressable,
3837
+ {
3838
+ onPress: handlePress,
3839
+ disabled: isDisabled,
3840
+ accessibilityRole: "checkbox",
3841
+ accessibilityState: { checked: isChecked, disabled: isDisabled },
3842
+ style: [cardStyle, style]
3843
+ },
3844
+ children,
3845
+ /* @__PURE__ */ React__default.createElement(reactNative.View, { style: {
3846
+ position: "absolute",
3847
+ right: paddingLeft,
3848
+ top: 0,
3849
+ bottom: 0,
3850
+ justifyContent: "center"
3851
+ } }, /* @__PURE__ */ React__default.createElement(
3852
+ Checkbox,
3853
+ {
3854
+ size,
3855
+ variant: "surface",
3856
+ color,
3857
+ highContrast,
3858
+ checked: isChecked,
3859
+ onCheckedChange: () => onItemToggle(itemValue),
3860
+ disabled: isDisabled
3861
+ }
3862
+ ))
3863
+ );
3864
+ }
3865
+ CheckboxCardsItem.displayName = "CheckboxCards.Item";
3866
+ const CheckboxCards = Object.assign(CheckboxCardsRoot, {
3867
+ Root: CheckboxCardsRoot,
3868
+ Item: CheckboxCardsItem
3869
+ });
3870
+
3871
+ const ACCENT_COLORS = [
3872
+ "gray",
3873
+ "gold",
3874
+ "bronze",
3875
+ "brown",
3876
+ "yellow",
3877
+ "amber",
3878
+ "orange",
3879
+ "tomato",
3880
+ "red",
3881
+ "ruby",
3882
+ "crimson",
3883
+ "pink",
3884
+ "plum",
3885
+ "purple",
3886
+ "violet",
3887
+ "iris",
3888
+ "indigo",
3889
+ "blue",
3890
+ "cyan",
3891
+ "teal",
3892
+ "jade",
3893
+ "green",
3894
+ "grass",
3895
+ "lime",
3896
+ "mint",
3897
+ "sky"
3898
+ ];
3899
+ const GRAY_OPTIONS = ["auto", "gray", "mauve", "slate", "sage", "olive", "sand"];
3900
+ const RADIUS_OPTIONS = ["none", "small", "medium", "large", "full"];
3901
+ const SCALING_OPTIONS = ["90%", "95%", "100%", "105%", "110%"];
3902
+ const PANEL_WIDTH = 280;
3903
+ function ThemeControls({ showCopyTheme, onCopyTheme, defaultOpen = false } = {}) {
3904
+ const [open, setOpen] = React.useState(defaultOpen);
3905
+ const slideAnim = React__default.useRef(new reactNative.Animated.Value(defaultOpen ? 0 : PANEL_WIDTH + 20)).current;
3906
+ const { height: windowHeight } = reactNative.useWindowDimensions();
3907
+ const {
3908
+ appearance,
3909
+ accentColor,
3910
+ grayColor,
3911
+ resolvedGrayColor,
3912
+ radius,
3913
+ scaling,
3914
+ onAppearanceChange,
3915
+ onAccentColorChange,
3916
+ onGrayColorChange,
3917
+ onRadiusChange,
3918
+ onScalingChange
3919
+ } = useThemeContext();
3920
+ const rc = useResolveColor();
3921
+ const toggle = () => {
3922
+ const toValue = open ? PANEL_WIDTH + 20 : 0;
3923
+ reactNative.Animated.spring(slideAnim, {
3924
+ toValue,
3925
+ useNativeDriver: true,
3926
+ damping: 20,
3927
+ stiffness: 200
3928
+ }).start();
3929
+ setOpen(!open);
3930
+ };
3931
+ const handleCopyTheme = () => {
3932
+ const config = `<Theme accentColor="${accentColor}" grayColor="${grayColor}" appearance="${appearance}" radius="${radius}" scaling="${scaling}">`;
3933
+ onCopyTheme?.(config);
3934
+ };
3935
+ return /* @__PURE__ */ React__default.createElement(reactNative.View, { style: styles.container, pointerEvents: "box-none" }, /* @__PURE__ */ React__default.createElement(
3936
+ reactNative.Pressable,
3937
+ {
3938
+ onPress: toggle,
3939
+ accessibilityRole: "button",
3940
+ accessibilityLabel: "Toggle theme panel",
3941
+ style: [
3942
+ styles.toggleButton,
3943
+ {
3944
+ backgroundColor: rc("gray-2"),
3945
+ borderColor: rc("gray-6")
3946
+ }
3947
+ ]
3948
+ },
3949
+ /* @__PURE__ */ React__default.createElement(Text, { size: 2, weight: "bold", style: { color: rc("gray-12") } }, "T")
3950
+ ), /* @__PURE__ */ React__default.createElement(
3951
+ reactNative.Animated.View,
3952
+ {
3953
+ style: [
3954
+ styles.panelWrapper,
3955
+ { maxHeight: windowHeight - 120, transform: [{ translateX: slideAnim }] }
3956
+ ]
3957
+ },
3958
+ /* @__PURE__ */ React__default.createElement(
3959
+ reactNative.ScrollView,
3960
+ {
3961
+ style: [styles.panel, { backgroundColor: rc("gray-2"), borderColor: rc("gray-6") }],
3962
+ contentContainerStyle: styles.panelContent,
3963
+ showsVerticalScrollIndicator: false
3964
+ },
3965
+ /* @__PURE__ */ React__default.createElement(reactNative.View, { style: styles.headerRow }, /* @__PURE__ */ React__default.createElement(Heading, { size: 5, style: { color: rc("gray-12") } }, "Theme"), /* @__PURE__ */ React__default.createElement(
3966
+ reactNative.Pressable,
3967
+ {
3968
+ onPress: toggle,
3969
+ accessibilityRole: "button",
3970
+ accessibilityLabel: "Close theme panel",
3971
+ style: [styles.closeButton, { borderColor: rc("gray-6") }]
3972
+ },
3973
+ /* @__PURE__ */ React__default.createElement(Text, { size: 2, weight: "bold", style: { color: rc("gray-12") } }, "T")
3974
+ )),
3975
+ /* @__PURE__ */ React__default.createElement(SectionLabel, { rc }, "Accent color"),
3976
+ /* @__PURE__ */ React__default.createElement(reactNative.View, { style: styles.dotGrid }, ACCENT_COLORS.map((c) => /* @__PURE__ */ React__default.createElement(
3977
+ ColorDot,
3978
+ {
3979
+ key: c,
3980
+ color: `${c}-9`,
3981
+ selected: accentColor === c,
3982
+ onPress: () => onAccentColorChange(c),
3983
+ rc,
3984
+ label: c
3985
+ }
3986
+ ))),
3987
+ /* @__PURE__ */ React__default.createElement(SectionLabel, { rc }, "Gray color"),
3988
+ /* @__PURE__ */ React__default.createElement(reactNative.View, { style: styles.dotGrid }, GRAY_OPTIONS.map((g) => {
3989
+ const dotColor = g === "auto" ? `${resolvedGrayColor}-9` : `${g}-9`;
3990
+ return /* @__PURE__ */ React__default.createElement(
3991
+ ColorDot,
3992
+ {
3993
+ key: g,
3994
+ color: dotColor,
3995
+ selected: grayColor === g,
3996
+ onPress: () => onGrayColorChange(g),
3997
+ rc,
3998
+ label: g
3999
+ }
4000
+ );
4001
+ })),
4002
+ /* @__PURE__ */ React__default.createElement(SectionLabel, { rc }, "Appearance"),
4003
+ /* @__PURE__ */ React__default.createElement(reactNative.View, { style: styles.segmentedRow }, /* @__PURE__ */ React__default.createElement(
4004
+ SegmentedButton,
4005
+ {
4006
+ label: "Light",
4007
+ icon: "\u2600\uFE0E",
4008
+ selected: appearance === "light",
4009
+ onPress: () => onAppearanceChange("light"),
4010
+ rc
4011
+ }
4012
+ ), /* @__PURE__ */ React__default.createElement(
4013
+ SegmentedButton,
4014
+ {
4015
+ label: "Dark",
4016
+ icon: "\u263E",
4017
+ selected: appearance === "dark",
4018
+ onPress: () => onAppearanceChange("dark"),
4019
+ rc
4020
+ }
4021
+ )),
4022
+ /* @__PURE__ */ React__default.createElement(SectionLabel, { rc }, "Radius"),
4023
+ /* @__PURE__ */ React__default.createElement(reactNative.View, { style: styles.radiusRow }, RADIUS_OPTIONS.map((r) => /* @__PURE__ */ React__default.createElement(
4024
+ RadiusPreview,
4025
+ {
4026
+ key: r,
4027
+ token: r,
4028
+ selected: radius === r,
4029
+ onPress: () => onRadiusChange(r),
4030
+ rc
4031
+ }
4032
+ ))),
4033
+ /* @__PURE__ */ React__default.createElement(SectionLabel, { rc }, "Scaling"),
4034
+ /* @__PURE__ */ React__default.createElement(reactNative.View, { style: styles.chipRow }, SCALING_OPTIONS.map((s) => /* @__PURE__ */ React__default.createElement(
4035
+ Chip,
4036
+ {
4037
+ key: s,
4038
+ label: s,
4039
+ selected: scaling === s,
4040
+ onPress: () => onScalingChange(s),
4041
+ rc
4042
+ }
4043
+ ))),
4044
+ showCopyTheme && /* @__PURE__ */ React__default.createElement(
4045
+ reactNative.Pressable,
4046
+ {
4047
+ style: [styles.copyButton, { backgroundColor: rc("accent-9") }],
4048
+ onPress: handleCopyTheme
4049
+ },
4050
+ /* @__PURE__ */ React__default.createElement(Text, { size: 2, weight: "bold", style: { color: rc("accent-contrast") } }, "Copy Theme")
4051
+ )
4052
+ )
4053
+ ));
4054
+ }
4055
+ ThemeControls.displayName = "ThemeControls";
4056
+ function SectionLabel({ children, rc }) {
4057
+ return /* @__PURE__ */ React__default.createElement(Text, { size: 2, weight: "medium", style: { color: rc("accent-11"), marginTop: 4 } }, children);
4058
+ }
4059
+ function ColorDot({
4060
+ color,
4061
+ selected,
4062
+ onPress,
4063
+ rc,
4064
+ label
4065
+ }) {
4066
+ const bg = rc(color);
4067
+ return /* @__PURE__ */ React__default.createElement(
4068
+ reactNative.Pressable,
4069
+ {
4070
+ onPress,
4071
+ accessibilityLabel: label,
4072
+ accessibilityRole: "button",
4073
+ style: [
4074
+ styles.dotOuter,
4075
+ selected && { borderColor: rc("gray-12") }
4076
+ ]
4077
+ },
4078
+ /* @__PURE__ */ React__default.createElement(reactNative.View, { style: [styles.dotInner, { backgroundColor: bg }] })
4079
+ );
4080
+ }
4081
+ function SegmentedButton({
4082
+ label,
4083
+ icon,
4084
+ selected,
4085
+ onPress,
4086
+ rc
4087
+ }) {
4088
+ return /* @__PURE__ */ React__default.createElement(
4089
+ reactNative.Pressable,
4090
+ {
4091
+ onPress,
4092
+ accessibilityRole: "button",
4093
+ style: [
4094
+ styles.segmentedButton,
4095
+ {
4096
+ borderColor: selected ? rc("gray-12") : rc("gray-6"),
4097
+ backgroundColor: selected ? rc("gray-3") : "transparent"
4098
+ }
4099
+ ]
4100
+ },
4101
+ /* @__PURE__ */ React__default.createElement(Text, { size: 2, style: { color: rc("gray-12") } }, icon),
4102
+ /* @__PURE__ */ React__default.createElement(Text, { size: 2, weight: "medium", style: { color: rc("gray-12") } }, label)
4103
+ );
4104
+ }
4105
+ function RadiusPreview({
4106
+ token,
4107
+ selected,
4108
+ onPress,
4109
+ rc
4110
+ }) {
4111
+ const previewRadius = token === "full" ? 26 : getRadius(token, 5);
4112
+ const label = token.charAt(0).toUpperCase() + token.slice(1);
4113
+ const borderAccent = rc("accent-a8");
4114
+ return /* @__PURE__ */ React__default.createElement(reactNative.Pressable, { onPress, accessibilityRole: "button", style: styles.radiusItem }, /* @__PURE__ */ React__default.createElement(
4115
+ reactNative.View,
4116
+ {
4117
+ style: [
4118
+ styles.radiusCard,
4119
+ {
4120
+ borderColor: selected ? rc("gray-12") : rc("gray-6"),
4121
+ backgroundColor: selected ? rc("gray-3") : "transparent"
4122
+ }
4123
+ ]
4124
+ },
4125
+ /* @__PURE__ */ React__default.createElement(
4126
+ reactNative.View,
4127
+ {
4128
+ style: [
4129
+ styles.radiusPreviewShape,
4130
+ {
4131
+ backgroundColor: rc("accent-4"),
4132
+ borderTopLeftRadius: previewRadius,
4133
+ borderTopWidth: 2,
4134
+ borderLeftWidth: 2,
4135
+ borderTopColor: borderAccent,
4136
+ borderLeftColor: borderAccent
4137
+ }
4138
+ ]
4139
+ }
4140
+ )
4141
+ ), /* @__PURE__ */ React__default.createElement(Text, { size: 1, style: { color: rc("gray-11"), textAlign: "center" } }, label));
4142
+ }
4143
+ function Chip({
4144
+ label,
4145
+ selected,
4146
+ onPress,
4147
+ rc
4148
+ }) {
4149
+ return /* @__PURE__ */ React__default.createElement(
4150
+ reactNative.Pressable,
4151
+ {
4152
+ onPress,
4153
+ accessibilityRole: "button",
4154
+ style: [
4155
+ styles.chip,
4156
+ {
4157
+ borderColor: selected ? rc("gray-12") : rc("gray-6"),
4158
+ backgroundColor: selected ? rc("gray-3") : "transparent"
4159
+ }
4160
+ ]
4161
+ },
4162
+ /* @__PURE__ */ React__default.createElement(
4163
+ Text,
4164
+ {
4165
+ size: 2,
4166
+ weight: selected ? "bold" : "regular",
4167
+ style: { color: rc("gray-12") }
4168
+ },
4169
+ label
4170
+ )
4171
+ );
4172
+ }
4173
+ const styles = reactNative.StyleSheet.create({
4174
+ container: {
4175
+ position: "absolute",
4176
+ top: 54,
4177
+ right: 12,
4178
+ zIndex: 1e3,
4179
+ alignItems: "flex-end"
4180
+ },
4181
+ toggleButton: {
4182
+ width: 36,
4183
+ height: 36,
4184
+ borderRadius: 8,
4185
+ borderWidth: 1,
4186
+ alignItems: "center",
4187
+ justifyContent: "center"
4188
+ },
4189
+ panelWrapper: {
4190
+ position: "absolute",
4191
+ top: 0,
4192
+ right: 0,
4193
+ width: PANEL_WIDTH,
4194
+ marginTop: 44
4195
+ },
4196
+ panel: {
4197
+ borderRadius: 12,
4198
+ borderWidth: 1
4199
+ },
4200
+ panelContent: {
4201
+ padding: 20,
4202
+ rowGap: 10
4203
+ },
4204
+ headerRow: {
4205
+ flexDirection: "row",
4206
+ alignItems: "center",
4207
+ justifyContent: "space-between"
4208
+ },
4209
+ closeButton: {
4210
+ width: 32,
4211
+ height: 32,
4212
+ borderRadius: 6,
4213
+ borderWidth: 1,
4214
+ alignItems: "center",
4215
+ justifyContent: "center"
4216
+ },
4217
+ dotGrid: {
4218
+ flexDirection: "row",
4219
+ flexWrap: "wrap",
4220
+ gap: 4
4221
+ },
4222
+ dotOuter: {
4223
+ width: 28,
4224
+ height: 28,
4225
+ borderRadius: 14,
4226
+ borderWidth: 2,
4227
+ borderColor: "transparent",
4228
+ alignItems: "center",
4229
+ justifyContent: "center"
4230
+ },
4231
+ dotInner: {
4232
+ width: 20,
4233
+ height: 20,
4234
+ borderRadius: 10
4235
+ },
4236
+ segmentedRow: {
4237
+ flexDirection: "row",
4238
+ gap: 8
4239
+ },
4240
+ segmentedButton: {
4241
+ flex: 1,
4242
+ flexDirection: "row",
4243
+ alignItems: "center",
4244
+ justifyContent: "center",
4245
+ gap: 6,
4246
+ paddingVertical: 10,
4247
+ borderRadius: 8,
4248
+ borderWidth: 1
4249
+ },
4250
+ chipRow: {
4251
+ flexDirection: "row",
4252
+ flexWrap: "wrap",
4253
+ gap: 6
4254
+ },
4255
+ chip: {
4256
+ paddingHorizontal: 12,
4257
+ paddingVertical: 6,
4258
+ borderRadius: 6,
4259
+ borderWidth: 1
4260
+ },
4261
+ radiusRow: {
4262
+ flexDirection: "row",
4263
+ gap: 6
4264
+ },
4265
+ radiusItem: {
4266
+ flex: 1,
4267
+ alignItems: "center",
4268
+ gap: 6
4269
+ },
4270
+ radiusCard: {
4271
+ width: "100%",
4272
+ aspectRatio: 1,
4273
+ borderRadius: 8,
4274
+ borderWidth: 1,
4275
+ alignItems: "center",
4276
+ justifyContent: "center"
4277
+ },
4278
+ radiusPreviewShape: {
4279
+ width: 32,
4280
+ height: 32
4281
+ },
4282
+ copyButton: {
4283
+ marginTop: 6,
4284
+ paddingVertical: 10,
4285
+ borderRadius: 8,
4286
+ alignItems: "center",
4287
+ justifyContent: "center"
4288
+ }
4289
+ });
4290
+
4291
+ exports.Blockquote = Blockquote;
4292
+ exports.Box = Box;
4293
+ exports.Button = Button;
4294
+ exports.Checkbox = Checkbox;
4295
+ exports.CheckboxCards = CheckboxCards;
4296
+ exports.CheckboxGroup = CheckboxGroup;
4297
+ exports.Code = Code;
4298
+ exports.Em = Em;
4299
+ exports.Flex = Flex;
4300
+ exports.Grid = Grid;
4301
+ exports.Heading = Heading;
4302
+ exports.Kbd = Kbd;
4303
+ exports.Link = Link;
4304
+ exports.Quote = Quote;
4305
+ exports.Strong = Strong;
4306
+ exports.Text = Text;
4307
+ exports.Theme = Theme;
4308
+ exports.ThemeControls = ThemeControls;
4309
+ exports.applyScaling = applyScaling;
4310
+ exports.createTheme = createTheme;
4311
+ exports.fontSize = fontSize;
4312
+ exports.getClassicEffect = getClassicEffect;
4313
+ exports.getFullRadius = getFullRadius;
4314
+ exports.getRadius = getRadius;
4315
+ exports.headingLineHeight = headingLineHeight;
4316
+ exports.letterSpacingEm = letterSpacingEm;
4317
+ exports.lineHeight = lineHeight;
4318
+ exports.resolveColor = resolveColor;
4319
+ exports.resolveSpace = resolveSpace;
4320
+ exports.scalingMap = scalingMap;
4321
+ exports.space = space;
4322
+ exports.useResolveColor = useResolveColor;
4323
+ exports.useThemeContext = useThemeContext;