@dixy-ui/themes 0.1.0-beta.2 → 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 (94) hide show
  1. package/dist/ansi-panes.css +79 -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 +79 -5
  6. package/dist/atomic-lounge.css +83 -5
  7. package/dist/authoring.d.ts +8 -8
  8. package/dist/azulejo-tile.css +83 -5
  9. package/dist/blueprint.css +79 -5
  10. package/dist/brutalist-concrete.css +83 -5
  11. package/dist/bytes.json +97 -67
  12. package/dist/candy-clay.css +85 -5
  13. package/dist/catalog.d.ts +294 -42
  14. package/dist/catalog.js +301 -43
  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 +23 -5
  19. package/dist/dispatch.css +731 -0
  20. package/dist/diwali-lights.css +83 -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 +145 -15
  28. package/dist/glass-ui.css +79 -5
  29. package/dist/holi-colours.css +83 -5
  30. package/dist/ledger.css +566 -0
  31. package/dist/living-forest.css +85 -5
  32. package/dist/mainframe.css +764 -0
  33. package/dist/manifests.d.ts +144 -144
  34. package/dist/material-light.css +83 -5
  35. package/dist/neon-night-market.css +83 -5
  36. package/dist/ocean-depths.css +85 -5
  37. package/dist/orbital-hud.css +145 -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 +83 -5
  44. package/dist/phosphor-terminal.css +83 -5
  45. package/dist/prism-glass.css +79 -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 +79 -5
  50. package/dist/riso-zine.css +79 -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 +79 -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 +79 -5
  71. package/dist/starters-launch.d.ts +25 -1
  72. package/dist/starters-launch.js +343 -49
  73. package/dist/studio-hardware.css +83 -5
  74. package/dist/sumi-ink.css +79 -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 +149 -15
  79. package/dist/tactile-atelier.css +85 -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 +83 -5
  88. package/dist/winamp-signal.css +83 -5
  89. package/dist/y2k-titanium.css +151 -15
  90. package/dist/yule-knit.css +79 -5
  91. package/package.json +50 -8
  92. package/dist/lunar-new-year.css +0 -811
  93. package/dist/skins/lunar-new-year.d.ts +0 -68
  94. package/dist/skins/lunar-new-year.js +0 -68
@@ -511,55 +511,6 @@ export const launchStarters = [
511
511
  },
512
512
  chrome: { edge: "stepped", well: "tinted", corners: "round" },
513
513
  },
514
- {
515
- slug: "lunar-new-year",
516
- symbol: "lunarNewYear",
517
- name: "Lunar New Year",
518
- description: "Fortune at the door.",
519
- detail: "Paper-cut scallops, lanterns, red and gold.",
520
- swatches: ["#c8102e", "#f5c542", "#fff4e6"],
521
- voice: {
522
- eyebrow: "新年快乐 · SPRING FESTIVAL",
523
- headline: "Fortune at the door.",
524
- body: "Sweep out the old year and hang the lanterns high.",
525
- primary: "Welcome",
526
- secondary: "Visit family",
527
- },
528
- foundations: {
529
- accentColor: "red",
530
- neutralColor: "sand",
531
- radius: "sm",
532
- shape: "rounded",
533
- appearance: "light",
534
- bodyFont: "inter",
535
- headingFont: "playfair",
536
- border: 1,
537
- depth: "raised",
538
- material: "paper",
539
- },
540
- material: { id: "red-paper", parameters: mat(25, 40, 0, 0.35, 0.2) },
541
- frame: "papercut",
542
- character: {
543
- controls: "standard",
544
- motion: { style: "weighted", press: 1, tempo: 1 },
545
- type: {
546
- headingCase: "none",
547
- headingTracking: 0.02,
548
- headingWeight: 700,
549
- numerals: "proportional",
550
- },
551
- states: "stamp",
552
- details: {
553
- focus: "offset",
554
- divider: "double",
555
- selection: "accent",
556
- scrollbar: "accent",
557
- iconStroke: 2,
558
- },
559
- backdrop: { pattern: "dots", intensity: 0.25, scale: 1.6 },
560
- },
561
- chrome: { edge: "double", well: "paper", corners: "inherit" },
562
- },
563
514
  {
564
515
  slug: "papel-picado",
565
516
  symbol: "papelPicado",
@@ -762,6 +713,349 @@ export const launchStarters = [
762
713
  },
763
714
  chrome: { edge: "pill", well: "glass", corners: "inherit" },
764
715
  },
