@crewlethq/tokens 0.12.0 → 0.14.0

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.
@@ -41,9 +41,12 @@
41
41
  --color-surface-inverse: #ffffff; /** The ground that inverts the palette, carrying --color-text-inverse. */
42
42
  --color-text-primary: #fafafa; /** Slightly off-white to reduce eye strain on dark surfaces. */
43
43
  --color-text-secondary: #c9ced8;
44
+ --color-text-link-quiet: #bab2f2; /** A link set inside running text or a row, which must not compete with the words around it: the accent ink mixed 65% with the secondary text, in OKLab, measured as an ink. Under the pointer and on focus it takes the accent ink itself. */
44
45
  --color-text-tertiary: #95a2b6; /** A fact, so it clears 4.5:1 on every surface it can land on, including a pressed row inside a raised surface. #8c99ad measured 4.17:1 there. */
45
46
  --color-text-muted: #686b70; /** DECORATION ONLY: a hairline glyph, a disabled affordance, a border. Measured BETWEEN 2.8:1 and 4.5:1 on the panel, because a step that crept up to the fact floor would invite itself into a table cell, which is the whole reason it has a separate name. */
46
- --color-text-on-accent: #ffffff; /** The label on an accent fill, and on the danger fill. White in every palette: a primary button whose label changed colour with the theme would read as two different buttons. */
47
+ --color-text-on-accent: #ffffff; /** The label on an accent fill. White here and in the default palettes; a theme whose accent is light carries a dark label instead, which is why the danger fill and the scrim have labels of their own. */
48
+ --color-text-on-danger: #ffffff; /** The label on the danger fill and its hover: a destructive action. White in every palette, whatever the accent carries. */
49
+ --color-text-on-scrim: #ffffff; /** The label drawn over the scrim, and over the seeded tints it lands on: an upload overlay's word and spinner, and a seeded badge's initials. White in every palette, whatever the accent carries. */
47
50
  --color-text-inverse: #09090b;
48
51
  --color-border-default: rgba(255, 255, 255, 0.08);
49
52
  --color-border-hover: rgba(255, 255, 255, 0.15);
@@ -117,7 +120,7 @@
117
120
  --color-scrollbar-hover: rgba(255, 255, 255, 0.26);
118
121
  --density-compact: 0.82; /** The three steps --density takes, set on the root by @crewlethq/tokens/css/density. Every spacing and size token is emitted as calc(Npx * var(--density, 1)), so a density is a real change to every surface rather than to three font sizes, and every value is unchanged at 1. */
119
122
  --density-normal: 1;
120
- --density-comfortable: 1.14;
123
+ --density-comfortable: 1.16;
121
124
  --motion-duration-instant: 75ms; /** Tooltip flash, dropdown indicator nudge. */
122
125
  --motion-duration-fast: 120ms; /** Menu hover and active state changes. */
123
126
  --motion-duration-base: 150ms; /** Default UI transition. */
