@dixy-ui/themes 0.1.0-beta.3 → 0.1.0-beta.4

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 (91) hide show
  1. package/dist/ansi-panes.css +74 -5
  2. package/dist/arcade/ornament.d.ts +3 -0
  3. package/dist/arcade/ornament.js +8 -0
  4. package/dist/arcade-cabinet.css +1086 -0
  5. package/dist/art-deco.css +74 -5
  6. package/dist/atomic-lounge.css +78 -5
  7. package/dist/authoring.d.ts +8 -8
  8. package/dist/azulejo-tile.css +78 -5
  9. package/dist/blueprint.css +74 -5
  10. package/dist/brutalist-concrete.css +78 -5
  11. package/dist/bytes.json +97 -62
  12. package/dist/candy-clay.css +80 -5
  13. package/dist/catalog.d.ts +294 -0
  14. package/dist/catalog.js +301 -0
  15. package/dist/character.d.ts +1 -1
  16. package/dist/character.js +6 -0
  17. package/dist/chrome.js +13 -3
  18. package/dist/compile-css.js +22 -5
  19. package/dist/dispatch.css +731 -0
  20. package/dist/diwali-lights.css +78 -5
  21. package/dist/documents.d.ts +115 -7
  22. package/dist/documents.js +10 -2
  23. package/dist/foundations.d.ts +8 -0
  24. package/dist/foundations.js +10 -0
  25. package/dist/frame-styles.d.ts +3 -0
  26. package/dist/frame-styles.js +6 -0
  27. package/dist/freighter.css +140 -15
  28. package/dist/glass-ui.css +74 -5
  29. package/dist/holi-colours.css +78 -5
  30. package/dist/ledger.css +566 -0
  31. package/dist/living-forest.css +80 -5
  32. package/dist/mainframe.css +764 -0
  33. package/dist/manifests.d.ts +144 -144
  34. package/dist/material-light.css +78 -5
  35. package/dist/neon-night-market.css +78 -5
  36. package/dist/ocean-depths.css +80 -5
  37. package/dist/orbital-hud.css +140 -15
  38. package/dist/organic-paint-launch.d.ts +9 -0
  39. package/dist/organic-paint-launch.js +121 -46
  40. package/dist/organic-paint.d.ts +1 -1
  41. package/dist/organic-settings.d.ts +109 -25
  42. package/dist/organic-settings.js +49 -0
  43. package/dist/papel-picado.css +78 -5
  44. package/dist/phosphor-terminal.css +78 -5
  45. package/dist/prism-glass.css +74 -5
  46. package/dist/recipes.d.ts +162 -0
  47. package/dist/recipes.js +164 -0
  48. package/dist/resolve.d.ts +18 -2
  49. package/dist/retro-os.css +74 -5
  50. package/dist/riso-zine.css +74 -5
  51. package/dist/save-point.css +948 -0
  52. package/dist/savepoint/ornament.d.ts +3 -0
  53. package/dist/savepoint/ornament.js +8 -0
  54. package/dist/scrapbook.css +74 -5
  55. package/dist/signal.css +563 -0
  56. package/dist/skins/arcade-cabinet.d.ts +68 -0
  57. package/dist/skins/arcade-cabinet.js +68 -0
  58. package/dist/skins/dispatch.d.ts +57 -0
  59. package/dist/skins/dispatch.js +57 -0
  60. package/dist/skins/ledger.d.ts +57 -0
  61. package/dist/skins/ledger.js +57 -0
  62. package/dist/skins/mainframe.d.ts +57 -0
  63. package/dist/skins/mainframe.js +57 -0
  64. package/dist/skins/save-point.d.ts +68 -0
  65. package/dist/skins/save-point.js +68 -0
  66. package/dist/skins/signal.d.ts +57 -0
  67. package/dist/skins/signal.js +57 -0
  68. package/dist/skins/sunset-drive.d.ts +68 -0
  69. package/dist/skins/sunset-drive.js +68 -0
  70. package/dist/solar-sail.css +74 -5
  71. package/dist/starters-launch.d.ts +24 -0
  72. package/dist/starters-launch.js +343 -0
  73. package/dist/studio-hardware.css +78 -5
  74. package/dist/sumi-ink.css +74 -5
  75. package/dist/sunset/ornament.d.ts +3 -0
  76. package/dist/sunset/ornament.js +8 -0
  77. package/dist/sunset-drive.css +1024 -0
  78. package/dist/swiss-poster.css +144 -15
  79. package/dist/tactile-atelier.css +80 -5
  80. package/dist/theme-document.schema.json +34 -6
  81. package/dist/theme-fix.d.ts +11 -0
  82. package/dist/theme-fix.js +32 -0
  83. package/dist/theme-fixes.d.ts +2 -0
  84. package/dist/theme-fixes.js +1 -0
  85. package/dist/theme-schema.d.ts +6 -6
  86. package/dist/theme-schema.js +2 -0
  87. package/dist/tokyo-transit.css +78 -5
  88. package/dist/winamp-signal.css +78 -5
  89. package/dist/y2k-titanium.css +146 -15
  90. package/dist/yule-knit.css +74 -5
  91. package/package.json +50 -3