716
+ {
717
+ slug: "sunset-drive",
718
+ symbol: "sunsetDrive",
719
+ name: "Sunset Drive",
720
+ description: "Cruise the coast.",
721
+ detail: "80s coastal neon: a striped sun, a horizon grid and pink light.",
722
+ swatches: ["#ff4fa3", "#ffb347", "#1b0b30"],
723
+ voice: {
724
+ eyebrow: "COAST HIGHWAY · 1986",
725
+ headline: "Cruise the coast.",
726
+ body: "Pink skies, palm shadows and a long drive home.",
727
+ primary: "Drive",
728
+ secondary: "Park it",
729
+ },
730
+ foundations: {
731
+ accentColor: "pink",
732
+ neutralColor: "mauve",
733
+ radius: "lg",
734
+ shape: "pill",
735
+ appearance: "dark",
736
+ bodyFont: "figtree",
737
+ headingFont: "neon",
738
+ border: 1,
739
+ depth: "floating",
740
+ material: "glossy",
741
+ },
742
+ material: { id: "sunset-neon", parameters: mat(55, 20, 0, 0, 0.3) },
743
+ frame: "sunset",
744
+ character: {
745
+ controls: "halo",
746
+ motion: { style: "springy", press: 1, tempo: 1 },
747
+ type: {
748
+ headingCase: "none",
749
+ headingTracking: 0.01,
750
+ headingWeight: 400,
751
+ numerals: "proportional",
752
+ },
753
+ states: "glow",
754
+ details: {
755
+ focus: "glow",
756
+ divider: "line",
757
+ selection: "accent",
758
+ scrollbar: "accent",
759
+ iconStroke: 1.75,
760
+ },
761
+ backdrop: { pattern: "grid", intensity: 0.2, scale: 1.2 },
762
+ },
763
+ chrome: { edge: "line", well: "tinted", corners: "inherit" },
764
+ },
765
+ {
766
+ slug: "save-point",
767
+ symbol: "savePoint",
768
+ name: "Save Point",
769
+ description: "Rest here?",
770
+ detail: "1994 menu windows: blue panels, white double borders, a blinking cursor.",
771
+ swatches: ["#2b44b8", "#ffe066", "#05081c"],
772
+ voice: {
773
+ eyebrow: "CHAPTER 3 · SAVE POINT",
774
+ headline: "Rest here?",
775
+ body: "Your progress is safe. The party is ready when you are.",
776
+ primary: "Save",
777
+ secondary: "Continue",
778
+ },
779
+ foundations: {
780
+ accentColor: "yellow",
781
+ neutralColor: "slate",
782
+ radius: "sm",
783
+ shape: "rounded",
784
+ appearance: "dark",
785
+ bodyFont: "terminal",
786
+ headingFont: "pixel",
787
+ border: 2,
788
+ depth: "raised",
789
+ material: "matte",
790
+ },
791
+ material: { id: "menu-window", parameters: mat(40, 0, 0, 0, 0.1) },
792
+ frame: "menu",
793
+ character: {
794
+ controls: "pixel",
795
+ motion: { style: "stepped", press: 1, tempo: 0.8 },
796
+ type: {
797
+ headingCase: "uppercase",
798
+ headingTracking: 0.04,
799
+ headingWeight: 400,
800
+ numerals: "tabular",
801
+ },
802
+ states: "inlay",
803
+ details: {
804
+ focus: "double",
805
+ divider: "double",
806
+ selection: "inverse",
807
+ scrollbar: "thin",
808
+ iconStroke: 2,
809
+ },
810
+ backdrop: { pattern: "none", intensity: 0, scale: 1 },
811
+ },
812
+ chrome: { edge: "double", well: "tinted", corners: "inherit" },
813
+ },
814
+ {
815
+ slug: "arcade-cabinet",
816
+ symbol: "arcadeCabinet",
817
+ name: "Arcade Cabinet",
818
+ description: "Insert coin.",
819
+ detail: "Scanlines, chunky pixels, hard red shadows and marquee bulbs.",
820
+ swatches: ["#ff3b3b", "#ffd400", "#050505"],
821
+ voice: {
822
+ eyebrow: "1UP · HI 042000",
823
+ headline: "Insert coin.",
824
+ body: "Three lives. One high score. No continues.",
825
+ primary: "Start",
826
+ secondary: "Quit",
827
+ },
828
+ foundations: {
829
+ accentColor: "red",
830
+ neutralColor: "neutral",
831
+ radius: "none",
832
+ shape: "square",
833
+ appearance: "dark",
834
+ bodyFont: "terminal",
835
+ headingFont: "pixel",
836
+ border: 2,
837
+ depth: "raised",
838
+ material: "matte",
839
+ },
840
+ material: { id: "arcade-bezel", parameters: mat(60, 15, 0, 0, 0) },
841
+ frame: "marquee",
842
+ character: {
843
+ controls: "pixel",
844
+ motion: { style: "snappy", press: 1.5, tempo: 0.7 },
845
+ type: {
846
+ headingCase: "uppercase",
847
+ headingTracking: 0.06,
848
+ headingWeight: 400,
849
+ numerals: "tabular",
850
+ },
851
+ states: "led",
852
+ details: {
853
+ focus: "offset",
854
+ divider: "dashed",
855
+ selection: "inverse",
856
+ scrollbar: "accent",
857
+ iconStroke: 2.25,
858
+ },
859
+ backdrop: { pattern: "scanlines", intensity: 0.35, scale: 1 },
860
+ },
861
+ chrome: { edge: "line", well: "lcd", corners: "pixel" },
862
+ },
863
+ {
864
+ slug: "ledger",
865
+ symbol: "ledger",
866
+ name: "Ledger",
867
+ description: "Cash position",
868
+ detail: "A quiet working theme: hairline rules, tabular figures, one green accent and faint ledger columns.",
869
+ swatches: ["#0b6e4f", "#fbfbf9", "#16181d"],
870
+ voice: {
871
+ eyebrow: "Q3 · TREASURY",
872
+ headline: "Cash position",
873
+ body: "Balances reconcile nightly. Figures in USD thousands.",
874
+ primary: "Export CSV",
875
+ secondary: "Filters",
876
+ },
877
+ foundations: {
878
+ accentColor: "jade",
879
+ neutralColor: "gray",
880
+ radius: "sm",
881
+ shape: "rounded",
882
+ appearance: "light",
883
+ bodyFont: "inter",
884
+ headingFont: "plex",
885
+ border: 1,
886
+ depth: "raised",
887
+ material: "matte",
888
+ },
889
+ material: { id: "ledger-ruled", parameters: mat(8, 8, 0, 0, 0) },
890
+ frame: "none",
891
+ character: {
892
+ controls: "standard",
893
+ motion: { style: "weighted", press: 0.6, tempo: 0.8 },
894
+ type: {
895
+ headingCase: "none",
896
+ headingTracking: 0,
897
+ headingWeight: 500,
898
+ numerals: "tabular",
899
+ },
900
+ states: "standard",
901
+ details: {
902
+ focus: "ring",
903
+ divider: "line",
904
+ selection: "accent",
905
+ scrollbar: "thin",
906
+ iconStroke: 1.5,
907
+ },
908
+ backdrop: { pattern: "none", intensity: 0, scale: 1 },
909
+ },
910
+ chrome: { edge: "double", well: "paper", corners: "inherit" },
911
+ },
912
+ {
913
+ slug: "mainframe",
914
+ symbol: "mainframe",
915
+ name: "Mainframe",
916
+ description: "Shipments",
917
+ detail: "A square enterprise grid: flat grey layers instead of shadows, one blue, dense 40px rows.",
918
+ swatches: ["#0f5fd9", "#f4f4f4", "#161616"],
919
+ voice: {
920
+ eyebrow: "OPERATIONS / SHIPMENTS",
921
+ headline: "Shipments",
922
+ body: "1,284 active across 38 carriers. Updated two minutes ago.",
923
+ primary: "New shipment",
924
+ secondary: "Export",
925
+ },
926
+ foundations: {
927
+ accentColor: "blue",
928
+ neutralColor: "neutral",
929
+ radius: "none",
930
+ shape: "square",
931
+ appearance: "light",
932
+ bodyFont: "plexSans",
933
+ headingFont: "plexSans",
934
+ border: 1,
935
+ depth: "none",
936
+ material: "matte",
937
+ },
938
+ material: { id: "layer-grid", parameters: mat(0, 0, 0, 0, 0) },
939
+ frame: "none",
940
+ character: {
941
+ controls: "instrument",
942
+ motion: { style: "snappy", press: 0.4, tempo: 0.7 },
943
+ type: {
944
+ headingCase: "none",
945
+ headingTracking: 0,
946
+ headingWeight: 300,
947
+ numerals: "tabular",
948
+ },
949
+ states: "standard",
950
+ details: {
951
+ focus: "ring",
952
+ divider: "line",
953
+ selection: "accent",
954
+ scrollbar: "thin",
955
+ iconStroke: 1.5,
956
+ },
957
+ backdrop: { pattern: "none", intensity: 0, scale: 1 },
958
+ },
959
+ chrome: { edge: "line", well: "lcd", corners: "inherit" },
960
+ },
961
+ {
962
+ slug: "dispatch",
963
+ symbol: "dispatch",
964
+ name: "Dispatch",
965
+ description: "Ready when you are",
966
+ detail: "Black and white, bold type and pill controls. Colour is kept for status.",
967
+ swatches: ["#000000", "#ffffff", "#eeeeee"],
968
+ voice: {
969
+ eyebrow: "LIVE · 842 IN TRANSIT",
970
+ headline: "Ready when you are",
971
+ body: "Every route, driver and delivery in one place. Colour only means something.",
972
+ primary: "New shipment",
973
+ secondary: "Export",
974
+ },
975
+ foundations: {
976
+ accentColor: "neutral",
977
+ neutralColor: "neutral",
978
+ radius: "lg",
979
+ shape: "pill",
980
+ appearance: "light",
981
+ bodyFont: "inter",
982
+ headingFont: "inter",
983
+ border: 1,
984
+ depth: "raised",
985
+ material: "matte",
986
+ },
987
+ material: { id: "mono-ink", parameters: mat(0, 0, 0, 0, 0) },
988
+ frame: "none",
989
+ character: {
990
+ controls: "standard",
991
+ motion: { style: "springy", press: 1, tempo: 1.1 },
992
+ type: {
993
+ headingCase: "none",
994
+ headingTracking: -0.02,
995
+ headingWeight: 800,
996
+ numerals: "tabular",
997
+ },
998
+ states: "standard",
999
+ details: {
1000
+ focus: "offset",
1001
+ divider: "line",
1002
+ selection: "inverse",
1003
+ scrollbar: "native",
1004
+ iconStroke: 2,
1005
+ },
1006
+ backdrop: { pattern: "none", intensity: 0, scale: 1 },
1007
+ },
1008
+ chrome: { edge: "line", well: "lcd", corners: "round" },
1009
+ },
1010
+ {
1011
+ slug: "signal",
1012
+ symbol: "signal",
1013
+ name: "Signal",
1014
+ description: "Make it easier to read",
1015
+ detail: "High contrast, accessibility first: 2px edges, 44px targets, a thick focus ring with a yellow halo, no textures or ornament.",
1016
+ swatches: ["#000000", "#ffffff", "#ffbf00"],
1017
+ voice: {
1018
+ eyebrow: "SETTINGS · DISPLAY",
1019
+ headline: "Make it easier to read",
1020
+ body: "Clear type, strong edges and focus you can always see.",
1021
+ primary: "Save changes",
1022
+ secondary: "Cancel",
1023
+ },
1024
+ foundations: {
1025
+ accentColor: "blue",
1026
+ neutralColor: "neutral",
1027
+ radius: "sm",
1028
+ shape: "rounded",
1029
+ appearance: "light",
1030
+ bodyFont: "atkinson",
1031
+ headingFont: "atkinson",
1032
+ border: 2,
1033
+ depth: "none",
1034
+ material: "matte",
1035
+ },
1036
+ material: { id: "signal-contrast", parameters: mat(0, 0, 0, 0, 0) },
1037
+ frame: "none",
1038
+ character: {
1039
+ controls: "standard",
1040
+ motion: { style: "standard", press: 0, tempo: 0.6 },
1041
+ type: {
1042
+ headingCase: "none",
1043
+ headingTracking: 0,
1044
+ headingWeight: 700,
1045
+ numerals: "tabular",
1046
+ },
1047
+ states: "standard",
1048
+ details: {
1049
+ focus: "halo",
1050
+ divider: "line",
1051
+ selection: "inverse",
1052
+ scrollbar: "native",
1053
+ iconStroke: 2,
1054
+ },
1055
+ backdrop: { pattern: "none", intensity: 0, scale: 1 },
1056
+ },
1057
+ chrome: { edge: "double", well: "sunken", corners: "inherit" },
1058
+ },
765
1059
  ];