package/dist/index.d.ts CHANGED
@@ -46,9 +46,12 @@ export declare const color: {
46
46
  readonly text: {
47
47
  readonly primary: "#fafafa";
48
48
  readonly secondary: "#c9ced8";
49
+ readonly linkQuiet: "#bab2f2";
49
50
  readonly tertiary: "#95a2b6";
50
51
  readonly muted: "#686b70";
51
52
  readonly onAccent: "#ffffff";
53
+ readonly onDanger: "#ffffff";
54
+ readonly onScrim: "#ffffff";
52
55
  readonly inverse: "#09090b";
53
56
  };
54
57
  readonly border: {
@@ -137,7 +140,7 @@ export declare const color: {
137
140
  export declare const density: {
138
141
  readonly compact: "0.82";
139
142
  readonly normal: "1";
140
- readonly comfortable: "1.14";
143
+ readonly comfortable: "1.16";
141
144
  };
142
145
  export declare const motion: {
143
146
  readonly duration: {
@@ -279,5 +282,5 @@ export declare const zIndex: {
279
282
  readonly popover: "10000";
280
283
  readonly toast: "10001";
281
284
  };
282
- export { themes } from './themes.js';
283
- export type { ThemeName } from './themes.js';
285
+ export { themes, themeGroups, themeRegistry, DEFAULT_THEME_ID, isThemeId } from './themes.js';
286
+ export type { ThemeName, ThemeGroupId, ThemeEntry, ThemeId } from './themes.js';
package/dist/index.js CHANGED
@@ -47,9 +47,12 @@ export const color = {
47
47
  "text": {
48
48
  "primary": "#fafafa",
49
49
  "secondary": "#c9ced8",
50
+ "linkQuiet": "#bab2f2",
50
51
  "tertiary": "#95a2b6",
51
52
  "muted": "#686b70",
52
53
  "onAccent": "#ffffff",
54
+ "onDanger": "#ffffff",
55
+ "onScrim": "#ffffff",
53
56
  "inverse": "#09090b"
54
57
  },
55
58
  "border": {
@@ -138,7 +141,7 @@ export const color = {
138
141
  export const density = {
139
142
  "compact": "0.82",
140
143
  "normal": "1",
141
- "comfortable": "1.14"
144
+ "comfortable": "1.16"
142
145
  };
143
146
  export const motion = {
144
147
  "duration": {
@@ -280,4 +283,4 @@ export const zIndex = {
280
283
  "popover": "10000",
281
284
  "toast": "10001"
282
285
  };
283
- export { themes } from './themes.js';
286
+ export { themes, themeGroups, themeRegistry, DEFAULT_THEME_ID, isThemeId } from './themes.js';
package/dist/themes.d.ts CHANGED
@@ -26,9 +26,12 @@ export declare const themes: {
26
26
  readonly text: {
27
27
  readonly primary: "#121625";
28
28
  readonly secondary: "#3e4459";
29
+ readonly linkQuiet: "#484e99";
29
30
  readonly tertiary: "#585e73";
30
31
  readonly muted: "#878d9f";
31
32
  readonly onAccent: "#ffffff";
33
+ readonly onDanger: "#ffffff";
34
+ readonly onScrim: "#ffffff";
32
35
  readonly inverse: "#f6f7fb";
33
36
  };
34
37
  readonly brand: {
@@ -143,9 +146,12 @@ export declare const themes: {
143
146
  readonly text: {
144
147
  readonly primary: "#e7eaf3";
145
148
  readonly secondary: "#a9b0c3";
149
+ readonly linkQuiet: "#a9b0ea";
146
150
  readonly tertiary: "#9fa7bc";
147
151
  readonly muted: "#5a6176";
148
152
  readonly onAccent: "#ffffff";
153
+ readonly onDanger: "#ffffff";
154
+ readonly onScrim: "#ffffff";
149
155
  readonly inverse: "#07080d";
150
156
  };
151
157
  readonly brand: {
@@ -244,3 +250,454 @@ export declare const themes: {
244
250
  };
245
251
  };
246
252
  export type ThemeName = keyof typeof themes;
253
+ /** The groups a theme picker lists the themes under, in order. */
254
+ export declare const themeGroups: readonly [{
255
+ readonly id: "crewlet";
256
+ readonly name: "Crewlet";
257
+ readonly description: "The brand's own palettes.";
258
+ }, {
259
+ readonly id: "purple";
260
+ readonly name: "Purple";
261
+ readonly description: "Grounds anchored on #090019.";
262
+ }, {
263
+ readonly id: "cool";
264
+ readonly name: "Cool";
265
+ readonly description: "Blue-black grounds.";
266
+ }, {
267
+ readonly id: "warm";
268
+ readonly name: "Warm";
269
+ readonly description: "Warm stone grounds.";
270
+ }, {
271
+ readonly id: "high-contrast";
272
+ readonly name: "High contrast";
273
+ readonly description: "For readers who need more contrast than the defaults give.";
274
+ }];
275
+ export type ThemeGroupId = (typeof themeGroups)[number]['id'];
276
+ /**
277
+ * Every theme, in the order a picker lists them. `id` is the value of the
278
+ * data-palette attribute that paints it (the default paints with none),
279
+ * `swatch` the colours a picker draws its thumbnail with in each mode, and
280
+ * `tint` and `contrast` the profile the palette suite measures it under.
281
+ */
282
+ export declare const themeRegistry: readonly [{
283
+ readonly id: "crewlet";
284
+ readonly name: "Crewlet";
285
+ readonly group: "crewlet";
286
+ readonly tag: "Default";
287
+ readonly description: "Blue-black neutrals with a violet accent and a cyan working state.";
288
+ readonly tint: null;
289
+ readonly contrast: "standard";
290
+ readonly swatch: {
291
+ readonly dark: {
292
+ readonly frame: "#07080d";
293
+ readonly sheet: "#0c0e16";
294
+ readonly card: "#11141d";
295
+ readonly raised: "#242833";
296
+ readonly hairline: "#191b20";
297
+ readonly text: "#e7eaf3";
298
+ readonly muted: "#5a6176";
299
+ readonly accent: "#725be6";
300
+ readonly onAccent: "#ffffff";
301
+ readonly info: "#61d0ff";
302
+ readonly warning: "#f0b425";
303
+ readonly danger: "#d73756";
304
+ readonly success: "#34c98b";
305
+ };
306
+ readonly light: {
307
+ readonly frame: "#e9ecf3";
308
+ readonly sheet: "#f6f7fb";
309
+ readonly card: "#fcfcfc";
310
+ readonly raised: "#f1f2f6";
311
+ readonly hairline: "#e7e8ec";
312
+ readonly text: "#121625";
313
+ readonly muted: "#878d9f";
314
+ readonly accent: "#735af2";
315
+ readonly onAccent: "#ffffff";
316
+ readonly info: "#2f92b4";
317
+ readonly warning: "#c17300";
318
+ readonly danger: "#b9112c";
319
+ readonly success: "#0b9a74";
320
+ };
321
+ };
322
+ }, {
323
+ readonly id: "violet";
324
+ readonly name: "Violet";
325
+ readonly group: "crewlet";
326
+ readonly tag: "Zinc and violet";
327
+ readonly description: "Zinc neutrals with a saturated violet accent.";
328
+ readonly tint: null;
329
+ readonly contrast: "standard";
330
+ readonly swatch: {
331
+ readonly dark: {
332
+ readonly frame: "#09090b";
333
+ readonly sheet: "#101013";
334
+ readonly card: "#141418";
335
+ readonly raised: "#1b1b20";
336
+ readonly hairline: "#232329";
337
+ readonly text: "#ededf0";
338
+ readonly muted: "#5f5f68";
339
+ readonly accent: "#7c56ff";
340
+ readonly onAccent: "#ffffff";
341
+ readonly info: "#4c9dff";
342
+ readonly warning: "#f4b221";
343
+ readonly danger: "#e50055";
344
+ readonly success: "#3ecf8f";
345
+ };
346
+ readonly light: {
347
+ readonly frame: "#ededea";
348
+ readonly sheet: "#f9f9f8";
349
+ readonly card: "#ffffff";
350
+ readonly raised: "#f3f3f1";
351
+ readonly hairline: "#e4e4e0";
352
+ readonly text: "#17171a";
353
+ readonly muted: "#8d8d94";
354
+ readonly accent: "#6b45f0";
355
+ readonly onAccent: "#ffffff";
356
+ readonly info: "#3081de";
357
+ readonly warning: "#c57600";
358
+ readonly danger: "#c01d32";
359
+ readonly success: "#009b74";
360
+ };
361
+ };
362
+ }, {
363
+ readonly id: "origin";
364
+ readonly name: "Origin";
365
+ readonly group: "crewlet";
366
+ readonly tag: "Purple on charcoal";
367
+ readonly description: "Charcoal and near-black grounds, graphite cards and hairlines, and a #5469d4 purple on the primary button, links and focus.";
368
+ readonly tint: null;
369
+ readonly contrast: "standard";
370
+ readonly swatch: {
371
+ readonly dark: {
372
+ readonly frame: "#15171c";
373
+ readonly sheet: "#0e0f13";
374
+ readonly card: "#1c1e24";
375
+ readonly raised: "#23262c";
376
+ readonly hairline: "#2e2e30";
377
+ readonly text: "#ececee";
378
+ readonly muted: "#60646b";
379
+ readonly accent: "#5469d4";
380
+ readonly onAccent: "#ffffff";
381
+ readonly info: "#3a8ff4";
382
+ readonly warning: "#f59e0b";
383
+ readonly danger: "#d6364c";
384
+ readonly success: "#3eba82";
385
+ };
386
+ readonly light: {
387
+ readonly frame: "#f4f4f5";
388
+ readonly sheet: "#ffffff";
389
+ readonly card: "#f7f7f8";
390
+ readonly raised: "#ececef";
391
+ readonly hairline: "#e2e2e5";
392
+ readonly text: "#09090b";
393
+ readonly muted: "#929294";
394
+ readonly accent: "#5469d4";
395
+ readonly onAccent: "#ffffff";
396
+ readonly info: "#3190c5";
397
+ readonly warning: "#c57500";
398
+ readonly danger: "#b9112c";
399
+ readonly success: "#0f9a73";
400
+ };
401
+ };
402
+ }, {
403
+ readonly id: "abyss";
404
+ readonly name: "Abyss";
405
+ readonly group: "purple";
406
+ readonly tag: "Vivid violet";
407
+ readonly description: "Ink-violet grounds on #090019 with an electric violet accent.";
408
+ readonly tint: {
409
+ readonly hue: 298;
410
+ readonly chroma: 7;
411
+ };
412
+ readonly contrast: "standard";
413
+ readonly swatch: {
414
+ readonly dark: {
415
+ readonly frame: "#090019";
416
+ readonly sheet: "#120425";
417
+ readonly card: "#180b2c";
418
+ readonly raised: "#1e1430";
419
+ readonly hairline: "#2b1f41";
420
+ readonly text: "#ebe6f8";
421
+ readonly muted: "#62577c";
422
+ readonly accent: "#8633fe";
423
+ readonly onAccent: "#ffffff";
424
+ readonly info: "#1281c3";
425
+ readonly warning: "#ffb22f";
426
+ readonly danger: "#dd2c5b";
427
+ readonly success: "#16d297";
428
+ };
429
+ readonly light: {
430
+ readonly frame: "#e8e3f3";
431
+ readonly sheet: "#f8f6fd";
432
+ readonly card: "#fdfcff";
433
+ readonly raised: "#edeaf7";
434
+ readonly hairline: "#dfd9eb";
435
+ readonly text: "#1d132f";
436
+ readonly muted: "#8d83a2";
437
+ readonly accent: "#6b11da";
438
+ readonly onAccent: "#ffffff";
439
+ readonly info: "#287ac2";
440
+ readonly warning: "#c16f00";
441
+ readonly danger: "#9a0028";
442
+ readonly success: "#019472";
443
+ };
444
+ };
445
+ }, {
446
+ readonly id: "iris";
447
+ readonly name: "Iris";
448
+ readonly group: "purple";
449
+ readonly tag: "Periwinkle";
450
+ readonly description: "Cool violet grounds with a periwinkle accent that carries a dark label at night.";
451
+ readonly tint: {
452
+ readonly hue: 296;
453
+ readonly chroma: 7.5;
454
+ };
455
+ readonly contrast: "standard";
456
+ readonly swatch: {
457
+ readonly dark: {
458
+ readonly frame: "#09011a";
459
+ readonly sheet: "#110b1e";
460
+ readonly card: "#141021";
461
+ readonly raised: "#1c0f34";
462
+ readonly hairline: "#292339";
463
+ readonly text: "#eae7f7";
464
+ readonly muted: "#645d76";
465
+ readonly accent: "#9584ff";
466
+ readonly onAccent: "#09011a";
467
+ readonly info: "#0279a9";
468
+ readonly warning: "#f9ad26";
469
+ readonly danger: "#db3845";
470
+ readonly success: "#27cf9b";
471
+ };
472
+ readonly light: {
473
+ readonly frame: "#e8e4f6";
474
+ readonly sheet: "#f8f6fd";
475
+ readonly card: "#ffffff";
476
+ readonly raised: "#efecf9";
477
+ readonly hairline: "#dddaea";
478
+ readonly text: "#181128";
479
+ readonly muted: "#8b859d";
480
+ readonly accent: "#4a2abd";
481
+ readonly onAccent: "#ffffff";
482
+ readonly info: "#0585b9";
483
+ readonly warning: "#be6e02";
484
+ readonly danger: "#9a0b35";
485
+ readonly success: "#039571";
486
+ };
487
+ };
488
+ }, {
489
+ readonly id: "dusk";
490
+ readonly name: "Dusk";
491
+ readonly group: "purple";
492
+ readonly tag: "Soft lavender";
493
+ readonly description: "Muted violet-grey grounds with a soft lavender accent. The calmest option, built for long sessions.";
494
+ readonly tint: {
495
+ readonly hue: 305;
496
+ readonly chroma: 4;
497
+ };
498
+ readonly contrast: "standard";
499
+ readonly swatch: {
500
+ readonly dark: {
501
+ readonly frame: "#090311";
502
+ readonly sheet: "#110c18";
503
+ readonly card: "#17111d";
504
+ readonly raised: "#1f1827";
505
+ readonly hairline: "#282031";
506
+ readonly text: "#e6e2ec";
507
+ readonly muted: "#66606f";
508
+ readonly accent: "#d6b7fc";
509
+ readonly onAccent: "#090019";
510
+ readonly info: "#3185b8";
511
+ readonly warning: "#f4b73b";
512
+ readonly danger: "#ca4d48";
513
+ readonly success: "#8ec899";
514
+ };
515
+ readonly light: {
516
+ readonly frame: "#e9e5f0";
517
+ readonly sheet: "#f4f1f8";
518
+ readonly card: "#faf8fc";
519
+ readonly raised: "#efebf4";
520
+ readonly hairline: "#e0dbe6";
521
+ readonly text: "#221a2a";
522
+ readonly muted: "#8d8697";
523
+ readonly accent: "#4e247e";
524
+ readonly onAccent: "#ffffff";
525
+ readonly info: "#1b86bf";
526
+ readonly warning: "#af6901";
527
+ readonly danger: "#8a0d15";
528
+ readonly success: "#527b67";
529
+ };
530
+ };
531
+ }, {
532
+ readonly id: "nocturne";
533
+ readonly name: "Nocturne";
534
+ readonly group: "cool";
535
+ readonly tag: "Indigo";
536
+ readonly description: "Blue-black grounds with an indigo accent. Calm and technical.";
537
+ readonly tint: {
538
+ readonly hue: 272;
539
+ readonly chroma: 3;
540
+ };
541
+ readonly contrast: "standard";
542
+ readonly swatch: {
543
+ readonly dark: {
544
+ readonly frame: "#07080d";
545
+ readonly sheet: "#0c0e16";
546
+ readonly card: "#11141d";
547
+ readonly raised: "#181c28";
548
+ readonly hairline: "#1f2433";
549
+ readonly text: "#e6e9f2";
550
+ readonly muted: "#5a6176";
551
+ readonly accent: "#5a62f0";
552
+ readonly onAccent: "#ffffff";
553
+ readonly info: "#38bdf8";
554
+ readonly warning: "#f0b425";
555
+ readonly danger: "#de2f5b";
556
+ readonly success: "#34c98b";
557
+ };
558
+ readonly light: {
559
+ readonly frame: "#e9ecf3";
560
+ readonly sheet: "#f6f7fb";
561
+ readonly card: "#ffffff";
562
+ readonly raised: "#eff1f7";
563
+ readonly hairline: "#dde1ea";
564
+ readonly text: "#121625";
565
+ readonly muted: "#878d9f";
566
+ readonly accent: "#4c55e6";
567
+ readonly onAccent: "#ffffff";
568
+ readonly info: "#0b84c6";
569
+ readonly warning: "#b86e00";
570
+ readonly danger: "#b8002e";
571
+ readonly success: "#00916f";
572
+ };
573
+ };
574
+ }, {
575
+ readonly id: "nightshade";
576
+ readonly name: "Nightshade";
577
+ readonly group: "cool";
578
+ readonly tag: "Iris at night";
579
+ readonly description: "Nocturne's blue-black grounds with Iris's periwinkle accent, states and charts.";
580
+ readonly tint: {
581
+ readonly hue: 272;
582
+ readonly chroma: 3;
583
+ };
584
+ readonly contrast: "standard";
585
+ readonly swatch: {
586
+ readonly dark: {
587
+ readonly frame: "#07080d";
588
+ readonly sheet: "#0d0f16";
589
+ readonly card: "#11141d";
590
+ readonly raised: "#171b27";
591
+ readonly hairline: "#1f2433";
592
+ readonly text: "#e8ebf4";
593
+ readonly muted: "#5a6176";
594
+ readonly accent: "#9584ff";
595
+ readonly onAccent: "#07080d";
596
+ readonly info: "#0279a9";
597
+ readonly warning: "#f9ad26";
598
+ readonly danger: "#db3845";
599
+ readonly success: "#20cc98";
600
+ };
601
+ readonly light: {
602
+ readonly frame: "#e7eaf1";
603
+ readonly sheet: "#f6f7fb";
604
+ readonly card: "#ffffff";
605
+ readonly raised: "#eef0f6";
606
+ readonly hairline: "#dde1ea";
607
+ readonly text: "#121625";
608
+ readonly muted: "#878a9d";
609
+ readonly accent: "#4a2abd";
610
+ readonly onAccent: "#ffffff";
611
+ readonly info: "#0585b9";
612
+ readonly warning: "#be6e02";
613
+ readonly danger: "#9a0b35";
614
+ readonly success: "#039571";
615
+ };
616
+ };
617
+ }, {
618
+ readonly id: "ledger";
619
+ readonly name: "Ledger";
620
+ readonly group: "warm";
621
+ readonly tag: "Cobalt on stone";
622
+ readonly description: "Warm stone grounds with a cobalt accent. Reads like printed paper in light.";
623
+ readonly tint: null;
624
+ readonly contrast: "standard";
625
+ readonly swatch: {
626
+ readonly dark: {
627
+ readonly frame: "#0d0c0a";
628
+ readonly sheet: "#141310";
629
+ readonly card: "#191814";
630
+ readonly raised: "#211f1b";
631
+ readonly hairline: "#2a2823";
632
+ readonly text: "#ece8df";
633
+ readonly muted: "#67625a";
634
+ readonly accent: "#4d6bef";
635
+ readonly onAccent: "#ffffff";
636
+ readonly info: "#2fb3b0";
637
+ readonly warning: "#e2a132";
638
+ readonly danger: "#d6403d";
639
+ readonly success: "#53cc8f";
640
+ };
641
+ readonly light: {
642
+ readonly frame: "#ebe8e1";
643
+ readonly sheet: "#f6f5f1";
644
+ readonly card: "#fffefb";
645
+ readonly raised: "#f0ede6";
646
+ readonly hairline: "#e0dbd0";
647
+ readonly text: "#1c1a16";
648
+ readonly muted: "#908a7e";
649
+ readonly accent: "#2f50d8";
650
+ readonly onAccent: "#ffffff";
651
+ readonly info: "#007883";
652
+ readonly warning: "#a86900";
653
+ readonly danger: "#9c332b";
654
+ readonly success: "#1a9368";
655
+ };
656
+ };
657
+ }, {
658
+ readonly id: "high-contrast";
659
+ readonly name: "High contrast";
660
+ readonly group: "high-contrast";
661
+ readonly tag: "AAA text";
662
+ readonly description: "Every word at 7:1 or more, hairlines a reader can find, and a muted step that reads rather than decorates.";
663
+ readonly tint: null;
664
+ readonly contrast: "high";
665
+ readonly swatch: {
666
+ readonly dark: {
667
+ readonly frame: "#000000";
668
+ readonly sheet: "#0b0b10";
669
+ readonly card: "#0f0f16";
670
+ readonly raised: "#16161d";
671
+ readonly hairline: "#7c7c90";
672
+ readonly text: "#f8f8fb";
673
+ readonly muted: "#9696a6";
674
+ readonly accent: "#6c55e6";
675
+ readonly onAccent: "#ffffff";
676
+ readonly info: "#61d0ff";
677
+ readonly warning: "#f0b425";
678
+ readonly danger: "#d73756";
679
+ readonly success: "#34c98b";
680
+ };
681
+ readonly light: {
682
+ readonly frame: "#e9ecf3";
683
+ readonly sheet: "#f6f7fb";
684
+ readonly card: "#fcfcfc";
685
+ readonly raised: "#f1f2f6";
686
+ readonly hairline: "#6f6f82";
687
+ readonly text: "#000000";
688
+ readonly muted: "#5b5b69";
689
+ readonly accent: "#4424c4";
690
+ readonly onAccent: "#ffffff";
691
+ readonly info: "#2f92b4";
692
+ readonly warning: "#c17300";
693
+ readonly danger: "#b9112c";
694
+ readonly success: "#0b9a74";
695
+ };
696
+ };
697
+ }];
698
+ export type ThemeEntry = (typeof themeRegistry)[number];
699
+ export type ThemeId = ThemeEntry['id'];
700
+ /** The theme a document that names none gets: it paints the bare root. */
701
+ export declare const DEFAULT_THEME_ID: ThemeId;
702
+ /** Whether a stored or typed value names a theme this build ships. */
703
+ export declare function isThemeId(value: unknown): value is ThemeId;