package/dist/recipes.js CHANGED
@@ -108,6 +108,9 @@ export const materialRecipes = freezeData({
108
108
  darkEdge: "#4a3150",
109
109
  shadow: "8px 10px 22px rgb(214 120 150 / .3), -6px -6px 16px color-mix(in srgb, var(--dixy-color-background-canvas) 60%, #fff), inset 2px 2px 3px rgb(255 255 255 / .5)",
110
110
  inset: "inset 3px 3px 6px rgb(214 120 150 / .28), inset -3px -3px 6px color-mix(in srgb, var(--dixy-color-background-canvas) 50%, #fff)",
111
+ // The light shadow's white highlight and pink halo read as a glow on a dark canvas.
112
+ darkShadow: "6px 8px 18px rgb(0 0 0 / .4), -3px -3px 10px rgb(255 255 255 / .04), inset 2px 2px 3px rgb(255 255 255 / .12)",
113
+ darkInset: "inset 3px 3px 6px rgb(0 0 0 / .35), inset -3px -3px 6px rgb(255 255 255 / .05)",
111
114
  canvas: "radial-gradient(ellipse at 20% 0%, rgb(255 181 71 / .14), transparent 55%), radial-gradient(ellipse at 90% 90%, rgb(180 139 255 / .14), transparent 55%)",
112
115
  tint: ["#fff6f2", "#36233c", "#ffe9ef"],
113
116
  label: "Candy clay",
@@ -453,6 +456,122 @@ export const materialRecipes = freezeData({
453
456
  thumb: "radial-gradient(circle at 35% 25%,#ffffff,#ffffffb3 40%,#cfe2ff80 70%,#ffffff4d)",
454
457
  tintActions: false,
455
458
  },
459
+ // 2027 game starters.
460
+ "sunset-neon": {
461
+ label: "Sunset neon",
462
+ baseMaterial: "glossy",
463
+ finish: "linear-gradient(180deg,#ffffff14,transparent 35%,#ff4fa30d)",
464
+ edge: "#f2b8d6",
465
+ darkEdge: "#6e3570",
466
+ shadow: "inset 0 1px 0 #ffffff40,0 14px 30px -16px #ff4fa366",
467
+ darkShadow: "0 0 0 1px #ff4fa31a,0 18px 36px -18px #ff4fa366",
468
+ inset: "inset 0 2px 4px #1b0b3022",
469
+ darkInset: "inset 0 2px 5px #00000066",
470
+ canvas: "linear-gradient(180deg,#fff3f8 0%,#ffe2ee 55%,#ffd9c2 100%)",
471
+ darkCanvas: "radial-gradient(70% 45% at 50% 100%,#ff7a5938,transparent 70%),linear-gradient(180deg,#1b0b30 0%,#26103f 60%,#38134c 100%)",
472
+ tint: ["#fff8fb", "#24103a", "#ffe6f0"],
473
+ grain: "radial-gradient(circle at 1px 1px,#ffffff06 .5px,transparent .8px)",
474
+ thumb: "linear-gradient(180deg,#ffd56b,#ff7a59 50%,#ff4fa3)",
475
+ tintActions: false,
476
+ },
477
+ "ledger-ruled": {
478
+ label: "Ledger ruled",
479
+ baseMaterial: "matte",
480
+ finish: "linear-gradient(transparent,transparent)",
481
+ edge: "#d3d6db",
482
+ darkEdge: "#2c3138",
483
+ shadow: "0 1px 2px #1018280f",
484
+ darkShadow: "0 1px 2px #00000066",
485
+ inset: "inset 0 1px 1px #1018280d",
486
+ darkInset: "inset 0 1px 1px #00000059",
487
+ canvas: "repeating-linear-gradient(90deg,transparent 0 119px,#0b6e4f0d 119px 120px)",
488
+ darkCanvas: "repeating-linear-gradient(90deg,transparent 0 119px,#3ecf8e12 119px 120px)",
489
+ tint: ["#fbfbf9", "#111317", "#eef0ec"],
490
+ grain: "linear-gradient(transparent,transparent)",
491
+ thumb: "linear-gradient(#ffffff,#ffffff)",
492
+ tintActions: false,
493
+ },
494
+ "layer-grid": {
495
+ label: "Layer grid",
496
+ baseMaterial: "matte",
497
+ finish: "linear-gradient(transparent,transparent)",
498
+ edge: "#c6c6c6",
499
+ darkEdge: "#393939",
500
+ shadow: "0 0 #0000",
501
+ inset: "0 0 #0000",
502
+ canvas: "linear-gradient(#f4f4f4,#f4f4f4)",
503
+ darkCanvas: "linear-gradient(#161616,#161616)",
504
+ tint: ["#ffffff", "#262626", "#e0e0e0"],
505
+ grain: "linear-gradient(transparent,transparent)",
506
+ thumb: "linear-gradient(#ffffff,#ffffff)",
507
+ tintActions: false,
508
+ },
509
+ "mono-ink": {
510
+ label: "Mono ink",
511
+ baseMaterial: "matte",
512
+ finish: "linear-gradient(transparent,transparent)",
513
+ edge: "#e2e2e2",
514
+ darkEdge: "#2a2a2a",
515
+ shadow: "0 1px 2px #0000000f,0 10px 24px -14px #00000029",
516
+ darkShadow: "0 0 0 1px #ffffff0d",
517
+ inset: "0 0 #0000",
518
+ canvas: "linear-gradient(#ffffff,#ffffff)",
519
+ darkCanvas: "linear-gradient(#000000,#000000)",
520
+ tint: ["#ffffff", "#000000", "#f3f3f3"],
521
+ grain: "linear-gradient(transparent,transparent)",
522
+ thumb: "linear-gradient(#ffffff,#ffffff)",
523
+ tintActions: false,
524
+ monoAccent: true,
525
+ },
526
+ "signal-contrast": {
527
+ label: "Signal contrast",
528
+ baseMaterial: "matte",
529
+ finish: "linear-gradient(transparent,transparent)",
530
+ edge: "#000000",
531
+ darkEdge: "#ffffff",
532
+ shadow: "0 0 #0000",
533
+ inset: "0 0 #0000",
534
+ canvas: "linear-gradient(#ffffff,#ffffff)",
535
+ darkCanvas: "linear-gradient(#000000,#000000)",
536
+ tint: ["#ffffff", "#000000", "#ffffff"],
537
+ grain: "linear-gradient(transparent,transparent)",
538
+ thumb: "linear-gradient(#ffffff,#ffffff)",
539
+ tintActions: false,
540
+ controlHeights: ["44px", "48px", "56px"],
541
+ deepSolid: true,
542
+ },
543
+ "menu-window": {
544
+ label: "Menu window",
545
+ baseMaterial: "matte",
546
+ finish: "linear-gradient(180deg,#ffffff14,transparent 55%)",
547
+ edge: "#3a4aa8",
548
+ darkEdge: "#e9edff",
549
+ shadow: "0 4px 0 #0b165833",
550
+ darkShadow: "inset 0 0 0 2px #0b1658,0 6px 0 #00000059",
551
+ inset: "inset 0 2px 0 #0b165822",
552
+ darkInset: "inset 0 2px 0 #00000040",
553
+ canvas: "radial-gradient(90% 70% at 50% 120%,#c9d3ff,transparent 70%)",
554
+ darkCanvas: "radial-gradient(90% 70% at 50% 120%,#1b2a7a,#05081c 75%)",
555
+ tint: ["#f4f6ff", "#16237e", "#e4e9ff"],
556
+ grain: "linear-gradient(transparent,transparent)",
557
+ thumb: "linear-gradient(180deg,#ffe066,#e0b400)",
558
+ tintActions: false,
559
+ },
560
+ "arcade-bezel": {
561
+ label: "Arcade bezel",
562
+ baseMaterial: "matte",
563
+ finish: "repeating-linear-gradient(180deg,transparent 0 2px,#0000000d 2px 3px)",
564
+ edge: "#1a1a1a",
565
+ darkEdge: "#f4f4f4",
566
+ shadow: "4px 4px 0 #e2141f",
567
+ inset: "inset 0 0 0 1px #00000033",
568
+ canvas: "repeating-linear-gradient(180deg,#00000008 0 1px,transparent 1px 3px)",
569
+ darkCanvas: "radial-gradient(70% 60% at 50% 40%,#17172a,#050505 80%)",
570
+ tint: ["#fbf8ef", "#0e0e14", "#ece6d6"],
571
+ grain: "linear-gradient(transparent,transparent)",
572
+ thumb: "linear-gradient(#ffd400,#ffd400)",
573
+ tintActions: false,
574
+ },
456
575
  });
457
576
  export const frameRecipes = freezeData({
458
577
  none: {
@@ -936,4 +1055,49 @@ export const frameRecipes = freezeData({
936
1055
  cornerVariation: 0,
937
1056
  },
938
1057
  },
1058
+ sunset: {
1059
+ label: "Sunset grid",
1060
+ version: 1,
1061
+ renderer: "SunsetOrnament",
1062
+ rendererEntry: "sunset-drive/react",
1063
+ defaults: {
1064
+ width: 1,
1065
+ paddingTop: 34,
1066
+ paddingInline: 30,
1067
+ paddingBottom: 32,
1068
+ inset: 10,
1069
+ cornerScale: 1,
1070
+ cornerVariation: 0,
1071
+ },
1072
+ },
1073
+ menu: {
1074
+ label: "Menu window",
1075
+ version: 1,
1076
+ renderer: "SavePointOrnament",
1077
+ rendererEntry: "save-point/react",
1078
+ defaults: {
1079
+ width: 2,
1080
+ paddingTop: 30,
1081
+ paddingInline: 28,
1082
+ paddingBottom: 28,
1083
+ inset: 6,
1084
+ cornerScale: 1,
1085
+ cornerVariation: 0,
1086
+ },
1087
+ },
1088
+ marquee: {
1089
+ label: "Arcade marquee",
1090
+ version: 1,
1091
+ renderer: "ArcadeOrnament",
1092
+ rendererEntry: "arcade-cabinet/react",
1093
+ defaults: {
1094
+ width: 3,
1095
+ paddingTop: 32,
1096
+ paddingInline: 28,
1097
+ paddingBottom: 30,
1098
+ inset: 8,
1099
+ cornerScale: 1,
1100
+ cornerVariation: 0,
1101
+ },
1102
+ },
939
1103
  });
package/dist/resolve.d.ts CHANGED
@@ -25,6 +25,22 @@ export interface ResolvedThemeRecipe {
25
25
  canvas: string;
26
26
  /** Optional ground image for dark appearance; light canvas is used when absent. */
27
27
  darkCanvas?: string;
28
+ /** Optional shadow and inset for dark appearance; light values are used when absent. */
29
+ darkShadow?: string;
30
+ darkInset?: string;
31
+ /**
32
+ * With the neutral accent, solid actions use ink (step 12) instead of the
33
+ * mid-grey step 9: black in light, white in dark. Focus stays blue so it
34
+ * still reads as focus. Any other accent ignores it.
35
+ */
36
+ monoAccent?: boolean;
37
+ /**
38
+ * Light mode only: solid actions use the accent's step 11 (12 on hover and
39
+ * press) so white labels reach 7:1 (WCAG AAA) instead of step 9's ~5:1.
40
+ */
41
+ deepSolid?: boolean;
42
+ /** Optional control heights [sm, md, lg]; e.g. 44px md for large touch targets. */
43
+ controlHeights?: readonly [string, string, string];
28
44
  tint: readonly string[];
29
45
  parameters: ThemeDocument["recipes"]["frame"]["parameters"];
30
46
  ornament: ThemeDocument["recipes"]["frame"]["ornament"];
@@ -35,6 +51,6 @@ export interface ResolvedThemeRecipe {
35
51
  }
36
52
  export declare function resolveThemeRecipe(document: ThemeDocument): ResolvedThemeRecipe;
37
53
  export declare function themeRenderer(document: ThemeDocument): Readonly<{
38
- symbol: "ForestOrnament" | "RetroOrnament" | "SignalOrnament" | "HardwareOrnament" | "PrismOrnament" | "AtelierOrnament" | "OceanOrnament" | "ClayOrnament" | "DecoOrnament" | "TitaniumOrnament" | "LightOrnament" | "BlueprintOrnament" | "RisoOrnament" | "NeonOrnament" | "SumiOrnament" | "TransitOrnament" | "PhosphorOrnament" | "AnsiOrnament" | "SwissOrnament" | "AzulejoOrnament" | "BrutalistOrnament" | "AtomicOrnament" | "HudOrnament" | "FreighterOrnament" | "SailOrnament" | "DiwaliOrnament" | "LunarOrnament" | "PicadoOrnament" | "HoliOrnament" | "YuleOrnament" | "GlassOrnament";
39
- entry: "@dixy-ui/themes/living-forest/react" | "@dixy-ui/themes/retro-os/react" | "@dixy-ui/themes/winamp-signal/react" | "@dixy-ui/themes/studio-hardware/react" | "@dixy-ui/themes/prism-glass/react" | "@dixy-ui/themes/tactile-atelier/react" | "@dixy-ui/themes/ocean-depths/react" | "@dixy-ui/themes/candy-clay/react" | "@dixy-ui/themes/art-deco/react" | "@dixy-ui/themes/y2k-titanium/react" | "@dixy-ui/themes/material-light/react" | "@dixy-ui/themes/blueprint/react" | "@dixy-ui/themes/riso-zine/react" | "@dixy-ui/themes/neon-night-market/react" | "@dixy-ui/themes/sumi-ink/react" | "@dixy-ui/themes/tokyo-transit/react" | "@dixy-ui/themes/phosphor-terminal/react" | "@dixy-ui/themes/ansi-panes/react" | "@dixy-ui/themes/swiss-poster/react" | "@dixy-ui/themes/azulejo-tile/react" | "@dixy-ui/themes/brutalist-concrete/react" | "@dixy-ui/themes/atomic-lounge/react" | "@dixy-ui/themes/orbital-hud/react" | "@dixy-ui/themes/freighter/react" | "@dixy-ui/themes/solar-sail/react" | "@dixy-ui/themes/diwali-lights/react" | "@dixy-ui/themes/lunar-new-year/react" | "@dixy-ui/themes/papel-picado/react" | "@dixy-ui/themes/holi-colours/react" | "@dixy-ui/themes/yule-knit/react" | "@dixy-ui/themes/glass-ui/react";
54
+ symbol: "ForestOrnament" | "RetroOrnament" | "SignalOrnament" | "HardwareOrnament" | "PrismOrnament" | "AtelierOrnament" | "OceanOrnament" | "ClayOrnament" | "DecoOrnament" | "TitaniumOrnament" | "LightOrnament" | "BlueprintOrnament" | "RisoOrnament" | "NeonOrnament" | "SumiOrnament" | "TransitOrnament" | "PhosphorOrnament" | "AnsiOrnament" | "SwissOrnament" | "AzulejoOrnament" | "BrutalistOrnament" | "AtomicOrnament" | "HudOrnament" | "FreighterOrnament" | "SailOrnament" | "DiwaliOrnament" | "LunarOrnament" | "PicadoOrnament" | "HoliOrnament" | "YuleOrnament" | "GlassOrnament" | "SunsetOrnament" | "SavePointOrnament" | "ArcadeOrnament";
55
+ entry: "@dixy-ui/themes/living-forest/react" | "@dixy-ui/themes/retro-os/react" | "@dixy-ui/themes/winamp-signal/react" | "@dixy-ui/themes/studio-hardware/react" | "@dixy-ui/themes/prism-glass/react" | "@dixy-ui/themes/tactile-atelier/react" | "@dixy-ui/themes/ocean-depths/react" | "@dixy-ui/themes/candy-clay/react" | "@dixy-ui/themes/art-deco/react" | "@dixy-ui/themes/y2k-titanium/react" | "@dixy-ui/themes/material-light/react" | "@dixy-ui/themes/blueprint/react" | "@dixy-ui/themes/riso-zine/react" | "@dixy-ui/themes/neon-night-market/react" | "@dixy-ui/themes/sumi-ink/react" | "@dixy-ui/themes/tokyo-transit/react" | "@dixy-ui/themes/phosphor-terminal/react" | "@dixy-ui/themes/ansi-panes/react" | "@dixy-ui/themes/swiss-poster/react" | "@dixy-ui/themes/azulejo-tile/react" | "@dixy-ui/themes/brutalist-concrete/react" | "@dixy-ui/themes/atomic-lounge/react" | "@dixy-ui/themes/orbital-hud/react" | "@dixy-ui/themes/freighter/react" | "@dixy-ui/themes/solar-sail/react" | "@dixy-ui/themes/diwali-lights/react" | "@dixy-ui/themes/lunar-new-year/react" | "@dixy-ui/themes/papel-picado/react" | "@dixy-ui/themes/holi-colours/react" | "@dixy-ui/themes/yule-knit/react" | "@dixy-ui/themes/glass-ui/react" | "@dixy-ui/themes/sunset-drive/react" | "@dixy-ui/themes/save-point/react" | "@dixy-ui/themes/arcade-cabinet/react";
40
56
  }> | null;
package/dist/retro-os.css CHANGED
@@ -28,6 +28,11 @@
28
28
  --dixy-font-title-md-family: "Silkscreen", "VT323", ui-monospace, monospace;
29
29
  --dixy-font-title-sm-family: "Silkscreen", "VT323", ui-monospace, monospace;
30
30
  --dixy-skin-edge: var(--dixy-color-text-primary);
31
+ --dixy-skin-field-edge: color-mix(
32
+ in oklab,
33
+ var(--dixy-color-base-9) 50%,
34
+ var(--dixy-color-base-8)
35
+ );
31
36
 
32
37
  --dixy-skin-surface: color-mix(
33
38
  in srgb,
@@ -97,7 +102,6 @@
97
102
  --dixy-font-title-sm-weight: 400;
98
103
  }
99
104
  .dixy-theme[data-dixy-skin="dixy/retro-os"][data-appearance="dark"] {
100
- --dixy-skin-selected: var(--dixy-skin-finish);
101
105
  --dixy-skin-edge: var(--dixy-color-text-primary);
102
106
  --dixy-skin-canvas:
103
107
  repeating-linear-gradient(
@@ -122,6 +126,7 @@
122
126
  #22223b
123
127
  );
124
128
  }
129
+
125
130
  .dixy-theme[data-dixy-skin="dixy/retro-os"][data-relief="2"] {
126
131
  --dixy-skin-shadow:
127
132
  var(--dixy-skin-depth-shadow, var(--dixy-skin-authored-shadow)),
@@ -255,6 +260,28 @@
255
260
  ):not([data-variant="solid"]):not([data-variant="soft"]) {
256
261
  background-color: var(--dixy-skin-surface);
257
262
  }
263
+ :is(
264
+ .dixy-dialog-popup,
265
+ .dixy-alert-dialog-popup,
266
+ .dixy-drawer-popup,
267
+ .dixy-popover-popup,
268
+ .dixy-preview-card-popup,
269
+ .dixy-tooltip-popup,
270
+ .dixy-select-popup,
271
+ .dixy-combobox-popup,
272
+ .dixy-autocomplete-popup,
273
+ .dixy-menu-popup,
274
+ .dixy-context-menu-popup,
275
+ .dixy-navigation-menu-popup
276
+ )[data-dixy-skin="dixy/retro-os"]:not([data-dixy-material-override]):not(
277
+ :where([data-dixy-material-override]) *
278
+ ):not([data-variant="solid"]):not([data-variant="soft"]) {
279
+ background-color: color-mix(
280
+ in srgb,
281
+ var(--dixy-color-background-surface-raised) 94%,
282
+ var(--dixy-skin-surface)
283
+ );
284
+ }
258
285
  :is(
259
286
  .dixy-input,
260
287
  .dixy-textarea,
@@ -287,7 +314,7 @@
287
314
  :where([data-dixy-material-override]) *
288
315
  ) {
289
316
  border-width: var(--dixy-input-border-width);
290
- border-color: var(--dixy-skin-edge);
317
+ border-color: var(--dixy-skin-field-edge);
291
318
  background-image: var(--dixy-skin-paint);
292
319
  background-color: var(--dixy-color-background-canvas);
293
320
  background-size:
@@ -297,6 +324,43 @@
297
324
  100% 100%;
298
325
  box-shadow: var(--dixy-skin-inset);
299
326
  }
327
+ /* materials.css styles [data-dixy-visual] surfaces at 0,5,0. Match the
328
+ skin's paint to that so its image and grain size always land together;
329
+ otherwise the material image is tiled at the grain size (stripes). */
330
+ :is(
331
+ .dixy-card,
332
+ .dixy-box,
333
+ .dixy-dialog-popup,
334
+ .dixy-alert-dialog-popup,
335
+ .dixy-drawer-popup,
336
+ .dixy-popover-popup,
337
+ .dixy-preview-card-popup,
338
+ .dixy-tooltip-popup,
339
+ .dixy-select-popup,
340
+ .dixy-combobox-popup,
341
+ .dixy-autocomplete-popup,
342
+ .dixy-menu-popup,
343
+ .dixy-context-menu-popup,
344
+ .dixy-navigation-menu-popup,
345
+ .dixy-toast-root,
346
+ .dixy-alert,
347
+ .dixy-list-box,
348
+ .dixy-calendar,
349
+ .dixy-range-calendar,
350
+ .dixy-input,
351
+ .dixy-textarea,
352
+ .dixy-native-select,
353
+ .dixy-select-trigger,
354
+ .dixy-input-group,
355
+ .dixy-combobox-input-group,
356
+ .dixy-autocomplete-input-group,
357
+ .dixy-number-field-group,
358
+ .dixy-otp-field-input
359
+ )[data-dixy-skin="dixy/retro-os"]:not([data-dixy-material-override]):not(
360
+ :where([data-dixy-material-override]) *
361
+ )[data-dixy-visual][data-material]:not([data-disabled]) {
362
+ background-image: var(--dixy-skin-paint);
363
+ }
300
364
  :is(.dixy-button)[data-dixy-skin="dixy/retro-os"]:not(
301
365
  [data-dixy-material-override]
302
366
  ):not(:where([data-dixy-material-override]) *):is(
@@ -327,14 +391,19 @@
327
391
  border: 1px solid var(--dixy-skin-edge);
328
392
  box-shadow: var(--dixy-skin-inset);
329
393
  }
394
+ /* Selected tabs and toggles are one flat colour, lifted by edge and relief only. A gradient behind the label (thumb art, sheen, material image) splits it across two colours. :not([data-variant="line"]) also outranks materials.css (0,3,0). */
330
395
  :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/retro-os"]:not(
331
396
  [data-dixy-material-override]
332
397
  ):not(:where([data-dixy-material-override]) *) {
333
- background-image: var(--dixy-skin-finish);
334
398
  box-shadow: var(--dixy-skin-control-relief);
335
399
  border: 1px solid var(--dixy-skin-edge);
336
400
  }
337
- /* Toggle groups read like tabs: a sunken track, the selected toggle a raised thumb (slider-knob paint in light, the raised finish in dark so its label stays readable). */
401
+ :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/retro-os"]:not(
402
+ [data-dixy-material-override]
403
+ ):not(:where([data-dixy-material-override]) *):not([data-variant="line"]) {
404
+ background-image: none;
405
+ }
406
+ /* Toggle groups read like tabs: a sunken track, the selected toggle a raised, flat thumb. */
338
407
  .dixy-theme[data-dixy-skin="dixy/retro-os"]
339
408
  .dixy-toggle-group:is([data-attached], [data-segmented]):not(
340
409
  [data-dixy-material-override]
@@ -349,7 +418,7 @@
349
418
  [data-variant="solid"]
350
419
  )[data-pressed]:not([data-disabled]) {
351
420
  background-color: var(--dixy-color-background-surface-raised);
352
- background-image: var(--dixy-skin-selected, var(--dixy-skin-thumb));
421
+ background-image: none;
353
422
  box-shadow: var(--dixy-skin-control-relief);
354
423
  border-color: var(--dixy-skin-edge);
355
424
  color: var(--dixy-color-text-primary);
@@ -32,6 +32,11 @@
32
32
  --dixy-font-title-sm-family:
33
33
  "Archivo Black", "Arial Black", ui-sans-serif, sans-serif;
34
34
  --dixy-skin-edge: #2a2a2a;
35
+ --dixy-skin-field-edge: color-mix(
36
+ in oklab,
37
+ var(--dixy-color-base-9) 50%,
38
+ var(--dixy-color-base-8)
39
+ );
35
40
  --dixy-organic-density: 40;
36
41
  --dixy-organic-cornerDensity: 70;
37
42
  --dixy-organic-canopyDepth: 30;
@@ -122,7 +127,6 @@
122
127
  --dixy-organic-b: #3fa9f5;
123
128
  --dixy-organic-c: #e8c93a;
124
129
  --dixy-organic-d: #f2efe6;
125
- --dixy-skin-selected: var(--dixy-skin-finish);
126
130
  --dixy-skin-edge: #f2efe6;
127
131
  --dixy-skin-surface: color-mix(
128
132
  in srgb,
@@ -135,6 +139,7 @@
135
139
  #262329
136
140
  );
137
141
  }
142
+
138
143
  .dixy-theme[data-dixy-skin="dixy/riso-zine"][data-relief="2"] {
139
144
  --dixy-skin-shadow:
140
145
  var(--dixy-skin-depth-shadow, var(--dixy-skin-authored-shadow)),
@@ -273,6 +278,28 @@
273
278
  ):not([data-variant="solid"]):not([data-variant="soft"]) {
274
279
  background-color: var(--dixy-skin-surface);
275
280
  }
281
+ :is(
282
+ .dixy-dialog-popup,
283
+ .dixy-alert-dialog-popup,
284
+ .dixy-drawer-popup,
285
+ .dixy-popover-popup,
286
+ .dixy-preview-card-popup,
287
+ .dixy-tooltip-popup,
288
+ .dixy-select-popup,
289
+ .dixy-combobox-popup,
290
+ .dixy-autocomplete-popup,
291
+ .dixy-menu-popup,
292
+ .dixy-context-menu-popup,
293
+ .dixy-navigation-menu-popup
294
+ )[data-dixy-skin="dixy/riso-zine"]:not([data-dixy-material-override]):not(
295
+ :where([data-dixy-material-override]) *
296
+ ):not([data-variant="solid"]):not([data-variant="soft"]) {
297
+ background-color: color-mix(
298
+ in srgb,
299
+ var(--dixy-color-background-surface-raised) 94%,
300
+ var(--dixy-skin-surface)
301
+ );
302
+ }
276
303
  :is(
277
304
  .dixy-input,
278
305
  .dixy-textarea,
@@ -305,7 +332,7 @@
305
332
  :where([data-dixy-material-override]) *
306
333
  ) {
307
334
  border-width: var(--dixy-input-border-width);
308
- border-color: var(--dixy-skin-edge);
335
+ border-color: var(--dixy-skin-field-edge);
309
336
  background-image: var(--dixy-skin-paint);
310
337
  background-color: var(--dixy-color-background-canvas);
311
338
  background-size:
@@ -315,6 +342,43 @@
315
342
  100% 100%;
316
343
  box-shadow: var(--dixy-skin-inset);
317
344
  }
345
+ /* materials.css styles [data-dixy-visual] surfaces at 0,5,0. Match the
346
+ skin's paint to that so its image and grain size always land together;
347
+ otherwise the material image is tiled at the grain size (stripes). */
348
+ :is(
349
+ .dixy-card,
350
+ .dixy-box,
351
+ .dixy-dialog-popup,
352
+ .dixy-alert-dialog-popup,
353
+ .dixy-drawer-popup,
354
+ .dixy-popover-popup,
355
+ .dixy-preview-card-popup,
356
+ .dixy-tooltip-popup,
357
+ .dixy-select-popup,
358
+ .dixy-combobox-popup,
359
+ .dixy-autocomplete-popup,
360
+ .dixy-menu-popup,
361
+ .dixy-context-menu-popup,
362
+ .dixy-navigation-menu-popup,
363
+ .dixy-toast-root,
364
+ .dixy-alert,
365
+ .dixy-list-box,
366
+ .dixy-calendar,
367
+ .dixy-range-calendar,
368
+ .dixy-input,
369
+ .dixy-textarea,
370
+ .dixy-native-select,
371
+ .dixy-select-trigger,
372
+ .dixy-input-group,
373
+ .dixy-combobox-input-group,
374
+ .dixy-autocomplete-input-group,
375
+ .dixy-number-field-group,
376
+ .dixy-otp-field-input
377
+ )[data-dixy-skin="dixy/riso-zine"]:not([data-dixy-material-override]):not(
378
+ :where([data-dixy-material-override]) *
379
+ )[data-dixy-visual][data-material]:not([data-disabled]) {
380
+ background-image: var(--dixy-skin-paint);
381
+ }
318
382
  :is(.dixy-button)[data-dixy-skin="dixy/riso-zine"]:not(
319
383
  [data-dixy-material-override]
320
384
  ):not(:where([data-dixy-material-override]) *):is(
@@ -345,14 +409,19 @@
345
409
  border: 1px solid var(--dixy-skin-edge);
346
410
  box-shadow: var(--dixy-skin-inset);
347
411
  }
412
+ /* Selected tabs and toggles are one flat colour, lifted by edge and relief only. A gradient behind the label (thumb art, sheen, material image) splits it across two colours. :not([data-variant="line"]) also outranks materials.css (0,3,0). */
348
413
  :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/riso-zine"]:not(
349
414
  [data-dixy-material-override]
350
415
  ):not(:where([data-dixy-material-override]) *) {
351
- background-image: var(--dixy-skin-finish);
352
416
  box-shadow: var(--dixy-skin-control-relief);
353
417
  border: 1px solid var(--dixy-skin-edge);
354
418
  }
355
- /* Toggle groups read like tabs: a sunken track, the selected toggle a raised thumb (slider-knob paint in light, the raised finish in dark so its label stays readable). */
419
+ :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/riso-zine"]:not(
420
+ [data-dixy-material-override]
421
+ ):not(:where([data-dixy-material-override]) *):not([data-variant="line"]) {
422
+ background-image: none;
423
+ }
424
+ /* Toggle groups read like tabs: a sunken track, the selected toggle a raised, flat thumb. */
356
425
  .dixy-theme[data-dixy-skin="dixy/riso-zine"]
357
426
  .dixy-toggle-group:is([data-attached], [data-segmented]):not(
358
427
  [data-dixy-material-override]
@@ -367,7 +436,7 @@
367
436
  [data-variant="solid"]
368
437
  )[data-pressed]:not([data-disabled]) {
369
438
  background-color: var(--dixy-color-background-surface-raised);
370
- background-image: var(--dixy-skin-selected, var(--dixy-skin-thumb));
439
+ background-image: none;
371
440
  box-shadow: var(--dixy-skin-control-relief);
372
441
  border-color: var(--dixy-skin-edge);
373
442
  color: var(--dixy-color-text-primary);