766
1060
  const id = (s) => "dixy/" + s.slug;
767
1061
  /** v2 source documents, migrated by documents.ts like every other starter. */
@@ -32,6 +32,11 @@
32
32
  --dixy-font-title-sm-family:
33
33
  "Inter Variable", Inter, ui-sans-serif, system-ui, sans-serif;
34
34
  --dixy-skin-edge: #d3cec4;
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
 
36
41
  --dixy-skin-surface: color-mix(
37
42
  in srgb,
@@ -105,7 +110,6 @@
105
110
  --dixy-font-title-sm-letter-spacing: -0.03em;
106
111
  }
107
112
  .dixy-theme[data-dixy-skin="dixy/studio-hardware"][data-appearance="dark"] {
108
- --dixy-skin-selected: var(--dixy-skin-finish);
109
113
  --dixy-skin-edge: #111113;
110
114
  --dixy-skin-surface: color-mix(
111
115
  in srgb,
@@ -118,6 +122,7 @@
118
122
  #26262a
119
123
  );
120
124
  }
125
+
121
126
  .dixy-theme[data-dixy-skin="dixy/studio-hardware"][data-relief="2"] {
122
127
  --dixy-skin-shadow:
123
128
  var(--dixy-skin-depth-shadow, var(--dixy-skin-authored-shadow)),
@@ -253,6 +258,30 @@
253
258
  ):not([data-variant="soft"]) {
254
259
  background-color: var(--dixy-skin-surface);
255
260
  }
261
+ :is(
262
+ .dixy-dialog-popup,
263
+ .dixy-alert-dialog-popup,
264
+ .dixy-drawer-popup,
265
+ .dixy-popover-popup,
266
+ .dixy-preview-card-popup,
267
+ .dixy-tooltip-popup,
268
+ .dixy-select-popup,
269
+ .dixy-combobox-popup,
270
+ .dixy-autocomplete-popup,
271
+ .dixy-menu-popup,
272
+ .dixy-context-menu-popup,
273
+ .dixy-navigation-menu-popup
274
+ )[data-dixy-skin="dixy/studio-hardware"]:not(
275
+ [data-dixy-material-override]
276
+ ):not(:where([data-dixy-material-override]) *):not(
277
+ [data-variant="solid"]
278
+ ):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
+ }
256
285
  :is(
257
286
  .dixy-input,
258
287
  .dixy-textarea,
@@ -266,6 +295,11 @@
266
295
  )[data-dixy-skin="dixy/studio-hardware"] {
267
296
  border-radius: calc(var(--dixy-radius-control) * 1);
268
297
  }
298
+ :is(.dixy-textarea)[data-dixy-skin="dixy/studio-hardware"] {
299
+ border-radius: calc(
300
+ min(var(--dixy-radius-control), var(--dixy-radius-card)) * 1
301
+ );
302
+ }
269
303
  :is(
270
304
  .dixy-input,
271
305
  .dixy-textarea,
@@ -280,7 +314,7 @@
280
314
  [data-dixy-material-override]
281
315
  ):not(:where([data-dixy-material-override]) *) {
282
316
  border-width: var(--dixy-input-border-width);
283
- border-color: var(--dixy-skin-edge);
317
+ border-color: var(--dixy-skin-field-edge);
284
318
  background-image: var(--dixy-skin-paint);
285
319
  background-color: var(--dixy-color-background-canvas);
286
320
  background-size:
@@ -290,6 +324,45 @@
290
324
  100% 100%;
291
325
  box-shadow: var(--dixy-skin-inset);
292
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/studio-hardware"]:not(
360
+ [data-dixy-material-override]
361
+ ):not(
362
+ :where([data-dixy-material-override]) *
363
+ )[data-dixy-visual][data-material]:not([data-disabled]) {
364
+ background-image: var(--dixy-skin-paint);
365
+ }
293
366
  :is(.dixy-button)[data-dixy-skin="dixy/studio-hardware"]:not(
294
367
  [data-dixy-material-override]
295
368
  ):not(:where([data-dixy-material-override]) *):is(
@@ -320,14 +393,19 @@
320
393
  border: 1px solid var(--dixy-skin-edge);
321
394
  box-shadow: var(--dixy-skin-inset);
322
395
  }
396
+ /* 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). */
323
397
  :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/studio-hardware"]:not(
324
398
  [data-dixy-material-override]
325
399
  ):not(:where([data-dixy-material-override]) *) {
326
- background-image: var(--dixy-skin-finish);
327
400
  box-shadow: var(--dixy-skin-control-relief);
328
401
  border: 1px solid var(--dixy-skin-edge);
329
402
  }
330
- /* 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). */
403
+ :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/studio-hardware"]:not(
404
+ [data-dixy-material-override]
405
+ ):not(:where([data-dixy-material-override]) *):not([data-variant="line"]) {
406
+ background-image: none;
407
+ }
408
+ /* Toggle groups read like tabs: a sunken track, the selected toggle a raised, flat thumb. */
331
409
  .dixy-theme[data-dixy-skin="dixy/studio-hardware"]
332
410
  .dixy-toggle-group:is([data-attached], [data-segmented]):not(
333
411
  [data-dixy-material-override]
@@ -342,7 +420,7 @@
342
420
  [data-variant="solid"]
343
421
  )[data-pressed]:not([data-disabled]) {
344
422
  background-color: var(--dixy-color-background-surface-raised);
345
- background-image: var(--dixy-skin-selected, var(--dixy-skin-thumb));
423
+ background-image: none;
346
424
  box-shadow: var(--dixy-skin-control-relief);
347
425
  border-color: var(--dixy-skin-edge);
348
426
  color: var(--dixy-color-text-primary);